ZigBee在工业物联网和智能家居领域用得非常广,特别适合那种"节点多、距离短、功耗低、数据量小"的场景。比如工厂里几百个传感器节点要传数据到网关,电池供电、半年换一次电池,这种需求ZigBee几乎是量身定做的。今天就以TI经典的CC2530芯片为例,聊聊ZigBee组网的实战经验,都是项目里踩过的坑。
先说ZigBee组网的基本概念。ZigBee网络里有三种节点:协调器(Coordinator,负责建网和分配地址,一个网络里只能有一个)、路由器(Router,负责中继和路由,节点掉线不影响网络)、终端节点(End Device,只跟父节点通信,可以休眠省电)。一个典型的Mesh网络里,协调器是核心,路由器搭起骨干,终端节点挂载到最近的路由器上。组网的关键是PAN ID和信道选择,PAN ID相当于网络的"身份证",一个区域内多个ZigBee网络不能冲突,所以大型项目里要做信道规划。
CC2530是TI的经典ZigBee芯片,51内核、内置RF收发器,配合Z-Stack协议栈使用。开发环境是IAR Embedded Workbench for 8051,协议栈建议用Z-Stack 3.0.2(最后一版免费版),新版的要付费。开发流程一般是:先在IAR里编译协调器固件,烧录到一块CC2530开发板当协调器;然后编译路由器固件,烧录到若干块开发板;最后编译终端固件,烧录到传感器板上。上电后协调器自动建网,路由器和终端会自动入网,整个过程在协议栈里都已经实现,不用自己写。
几个工程上的实战经验。第一,组网时间问题:ZigBee节点冷启动入网要几秒到十几秒,这对工业现场是个问题(紧急情况下设备上线慢)。解决办法是协调器预先建网并保存网络参数,路由器和终端上电后能快速加入已存在的网络,配合NV存储可以把入网时间缩短到秒级。第二,节点数量限制:ZigBee协议规定一个协调器最多挂255个节点,但实际项目里节点多了会有路由震荡、丢包的问题,建议每个路由器下挂不超过20个终端节点,做多级路由扩展。第三,距离问题:CC2530的发射功率只有4.5dBm,室外空旷环境传输距离也就100米左右,工业现场有金属遮挡会更近。建议用CC2530+CC2591功放的方案,发射功率能到20dBm,距离能翻倍。
调试ZigBee网络有两个利器:Packet Sniffer(抓包工具)和Z-Tool(网络分析工具)。Packet Sniffer能抓取空中的ZigBee数据包,看MAC层、Network层、APS层的交互,排查组网问题特别方便。Z-Tool可以扫描当前信道的网络信息、节点邻居表、路由表,做现场网络诊断很有用。常见问题排查:终端入不了网,先看协调器和路由器的PAN ID、信道是否一致;终端频繁掉线,看是不是电池电压低了,或者父节点负载过重。
进阶一点的应用是ZigBee 3.0和Z-Stack 3.0,ZigBee 3.0统一了ZigBee HA、ZLL、SE等多个应用层协议,标准化程度更高,设备互联更容易。CC2538是CC2530的升级版,Cortex-M3内核、更大的RAM(32KB),支持ZigBee 3.0,是新项目更好的选择。另外TI现在主推CC2652系列,支持多协议(ZigBee、Thread、BLE),一颗芯片搞定多种无线协议,物联网项目里很受欢迎。
下一篇:没有了