Raspberry PiによるIoT(M2M)【I2C温度センサー/xively/Python】

 そろそろRaspberry Piで「Machine to machine(M2M)」、「Internet of things(IoT)」をやっていきましょう。Raspberry PiではI2Cのインターフェースが準備されていますので、今回はこれを利用した温度センサーの読み込みからクラウドへのデータ連携までをやっていきます。【12/5追記】RPi側のスクリプトNode.js版についてもご紹介していますので、興味があられる方はお合わせてご覧ください。【12/26追記】連携先クラウドをkintoneにしたケースが「cybozu.com developer network」のTipsとして掲載されました。

 

f:id:yamaryu0508:20140820015213j:plain

 

 温度センサーはADT7410を使いたいと思います。Raspberry PiはRASPBIANのインストールとネットワークの設定まで終わっていれば問題ありません。

 

手順1 Raspberry Piとセンサーの結線

 詳しい説明は省略させて頂きますが、次の回路図の通りに結線するとOKです。

f:id:yamaryu0508:20140831201642j:plain

 

手順2 I2Cの設定

 (2015/3/10追記)I2Cの設定については、2015-02-16版のRASPBIANでDEVICE TREEを使った方法に変更になりましたので、この場合の設定方法についてはこちらをご覧ください。これ以前の方法であれば、このまま読み進めて頂いて、大丈夫です。

 

 はじめに、/etc/modulesi2c-devを書き足します。

$ sudo vi /etc/modules

# (変更箇所のみ記載)
i2c-dev

f:id:yamaryu0508:20140819013208j:plain

 続いて、/etc/modprobe.d/raspi-blacklist.confblacklist i2c-bcm2708コメントアウトします。

$ sudo vi /etc/modprobe.d/raspi-blacklist.conf

# (変更箇所のみ記載)
#blacklist i2c-bcm2708

f:id:yamaryu0508:20140819013234j:plain

 これで、ひとまずRaspberry PiでI2Cが使えるようになりますが、設定の有効化のため、再起動しておきます。

$ sudo reboot

 

手順3 I2C動作確認ツールのインストール

$ sudo apt-get update

$ sudo apt-get install i2c-tools

f:id:yamaryu0508:20140817212045p:plain

 

手順4 センサーの動作確認

 ここで、センサーの動作確認を行います。sudo i2cdetect -y 1とします。センサーを外した状態と付けた状態で比較すると、今回使っているセンサーの判別がしやすいです。

f:id:yamaryu0508:20140817212703j:plain

今回のアドレスは、0x48であることがわかります。

 

手順5 python-smbus(Python用のI2Cツール)のインストール

 ここで、PythonからI2Cバスをコントロールするための「python-smbus」をインストールします

$ sudo apt-get update

$ sudo apt-get install python-smbus

f:id:yamaryu0508:20140817213326p:plain

 

手順6 Pythonスクリプトによるセンサーからクラウド連携

 Raspberry Piの「Pi」は「Python」とかかっていたりするので、今回センサーの値読み出しからクラウド連携を実行させるのにはPythonを利用したいと思います。今回クラウドは「Machine to machine」、「Internet of things」ではポピュラーな「xivelyAPIドキュメント)」を使ってみたいと思います。プログラム実行時には、I2Cデバイスへのアクセスがありますので、 sudo python m2mSample.pyのように sudoをつけてください。もしくは、 sudo adduser pi i2cI2Cグループにアクセスユーザーを追加することで、 python m2mSample.pyのような実行も可能になります(グループ追加時は sudo rebootで再起動しておきましょう)。

 更に、今回HTTPリクエストに requestsモジュールを利用していますので、インストールされていなければ大変便利なモジュールですのでこれを機にこちらからインストールしておきましょう。

 また、I2Cセンサーからの値の読み込み部分については、別途こちらで詳しく解説させてもらっていますので、参考にして頂ければと思います。※Gistの表示がされない時には、こちらから直接ご覧ください。

 

xivelyの設定ページから取得した {X-ApiKey}{Feed ID} を冒頭部分で定義してもらえれば、次のように連携できます。

 

f:id:yamaryu0508:20140819233033p:plain

 

このように電子工作とクラウドの連携は技術的な敷居も下がってきていますので、今後も色々と試していきたいと思います。