いよいよハードウェアの使用も決まり,あと2週間ほどでリリースにこぎつけるため,急ピッチで作業を進めています.

現在問題になっていることのひとつに,コントローラ(パソコン)から各掲示板へ情報を送る方法です.これまではコントローラと掲示板の間は1対1による通信をしていましたが,これからは1対多の通信をすることになります.この場合,これまで用いていたATコマンドモードによる制御より,APIモードの方が有利です.たとえば,ATコマンドの場合,通信先を変更するにはいちいちATコマンドを入力できる状態にしなければならず,それにはおよそ1秒間の時間を要します.APIモードの場合,そのようなことをせずとも通信を行えます.

しかし,APIモードの場合これまでのATコマンドモードと異なり少し複雑です.今回の目標は,コントローラ(パソコン)にUSB-Serialで接続したXBeeをCoordinatorに,掲示板に接続したXBeeをRouterにし,CoordinatorからRouterへ通信を行うことです.ここでは,そのために行ったことを備忘録的に書いておきます.

まず,今回の環境について記述します.下に示す,Digi社製 XBee Pro S2B XBP24BZ7を4個使います.

  • ZIGBEE COORDINATOR API Ver.21A7
  • ZIGBEE ROUTER API Ver.23A7

次に,各ノードの諸情報を示します.

  Coordinator Router1 Router2 Router3
Networking/ID - PAN ID 61 61 61 61
Addressing/SH - Serial Number High 0013A200 0013A200 0013A200 0013A200
Addressing/SL - Serial Number Low 409E2C86 40666209 40926E69 40666204
Addressing/DH - Destination Address High 0 0 0 0
Addressing/DL - Destination Address Low FFFF 0 0 0
Addressing/MY - 16-bit Network Address 0 3425 4584 47CE
Serial Interfacing/AP - API Enable 2 2 2 2

 

このような条件のもと,CoordinatorからRouter1へデータ(ここでは「T」(0x54)を送る場合,次のようにします.

7E 00 0F 10 01 00 7D 33 A2 00 40 66 62 09 FF FE 00 00 54 D7

上記の情報をRouter1に送ると,Router1は次の情報を受信します.

7E 00 0D 90 00 7D 33 A2 00 40 9E 2C 86 00 00 02 54 D4 

 

次に,CoordinatorからRouter2へデータ(ここでは「T」(0x54)を送る場合,次のようにします.

7E 00 0F 10 01 00 7D 33 A2 00 40 92 6E 69 FF FE 00 00 54 3F

上記の情報をRouter2に送ると,Router2では次の情報を受信します.

 7E 00 0D 90 00 7D 33 A2 00 40 9E 2C 86 00 00 01 54 D5

 

 次にCoordinatorからRouter1およびRouter2へBroadcastで送る場合には次のようになります.

7E 00 0F 10 01 00 00 00 00 00 00 FF FF FF FE 00 00 54 9F

上記の情報をRouterに送ると,Router1およびRouter2では次の情報を受信します.

7E 00 0D 90 00 7D 33 A2 00 40 9E 2C 86 00 00 02 54 D4