アフィリエイト広告を利用しています

ルンバを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システムに取り込んでiPhoneから制御。
ステータスチェックを毎分行っているので、ホームベースに戻ってからiPhone側のステータスが変わるまで最長で1分の遅れがある。




トラックバック

コメント

お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのコメント

   
検索
検索語句
記事ランキング
最新記事