XBee DigiMesh ネットワークデスカバ(ND)

DigiMeshネットワーク上に存在するノードのアドレスを取得してみます。

●ローカルATコマンドを使う

最初、勘違いで、NDコマンドをブロードキャストで他のノードに送るのかと思っいて、それを試していたのですが、同じレスポンスが何個も返ってくるのでおかしいと思い、マニュアルを見直していたら、間違っているのき気が付きました。

NDコマンドを送るのは、ネットワーク上にあるXBeeではなく、制御マイコンに直接シリアルで接続されているXBeeへローカルに送るということです。確かにマニュアルにはLocalと記述されていました。

それで、XCTU上で、AT commandでND(Network Discover) を送信すると、他のXBeeから1つずつAT command respons で返ってきました。自動的にブロードキャストで送信しているということですね。

●反応が遅い

応答のAT command responsが返ってくるのは、1秒ぐらいしてからポツリポツリという感じです。もう少し早い動作を期待していたのですが、NDコマンドは通常はシステム起動時などい使用するだけですので、このことを考慮しておけば問題無いでしょう。

一旦取得したアドレスはリストとしてEEPROMなどに記憶しておけば、毎回リストを作り直す必要もありません。

●実際のログ

次のログは、XBeeを4つつないで、その1つにXCTUを接続したときのものです。XCTUからNDコマンドを送信して、返ってきたAT command responsのログです。ちゃんと返ってますね。

AT_ND_Log

プログラムでこれを取り出して、リストを作成し、RF通信時に利用できます。

各ノードのアドレスを全体で共有する場合、マスタとなるノードにアドレスのテーブルを作成して、それをブロードキャストで全体に送信して、アドレステーブルの内容を同期させるといいですね。

コメントは受け付けていません。