2

Arduino でXBeeラジオの発信元アドレスを取得する方法を見つけようとしています。

基本的には、XBee チップに送信元アドレス (または ID) を含む文字列を送信させて、Arduino ごとに異なるコードを実行しなくても、メッセージの送信元を特定できるようにします。

私は何をすべきか?

編集

xbee-arduino ライブラリ (http://code.google.com/p/xbee-arduino/) を使用しています。

xbee は、Sparkfun Xbee Shield (http://www.sparkfun.com/products/9976) を介して Arduino に直接接続されています。

XIG(http://code.google.com/p/xig/)を実行しているConnectport X2と通信しているため、送信者のアドレスを確認するarduinoコードをそこで実行することはできません-ローカルで見つける必要がありますボード上の。

4

2 に答える 2

3

あなたが探しているのは XBee のシリアル番号だと思います。これは、そのデバイスを識別するグローバルに一意の 64 ビット アドレスです。

SHSLの 2 つの AT コマンドを使用して、シリアル番号の上位 32 ビットと下位 32 ビットを取得できます。xbee-arduino ディストリビューションには、値を出力するサンプル プログラムがあります: AtCommand.pde

次に、そのプログラムはAIコマンドを実行し、最後のネットワーク参加要求のステータスを示すバイトを返します。0x00それは成功に戻ります。

ZigBee デバイスには 16 ビット アドレスもあり ( MYコマンドを使用)、ネットワーク上で一意であることが保証されているだけです。安定したネットワーク上の XBee モデムでは、アドレスの競合がない限り変更されませんが、 SHおよびSLで決定される完全な 64 ビット値を使用する方がよいでしょう。

これらのコマンドはすべて、対象の XBee が Arduino に直接接続されていることを前提としています。それらはすべて を使用してリモートで実行できますRemoteATCommandが、そのためにはリモート モデムのシリアルを渡す必要があるため、正常に呼び出しを行うことができれば、アドレスは既に取得されています。

対象の XBee が Arduino に接続されていない場合は、ND (Node Discover) コマンドを使用してネットワーク スキャンを実行する必要があります。私は xbee-arduino API に精通しており、それが利用可能かどうかを知ることができませんが、発見された各ノードに関する情報を取得するには、もう少し作業が必要です。

于 2011-09-26T23:45:43.700 に答える
0

これらの XBee チップで API モードを使用している場合 (もちろん、XBee-api ライブラリを使用している場合)、メッセージに送信者のアドレスを含める必要はありません。この情報は、フレーム内で自動的に指定されます。クラスZNetRxBaseResponseの getRemoteAddress16() および getRemoteAddress64() メソッドを見てください。

したがって、アドレスを知りたいノードからコーディネーター (0x0000 として簡単にアドレス指定できます) に、最初のメッセージ「hello」を送信する必要があります。上記の方法を使用すると、この情報を取得できます。

于 2012-11-16T15:04:51.637 に答える