Arduino中的XBee原始地址

时间:2011-09-26 15:35:26

标签: arduino xbee

我正试图找到一种方法来获取Arduino中XBee无线电的原始地址。

基本上,我希望我的XBee芯片发送一个也包含其原始地址(或id)的字符串,以便我可以识别消息的来源,而无需在每个不同的Arduino上运行不同的代码。

我该怎么办?

修改

我正在使用xbee-arduino库(http://code.google.com/p/xbee-arduino/)。

xbee通过Sparkfun Xbee Shield直接连接到Arduino(http://www.sparkfun.com/products/9976)

正在与运行XIG的Connectport X2(http://code.google.com/p/xig/)进行通信,因此我无法在那里运行任何会查看发件人地址的arduino代码 - 它必须在董事会当地找到。

2 个答案:

答案 0 :(得分:3)

我相信你所寻找的是XBee的序列号,它是一个全球唯一的64位地址,用于识别该设备。

有两个可用的AT命令, SH SL ,可以为您提供序列号的高32位和低位。 xbee-arduino发行版中有一个示例程序,用于打印其值:AtCommand.pde

该程序然后执行 AI 命令,该命令返回一个字节,给出最后一次网络加入请求的状态。这将成功返回0x00

ZigBee设备还具有16位地址(使用 MY 命令),该命令仅保证在其网络上是唯一的。在稳定的网络上使用XBee调制解调器,除非存在地址冲突,否则不会改变,但使用 SH SL <确定的完整64位值可能会更好/强>

所有这些命令都假设您感兴趣的XBee直接连接到Arduino。它们都可以使用RemoteATCommand远程执行,但这需要您传递远程调制解调器的序列,因此如果您可以成功拨打电话,那么您已经拥有了该地址。

如果您感兴趣的XBee未连接到Arduino,则您需要使用 ND (节点发现)命令执行网络扫描。我不熟悉xbee-arduino API以了解它们是否可用,但获取有关每个节点的信息需要更多的工作。

答案 1 :(得分:0)

如果您在这些XBee芯片上使用API​​模式(当然,如果您使用XBee-api库),则无需在消息中包含发件人的地址。此信息在框架中自动指定。查看类ZNetRxBaseResponse中的getRemoteAddress16()和getRemoteAddress64()方法。

所以你需要做的就是从你想知道地址的节点发送第一条消息“hello”,即发送给协调器(你可以很容易地将其作为0x0000)。使用上述方法,您可以获得此信息。