Raspberry PiのGPIOはデジタルなのでArduinoで使っていたTMP36やLM35DZなどのアナログセンサを使う場合はADコンバータが必要になります。今回は1-Wireデジタル温度センサのDS18B20を使ってみます。
Raspberry PiをWiringPiとJohnny-FiveのRaspi-ioを使ってLチカする
Johnny-FiveにはArdiono以外でもFirmata互換のインタフェースを使えるようにするIO Pluginsがあります。Raspberry Pi用のRaspi-ioを使ってLチカをしてみます。GPIOピンアサインが正しいことをWiringPiを使って確認します。
ESP8266のWi-FiをArduinoから使いHTTPクライアントにする
前回ESP8266モジュールにCoolTermからシリアル接続をしてATコマンドを発行するWi-Fiの接続テストをしました。この時はArduinoはESP8266への電源供給にしか使っていませんでした。Arduino IDEでWebクライアントのスケッチを書いてシリアルモニタからプログラムの実行を確認します。
ESP8266をUSB-TTLシリアル変換してWi-Fiの確認する
Arduino UnoのWi-FiシールドはCC3000 Wi-Fiシールドなど高価なものが多くArduino Uno本体より高くなります。なるべく安く仕上げたいのと、Arduino Pro Miniやmbedでも使いたいのでESP8266をaitendoから680円で購入しました。USB-TTLシリアル変換ケーブル使いWindowsを接続してインターネットへの接続を確認します。
Meshbluを使いMQTTとHTTPをブリッジしてRaspberry Piでメッセージを送受信する
Meshblu登録したデバイスを使いMQTTとHTTP間で相互にメッセージの送受信を試してみます。複数のプロトコルの違いをMeshbluのブローカーが吸収してくれるのでより多くのサービスやデバイスがメッセージを交換できるようになります。
MeshbluにREST APIを使いデバイスを登録する
MeshbluではデバイスやサービスのノードはUUIDとTOKENで識別されます。whitelistに登録済みのデバイスや、オーナーに指定したデバイス間でのみメッセージの送受信ができます。オーナーを指定しないデバイスはパブリックデバイスになり(デフォルト)どのデバイスからもメッセージが受信ができます。これからメッセージのMQTT-HTTP Bridgeテストをするので準備として必要なデバイスの登録を行います。
Raspberry PiにMosquittoのインストールとGPGキーの削除
Raspberry PiにMosquittoのクライアントをインストールしてMeshbluと直接MQTT通信してみます。MosquittoはRaspbianからデフォルトでapt-get installもできますが、mosquitto_pubに--helpフラグをつけてもバージョンが表示されないのでMosquitto Debian repositoryを使うことにします。
MeshbluのdebugとMQTT-HTTP BridgeのためのRedis
何回かMeshbluのコンテナを再作成して作業しているとMQTT-HTTP Bridgeが突然動かなくなりました。はじめはNode.jsのコードのデバッグに適当なところでconsole.logしていたのですが、Meshbluではdebugパッケージを使っているのでこれを活用してみます。結局MQTT-HTTP Bridgeが動かなくなったのはRedisと連携する設定が抜けていたためでした。
Johnny-Fiveを使いLM35の温度データをArduinoからMeshbluのMongoDBに保存する
先日構築したMeshbluコンテナのデータストアはNeDBのままでした。センシングデータをMongoDBに保存するように変更します。引き続きArduinoはFirmataとJohnny-Fiveを使いホストマシンから操作します。LM35を搭載した温度センサーモジュールを用意してArduinoから温度データを取得します。取得したデータはWebSocket over SSLでMeshbluにPOSTしてMongoDBに保存します。
BeagleBone BlackからArduinoをJohnny-FiveとFirmataで操作する
先日Raspberry Pi(Model B)とArduinoをUSBシリアル接続して使っていました。USBケーブルをぶちっと抜いて電源を落としてしまったらSDカードが壊れてました。Raspbianは起動はしてもファイルシステムがRead-Onlyになってしまいます。マイコンはUSBケーブルを抜いて電源をぶちっと落とすので、Linuxの小型コンピューターでもついやってしまいます。Read-Onlyの修復方法をいくつか試しても直らないので結局SDカードにRaspbianを焼き直しました。Stopping SD Card Corruption on Raspberry Pi’s Raspbianなどを読んで最適な方法を見つけたいと思います。作業に困るのでJohnny-Five環境をBeagleBone Blackでも構築します。BeagleBone Blackの方がもうちょっと雑に扱えます。