ZigBee这个词做物联网的朋友肯定不陌生,智能家居、工业控制、农业监测里经常能看到它的身影。跟WiFi和蓝牙比起来,ZigBee没那么出名,但在低功耗、大规模组网的场景里,它几乎是首选。今天把ZigBee的组网原理、协议栈结构、实际应用场景从头到尾讲一遍,顺便说说智能家居里是怎么用ZigBee的。
ZigBee是基于IEEE 802.15.4标准的一套无线通信协议,工作在2.4GHz、868MHz和915MHz三个频段。它的特点是低功耗、低速率、大容量、支持自组网。传输速率只有20到250kbps,跟WiFi完全没法比,但传个温度、湿度、开关状态这些小数据完全够用了。功耗方面,ZigBee终端节点用两节五号电池能跑好几年,这是WiFi和蓝牙做不到的。一个ZigBee网络最多能支持6万多个节点,虽然实际应用中没这么多,但几百个节点同时在线是很常见的。
ZigBee网络里有三种设备角色:协调器(Coordinator)、路由器(Router)、终端设备(End Device)。协调器是整个网络的老大,负责组建网络、分配网络地址、管理节点加入退出。一个网络只有一个协调器。路由器既能收发数据,又能帮其他节点转发数据,相当于中继站,需要持续供电,不能休眠。终端设备只能收发自己的数据,不能帮别人转发,功耗最低,可以用电池供电,大部分时间都在休眠,定时唤醒上报数据。
ZigBee的组网过程很有意思。协调器上电后先扫描周围信道,选一个最干净的信道,然后广播一个信标帧,宣布网络建立。其他设备上电后进入加入网络状态,扫描周围有没有可用的ZigBee网络,发现协调器或者路由器后发送加入请求,父节点分配一个16位的网络地址给它,这样新节点就算正式入网了。这个过程完全是自动的,不需要人工配置IP地址或者配对密码,这就是ZigBee的自组网能力。
组网拓扑结构有三种:星型、树状、网状。星型最简单,所有终端设备直接跟协调器通信,距离远一点就没信号了。树状结构是多层的,协调器下面是路由器,路由器下面再挂终端设备或者其他路由器,层层级联,覆盖范围大,但数据转发路径是固定的,某一级断了下面的全掉线。网状结构最灵活,任何两个路由器之间只要有信号就能直接通信,自动选择最优路径转发,某条路径断了会自动绕路,可靠性最高,也是实际应用中最常用的。
在智能家居里,ZigBee的应用非常典型。以米家、飞利浦Hue、宜家Tradfri这些生态为例,网关就是ZigBee协调器,灯泡、插座、温湿度传感器、人体传感器、门窗传感器这些是终端设备或者路由器。你用手机App控制灯泡开关,指令是先发给网关,网关通过ZigBee网络发给灯泡,整个过程都在本地完成,不需要走互联网,响应速度快,断网了也能用。多个传感器同时触发场景联动,比如人体传感器检测到有人、且光线传感器检测到天黑了,就自动开灯,这种本地自动化也是ZigBee的优势。
ZigBee跟蓝牙Mesh、WiFi比各有什么优劣?蓝牙Mesh也是近几年才火起来的,跟ZigBee一样支持自组网和多跳转发,但蓝牙Mesh的节点数量上限没有ZigBee高,而且蓝牙设备普及率更高,手机直接就能连。WiFi适合传输视频、音频这些大数据,但功耗高、节点数少,家里路由器一般也就带二三十个设备就到头了。所以ZigBee在传感器密集、低功耗、需要本地联动的场景里还是不可替代的。
实际做ZigBee开发的话,硬件上常用TI的CC2530、CC2652R,或者Silicon Labs的EFR32系列,这些芯片都有现成的ZigBee协议栈可以用,不需要从零写。软件上TI用Z-Stack,Silabs用EmberZNet,都是免费的SDK,提供Sample Application,改改就能用。如果不想碰代码,也可以直接用现成的ZigBee模块,串口AT指令配置一下就能工作。总的来说ZigBee技术已经相当成熟,生态也在慢慢统一,Thread和Matter协议的兴起可能会跟ZigBee融合,但低功耗自组网的核心需求是不会变的。
下一篇:没有了