UniversalWirelessNetworkModuleforZigbeeBasedonSN260■意法半导体涂仲轩宁强张建新引言近年来,嵌入式小型智能系统中针对无线通讯的需求越来越多。与此同时,多种无线通讯协议如Wi-Fi、Bluetooth等传输速度也越来越快。他们具有高端的网络吞吐能力,适用于通讯速度要求较高的场合。基于Zigbee的无线网络技术具有低功耗、低成本、可靠性强、安全性高、传输距离远以及自组网等优点在许多低速率(250kbps)应用控制系统中得到广泛应
Universal Wireless Network Module for Zigbee BasedonSN260
■ 意法半导体 涂仲轩 宁强 张建新
引言
近年来,嵌入式小型智能系统中针对无线通讯的需求越来越多。与此同时,多种无线通讯协议如Wi-Fi、Bluetooth等传输速度也越来越快。他们具有高端的网络吞吐能力,适用于通讯速度要求较高的场合。基于Zigbee的无线网络技术具有低功耗、低成本、可靠性强、安全性高、传输距离远以及自组网等优点在许多低速率(250kbps)应用控制系统中得到广泛应用,例如家庭智能控制、灯光控制、一氧化碳、烟雾火灾报警以及远程集中抄表等等大量低速通讯监控系统。适当地选择无线技术,将大大降低此类应用的通讯成本。本文主要介绍了基于SN260网络处理器的小型分布式无线通讯网络系统设计实例。
Zigbee介绍IEEE 802.15.4 与Zigbee
IEEE802.15.4网络协议栈基于国际标准组织(ISO)开放系统互连(OSI)参考模式。每一层都实现一部分通信功能,并向高层提供服务。它定义了单一的介质访问层(MAC)和多样的物理层(PHY)。Zigbee联盟则制定了MAC层以上协议。此外IEEE802.15.4分别定义了两个物理层标准,2.4GHz物理层和868/9l5MHz物理层,它们都基于DSSS(Direct Sequence SpreadSpectrum,直接序列扩频),使用相同的物理层数据包格式,区别在于工作频率、扩频码片长度、调制技术和传输速率。2.4GHz波段为全球统一的无需申请的ISM频段,有助于Zigbee设备的推广和生产成本的降低,它的物理层通过采用高阶调制技术能够提供250kb/s的传输速率,有助于获得更高的吞吐量、更小的通信时延和更短的工作周期,从而更加省电。
Zigbee是一种建立在IEEE802.15.4标准上的低速数字通讯网络协议。它分为四个功能模块:应用层、网络层、数据链路层及物理层。物理层、MAC层和链路层采用了IEEE802.15.4协议标准,并在此基础上进行了完善和扩展。网络层、应用层则由Zigbee联盟进行制定的。
Zigbee路由网络拓扑结构
IEEE802.15.4/ZigBee规范中定义了星状、树状、网状三种网络拓扑结构,以及Zigbee协调器(Zigbee Coordinator), Zigbee路由器(Zigbee Router)和Zigbee终端设备(Zigbee End Device)三种网络设备。Zigbee星状网络是简单的一对多通信;树状网络中,每个全功能设备都可以成为父节点,简化功能设备只能作为子节点;网状网络中除了允许父节点和子节点之间的通信,也允许通信范围之内具有路由能力的非父子关系的邻居节点之间进行通信。如图1所示。
图1 Zigbee网络拓扑
路由算法
Zigbee采用按需路由算法AODV,在节能和网络性能上都有着很大的优势。AODV路由协议是一种基于距离矢量的按需路由算法,只保持需要的路由,节点仅记住为了到达目的节点的下一跳地址,而非像源节点路由那样记住整个路由。它能在网络中的各移动节点之间动态地、自启动地建立逐跳路由。当链路断开时,AODV会通知受影响的节点,从而使这些节点能被确认为无效路由。AODV允许移动节点响应链路的破损情况,并以一种及时的方式更新网络拓扑。AODV操作是无环回的,并避免了当Ad-hoe网络拓扑变化时快速收敛的无限计算问题。
Zigbee通用无线网络模块的设计
无线传感器网络的实现是以支持IEEE802.15.4 Zigbee传输协议的模块辅助传统的串行通信协议以达到无线传输的功能。在形成的Zigbee无线网络中,将采集的数据以无线方式发送给指定的目的地,当然目的地也必须是属于这个Zigbee网络的一个节点。在Zigbee协议中规定了协调器、路由器和终端设备。为了扩展Zigbee网络的覆盖范围和实际网络传输的可靠性,在不增加成本的前提下,本文所设计的网络拓扑结构中只有协调器和路由器(即不存在只能采集数据而不能报文转发的节点)。这使得每个节点都可以帮助网络路由转发报文,大大提高了网络的可靠性。这样的设计还有另一个好处,就是在实际产品生产过程中,只需要保证一种版本的网络模块(协调器只是一个特殊的路由器),而不需要区分哪些是协调器、路由器或者是终端设备,大大降低了产品生产以及安装调试时的成本。
由本文设计的Zigbee通用无线网络模块所组成的传感网络拓扑结构如下图2所示,其中A是唯一的协调器,其余的路由器节点都具备路由和传感器的功能。例如从A到B可能的最佳路径为A->1->B,但是1的突然掉电使得A不知道怎么到达B,这时候A会发出路由请求,[2,3]/[4,5]会响应A的路由请求,从而建立新的路径A->2->3->B或者A->4->5->B。正因为[2,3]/[4,5]的路由能力,使得网络在面临极端情况时变得更加稳定。
图2 通用Zigbee无线传感网络 路由拓扑结构
然而这样的网络拓扑会带来另一个问题:多点同时发送路由发现请求时造成的信息淹没现象。这一问题在本设计中已有所考虑,以下“路由优化”内容中有具体讨论。
硬件设计
本文所设计的Zigbee通用无线网络模块的构成如图3所示,其主要由SN260无线通信子板(左)、STM32微控制器子板(中)组成和外置由客户自行定义的主动传感模块(右)组成。
图3 Zigbee通用无线网络模块框图
SN260
SN260是一颗由STMicroelectronics公司提供的单片ZigBee482;无线网络解决方案。该芯片集成了一个符合IEEE802.15.4的2.4GHz射频收发器,其内嵌高性能、高可靠性的Zigbee2007堆栈以及用来运行该堆栈的16位微处理器(XAP2b核)。SN260实现了物理层至用户接口层的所有标准协议,同时对外提供高速SPI/UART接口连接微处理器(如STM32)。在没有外置功放的情况下,SN260的发射功率可以配置达到+5dBm,接受灵敏度可以达到-98.5dBm,同时超小的待机功耗1μA也足以保证在电池模式下的待机寿命(以两节AAA电池1000mAh估计,可供114年系统待机使用)。
此外SN260还带有用于调试的SFI接口,可以连接网络信息流量分析器InSight Desktop。 InSight Desktop 做为一种低成本Zigbee网络分析仪,可以通过实时显示所有网络传输事件的方式大大减少网络应用开发调试周期。可以想象,在一个10个以上节点的网络实例中进行网络调试时,也许每个节点之间都相隔10米距离(保守估计),如果你只能跟踪一个节点的收发状况,你会需要多少时间才能发现一个潜在的问题?或者需要更多的时间来重现并且解决这个问题。但是有了InSight Desktop的帮助,你只需坐在一个地方便可以了解整个网络的情况,并且还可以帮助你解析每个报文的内容(包括加密报文)。InSight Desktop的界面如图4所示:
图4 Insight Desktop界面
SN260 无线通讯子板
如图3中左半部分所示,这个无线通讯子板整合了ST公司的SN260、24MHz晶振、Murata公司的平衡-不平衡转换器(Balun)以及2.4GHz 50OhmRF天线。
因为Zigbee工作在2.4GHz,波长只有12.5厘米,其射频天线部分的设计便成为了关键点。为了达到天线和馈线的最佳匹配,本文精心设计了从SN260上RF_P/RF_N端到SMA天线接口的这段电路。RF_P/RF_N首先连接到BALUN (50~200Ohm),然后连接到谐波滤波电路,最后通过特性阻抗为50Ω的馈线连接SMA射频天线接口。此外为了减少其他方面带来的噪声干扰,特别增加了电源去耦电容、电源阻容滤波和异步复位信号阻容滤波。
STM32微控制器子板
STM32微控制器子板主要就是由一个STM32组成,它是一颗由STMicroelectronics公司提供的32位ARM Cortex-M3核微处理器,可支持 I2C/SPI/UART/12bitAD/2*Timer。这款高性能、低功耗(1.4μA待机)、超低价格的MCU主要承担了控制SN260无线通讯子板从而组建/加入/维护网络结构,和连接外部主动传感模块的作用。所谓主动传感模块是指具有传感功能的设备+控制器。在Zigbee通用无线网络模块的设计中,之所以采用外部主动模块+Zigbee通用无线网络模块的协作模式,是因为这将大大降低了在设计传感网络时,工程师针对Zigbee知识的要求。这样设计主动传感模块时不再需要考虑如何控制SN260、如何维护Zigbee网络,甚至不需要知道这是一个有线网络还是无线网络,只需要关心如何了解网络里有多少节点、分别是什么名字、如何指明下面要发送的消息包是发给哪一个特定的节点!即Zigbee通用无线网络模块向主动传感模块提供点对点或者点对多点的透明传输连接。
软件设计
如前所述,在Zigbee通用无线网络模块中,STM32微控制器承担了控制SN260的主要任务。其主要逻辑流程如图5所示:
图5 软件流程图
控制接口
外部主动传感模块和Zigbee通用无线网络模块之间采用115200bps的UART端口。对外部主动传感模块而言,由STM32提供的Zigbee操作接口相对简单。主要命令如表1:
表1: Zigbee通用无线网络模块外部接口
路由优化
在设计网状网络时大量的路由发现请求往往会造成“信息淹没”现象。路由发现本质上是一种信息广播,每一个听到广播且有路由能力的节点都会回答并且转发这个路由请求,并且根据协议规定,广播报文必须在始发点重复3遍直到所覆盖范围内的所有节点都已经收到该信息,这样会造成信息量大大上升,同时对信道吞吐量也是一种极大的挑战,大量并发的广播往往会造成网络的瘫痪或者路由表的溢出。针对这个问题,可以通过Many-to-One的方法解决,如图6所示。
图6 Many-to-one/Source
无线传感网络中的节点从实际作用角度可以分成以下两种:传感器节点(主要采集数据并发送信息)和信息汇总中心节点(主要负责收集来自各个传感器节点所采集的信息并提交给更上层的节点)。实际情况下,会有多个传感器节点针对一个信息汇总中心,如图6所示,如果每个传感器节点都要发起到C的路由发现请求,网络负担会很沉重。取而代之的是,在知道C点是信息汇总中心的前提下,由C一次性发送Many-to-one请求,每一个收到这个请求的有路由能力的节点都会增加一条路由表纪录,并且把转发/发送这条路由信息的节点设为到达C点的潜在下一跳地址,在经过比较之后(可能有其他节点也转发同样来自C的Many-to-one路由请求),确定最优的下一跳节点地址。通过这样反向思路的Many-to-one路由请求可以很轻松的让网络中的所有节点都知道各自到达节点C的路由路径。
同样针对信息汇总中心需要发送/回复大量信息给网络中节点的情况(相当于One-to-many),本文使用了Source-routing技术来解决!在成功发出Many-to-one请求之后,每次信息到达C点的时候,SN260的网络层会向STM32汇报这条信息到达C之前的完整路由链,STM32因为有足够的RAM空间,从而可以将每个这样的信息存储下来,然后当C需要发送信息给某个节点时它会先查找存储池中是否拥有关于到达该节点的完整路由链,如果有的话就将这个信息附加在发送报文的网络层附属信息里。这样,当这条信息经过每个指定的路由节点时,SN260就不会再去查找自己的路由表甚至发起路由请求,而是直接采用报文中附带的路由信息。这样同样消除了大量的由中间节点发起的路由发现请求。
实验效果与分析
通过两点间通讯以及多点间网络通讯两个场景,对Zigbee通用无线传感网络模块的速率、响应时间以及网络容量等性能进行了验证和分析。
测试平台
测试平台暂时只包括10个节点,每个节点均如图3所示,包括图6所示的Zigbee通用无线传感网络模块(由STM32+SN260组成,此后简称为ZB模块),以及主动传感模块。为了使编写测试程序更加灵活方便,此处主动传感模块暂时由PC担任,它会通过RS-232端口将需要发送的数据传送给该ZB模块,以及接受其他节点发送过来的测试数据。
点对点传输测试
选择两个这样的节点,进行点对点传输测试,在保证报文到达率99%以上的前提下,当发射功率设为+3dBm时,空中无障碍传输至少可以达到200米(理论可达200米)。当收发信号强度设为-30dBm时,可达3米。在此两种情况下,进行8MB海量数据测试,平均传输速率均可达48bps。
网络性能测试
10节点网络实测,这10个网络节点分别为1个一级信息汇总节点(负责接收汇总来自3个二级信息汇总节点的报文),3个二级信息汇总节点(负责接收汇总来自其下属2个传感类节点的报文并向上汇报),6个纯传感类节点(每间隔固定时间段向上发送‘采集到’的信息)。因为受测试场所空间(100平方米)的限制,在设置发射功率为-30dBm的前提下,观察到路由路径最长达到5(因为是Mesh网络,真实的路由路径并非等同于测试场景逻辑上的信息汇报路径,而是取决于当时节点地理位置状况的不同而不同,也就是说如果纯传感类节点给其二级信息汇总节点发送的报文因其当时的地理位置特殊性可能要通过一个或多个其它节点进行路由)。
测试场景设计为6个传感节点分别每隔5秒汇报一次信息,上一层收到后汇总再向上汇报,同时每个节点的主动模块(PC)接收到信息后,会校验该信息是否错误,并检查是否有报文丢失,从而在屏幕上显示该节点的报文错误率。整个测试基本未观察到有报文丢失,每个节点的报文到达率均在99%以上,未发现任何信道拥塞,且每条消息传输时间约在10~50ms(10ms点对点传输,50ms是经过四次转发的延时)。
针对此10点网络中一对节点测试了海量数据(8MB)的传输效果,当两点接近无需路由时,耗时168秒,平均传输速度为47.6kbps,当路由路径长为3时,耗时558秒,平均传输速度为14.3kbps。并且发现在海量传输的同时,对其他节点之间的正常定期通讯影响较小。
GEC