秋月のXBeeをシリアルケーブル代わりに使うには
久しぶりのウィークエンドですが、ちょっと素朴なテーマを取り上げました。
「管理人」のほうでやっているTiny-BASICコンピュータは、シリアルでパソコンのターミナルソフトに接続して使うようになっています。これをXBeeで無線化しようというときに起こった問題と解決法をまとめます。
XBeeはすでに「猫のぞきカメラ」で実用的に使っていたので、その設定のままシリアルケーブル代わりに接続したのですが、うまく行きません。
試作したTiny-BASICは、ターミナルから送られた文字を、そのままエコーバックするようになっています。こうすると、通信系統の健常性がオペレータにわかり易いからです。
タイプすると最初の実験の「ループバックの調子が悪い」と同じ現象が発生し、使い物になりません。
仮ソフトを組んで調べてみると、END DEVICE(外部機器のXBee)からのデータ送信は、/CTSでのフロー制御をきちんとやれば、何千バイト送っても問題ないのですが、ブロードキャストに設定しているCOORDINATOR(PC側のXBee)からは80バイトくらい送信すると、それ以上データが送信されないという現象が確認できました。エコーバックが返ってこなくなるのです。無視して送り続けるとデータがロストします。フロー制御をしているはずなのにダメです。その後、2秒程おくと、また80バイトの送信が出来るようになります。
またXBeeの仕様書に戻って原因究明したのですが… この仕様書はちょっとふんわりした感じで、知りたいことがダイレクトに見つからないんですねえ。英文なので斜め読みが難しいのも問題です。
とにかく、大づかみにしたのは下記です。
1・メッシュネットワークに採用されているZigBeeプロトコルの問題らしい
2・COORDINATORだかららしい
3・「80バイト」程は「RF payload」、つまりいっぺんに電波に乗せられるデータ量に近い
4・「2秒」程はデフォルトのSD、「Scan Duration」つまりネットワークから情報を集める時間に近い
まとめると、「ブロードキャストのCOORDINATORは、1回RFパケットを送信する度にSD時間分ネットワークに耳を澄ます」ということでは無いかと思われます。
試作したXBeeカメラでは、COORDINATORからはわずか1バイトのコマンドを送信するだけだったので、この設定で問題なかったようです。
そういうわけで、ブロードキャストをやめてユニキャストに設定したら、送受とも問題なく転送できるようになりました。この設定を図にしたものがこれです。

ディスネーションには、お互いのシリアル番号(MACアドレス)を入力します。XBeeと機器のシリアル速度は、2台のXBeeで異なっていても、フロー制御をしていれば問題ないようです。
フロー制御は次のようにします。
■マイコンの場合:1バイト送信する前に/CTSをチェック。Lなら送信、HならLになるまで待つ。
■PCの場合:FlowControlをHardWareに設定。
このようにすれば、シリアルケーブルを単純にXBeeで置き換えることが出来ます。ただし、通信速度は9600bpsくらいですが。
« PICで走るTiny-BASIC(拾遺) | トップページ | PICのTiny-BASICで移動ロボットを試す »
「花岡ちゃんのウィークエンド」カテゴリの記事
- アクエストークLSI・ATP3011F4-PUを試してみる(2012.04.03)
- アクエストークの新LSIが発売になりました(2012.03.27)
- 連続回転サーボの作り方(2012.01.14)
- 夏休みに作ろう!自動制御で坂を登るロボクライマー(5)(2011.07.28)
- 夏休みに作ろう!自動制御で坂を登るロボクライマー(6)(2011.07.29)
トラックバック
この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1140145/39056775
この記事へのトラックバック一覧です: 秋月のXBeeをシリアルケーブル代わりに使うには:
« PICで走るTiny-BASIC(拾遺) | トップページ | PICのTiny-BASICで移動ロボットを試す »


コメント