ZigBee这协议在物联网圈子里也算老面孔了,低功耗、自组网、节点多,这几个特点让它在智能家居、工业传感、楼宇控制这些场景里一直很吃香。但真到自己动手搭的时候,很多人发现"组网"这两个字比想象中麻烦。
先说说它为什么能自组网。ZigBee网络里主要有三种角色:协调器、路由器、终端节点。协调器负责整个网络的建立和管理,是第一个上电的设备;路由器既能发自己的数据,也能帮别人转发,延伸网络覆盖;终端节点一般就是传感器这种,功耗最低,大多数时候睡觉,醒了发个数据再睡。一个网络理论上能挂几万个节点,实际项目里能用到几百个就已经算不小的网了。
组网最常见的问题是节点加不进去。原因多半就几个:信道被干扰、PAN ID冲突、离协调器太远又没中间路由、或者节点的网络参数没配对。ZigBee工作在2.4G频段,跟WiFi、蓝牙挤在一起,信道干扰是家常便饭。所以部署前最好先扫一下周围的无线环境,挑个相对干净的信道,别用默认信道一股脑往上怼。
再一个就是网络拓扑怎么选。星型最简单,所有节点直接连协调器,适合节点少、距离近的场景。树型和Mesh网更灵活,节点之间可以多跳转发,某个节点掉了也不影响整体通信。但Mesh的代价是延迟会变长,功耗也会上去,因为路由节点得一直醒着帮人转发。所以项目里到底是追求稳定还是追求省电,得提前想清楚。
实际调试的时候,抓包工具很有用。ZigBee的空中包看不懂的话,出了问题只能瞎猜。配个抓包 dongle,看设备有没有发入网请求、协调器有没有回复、数据有没有到目标地址,基本能把大部分问题定位出来。另外,固件版本、协议栈版本、厂商实现之间都有差异,混用不同厂家的模块很容易出兼容性问题,这个坑踩过的人不少。
功耗是另一个绕不开的话题。终端节点如果 batteries 供电,又想跑个一两年,那就得把休眠周期、发包频率、发射功率都抠细。发包太频繁,电池撑不住;发包间隔太长,实时性又差。常见做法是按需唤醒加定时心跳,数据有变化了赶紧上报,平时就睡觉。
总的来说,ZigBee组网不算难,但细节多。信道规划、角色分配、拓扑选择、功耗控制、兼容性测试,这几块任何一个没做好,现场都可能出问题。它适合节点多、数据量小、对功耗敏感的场景,如果项目要求高速率或者远距离传输,那可能就得考虑别的方案了。
下一篇:没有了