Embedded 如何使用XBee向其他XBee快速广播信息?

Embedded 如何使用XBee向其他XBee快速广播信息?,embedded,arduino,microcontroller,zigbee,xbee,Embedded,Arduino,Microcontroller,Zigbee,Xbee,我正在使用一些Arduino模块(或微控制器,Arduino不是强制性的)。我在AT/透明模式下配置了XBees 我需要广播信息:当一个模块被触摸时,其他模块必须同时立即做出反应 不幸的是,如果我在单播模式下有很好的速度效果,那么在广播模式下会有很多延迟。这是已知和记录的,请参阅 数据不会丢失,但在再次发送或发送到我的Arduino之前,XBee有时会将它们缓冲几秒钟 这似乎不是配置问题,而是广播协议的工作方式。你知道我该如何加快这个过程吗 我唯一能做的就是使用API模式,让每个Arduino保

我正在使用一些Arduino模块(或微控制器,Arduino不是强制性的)。我在AT/透明模式下配置了XBees

我需要广播信息:当一个模块被触摸时,其他模块必须同时立即做出反应

不幸的是,如果我在单播模式下有很好的速度效果,那么在广播模式下会有很多延迟。这是已知和记录的,请参阅

数据不会丢失,但在再次发送或发送到我的Arduino之前,XBee有时会将它们缓冲几秒钟

这似乎不是配置问题,而是广播协议的工作方式。你知道我该如何加快这个过程吗


我唯一能做的就是使用API模式,让每个Arduino保留一个XBee地址列表,并将信息单播到这些地址列表中。。。但是我失去了广播方法的舒适性,我无法在不更新每个Arduino的情况下轻松添加新模块。

我认为您无法对其进行更多优化,除非只有部分模块需要接收消息。在这种情况下,您可以使用多播(可能仅适用于Xbee 2)而不是广播,这将在网络足够大(大于16个节点,即基本路由表)时对网络的总体速度带来一些非常微小的改进

您是否尝试过单播、多播和广播之间的比较?这可能是因为制作十几个单播平均速度更快,或者至少更可靠,特别是如果您的特定网络中有许多跳(例如:一个12节点、8跳的网络)


使用单播,您可以获得确认或确认,以便了解操作的总时间和成功率,以及是否需要重试。

使用XBee ZB模块的广播寻址传输数据通常比将单个单播传输到您想要通话的每个节点的性能要低得多。这是因为XBee ZB模块上的广播工作方式与XBee 802.15.4模块上的广播工作方式非常不同

当您使用XBee 802.15.4模块发送广播时,一个802.15.4帧将传输到网络,所有能够听到传输的节点将接收到该帧并从串行UART发送信息。802.15.4网络是一个简单的星形网络,网络上的任何节点都不会隐式重复广播。对于XBee ZB,这是不同的。XBee ZB模块在网状拓扑中工作,需要向原始传输范围之外的其他节点重复信息

当您使用XBee ZB模块发送广播时,接收广播的每个节点将重新广播3次,导致大量数据在节点之间传输。此外,在任何给定时间,网络上只能有一定数量的“实时”广播。这常常让人们感到惊讶,认为网络正在丢弃他们的数据,而实际上XBee拒绝了传输请求

除非您发送数据的频率非常低(可能是每分钟广播一次或更慢),否则通常最好遵循以下步骤:

  • 通过执行网络发现或通过启用AR功能收集路由记录数据包来构建所有节点的列表
  • 向您希望传输到的每个节点发送单播
  • 如果您正在向大型ZB网络上的节点发送信息(即大于30条注释),您可能需要阅读本文: