秋月の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で移動ロボットを試す »
「花岡ちゃんのウィークエンド」カテゴリの記事
- レーザー距離センサVL53L0Xを複数使うには(2022.05.01)
- 【訂正!】PIC24Fでレーザー距離センサVL53L0Xを使う(2022.04.13)
- PIC24Fでレーザー距離センサVL53L0Xを使う(おしまい)(2022.04.14)
- PIC24Fでレーザー距離センサVL53L0Xを使う(その3)(2022.04.13)
- PIC24Fでレーザー距離センサVL53L0Xを使う(その2)(2022.04.12)
« PICで走るTiny-BASIC(拾遺) | トップページ | PICのTiny-BASICで移動ロボットを試す »
コメント