无线传感器网络构建与实现
2017-04-12孙琪王晓喃
孙琪,王晓喃
(常熟理工学院计算机科学与工程学院,江苏 常熟 215500)
无线传感器网络构建与实现
孙琪,王晓喃
(常熟理工学院计算机科学与工程学院,江苏 常熟 215500)
分析了无线传感器网络的特点,实现了无线传感器网络的构建算法,以及启动顺序、运作流程和嵌入式操作系统的调度算法,并在硬件上实现了数据传输的实验,同时分析了无线传感网构建的一些关键问题.
无线传感网;构建;嵌入式操作系统
1 Zigbee技术
随着无线通信和嵌入式技术的飞速发展,无线传感器网络也得到了发展.无线传感网的研究与发展改变了人们对自然界的感知方式,一些小型的WSN如ZebraNet[1]、GlacsWeb[2]也成功采用mesh拓扑组网模式部署并应用起来.通过部署大量的传感器节点,以无线自组织的方式协调感知、采集和处理目标区域中的目标对象信息[3],并将信息反馈给用户,满足了人们对各类目标区域进行监测的要求.
然而,WSN在组网、数据路由、数据融合[4]、网络管理和网络实体协作等方面的技术难度也随着网络规模而呈指数级上升,网络的建网耗时、通信延迟、丢包率等也会急速恶化[5].已有的对WSN的理论及实践研究表明,大多数可用于WSN的商用网络协议在构建大规模WSN时都存在严重不足,协议栈过于复杂、支持的网络规模小、有限的协作能力、缺乏资源动态配置能力等.除此之外,能耗与效率之间的取舍也一直难以权衡.然而Zigbee特别适合于低数据速率、低功耗、低成本[6]的WSN应用,它在构建大规模WSN方面极具潜力.但目前对Zigbee的开发,许多人还不甚了解,对其中的组网方式,数据传输过程以及协议栈的工作方式不够了解,因而大大降低了Zigbee开发的效率.为了解决这一问题,文章对Zigbee 2006协议栈进行了详细的分析,并以温度及电压采集实验对节点间的组网和数据传输进行了详细的说明.
1.1 Zigbee技术
Zigbee是一种短距离、低复杂度、低功耗、低速率、低成本的双向无线通讯技术,是由IEEE(Institute of Electrical and Electronics Engineers)的802.15.4工作组开发的有关组网、安全和应用软件方面的技术标准.IEEE工作组主要负责制定物理层(PHY,Physical Layer)和媒体访问控制层(MAC,Media Access Control Layer)标准,Zigbee负责网络层和应用接口的开发,用户根据需要设计自己所需的应用层程序,如图1所示.
图1 Zigbee的结构和分工
1.1.1 Zigbee的技术优势
(1)低功耗:10~250 KB/s的低传输率,发射功率1 mW,采用休眠模式来降低能耗.(2)低成本:Zigbee模块的成本在6美元左右,并越来越低,Zigbee协议不收专利费.(3)网络容量大,组网灵活:一个Zigbee网络最多可以容纳65535个节点,在同一区域内可同时存在100个网络.
(4)传输可靠:采用碰撞避免机制,并为需要固定带宽的通信预留专用时隙来避免数据发送时的竞争和冲突.物理层则采用完全确认的数据传输机制,发送的每个数据都需要对方的确认.
(5)安全:Zigbee采用AES-128加密算法.
Zigbee的低功耗、低成本、时延短、网络容量大、传输可靠、安全等特点[7],使其主要用在距离短(典型的30 m以内)、功耗低且传输速率不高的各种电子设备之间进行数据传输以及典型的有周期性数据、间歇性数据和低反应时间数据传输的应用中.Zigbee是一个由可多到65000个无线数据传输模块组成的一个无线数据传输网络平台,在整个网络范围内,每一个Zigbee网络数传模块之间可以相互通信,Zigbee简单、使用方便、工作可靠、价格低等这些特点使得每个Zigbee基站不到1000元人民币,而移动通信网的基站价值高达百万,这也是Zigbee适合用于部署大规模WSN[8]的原因之一.
1.1.2 Zigbee相关概念
(1)Zigbee设备[3]:Zigbee设备分为全功能型设备(FFD,Full Function Device)和简化功能型设备(RFD,Reduced Function Device).RFD无法作为网络的协调器,它只能与FFD进行通信,只能作为网络中的终端节点(ZE,Zigbee EndDevice);而FFD既可以作为协调器(ZC,Zigbee Coordinator)也可以作为路由器(ZR,Zigbee Router),也可以作为终端节点来使用.
Zigbee网络由唯一的ZC和多个ZE组成,复杂网络还有ZR.ZC负责建立网络,另外,网络信标的传输,节点的管理及网络节点信息的存储,为关联节点间提供路由信息等也是由ZC负责;ZR负责路由功能,包括搜索可用网络,传输数据以及向ZC请求数据.ZE是网络的终端,它负责具体的实施,表现为具体的应用.
(2)网络模型:网络的拓扑结构有星型、树型和网状[9].在网络中,ZC一直处于监听状态,一旦发现有新的ZE加入网络,ZC就对其进行编址并计算路由信息等;若发现ZR,则对ZR周围的ZE信息进行更新,同时更新ZC的路由.每个Zigbee设备都有两个地址,一个是64位的IEEE地址,该地址是设备出厂就设定的全球唯一地址;另一个是16位的网络动态地址.两种地址都可以用于传输数据.
1.2 Zigbee协议栈及操作系统
Zigbee协议只有规范,具体的实现各有不同.本文详细介绍TI公司开发的Z-Stack 2006协议栈.协议栈软件架构依次对堆栈、输入输出(IO,Input/Output)、硬件驱动、NV(Nonvolatile flash memory)系统、MAC、操作系统等进行初始化,然后初始化操作系统,包括系统时钟、堆栈、定时器、各个硬件模块、Flash(非易失性闪存),还有对操作系统的初始化.在该过程中除了对操作系统内存、消息队列、时钟、能量管理和系统任务进行了初始化,也对系统任务进行了初始化.
协议栈有自己的操作系统[10],各个不同的功能函数的调用通过不同的事件来触发,触发的事件交由相应的任务处理,操作系统只需要维护任务列表,检测有没有任务需要执行即可,通过对事件的处理实现不同的功能.其中,Zigbee事件一共分为两类,包括系统定义事件和用户定义事件.系统定义事件是协议栈已定义好的,用户类事件是用户层面来定义的,在操作系统抽象层的定义中给出了系统事件的宏定义值,预留了0xE0~0xFF部分给用户自定义系统事件的消息.事件类号采用一个16位的常量,使用独热码编码,即有一个bit为1,其他全0的一种编码方式.采用独热码可以使用简单的位操作指令实现事件的提取.由于事件类号长度是16位,即事件类型只有16种,系统类事件使用0x8000,自定义事件类采用0x4000至0x0001的15个[11].以此,系统的用户部分也可与协议栈的基本代码相隔离,既保证了协议栈的安全性(不被用户误改),同时也便于用户根据不同的需要开发自己所需要的功能.
2 协议栈分析与实现
表1 信道及其相应频率表
2.1 信道选择
建立网络之前首先选择一个空闲的信道,Zigbee在868 MHz,915 MHz和2.4 GHz 3个频段中一共定义了27个物理信道[12],如表1所示.
Zigbee采用2.4 GHz的全球公共频段,从2400 MHz至2483.5 MHz共16个信道,信道之间间隔为5 MHz.尽管每个信道内可以有多个网络,也有相应的冲突避免算法来解决冲突,在选取信道时要尽可能与周围的其他设备选在不同的信道上,默认的信道为11,为了防止有其他功能的设备忘记修改信道号,这里选择信道12,中心频率为2406 MHz.
为避免冲突,每个设备在信道上发送消息前需要检测信道是否空闲.空间中时时刻刻都充杂着电磁波,但是其能量和频率不一定能造成干扰,所以在检测时,优先采用能量阈值的方法,即MAC层进行能量检测,若信号能量小于设定的大小就认为空闲;继而再进行频率的判断,对不在同一频率上的信号也认为是空闲.
表2 PANID的设置表
2.2 建立网络
只有担任协调器角色的节点可以建立网络,其他节点只能加入或离开网络.各个设备与协调器节点的关系如表2所示(PANID,Personal Area Network Identity).
如果ZC的PANID设置值小于等于0x3FFF,ZC则以设备设定的值作为网络ID建立网络,如果冲突则更换,直至不冲突为止.
图2 协调器建立网络流程图
考虑到监测区域不大,实验采用星型网络部署节点,协调器建立网络的步骤如下:
(1)信道扫描:建立网络时为了避免ID冲突,FFD需要在其个人操作空间内、指定的信道上检测任何协调器发出的信标帧,以此来选择一个PAN标识符;
(2)启动:以确定的信道、PAN标识符启动网络;
(3)产生信标:设置MAC层PANID为PAN标识符,同时作为信标帧中源PAN标识符域的值,在每个超帧时隙开始时传输;
(4)设备发现:信标帧的传输表明新的网络已建成,之后才对其他设备的设备发现进行响应.
考虑到设备意外断电的情况,重启后,协调器不需要再一次建立网络,只要恢复之前的网络即可;终端不需要重新分配网络地址,只要重新加入先前的网络即可;路由也只要重新加入网络即可,所以需要按照上一次已经配置好的情况来启动,建网流程图如图2所示.
2.3 加入网络
对于协调器形成的网络,终端在扫描时可能检测到多个网络,终端只能加入其中一个网络.因此终端只能加入信道相同的网络,并且信号强度要尽量大.入网算法如下:
(1)ZE对指定的信道(信道12)进行网络扫描,将扫描到的所有网络按能量大小存储;(2)如果当前无网络,进入休眠;否则,加入信号最强的网络;
(3)ZC按序为加入到网络中的终端分配网络地址,从0x796F依次递增.
为了便于后续的处理,对发现的每一个网络的信息,包括能量大小、PAN描述符,按照能量大小储在一个结构体链表中.信号最强的网络永远是链表头,加入网络需要终端将自己的节点信息发送给协调器,协调器的网络地址始终是0.
如果扫描不到网络,则认为当前无网络,进入睡眠模式以节约能量,等待协调器的进行设备发现;星型网络的协调器能连接的终端有限,所以存在因分配不到网络地址而无法加入网络的可能性.考虑到对于上层而言,未入网成功则认为是未发现网络,所以只有在成功加入到网络中后,设备应用层才将网络已经发现的消息告知Zigbee设备对象.协议栈利用这个通知消息启动网络,然后进入操作系统对7层协议栈事件轮询处理.终端加入网络流程图如图3所示.
图3 终端加入网络
2.4 数据收发
Zigbee支持以资源绑定[13]的形式通信,绑定关系确定了一个设备与其他设备之间信息流的控制结构.目标地址可以通过绑定表获取,所以绑定允许上层应用程序不用知道目标节点的地址就可以发送数据,也就是说,绑定建立了一对一或者一对多的虚拟链接通道.
网络建立之后,设备之间开始通信,终端节点与协调器的通信过程为:
1)终端设备加入网络后,向协调器发送绑定请求消息;
2)协调器处理绑定请求消息,绑定成功后向终端设备发送确认消息;
3)终端设备接收到确认消息,开始运行用户任务.
在协调器打开允许绑定功能时,需要寻找其范围内的所有端点,并将找到的端点的设备描述符连成一个链表,只有处于这个链表中的节点才允许与其绑定.在寻找端点时会进行一次扫描,终端也就是在接收到这次扫描信号后加入该网络,通知上层系统设备已经加入到了网络之中,上层向协调器发送绑定请求,就是将自己的短地址、简单描述符、簇等信息以一个绑定请求的方式发送给短地址为0的设备(0作为协调器的短地址).绑定成功与否的决定权在于协调器,终端的请求用于告知协调器自己的网络地址,只有在协调器向终端发送绑定成功消息才表明绑定完成.终端在收到这个消息之后,节点的网络状态改变.在Zigbee设备对象层状态改变的时候,操作系统执行用户任务,这才是真正的终端任务.
3 实验
3.1 实验环境
实验采用MSP430FG4618开发板,以CC2420作为通信模块,用MSP430UIF仿真器进行程序的烧写,开发环境采用IAR Embedded Workbench 6.4 Evaluation.作为协调器端需要短路P7.6和P7.7,按钮S1对应端口P1.0,S2对应着P1.1.图4为开发板和仿真器.
EXP4618实验板上针对FG4618和F2013分别设置独立的下载调试接口.FG4618使用标准4线JTAG连接,而F2013使用Spy-Bi-Wire两线JTAG连接,因此在Debug的时候所有的IO端口都可用.两个JTAG接口可以同时连接两台仿真器独立调试程序.JTAG1对应FG4618,JTAG2对应F2013,所以烧写程序只需要用JTAG1口.
图4 开发板(左)和仿真器(右)
需要补充说明的是LED1,2,4分别对应着端口2.1、2.1、5.1,颜色为黄、红、绿.而LED3由F2013控制,所以在用LED灯对程序进行指示的时候不要使用LED3.另外,TI的Zigbee2006协议栈使用的是3310LCD液晶驱动,与MSP430开发板上的WCG16100液晶驱动不一致,所以要对液晶模块的驱动程序做修改.找到开发板光盘文件下的“实例源码LCD_Test_WCG160100source”下的.h和.c文件,分别重命名为hal_lcd.h和hal_lcd.c,并替换掉文件C:Texas InstrumentsStack-1.4.3-1.2.0Componentshalinclude下的原hal_lcd.h和hal_lcd.c文件,参考开发板用户手册[14]的液晶部分,将液晶显示函数的参数修改一致.
3.2 温度与电压监测
需要3个节点,一个中心节点,两个传感节点.打开Samples文件夹下的SimpleApp工程,通信信道采用12,中心频率为2406 MHz,PANID设置为0x1234,串口波特率为38400,无检验位,数据位8位,停止位1位.设定电压的采集周期为20000 ms,温度采集周期为5000 ms,频率为前者的4倍.将有电压采集功能的工程烧写到传感节点A中,将有温度采集功能的工程烧写到传感节点B中,最后将汇聚节点工程烧写到中心节点C中,即A——电压传感器,B——温度传感器,C——汇聚节点.
其中电压由ADC12引脚数值来计算,ADC12寄存器所能获取的值value只能从0~4095,用这个区间来表示电压从0~1.5 V.这个数值只能达到电源电压的一半,所以需要乘上系数2,实际电压voltage的计算式为voltage=(value×2×1.5)/4095,这个数值精度只能达到个位,相对于只有0到3 V的数值来说误差太大,所以需要保存有效数字到小数点后一位.由于浮点数的计算是保留了很多有效数字的,只是被舍弃了,方法是对ADC获取到的value值先右移一位,取值范围变为0~2047,然后乘以30,再右移11位.
为了达到0.1 V的精度同时尽量不造成舍入误差,所以先右移一位再乘以30,使得value的有效数值不会溢出,再右移11位,此时value的值比实际电压值近似扩大了10倍.为了便于发送,直接将此数值以16进制发送,在接收端再进行处理.
温度取芯片内部的温度值,MSP430芯片是低功耗芯片,运行时几乎不发热,芯片温度几乎与外界环境温度一致,所以无需外界温度传感器,可以直接用来采集温度,需要修改相应的偏差.芯片的温度值由引脚的电压转换计算得出,根据MSP430FG4618芯片数据手册(见表3),0°C时电压为968 mV,系数为3.55 mV/°C.
表3 12位ADC与温度传感器及电压关系表
因此0°C时的电压数值为0.986/1.5×4095,取整为2692,系数值Coefficient为9.69/°C.对大于99°C的记为99°C,对小于0°C的记为0°C.数据传输示意图见图5.
图5 数据传输示意图
数据信息用一个一维数组即可,第一位用来存储信息类型是温度还是电压,第二位用来存数数值.因为绑定已经建立起端点间的关联,所以每个任务在完成信息采集之后直接交给CC2420无线通讯模块发送给汇聚节点,而不用再交给OSAL去调度处理发送信息,避免了冗余的操作,提高了系统的执行效率.
3.3 实验结果与分析
实验设计一个中心节点,两个采集节点分别采集温度电压.图6是汇聚节点收到传感节点发来的数据的显示图,其中Dev是设备网络地址,Tmp表示温度,Bat表示电压.
图6(a)是协调器刚建立网络时的情形,此时还没有设备加入网络,所以在液晶上只显示此设备类型为协调器以及网络的ID号.在A节点加入网络后与ZC进行绑定,MatchDesc Req表示终端符合绑定条件,绑定关系已经建立,Rsp Sent表示ZC已经回复绑定确认消息.A节点在收到该消息之后发送电压信息,ZC在接收到数据之后将处理后的结果显示在LCD上,如图6(b)所示.B节点后加入网络,所以其短地址依次加1为0x7970.
图6 汇聚节点收到数据显示图
图7 串口转PC机显示数据图
图8 汇聚节点处理数据代码
用RS232串口线将汇聚节点与PC机相连,可把其接收到的数据发送给上位机,如图7所示,每隔4次温度数据出现依次电压数据,也验证了4:1的数据采集频率.图示温度值越来越小是因为先用手触摸了B节点芯片,温度升高后开始降低导致.在串口工具上显示数据需要先将数据写到串口中去,如图8所示的最后一行,图8给出了汇聚节点处理数据的代码.
在液晶显示数据时出现了图6(c)所示的乱码情况,排查原因发现是为了确保串口分行显示而添加的字符串结束符和换行符无法在液晶上显示而导致的,处理方法是先进行LCD显示再添加字符串结束标记写到串口中去.
4 结束语
本文通过分析Zigbee协议栈的工作流程,逐步说明协调器建立网络的流程以及终端设备与协调器之间的设备发现和入网过程,完成数据收发工作,实现了用户远程对目标区域的温度监测和传感器节点的能量监测.由Zigbee的部署简单、成本低、能耗低等特点可见Zigbee在无线传感器网络方面应用前景广泛,以及在物联网发展进程中的重要性.
[1]MARTONOSI M.Embedded systems in the wild:ZebraNet software,hardware,and deployment experiences[C].New York:ACM SIGPLAN/SIGBED,NY,US:ACM New York,2006:1.
[2]MARTINEZ K,ONG R,HART J.Glacsweb:a sensor network for hostile environment[J].IEEE:Sensor and Ad Hoc Communications and Networks,2004(10):81-87.
[3]赵仕俊,唐懿芳.无线传感器网络[M].北京:科学出版社,2013:5.
[4]康健,左宪章,唐力伟,等.无线传感器网络数据融合技术[J].计算机科学,2010,37(4):31-35.
[5]熊茂华,熊昕.无线传感器网络技术及应用[M].西安:西安电子科技大学出版社,2014.
[6]无线龙.ZigBee无线网络原理[M].北京:冶金工业出版社,2011:9.
[7]杜军朝,刘惠,刘传益,等.Zigbee技术原理与实战[M].北京:机械工业出版社,2014,11.
[8]金纯.Zigbee技术基础及案例分析[M].北京:国防工业出版社,2008.
[9]贺志楠,宋旭文,沈冬冬.Zigbee家庭组网技术研究与实现[J].电子科技,2014,27(8):36-39.
[10]Texas Instruments.Z-Stack Developer’s Guide[M].California USA:Texas Instruments,2012.
[11]Texas Instruments.OSAL API[M].California USA:Texas Instruments,2012.
[12]李明亮,蒙洋,康辉英.例说Zigbee[M].北京:北京航空航天大学出版社,2013:7.
[13]Zigbee Alliance.Zigbee Specification[S].802.15.4,2005.
[14]Texas Instruments.HAL Driver API[M].California USA:Texas Instruments,2012.
WSN Construction and Implementation
SUN Qi,WANG Xiaonan
(School of Computer Science and Engineering,Changshu Institute of Technology,Changshu 215500,China)
Based on the characteristics of wireless sensor network,the network construction algorithm is implemented in this paper.The starting sequence,the operation process and the scheduling algorithm in the embedded operating system are analyzed in the paper.Besides,some vital issues are discussed based on the analysis of the data transmission experiment.The data show that WSN has some advantages and a broad application prospect.
wireless sensor network;construction;embedded operating system
TP393.1
A
1008-2794(2017)02-0061-13
2016-06-06
王晓喃,教授,博士,研究方向:计算机网络与应用,E-mail:wxn_2001@163.com.