Raspberry Piを楽しむためには、まず何かセンサーを付けてみるのが最初の一歩と言えるでしょう。実際、Raspberry Piに対応したセンサーは山ほどあります。しかし、たくさんあるからこそ、どれを買って良いか分からないという方もいるのではないでしょうか。

そんな方にお勧めしたいのがEnviro pHAT(エンバイロ・ピーハット)です。Enviro pHATには下記のセンサーが搭載されています。

  • 気温
  • 気圧
  • 加速度
  • 磁気

気温や気圧はよく使われるセンサーですし、さらに光や色と言った使い方次第で面白い作品が作れそうなセンサーもあります。持ち運びするなら加速度センサーも便利です。

今回はそんなEnviro pHATをisaaxと組み合わせて使う方法を紹介します。

使うもの

  • Raspberry Pi
  • Enviro pHAT
  • isaax

Enviro pHATとRaspberry Piを接続した状態

ライブラリのインストール

まず必要なpimoroniライブラリをインストールします。

sudo apt-get install pimoroni

 

この状態で下記のコードを実行してみます。

import sys

from envirophat import light, weather, motion, analog
t = weather.temperature()
sys.stdout.write(t)

 

実行した時に、下記のエラーが出ることがあります。

$ python all.py 
Traceback (most recent call last):
  File "all.py", line 6, in <module>
    from envirophat import light, weather, motion, analog
  File "/usr/lib/python2.7/dist-packages/envirophat/__init__.py", line 1, in <module>
    from .i2c_bus import bus
  File "/usr/lib/python2.7/dist-packages/envirophat/i2c_bus.py", line 20, in <module>
    bus = smbus.SMBus(1)
IOError: [Errno 2] No such file or directory

この場合、追加でpython-smbusi2c-toolsライブラリをインストールします。

sudo apt-get install python-smbus
sudo apt-get install i2c-tools

 

さらに sudo raspi-config を実行して、I2Cを有効にします。

P5 I2C(アイスクエアシー)を選びます

これで準備が整いました。

isaax プロジェクトの作成

まず最初にGitリポジトリを作っておきます。ディレクトリの中身は isaax.json というファイルで、内容は次の通りです。これはisaaxプロジェクトの設定ファイルです。

{
  "name": "python-app",
  "version": "",
  "description": "python - raspberry-pi",
  "main": "app.py",
  "author": "",
  "language":"Python",
  "license": "",
  "scripts": {
     "start": "python app.py"
    }
}

これだけ作ったらGitHubまたはBitBucketでリポジトリを作成します。そして作成が終わったらisaaxで新規プロジェクトを作成し、その際に作成したGitリポジトリを指定します。

作成が終わるとRaspberry Pi上で実行するコマンドが表示されます。これを実行したらRaspberry Piとisaaxが繋がり、開発の準備が整った状態になります。

簡単なコードで試す

Raspberry PiにはデフォルトでPython2系が入りますので、今回はそれを使った簡単なコードを紹介します。5秒ごとにEnviro pHATのデータを受け取り、温度、気圧、明るさ、加速度を表示します。

# -*- coding: utf-8 -*-
#!/usr/bin/env python

import sys
import time

from envirophat import light, weather, motion, analog

unit = 'hPa'

while True:
    acc_values = [round(x,2) for x in motion.accelerometer()]
    output = """
温度: {t:.2f}c
気圧: {p:.2f}{unit}
明るさ: {c}
加速度: {ax}g {ay}g {az}g
""".format(
        unit = unit,
        t = weather.temperature(),
        p = weather.pressure(unit=unit),
        c = light.light(),
        ax = acc_values[0],
        ay = acc_values[1],
        az = acc_values[2]
)
    sys.stdout.write(output)
    sys.stdout.flush()
    time.sleep(5)

このコードを app.py として保存し、Gitリポジトリにプッシュします。コードはGitリポジトリを通じてisaaxに通知され、そしてRaspberry Piに自動的にデプロイされます。

コードに問題がなければisaaxの管理画面にて5秒ごとにデータが送られてくるのが確認できるはずです。

isaaxのダッシュボードでセンシングした値が確認できるようになりました

このように一度isaaxとRaspberry Piを連携させてしまえば、コードのデプロイやログの確認などがとても簡単にできるようになります。

—-

Enviro pHATには様々なセンサーが備わっており、IoT開発のファーストステップとして最適なボードとなっています。ライブラリは公式にはPython向けが出ていますが、Github上の記事(英語)ではNode.jsでの使い方も紹介されています。

IoTエンジニア養成キットではEnviro pHATでセンシングした値をグラフ化するなど、本格的に開発する際のノウハウを教えています。本記事より難易度は高くなっておりますが、理解度を上げたい方にオススメです。


Leave a Reply

Your email address will not be published. Required fields are marked *