【问题标题】:In XBee ZigBee, how to get RSSI of all end-devices from coordinator在 XBee ZigBee 中,如何从 coordinator 获取所有终端设备的 RSSI
【发布时间】:2016-03-22 01:02:51
【问题描述】:

为每个终端设备获取 RSSI 的正确方法是什么?

场景:在 XBee Series 2 无线电模块上使用 ZigBee 固件,API 模式,我有一个协调器和多个终端设备。每隔几秒钟,每个终端设备都会向协调器发送一个数据包,其中包含温度等传感器信息......

  1. 我在任何要解析的 API 帧中都看不到 RSSI 字段。

  2. 如果我只是盲目地读取存储了最后接收到的数据包的 RSSI 的 pin6(或使用 DB 命令),我仍然不知道这个 RSSI 属于哪个终端设备。

【问题讨论】:

  • 您好,您在协调器上使用微控制器吗?一个linux终端?你使用图书馆吗?您可以使用 Xbee 库中的一些基本功能获取此信息 :)
  • 我在协调器和 XBee C 库 github.com/digidotcom/xbee_ansic_library 上使用 Galileo/Linux。我看到人们在 Arduino 中使用 getRSSI() 函数,但我没有使用 Arduino。

标签: xbee zigbee


【解决方案1】:

我不认为它可以作为您将收到的任何 API 帧中的字段使用。您可以使用 ATDB 命令获取 RSSI 值,但正如您所说,您不知道它与哪个远程设备相关联。

如果您真正使用的是终端设备(而不是路由器),那么您可以向每个设备发送一个远程 ATDB 命令,响应会告诉您来自终端设备父路由器的信号强度,因为所有帧都将来自该单个设备(作为最后一跳)。

即使使用路由器,您也可以保证获得远程 AT 请求帧的 RSSI 值——尽管您不知道网状网络上的哪个无线电是到达目标的最后一跳。

如果您有一个由协调器和终端设备组成的网络,那么协调器就是父节点,您将了解终端设备的接收能力——这对于您的应用程序来说可能已经足够了。

【讨论】:

  • 他在coordinator上收到包时不使用getRSSI()函数吗?
  • getRSSI() 函数是如何工作的?正如对该问题的评论中所述,这是 Arduino 库的一项功能,在使用的库中不可用。而且,根据 API 帧文档,对于 ZigBee(XBee 系列 2)固件,RX16 和 RX64 帧的该字段设置为 0。
  • 哦,好的,感谢您提供的信息^^ 我看到一些文档在 S2 中使用 RSSI 来尝试对终端设备进行本地化。我会稍后检查,因为我很困惑
猜你喜欢
  • 1970-01-01
  • 2012-08-20
  • 1970-01-01
  • 1970-01-01
  • 2021-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多