[mbedbot] Node-REDを試してみる&赤外線送信部の改良

January 04, 2017

相変わらず機械学習ネタが思いつかないので、mbedボットのシステム構成を変更することにしました。

これまでは、iOSアプリがmbedbotとのBLE通信を担っていましたが、これだとiPodがないとmbedbotをコントロールできないので、Hubot側でBLE通信をするように変更しました。node.jsでBLE通信を行うためnobleというモジュールを採用しました。

また、iOSアプリはhubotとwebsocketで直接つないで音声認識結果を送ったり、BLEでリモコンデータの通知を受けたりしていましたが、hubot、mbedbotをデバッグするためにはiOSアプリ側を色々と弄る必要があり面倒だったのでNode-REDを導入してHubotとiOSアプリ間の通信を仲介することにしました。これによって、デバッグ時はNode-REDで操作し、実使用ではiOSアプリから操作する、ということが可能になりました。Node-REDから直接Hubotにデータを送ったり、通知されたデータをNode-REDで処理することができるので、デバッグ効率が格段に上がったような気がします。そんなこんなで、システム構成図は下記のように落ち着きました。

Node-REDのフロー定義は下記です。一番上がmbedbotから受信したリモコンデータをDBに保存、真ん中がリモコンデータの返却、一番下がiOSアプリからの各種アクション(メッセージの送信、リモコンデータの名前変更)の実行です。iOSとNode-REDはWebSocketで通信しています。Node-REDからmysqlの制御はこちらを使わせていただきました。

このシステムを使ってリモコン信号を送る機能のテストをしたのですが、何回やってもIRが届かないことがわかりました。そこで、回路を見直して、赤外線発光用のLEDを3つに増やすことにしました。回路図は下記です(LEDの型番は適当)。

Draft16

これで5回に1回くらいは届くようになりましたが、まだ弱いようです。もう少しLEDに流す電流を大きくしないといけないのかもしれないですが、きりがないので一旦リモコン送信部はこれで運用したいと思います。

今後の予定ですが、人感センサーを追加して人がいる、いないの情報のログを蓄積してみようと思います。それを使って何か機械学習できないか、と目論んでいます。