2023年4月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30            

カテゴリー

ブログパーツ

無料ブログはココログ

« PICで走るTiny-BASIC(拾遺) | トップページ | PICのTiny-BASICで移動ロボットを試す »

2011年3月 6日 (日)

秋月の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バイトのコマンドを送信するだけだったので、この設定で問題なかったようです。

そういうわけで、ブロードキャストをやめてユニキャストに設定したら、送受とも問題なく転送できるようになりました。この設定を図にしたものがこれです。

Xbee2serial

ディスネーションには、お互いのシリアル番号(MACアドレス)を入力します。XBeeと機器のシリアル速度は、2台のXBeeで異なっていても、フロー制御をしていれば問題ないようです。
フロー制御は次のようにします。
■マイコンの場合:1バイト送信する前に/CTSをチェック。Lなら送信、HならLになるまで待つ。
■PCの場合:FlowControlをHardWareに設定。


このようにすれば、シリアルケーブルを単純にXBeeで置き換えることが出来ます。ただし、通信速度は9600bpsくらいですが。

« PICで走るTiny-BASIC(拾遺) | トップページ | PICのTiny-BASICで移動ロボットを試す »

花岡ちゃんのウィークエンド」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: 秋月のXBeeをシリアルケーブル代わりに使うには:

« PICで走るTiny-BASIC(拾遺) | トップページ | PICのTiny-BASICで移動ロボットを試す »