秋月のXBeeを使ってみる
先日秋月に寄ったらXBeeを見つけました。
今までは特に興味がなかったのですが、売ってるなら買ってみるか!ということで、衝動買いです。
カンタンに使い勝手を見てみようと言うわけですが、これが意外と大変だったのでレポートします。
テストの内容は「1対1でのデータ通信」です。
このページを参考にさせていただいて、トランスペアレントモードに設定し、まずは簡単なループバックのテストをします。なお、参考にさせていただいたサイトのトップはここです。ユニークなオリジナルキットには興味津々ですね。
実験を開始するには変換基板が必要です。スイッチサイエンスからPC接続用USBアダプタと変換基板を通販で購入しました。
設定は参考ページに従って行いますが、つまづいたことを列記します。
1・X-CTUは最新版を使うこと
秋月で売っているシリーズ2は最新型のようで、最新版でないとモデム情報の読み込みが出来ませんでした。それがわからず、接続を調べたりなんやらかんやらで時間を食ってしまいました。
2・MACアドレスは16進の文字列
通信のためには、End DeviceにCoodinatorになるXBeeのMACアドレスを設定します。
参考ページにはプロパティの設定について、次のような記述があります。
"DH Destination Address High CoodinatorモジュールのMACアドレス(上位4バイト)
DL Destination Address Low CoodinatorモジュールのMACアドレス(下位4バイト)"
4バイト=4文字と理解したため、???になってしまいました。MACアドレスはモジュール裏に8文字ずつ、2行にわたって16文字プリントしてあるからです。
しばらく考えて、MACアドレスは16進表記で、2文字で1バイトなのでは?と思い当たりました。
そこで、そのまま一行ずつ、上位・下位に設定してOKでした。
3・USBアダプタにリセットボタンは必ずつける
最初はそんなにリセットすることは無いだろうとタカをくくって、ジャンパー線を接続してリセットするつもりでしたが、実際にやってみると頻繁にリセットが必要で、リセットボタンを追加しました。
こんなとこですかねえ。
ということで設定は完了です。下記のように接続してループバックさせてみます。
で、結果は?
4・ルーブバックの調子が悪い
TeraTermからぽちぽちと入力すると、打ち込んだ文字が返ってきます。一見うまくいってるようですが… 数文字入力すると返ってこなくなります。あれれ?と思っていると、しばらくして思い出したように返ってきます。なんか変ですね。ここであきらめて英文マニュアルを読むことにします。
5・送信時CTSによるフロー制御が必要
マニュアルを読むと、送信時にフロー制御が必要とあります。まあ、当たり前ですが。
そこで、TeraTermでハードウェアフロー制御にしてみましたが、明らかな変化はありません。
これは、End Deviceの送信時にフロー制御をしてないためです。
そこでループバックをやめて、次の図のようにPICマイコンを使い、End DeviceからTeraTermに"A"を連続送信してみます。
CTSが0ならば送信し、1ならば0になるまで待つプログラムになっています。
これでうまく行きました。何バイトでも問題なく連続送信できます。115Kbpsで試しましたが、データのロストもありません。送ったバイト数だけ、キチンと受信しています。
それからマニュアルを見て気づいたことは…
6・XBeeは半二重通信
普段はあまり意識していませんが、普通のシリアルは全二重通信、つまり送りと受けのラインが独立しています。だからループバックで回線のテストが出来るわけです。
XBeeはトランシーバーなので送信と受信を同時には行いません。そのため、単純なループバック接続だと「何か」が起こり前述のような結果になるようです。
トランスペアレントモードで使うときには、このことを意識する必要があると思います。
« ジャイロ制御のレーシングカーをテストする(その2) | トップページ | シリアルJPEGカメラをテストする »
「花岡ちゃんのウィークエンド」カテゴリの記事
- レーザー距離センサ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)
コメント