chakokuのブログ(rev4)

日々のごった煮ブログです

Zigbeeの透過モードでシリアル通信させてみる

Zigbeeによる通信は透過モード*1APIモードがあるらしい。透過モードはシリアルの全二重のような通信であり、一方のAPIモードは通信パケットを作ってXBeeに投げ込むらしい。APIモードの方がより高度な通信ができるのだが、パケットを作る手間とCRC計算も必要と思われ、仕様理解とCRC計算がやっかいなので、まずは透過モードで通信させる。
通信させるにはXBeeを2つ用意して、片方はZigbee Coordinator AT、片方は、Zigbee Router ATでセットアップする(セットアップは専用のConfigツール(X-CTUを使う))。PAN ID(会議室番号のようなものかと)も、両方のXBeeで合わせる必要がある。初期値は0x00なのだが、好みで、0xF012と設定してみる。この状態で、Xbeeはシリアル接続可能となり9600bpsでマイコンやPCと接続ができる。

[PC]--USB--[USB/Serial]<--Serial-->[XBee]<----(Zigbeeプロトコル)---->[XBee]<---Serial--->[MicroController]

当初、Routeに設定したXBeeからCoordinatorのXbeeにデータは送れるのだが、CoordinatorからRouterにデータが送れなかった。Zigbeeの透過モードは片側通信なのか??と思って調べると、、Coordinator ATの設定の際、通信相手を指定する必要があるらしかった。この作業が抜けていた。抜けていても通信できるがその場合はCoordinatorからブロードキャストでRouterに送る必要があるらしい。それは無駄なので、、通信相手となるのRouterのデバイスAddressをCoordinator側に設定した。これにより全二重の通信は可能になった。
XBeeのシリアル通信のボーレートはデフォルトで9600bpsらしいが、変えることが可能であり、119200まで上げた。テストでは通信できたので、これをSTEVAL-DRONE01のシリアルポートに接続すれば、、無線で制御が可能になる。はず。。
ZigbeeWiFi等と干渉するらしくどれだけ使えるのか分かりませんが、透過モードなら簡単に導入できるので、BLEプロトコルが作りこめるまでは、まずはZibgeeで通信したらいいかと思っています。
以下はX-CTUの画面、通信先のアドレス(High/Low)を設定する必要あり(赤枠の部分)

DRONEから出力されるSerialに対してXBeeを使ってPCと接続、PCからDRONEが制御可能。実際に飛行するまでにはユニバーサル基板を何かに置き換える必要あり。しかし、、姿勢制御は技術的な課題が多くて難しそうだ(段々とモチベーションが下がってきた)。

■参考URL
CoordinatorからRouterに通信できないというQA(これを見て原因が分かりました)
Can I send data from Coordinator to router in AT mode - Digi Forum

Zigbee通信プロトコルの仕様名で、XBeeは通信デバイスの名称と理解しています。

*1:ATモードと言っていいのかどうか