使用Arduino Fio读取xbee的ID并通过串行通信发送

时间:2011-05-02 06:16:08

标签: serial-port xbee

我正在尝试将多个Arduino Fio与Xbee作为奴隶并将我的计算机作为Master与一个Explore和Xbee联网。

假设我通过串行发送并命令'Read'到所有Arduinos。每个人都回答假设'确定'。

我的问题是让他们回复“Arduino ID1说好”或“Arduino ID2说好”等等。

现在这可能很容易,每个arduinos都有单独的程序烧毁。但在我的情况下,所有arduinos都假设有相同的程序。

我知道我们在第一次配置时为每个Xbee分配了MyID和Pan ID。

所以我正在寻找Arduinos示例中的一些功能

'readMyXbeeID()'或其他东西。

我有什么想法可以做到这一点?或者任何其他方式来实现同样的事情?

2 个答案:

答案 0 :(得分:2)

我可以通过使用AT命令获得MYID。 您需要阅读XBEE文档确认这些。

使用"+++"进入命令模式(不要忘记>延迟一秒钟来“保护”此序列)。

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

XBEE将回复OK\r。 然后ATMY\r将为您MYID returned as an ascii string terminated with "\r"。 [在我的情况下,我设置了MYID为2,所以我看到字符串"2\r"]

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

答案 1 :(得分:0)

如果您想管理与多个设备的通信,我建议您使用API​​模式而不是AT模式。如果您正在使用Arduino,那么有一些非常好的库:Xbee-ApiXBee-Arduino。在这里,您将找到可能对您的项目有所帮助的有用信息和示例。

我用这些库(ZigBee技术的初学者)指导了一些项目,他们很快就掌握了所有概念。 100%可重复使用。

关于你的问题,你是正确的,只为所有Arduinos编写一个程序。否则,您将不得不为每个节点创建不同的十六进制文件,这没有任何意义。识别ZigBee节点的最简单方法是使用64位物理地址。您可以通过AT命令轻松获得此地址。但请记住,在API模式下,无论何时发送消息,源地址都会自动包含在框架中,因此您不必明确包含此信息。