——作者简介 Michael
前绿米(小米)资深嵌入式软件工程师,7年以上开发经验,曾开发过小米米家网关系统、小米全屋智能家庭中枢M1S等物联网项目;尤其擅长ZigBee、BLE Mesh、WiFi、NB-IoT、2G/4G/5G等主流IoT通信协议以及相关开源库的裁剪。
——视频讲解: 点击观看
——深入学习ZigBee技术:点击学习
一. ZigBee诞生原因与简介
1.诞生的原因
在应用蓝牙技术的过程中,人们发现尽管它有许多优点,但是对于自动化控制和远程控制领域而言,它显得复杂度太高、功耗太大、时延太高以及可靠性太低等,并且工业领域的无线通信对可靠性的要求更高,需要抵抗工业场景中的各种电磁干扰。
由于蓝牙、WiFi等技术并不能很好地满足这些要求,因此ZigBee协议应运而生。
2.简介
ZigBee是由ZigBee联盟设计的一种低功耗、低时延、高可靠性和短距离的无线通信网络协议,主要适用于自动化控制和远程控制等领域,可嵌入到各种小型设备之中,目前已经被飞利浦、小米、谷歌、宜家和三星等各大公司所采用,广泛应用于智能家居、工业自动化、智慧城市以及智慧农业等行业。
举个在智能家居方面的例子,ZigBee无线通信技术被广泛应用在智能门锁、智能灯、智能开关、智能插座、智能传感器和各种智能生活电器之中,使其具备无线通信能力,从而可以实现包括人走了自动关门关窗关家电、温度高自动开空调和下雨自动收衣服等自动化控制功能。
接下来对ZigBee的各个特性展开介绍一下。
ZigBee协议由于通信速率低、复杂度低以及划分工作状态和睡眠状态等,因此非常低功耗,例如市面上的一些ZigBee无线按钮仅使用纽扣电池就可以正常使用2两年,这是蓝牙和WiFi所无法比拟的。
ZigBee的响应时延低,网络节点从睡眠状态切换到工作状态只需要约15毫秒,并且加入到网络中只需要约30毫秒。
ZigBee通过支持多种网络拓扑结构、大规模组网、自组网以及灵活的数据安全策略等多种功能提供了高可靠性的网络通信服务,确保了通信的稳定性。
相邻的两个ZigBee节点之间的通信距离在10米到200米之间,也可以通过技术手段扩展到1千米左右,例如使用胶状天线、棒状天线,又或者使用功率放大芯片等。
如果读者曾经了解过经典的TCP/IP协议,那么可以用类比的方式来理解ZigBee协议层次。与TCP/IP协议类似,ZigBee协议可以划分为物理层、MAC层、网络层和应用层4个逻辑层次,各个层次各司其职。
3.与蓝牙Mesh、蓝牙和WiFi的对比
正在更新中,可以在评论区催更。
二.物理层与MAC层
1.IEEE 802.15.4协议简介
要讨论 ZigBee 技术,自然绕不开 IEEE 802.15.4协议,因为ZigBee的 物理层和MAC层就是 IEEE 802.15.4 协议(本书深入篇会详细介绍此协议)。
IEEE 是一个组织,叫作“电气和电子工程师协会”, 802.15 是这个协会里面的一个部门,部门里的第 4 工作组开发了一个协议,就叫 IEEE 802.15.4协议。这个协议是专门为低速无线个人区域网络WPAN而设计的,具有超低复杂度、超低功耗、低数据传输率的特点。
2.IEEE 802.15.4物理层
IEEE 802.15.4的物理层作为Zigbee协议结构的最低层,提供了最基础的服务,包括:
——激活和休眠射频收发器
——信道能量检测(Energy Detect)
——检测接收到的数据包的链路质量指示(Link Quality Indication)
——空闲信道评估(Clear Channel Assessment)
——收发数据
——······
这里涉及到多个可能令人费解的专业名词,甚至很多专业人士也不容易解释清楚他们的具体含义,作为ZigBee技术的应用开发者,暂时无需弄清楚具体含义,只需通俗地理解物理层的主要作用是将一个设备的数据转换为电磁波信号之后通过物理介质发送到另一个设备,再由另一个设备解读电磁波信号获取数据。
IEEE 802.15.4提供了基于2.4GHz、868MHz以及915MHz电磁波频带的3两种物理层协议。在世界各地均能使用2.4GHz,但是868MHz和915MHz是有地域限制的。它们之间基本区别就是通频带不同,以及由此而带来的通信速率不同:2.4GHz物理层支持240kb/s的数据率,而868MHz和915MHz物理层的数据率分别是20kb/s和40kb/s。
3.IEEE 802.15.4 MAC层
由于电磁波和物理介质的物理特性所限制,同一物理通信资源在同一时刻只能被一个网络设备占用来发送数据,如果有多个网络设备都要发送数据,那么需要怎么控制它们有序地占用物理通信资源来发送数据呢?
为了解决这个问题,媒体接入控制层(MAC,Media Access Control)应运而生。
IEEE 802.15.4的MAC层,即媒体接入控制层,是建立在物理层之上,它不关心数据是怎么转换成电磁波信号、电磁波的频率是多少等,它只关心自己负责那部分,也就是:
——第1,将设备划分为协调器和普通设备;
——第2,协调器产生并发送信标帧,普通设备根据协调器的信标帧与协调器同步;
——第3,个域网的关联和取消关联;
——第4,确保无线信道的通信安全;
——第5,支持带有冲突避免的载波侦听多路访问(CSMA/CA);
——第6,提供时槽保障(GTS,Guaranteed Time Slot)服务;
——第7,提供不同设备之间的MAC层的可靠传输服务。
同样地,我们暂时只需通俗地理解MAC层的主要作用是控制多个网络设备有序地利用物理通信资源来进行可靠通信。
三.网络层
1.网络层的主要工作内容
ZigBee网络层基于IEEE 802.15.4协议之上,是ZigBee协议的核心部分,所以人们也通俗地称为“核心协议”,它主要负责3方面的工作:
第1方面,负责多个设备之间的组网,即星状网络、树状网络和网状网络的构建与维护。
处于网络中的设备我们们可以通俗地称为“网络节点”。ZigBee 网络节点有以下3种类型:
——协调器(Coordinator):充当ZigBee网络的网关(中心节点)角色,通常负责ZigBee协议与NB-IoT、WiFi等其他协议的转换、在特定的信道组建网络等,同时具备路由器的功能。
——路由器(Router):又称为中继器,负责数据路由。所有的终端设备都需要通过协调器或者路由器加入到网络中。
——终端设备(End Device):又称为叶子节点,必须通过协调器或者路由器才能加入到ZigBee网络中。例如在智能家居场景中,终端设备通常就是是温湿度传感器、无线开关按钮或者各种生活电器等等。
ZigBee组网有3个主要特性:
——第1,支持构建和维护超过10,000个网络节点的网状网络,远远超过蓝牙的8个和WiFi的32个。
它的好处在于:一方面可以让更多设备加入到自动化控制和远程控制中,设备数量上的局限不复存在;另一方面,在网状网络中,两个网络节点之间有1条或以上的通信链路,可以提供多通道通信服务。在复杂的工业场景下,往往不能保证每条无线网络通信链路始终畅通,多通道通信能够使得当某条链路堵塞后使用其他链路来通信,确保了通信的稳定性。
——第2,支持动态路由,即根据各个网络节点的实时状态来动态计算网络中任意两个节点之间的最优通信路径。举个例子,例如在网状网络的场景下,任意两个节点之间可能有多条通信路径,通过计算各个路径的实时质量从而动态选择最优的通信路径。
——第3,支持自组网,即在网络节点被拆散开,因为超出通信范围而无法通信之后,当他们再次回到通信范围内相聚的时候,彼此之间能够自动重新构建网络来实现数据通信。
第2方面,负责设备之间的控制指令和设备的状态信息等数据的传输,举个例子,以空调为例,这里所说的控制指令是指空调的开关、制冷温度设定、工作模式设定等指令;状态信息是指空调在某个时刻的状态,例如设定的温度是多少、室内温度是多少、工作模式是什么等。
第3方面,负责数据的加密解密等网络安全管理。
从核心协议的3个主要方面的工作可以看出ZigBee就是是专门为自动化控制和远程控制而设计的一种网络协议。
2.网络层的历史
到现在为止,ZigBee联盟总共发布了多个核心协议版本,我们分别简单了解一下。
——ZigBee 2004这个版本也被称为 ZigBee 1.0,主要是实现了一些基础的网络层功能。
——值得注意的是,ZigBee 2006版本并不兼容 2004,也就是说 2004 版本直接成为历史,2006 版本支持构建树状网络和网状网络,并且引入集群(Cluster Library)的概念。集群的具体含义,我们在后面章节再展开描述。
——ZigBee 2007版本其实也是在 2006 年发布的,设计的初衷是针对商业照明领域的。ZigBee 2007 与2006相比,主要是提升了抗干扰能力以及引入一些新的集群等。
——ZigBee 2007 Pro在2007 年面世,目前已经被TI、Silicon Labs和NXP等多家技术方案商采用,是应用最为广泛的版本。
——ZigBee RF4CE版本在2009年推出,RF 指的是射频,4 指”for”,CE是指消费电子,它的特点是主要使用 1 对 1通信以及1 对多通信。这是 ZigBee 核心协议的一个特殊分支。
四.应用层
1.应用层简介
ZigBee应用层可以理解为一套标准规范,规定了对象的属性和状态等,因此我们又可以称之为“应用协议”。举个例子,可以规定灯这个对象具备开关这个属性,这个属性有“开”和“关”两个状态,可以用数字“1”来表示状态开,数字“0”表示状态关。
有了这套规范,或者说是约定,不同的ZigBee设备之间真正做到了相互理解、相互合作。应用协议是与ZigBee应用开发者最常打交道的层次。我们所说的ZigBee 技术开发,一般就是指基于ZigBee应用协议的技术开发。
2.应用协议的发展
ZigBee应用协议的发展可以大致归纳为 3 个阶段。
——在初始阶段,由于ZigBee联盟还没有定义标准的应用协议,因此各大公司纷纷基于ZigBee 2007 Pro而开发各自的私有应用协议。这些私有协议之间互不兼容,这导致了一个公司的ZigBee产品不能和另一个公司的相互通信。这大大地限制ZigBee协议的发展,也与万物互联的理念相悖。
——在第2个阶段,为了解决这些兼容性问题,ZigBee联盟根据不同的应用领域推出了不同的应用协议,比如有面向家居自动化领域的 ZHA 协议、面向智能照明领域的 ZLL 协议、面向智能能源领域的 ZSE 协议,以及面向健康、零售和消费电子等等领域的应用协议。“领域”一词可以称为“Profile”,比如家居自动化领域可称为 ZHA Profile。然而同一领域中的ZigBee设备可以相互通信,但是不同领域的ZigBee设备仍然难以兼容。
——在第3个阶段,ZigBee联盟在2016 年5月发布了ZigBee 3.0协议。它的发布可以说是ZigBee应用协议发展的一个里程碑:ZigBee 3.0协议整合了各个领域的应用协议,解决了不同领域的ZigBee设备之间的兼容性问题,使其能够真正地互联互通!同时,ZigBee 3.0协议也增加了更多的产品类型和属性定义,并且提升了通信安全性和稳定性。
迄今为止,ZigBee 3.0已被包括小米、涂鸦、飞利浦等各大公司所采用,是应用最为广泛的ZigBee应用协议。
五.技术方案商的简介与发展
有了ZigBee协议,就会有对应的ZigBee技术方案,通俗地讲就是ZigBee芯片和协议的代码实现。接下来,我们聊一聊各个ZigBee技术方案商的发展。
ZigBee 初期阶段,也就是2004 年左右,当时主流的技术方案商有4家,分别是Freescale、Chipcon、Ember、Jennic;
然而,随着一系列并购和重组,江湖发生了翻天覆地的变化:
——2005 年年底,美国德州仪器公司(TI)并购了Chipcon;
——2010 年 7 月份,荷兰恩智浦半导体公司NXP收购了 Jennic;
——2012 年, 美国芯科实验室Silicon Labs ,并购了 Ember;
——在2015年3月2日,NXP又以118亿美元的现金加股票的方式收购了Freescale。
主流的ZigBee技术方案商简介
经过了一番爱恨情仇,现在主流的 ZigBee 技术方案商有3家,分别是:
Texas Instruments - 美国德州仪器
NXP Semiconductors - 荷兰恩智浦半导体
Silicon Laboratories - 美国芯科实验室
——Texas Instruments
简称TI,公司简介(来着TI官网):TI 是一家全球性半导体设计与制造公司,业务覆盖超过 35 个国家、服务全球各地超过 10 万家客户、拥有 85 年 的创新历史、超过 10 万种模拟集成电路、嵌入式处理器以及软件和工具、业界最大的销售和支持团队
官网: http://www.ti.com.cn/
TI的ZigBee方案主控芯片有CC2530、CC2630、CC2538、MSP430+RF等。
——NXP Semiconductors
简称NXP,简介(来自百度百科):NXP 是一家新近独立的半导体公司,由飞利浦公司创立,已拥有五十年的悠久历史,主要提供工程师与设计人员各种半导体产品与软件,为移动通信、消费类电子、安全应用、非接触式付费与连线,以及车内娱乐与网络等产品带来更优质的感知体验。
官网: https://www.nxp.com/cn/
NXP的ZigBee方案主要是JN516(8)x+SDK。
——Silicon Laboratories
简称芯科,简介(来自百度百科):Silicon Laboratories(芯科实验室)成立于1996年,位于美国德州奥斯汀市,是一家专业研发设计类比电路及混合信号IC的公司(专门开发世界级的混合信号器件),为成长快速的通信产业设计等提供广大应用;今天,公司已成为营运、销售和设计活动遍及世界各地资本额约5亿美元的上市跨国公司,并且在各种混合信号产品领域居于领先地位。
官网: https://www.silabs.com/
芯科的ZigBee技术解决方案和储备其实是在收购Ember后才得到大大的提高,所以也有开发人员把这个方案称为Ember方案。
芯科方案也是基于Ember的Em35x系列+SDK,当然后期芯科也自己推出了芯片方案EFRxx系列+SDK的解决方案。
六.技术方案商的对比
1.主流的ZigBee技术方案商的对比
我们对TI、NXP和Silicon Laboratories这3个主流的ZigBee技术方案提供商作一个对比。
在开发资料的开放程度,以及是否适合个人学习这两方面来看,由于Silicon Labs和NXP主要以大客户服务为主,因此开发资料开放程度低,个人不易获取,所以对于个人学习来说有一定的门槛。而TI的软件及开发资料较为开放,个人也比较容易获取,因此更有利于个人学习,这也使得TI的ZigBee技术方案成为个人学习的首选。在今后的课程中我们也将采取TI的ZigBee技术方案来教学。
在ZigBee芯片价格上,TI的CC2530芯片的优势明显,NXP和Silicon Labs的ZigBee芯片差不多。
这里顺带说一下,在实际的开发过程中,到底选择哪家的技术方案或者说ZigBee芯片,这是很多工程师关心的问题。在ZigBee芯片选型上,大家或多或少了解过TI的CC2530系列、Silicon Labs的EFR系列以及NXP的JN51系列。当然还有其它芯片,我们不一一列举了。
如果对价格较为敏感,而且CC2530能够满足需求,那么可以选用CC2530;如果对性能要求比较高,那么建议采用Silicon Labs或者NXP的方案。
我们在开发难易程度和市场化角度再对比一下:
——虽然TI方案具备一定的价格优势,但其开发周期较长,而且从产品市场化角度还有严谨程度来说,TI方案的确不是最好的选择。
——NXP方案在开发上相对简单,市场化程度高(被大规模量产过)。
——芯科方案也是重要的参考之一,毕竟稳定性保证还是有的,开发难度也不大。
需要说明的是,不同技术方案之间也是互相兼容的,因为大家都遵循了标准的ZigBee协议。
2.非主流的ZigBee技术方案商
其他非主流的ZigBee解决方案商我们只做简单的了解,因为技术解决方案的稳定性和可持续性是受市场份额影响的。非主流的解决方案商有Atmel、STmicroelectronics、Integration、NEC、OkI、Renesas等几家。采用非主流的解决方案除了会遇到方案本身不稳定的情况外,还可能面临技术支持不到位、芯片停产或者该公司ZigBee方案的直接停掉等风险。
七.TI的ZigBee技术方案的简介与发展历史
接下来,我们谈一谈TI的ZigBee技术方案的简介与发展历史。
TI 的ZigBee协议栈,也称为TI-ZStack,通俗地讲它就是ZigBee协议的代码实现。TI-ZStack主要由内核层和应用层两个层次组成。我们从这两个层次来了解一下TI-ZStack的发展历史。注意一下,这里的内核层和应用层跟ZigBee协议的层次并没有对应关系。
TI-ZStack的内核层,也称为 TI-ZStack Core。从时间线来看,内核层有以下几个发行版本:分别是年代久远的0.1、2.2.0等等,再到2017年5月10日发行的2.7.1版本。大部分基于 TI-ZStack 的 ZigBee 产品使用的是 2.6.3 或者更新的版本。换句话说,2.6.3 和2.7.1版本用得最多。然而,随着 2.7.1 的发布,预计各大厂商会逐渐地将自家的ZigBee设备迁移到这个版本上。因此,2.6.3以及之前的版本注定成为历史!
TI-ZStack的应用层,是建立在内核层之上的。早期的TI-ZStack的应用层版本跟内核层版本有着明显的一一对应关系。到了内核层2.6版本时期,应用层协议栈根据不用的应用领域被划分成不同的版本,例如:
——针对家居自动化的 Z-Stack HomeAutomation 1.2.2a、
——针对智能照明的 Z-Stack Lighting 1.0.2、
——针对能源照明的 Z-Stack Energy 1.0.1 等等,
以及不针对特定领域而是由用户自行开发的Z-Stack Mesh 1.0.0,这与ZigBee协议应用层的领域划分有着一定的对应关系。
后来,基于内核层2.7.1版本的应用层协议栈Z-Stack 3.0发布,这也就是我们常说的“ZigBee 3.0”。如前所述,它整合了各个领域的应用协议,解决了不同领域的ZigBee设备之间的兼容性问题,使其能够真正的互联互通!
八.小结
从上面的介绍,总结下来其实就一句话:用TI的Z-Stack 3.0.1这个版本来学习和开发,就对了!
后续我们会有一个专门的项目篇,会从项目经理的角度来学习如何管理项目,这里我们仅从项目管理的两个基本概念:Bug和Feature来看待Z-Stack的版本发布的情况。每一个新的版本,都会涉及到两个工作:
——修复Bug
——增加新的Feature;
Z-Stack增加新的Feature很大一部分是根据ZigBee联盟对ZigBee协议完善过程中增加新的东西或者优化某些功能而定的,比如ZigBee 2007 Pro中有了Mesh路由,那么这就会成为一个新的Feature被实现并且在下个版本进行发布。
不管是Z-Stack Core还是Z-Stack的版本更新换代,我们能做的是保证教学的资料和内容紧贴最新版本的Z-Stack,从而保证学者可以与最新的开发环境保持同步。而TI的最新版本开发环境又是和ZigBee联盟高度同步,也就是和ZigBee这个技术及行业保持高度的同步。那么最终学者和行业的发展是一致的,不会落伍。学习一个技术不仅仅只是搞个小功能,例如实现一个简单的原理比如点亮一个灯等等,更重要的是和行业、和最新的开发模式做同步,以及全面细致并且深入浅出的学习!