我正在尝试将多个Arduino Fio与Xbee作为从站,而我的计算机作为主站,使用Explore和Xbee。
假设我通过串行向所有Arduinos发送和命令'Read‘。每个人的回答都假设是“OK”。
我的问题是让他们回复像'Arduino ID1说OK‘或者'Arduino ID2说OK’之类的东西。
现在,这可能很容易,因为每个arduinos都有单独的程序烧录到其中。但在我的例子中,所有的arduinos都应该有相同的程序。
我知道我们在第一次配置Xbee时会给每个Xbee分配MyID和Pan ID。
因此,我正在寻找程序中的一些函数,这些函数被烧录到Arduinos示例中
'readMyXbeeID()‘或其他什么。
你知道我该怎么做吗?或者任何其他方法来achieveArd相同的东西?
发布于 2011-11-07 13:57:27
我能够通过使用AT命令来获取MYID。您需要阅读XBEE文档来确认这些内容。
使用"+++"
进入命令模式(不要忘记使用>1秒的延迟来“保护”这个序列)。
{我使用:delay(1200); Serial.print ( "+++" ) ;
}
XBEE
将响应OK\r
。然后ATMY\r
会给你MYID returned as an ascii string terminated with "\r"
。在我的例子中,我将MYID
设置为2,因此我看到了字符串"2\r"
以命令ATCN\r
结束,退出命令模式。
发布于 2012-11-19 11:44:58
如果您想要管理与多个设备的通信,我建议您使用API模式而不是AT模式。如果你正在使用Arduino,有一些非常好的库:Xbee-Api和XBee-Arduino。在这里,您将找到对您的项目有帮助的有用信息和示例。
我用这些库指导了几个项目( ZigBee技术的完全初学者),他们很快就理解了所有的概念。100%值得推荐。
关于你的问题,你是对的,只为所有Arduinos编写了一个程序。否则,您将不得不为每个节点创建不同的十六进制文件,这是没有意义的。识别ZigBee节点的最简单方法就是使用64位物理地址。您可以通过AT命令轻松获取此地址。但请记住,在API模式下,每当您发送消息时,源地址都会自动包含在帧中,因此您不必明确包含此信息。
https://stackoverflow.com/questions/5853999
复制