【问题标题】:How to quickly broadcast information with a XBee to other XBee?如何通过 XBee 快速向其他 XBee 广播信息?
【发布时间】:2012-04-10 03:06:23
【问题描述】:

我正在使用几个 XBee Zigbee 和一些 Arduino 模块(或微控制器,Arduino 不是强制性的)。我将我的 XBees 配置为 AT/透明模式。

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

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

没有数据丢失,但有时它们会被 XBee 缓冲几秒钟,然后再次发送或传送到我的 Arduino。

似乎不是配置问题,是广播协议的工作方式。关于如何加快流程的任何想法?

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

【问题讨论】:

    标签: embedded arduino microcontroller zigbee xbee


    【解决方案1】:

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

    您是否尝试过单播、多播和广播之间的比较?平均而言,进行十几个单播可能更快或至少更可靠,特别是如果您的特定网络中有很多跃点(例如:具有 8 个跃点的 12 节点网络)。

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

    【讨论】:

      【解决方案2】:

      通过 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 正在拒绝传输请求。

      除非您不经常发送数据(可能每分钟广播一次或更慢),否则通常最好遵循以下程序:

      1. 通过启用 AR 功能执行网络发现或收集路由记录数据包来构建所有节点的列表
      2. 向您希望传输到的每个节点发送单播

      如果您要向大型 ZB 网络上的节点发送信息(即超过 30 条笔记),您可能需要阅读这篇文章:Large Networks and Source Routing

      【讨论】:

        猜你喜欢
        • 2017-11-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-07-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多