2011-05-02 52 views
1

我試圖將多個Arduino Fio與Xbee作爲奴隸並將我的計算機作爲Master與Explore和Xbee進行網絡連接。用Arduino Fio讀取xbee的ID,並通過串行通信發送

假設我發送並命令'讀取'通過串行到所有Arduinos。每個人都回應假設'OK'。

我的問題是讓他們應對類似「Arduino的ID1說OK」或「Arduino的ID2說OK」等

現在,這可能是簡單,每個arduinos都被燒到他們獨立的程序。但在我的情況下,所有的arduinos都假設有相同的程序。

我知道我們爲每個Xbee分配了MyID和Pan ID,並首次配置它們。

所以我期待在燒入Arduinos例如

「readMyXbeeID()」什麼的一些程序功能。

任何想法我可以做到這一點?或者以任何其他方式實現同​​樣的目標?

回答

2

我能夠通過使用AT命令獲得MYID。 您需要閱讀XBEE文檔確認這些。

使用"+++"進入命令模式(不要忘記大於1秒的延遲來保護這個序列)。

{我用:delay(1200); Serial.print ("+++") ;}

XBEE將響應OK\r。 然後ATMY\r會給你MYID returned as an ascii string terminated with "\r"。 [在我來說,我已成立2的MYID讓我看到了字符串"2\r"]

完成與命令ATCN\r退出命令模式。

0

如果要管理與多個設備的通信,我建議您使用API​​模式而不是AT模式。如果你正在使用Arduino,有一些非常好的庫:Xbee-ApiXBee-Arduino。在這裏你會找到有用的信息和例子,可以幫助你的項目。

我用這些庫(ZigBee技術中的完整初學者)輔導了一些項目,他們得到的所有概念都非常快。 100%可推薦。

關於你的問題,你說的對所有Arduinos只寫一個程序是正確的。否則,你將不得不爲每個節點創建不同的十六進制文件,這是沒有意義的。識別ZigBee節點的最簡單方法就是使用64位物理地址。您可以通過AT命令輕鬆獲取此地址。但請記住,在API模式下,無論何時發送消息,源地址都會自動包含在幀中,因此您不必包含明確的信息。