0

Xbeeをスレーブとして、コンピューターをExploreとXbeeを使用してマスターとして、複数のArduino Fioをネットワーク化しようとしています。

すべてのArduinoにシリアル経由で「読み取り」を送信してコマンドを送信するとします。誰もが「OK」と答えます。

私の問題は、「Arduino ID1がOKと言う」または「Arduino ID2がOKと言う」などのように応答させることです。

これは、各arduinoに個別のプログラムが焼き付けられているため、簡単かもしれません。しかし、私の場合、すべてのarduinoが同一のプログラムを持っていると想定されています。

初めて構成するときに、各 Xbee に MyID と Pan ID を割り当てることは知っています。

だから私はArduinosの例に焼き付けられたプログラムでいくつかの関数を探しています

「readMyXbeeID()」とか。

どうすればこれを行うことができますか?または、同じことを達成する他の方法はありますか?

4

2 に答える 2

2

ATコマンドでMYIDを取得できました。これらを確認するには、XBEE ドキュメントを読む必要があります。

コマンド モードに入るために使用"+++"します (このシーケンスを「保護」するための > 1 秒の遅延を忘れないでください)。

{ 私が使用したもの: delay(1200); Serial.print ( "+++" ) ;}

XBEEが応答しますOK\r。それからATMY\rあなたを与えるでしょうMYID returned as an ascii string terminated with "\r"。[私の場合MYID、2 の a を設定していたので、文字列が見えました"2\r"]

ATCN\rコマンド モードを終了するコマンドで終了します。

于 2011-11-07T13:57:26.827 に答える
0

複数のデバイスとの通信を管理したい場合は、AT モードではなく API モードを使用することをお勧めします。Arduino を使用している場合は、非常に優れたライブラリがいくつかあります: Xbee-ApiおよびXBee-Arduino。ここでは、プロジェクトに役立つ有用な情報と例を見つけることができます。

私はこれらのライブラリ (ZigBee テクノロジの完全な初心者) を使用していくつかのプロジェクトを指導しましたが、彼らはすべての概念を非常に迅速に習得しました。100%お勧めです。

あなたの質問に関しては、すべての Arduino に対して 1 つのプログラムだけを作成することについて、あなたは正しいです。そうしないと、ノードごとに異なる hex ファイルを作成する必要があり、意味がありません。ZigBee ノードを識別する最も簡単な方法は、64 ビットの物理アドレスを使用することです。このアドレスは、AT コマンドを使用して簡単に取得できます。ただし、API モードでは、メッセージを送信するたびに送信元アドレスがフレームに自動的に含まれるため、この情報を明示的に含める必要がないことに注意してください。

于 2012-11-19T11:44:57.513 に答える