2011-09-26 35 views
2

我想找到一種方法來獲得Arduino中的XBee收音機的起始地址。Arduino中的XBee起始地址

基本上,我希望我的XBee芯片發送一個也包含其原始地址(或ID)的字符串,以便我可以識別消息來自哪裏,而不必在每個不同的Arduino上運行不同的代碼。

我該怎麼辦?

編輯

我使用的XBee-的Arduino庫(http://code.google.com/p/xbee-arduino/)。

的的XBee通過Sparkfun的Xbee盾(http://www.sparkfun.com/products/9976)

將其用的ConnectPort X2通信運行XIG(HTTP直接連接到Arduino:// code.google.com/p/xig/),所以我不能在那裏運行任何arduino代碼來查看發件人的地址 - 它必須在板上本地找到。

+0

您是否使用特定的XBee軟件庫? XBee的地址是你想要直接連接到Arduino還是它是遠程的? –

+0

新增對主要問題的迴應 – bpmccain

回答

3

我相信你要找的是XBee的序列號,它是一個全球唯一的,標識該設備的64位地址。

有兩個AT可用的命令,SHSL,是給你的序列號的高和低32位。有在打印他們的價值觀的XBee-Arduino的分佈的示例程序:AtCommand.pde

該程序,然後執行AI命令,它返回一個字節給最後一個網絡的狀態加入要求。這將成功返回0x00

一個ZigBee設備也有一個16位地址(使用MY命令),它只保證在其網絡上是唯一的。在穩定的網絡上使用XBee調制解調器時,除非存在地址衝突,否則這種調制解調器不會更改,但使用完整的64位值可能會更好,如使用SHSL所確定的。

所有這些命令都假設您感興趣的XBee直接連接到Arduino。它們都可以使用RemoteATCommand遠程執行,但這要求您傳送遠程調制解調器的串口,因此如果您可以成功進行呼叫,那麼您已經擁有該地址。

如果您感興趣的XBee沒有連接到Arduino,那麼您需要使用ND(節點發現)命令執行網絡掃描。我並不熟悉xbee-arduino API知道它們是否可用,但在發現每個節點的相關信息時需要做更多的工作。

0

如果您在這些XBee芯片上使用API​​模式(當然,如果您使用XBee-api庫),則不需要在消息中包含發件人的地址。該信息在框架中自動指定。查看類ZNetRxBaseResponse中的getRemoteAddress16()和getRemoteAddress64()方法。

所以你要做的是發送第一條消息「你好」即到你想知道地址的節點的協調器(你可以很容易地作爲0x0000)。使用上面提到的方法,你可以得到這些信息。