我正在尝试将多个Arduino Fio与Xbee作为奴隶并将我的计算机作为Master与一个Explore和Xbee联网。
假设我通过串行发送并命令'Read'到所有Arduinos。每个人都回答假设'确定'。
我的问题是让他们回复“Arduino ID1说好”或“Arduino ID2说好”等等。
现在这可能很容易,每个arduinos都有单独的程序烧毁。但在我的情况下,所有arduinos都假设有相同的程序。
我知道我们在第一次配置时为每个Xbee分配了MyID和Pan ID。
所以我正在寻找Arduinos示例中的一些功能
'readMyXbeeID()'或其他东西。
我有什么想法可以做到这一点?或者任何其他方式来实现同样的事情?
答案 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-Api和XBee-Arduino。在这里,您将找到可能对您的项目有所帮助的有用信息和示例。
我用这些库(ZigBee技术的初学者)指导了一些项目,他们很快就掌握了所有概念。 100%可重复使用。
关于你的问题,你是正确的,只为所有Arduinos编写一个程序。否则,您将不得不为每个节点创建不同的十六进制文件,这没有任何意义。识别ZigBee节点的最简单方法是使用64位物理地址。您可以通过AT命令轻松获得此地址。但请记住,在API模式下,无论何时发送消息,源地址都会自动包含在框架中,因此您不必明确包含此信息。