Vin*_*ren 4 embedded microcontroller arduino zigbee xbee
我正在使用几个XBee Zigbee和一些Arduino模块(或微控制器,Arduino不是强制性的).我在X /透明模式下配置了我的XBees.
我需要广播信息:当触摸一个模块时,每个其他模块必须同时立即做出反应.
不幸的是,如果我在单播模式下获得良好的速度效果,则广播模式中存在大量延迟.这是已知和记录的内容,请参阅XBee ZigBee寻址.
没有数据丢失,但它们有时会被XBee缓冲几秒钟,然后再次发送或传送到我的Arduino.
它似乎不是配置问题,它是广播协议的工作方式.关于如何加快这个过程的任何想法?
我唯一的一个就是使用API模式,让每个Arduino保留一份XBee地址列表,并将单播信息列入这些地址列表......但我失去了广播方法的舒适度,我不能轻松添加新模块而不更新每个Arduino.
使用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实际上拒绝传输请求时,这通常会使人们认为网络正在丢弃其数据.
除非您不经常发送数据 - 可能每分钟播放一次或更慢 - 通常最好遵循以下过程:
如果您要向大型ZB网络上的节点发送信息(即大于30个音符),您可能需要阅读本文:大型网络和源路由