快適iPhone生活

iPhone、Raspberry Pi、電気工事などを駆使してスマートホームを構築中。最近、中免を取得し、スズキのジクサー250を購入。

ルンバをXBeeでコントロール (Part 2)

環境設定 前回まではハードウエアの設定を行ったので、今回はSWの設定を行う。 私はPerlを使っているが他にPhythonやC、Rubyなど開発言語は色々使えそうだ。 手順は以下の通り。 1) Perlが動作する開発環境 (OSXもしくはRaspberry Pi) 2) 2種類のテストコードを以下に置いておくので、必要なモジュールのインストールを行う。 基本的にはベーシックの方を使う。 testRmba.pl ・・・ベーシック testRmba2.pl・・・ステータスを1分に一回確認してファイルにセーブする >sudo cpan で、CPANに入って以下のように使っているモジュールをインストール >install Device::SerialPort >install Device::XBee::API >install Data::Dumper >install threads >install threads::shared >install Thread::Queue >install Schedule::Cron 以下のコマンドで抜ける。 CPAN>quit 3) 環境に合わせて以下の箇所を変更。 SERIAL_PORTは、ホスト側につないだ時のUSBのPort。 XBEE_ADDRESSはルンバ側に接続するXbeeのLowアドレス。 use constant SERIAL_PORT => "/dev/tty.usbserial-AH017K8D"; use constant XBEE_ADDRESS => 0xFFFFFFFF; 4) コマンド入力用のパイプの作成 >mkfifo input-fifo 5) Xbeeをルンバ、Host側に接続してテストコードを実行。 >perl testRmba.pl IMG_1035.jpg Joint Notification=1にしているので、一回目に実行すると接続したダンプメッセージが表示されたと思う。 ○テストコードの使い方 テストコードの中身を見てもらえばわかるのだが、Perlを実行して別ターミナルから以下のようにEchoしてinput-fifo経由でコマンドを入力する。 > echo TX,XX,XX > input-fifo 一応、以下のコマンドを用意しているが、TX以外はこのテストコードでは確認していない。 (多分、動作すると思う) TX・・・シリアルコマンド、ルンバにデータを送信 AT・・・Host側のXbeeの設定行う時に使うATコマンド RAT・・・ルンバ側のXbeeの設定行う時に使うRemote ATコマンド ○動作させる 1) ステータスコマンドの確認 以下のように打ってデータの羅列が出れば、問題なし。 > echo TX,0x8e,0x0 > input-fifo 2) 以下のコマンドでCleanがスタートする。 > echo TX,0x80 >input-fifo ・・・スタート > echo TX,0x82 > input-fifo ・・・コントロール > echo TX,0x87 > input-fifo ・・・クリーン ルンバの状態遷移、コマンドに関してはルンバが出しているCreate Open Interface_v2.pdfを参考にしてほしい。 参考までに私が知りたかったホームにルンバがいるかどうかはステータスをチェックで"Charging Sources Available"のHome Baseビットを確認すれば良い。 testRmba2.plの方では、毎分ステータスチェックのコマンドを発行してこのビットを確認し、動作している時だけステータスをファイルに落とすようにしている。 ビデオ 以下はPCから先ほどのXbeeにコマンドを打った場合。 Xbeeでルンバのコントロール 以下はXbeeシステムに取り込んでiPhoneから制御。 ステータスチェックを毎分行っているので、ホームベースに戻ってからiPhone側のステータスが変わるまで最長で1分の遅れがある。 iPhoneからXbee経由でルンバを制御