无线传感器网络是由一些功耗低、体积小的传感器节点,以无线通讯方式自组成一个网络。这些分散的节点能够协作地实施监测、感知和采集各种环境对象的信息,具有非常广阔的应用前景[1]。近年来,无线传感器网络的研究进展十分迅速,取得了较为丰富的研究成果。自组织算法是无线传感器网络的核心技术之一,通过自组织算法自动生成的良好的网络拓扑结构,能够提高路由协议和MAC协议的效率,可为数据融合、时间同步和目标定位等很多方面奠定基础,也有利于节省节点的能量以延长网络的生存期。国内外研究者们从ad hoc网络借鉴了宝贵经验,提出了形式多样、侧重点不同的自组织算法。
文献[2]给出一种传统的洪泛算法(Flooding),也是最早、最简单的路由协议。节点以广播的形式发送消息,接收到消息的节点再以广播形式转发数据包给所有的邻节点,这个过程重复执行,直到数据包到达目的地或者达到预先设定的最大跳数。文献[3]提出了最具代表性的层次型自组织算法(LEACH,low energy adaptive clustering hierarchy)。LEACH是MIT的Heinzelman等人为无线传感器网络设计的低功耗自适应聚类路由算法。主要通过随机选择聚类首领,平均分摊中继通信业务来实现。文献[4]给出以数据为中心的自组织算法SPIN(Sensor Protocols for Information Via Negotiation)。它的主要思想是通过高层的描述方式——元数据来命名传感数据。在发送真实的数据之前,传感器节点广播采集数据的描述信息元数据,当有相应的请求时,才有目的地发送数据信息。这些研究均在无线传感器网络的自组织算法上取得进展,但是,Flooding存在消息“内爆”和“重叠”的缺陷。LEACH的动态分簇带来了拓扑变换和大量广播这样的额外开销。SPIN中的元数据没有统一的形式,SPIN的拓扑变化是局部性的,因此不适用于需要高可靠性的应用。还有很多其它相关算法停留在理论研究阶段。这些研究均在无线传感器网络的自组织算法上取得进展,但没有考虑实际应用的诸多因素,如不易实现,算法的收敛性,如何减小外界因素对通讯的干扰,以及节点失效后如何追加等。
针对目前无线传感器网络中自组织算法的研究现状,本文首先提出一种简单易实现的自组织协议,选用MSP430F149单片机作为处理器,设计了微型传感器节点,并实现了一种低功耗无线网络。节点使用提出的协议能自动生成多级网状网,同时按能量优先的原则确定数据的传输路径并包含多条备用路径。开发的上位机处理软件可自动显示网络的拓扑结构,反映传感器节点的状态突变,并实时显示网络数据传输的路径,还可远程控制网络内传感器节点。当网络拓扑结构发生变化,上位机软件也会及时反映出来。采用智能控制策略大大降低了系统功耗。
2、自组织协议
在协议中,通过定义数据包的格式和关键字来实现节点的自组织。数据包中包含一个关键字和多个字节的数据,只要根据数据包的格式填入相应信息,就可实现自组织功能。多个字节中包括了节点自身信息、数据包跳数、数据路由等信息;关键字表示不同性质的包,区分各种情况的数据,提升网络的通讯能力。只需要改变数据包中的标志位,就可以对信息进行加密。
2.1 协议格式
自组织协议格式如下表示。
其中Pre表示前导码,这些字符杂波不容易产生,通过测试和试验发现,噪声中不容易产生像0x55和0xAA非常有规律的信号;Key表示关键字,来区分各种情况下的数据,接收节点会根据这些关键字分别进入不同的数据处理单元;From表示源地址,是发送数据的节点自身信息;Final表示数据的目标地址;Data表示有效数据,这些数据随着字符Key的不同采用不同的格式,可携带不同的信息;Check表示检验位,可避免接收错误的数据包;Flag表示数据包的结束标志位。
根据协议格式中的Key可以将节点通讯时捎带的数据包分为自组网信息、环境突变信息、上位机的控制命令、广播信息等。例如下给出了节点在发送状态突变时的数据包格式。
其中0x55和0xAA为数据前导码,0xFF为传感器节点在感测到其状态突变时向外发送数据的关键字,0x11表示发送节点的地址,0x00为数据包要到达的目标地址,0x01表示数据包在网络传输中的跳数,接着的0x01表示节点在当前网络中的级别,0x15表示节点当时采集的温度,0x20表示节点当时采集的电源电压值,0x03表示节点的状态量, 0x00…0x00为11个字节的有效数据,可记录数据包经过节点的地址,0x3A为前面核心数据和的低8位,作为数据包的检验码,0xBB为数据包的结束标志。
接收节点需要向发送节点做出应答,下表为应答状态突变时的数据包格式。
其中0xFE就表示应答状态突变的关键字符,后面分别是发送节点和接收节点的地址。
2.2 自组网过程
网络包含一个与上位机相连接的基站节点和若干传感器节点。基站节点上电初始化后就进入低功耗模式。传感器节点随机布放,传感器节点上电初始化后,首先会向基站节点发出请求分配级别的命令,然后进入低功耗状态并打开定时器。在设定时间内收到基站节点分配的级别,该传感器节点就会向基站节点发送自组织信息的数据包。如果在设定时间内没有收到基站节点分配的级别,该节点会从低功耗状态唤醒,再次发送请求分配级别的命令,如此循环。当传感器节点发出请求基站分配级别的命令达到设定上限后,仍然没有确定自己在网络中的级别。该节点就会向全网发出广播命令,然后进入低功耗状态并打开定时器。定时时间到,节点重新回到发射广播命令状态。当传感器节点发射广播的次数达到设定值,该节点就会将接收到的应答信息进行整理,确定自己在网络中的级别,并确定上级、同级和下级节点的相关信息。该节点再向上级节点发送包含这些信息的数据包,直到数据包传送到基站节点,这样可确定整个网络的拓扑结构。节点的自组织流程如图1所示。
2 硬件研制
为了验证提出的自组织协议,本文选用了片上资源丰富的MSP430F149单片机作为处理器,研制了一种微型传感器节点[5]。
2.1 总体方案
系统由基站节点和传感器节点组成。节点硬件选择了支持低功耗工作模式的MSP430F149单片机和nRF905射频模块,使用32 768 Hz的低频晶振,采用2节5号电池供电。在设计节点的过程中,拨码开关、蜂鸣器、LCD指示灯的设计极大方便了实验的调试。
2.2 节点设计
图2为传感器节点的框图,该节点使用电池供电,体积小巧,只有打火机般大小。
图2 传感器节点框图
MSP430系列单片机是TI公司生产的一种混合信号控制器,其突出优点是低电源电压、超低功耗,可采用电池工作,有很长的使用时间[6]。
nRF905是挪威Nordic VLSI公司推出的单片射频收发器,低电压工作,功耗非常低,工作于433/868/915 MHz三个ISM(工业、科学和医学)频道,频道之间的转换时间小于650 μs[7]。ShockBurstTM工作模式,能自动处理字头和CRC(循环冗余码校验)。通过SPI串口与微控制器通信,使用非常方便;内建空闲模式 与关机模式,易于实现节能。nRF905适用于无线数据通信、无线开锁等诸多领域。
天线的设计是整个系统设计的一个非常重要的环节。系统功耗的高低以及网络性能的好坏与天线的设计都有密切关系。天线部分的设计采用整体PCB环行差分天线。与传统的鞭状天线相比,不仅节省空间,降低生产成本,机构上也更稳固可靠。
因为本文主要研究无线传感器网络的自组网和低功耗技术,所以只选择了MSP430系列单片机的内部集成热敏二极管来测量节点的工作温度,但预留了大量外接传感器接口,外接传感器的信号能以中断方式唤醒节点。
2.3 系统功耗
传感器节点采用电池供电,功耗的高低直接影响整个网络的生命期。系统的功耗不仅与选择的元器件有关,还与整个网络的控制策略有关。采用不同的控 制策略,系统的工作时间就会不同。若希望节点工作一年的时间(365×24=8 760小时),则理论上要求平均工作电流约为263 μA(2 300÷8 760)。发射数据到接收应答的工作时间约为50 ms,这样可推算出每次工作前的平均休眠时间为2.3 s[8]。实际应用中,可以根据网络的反应速度和信息的采样率来选择系统工作和休眠的时间。
3、软件开发
低功耗系统的设计是一种综合硬件和软件为一体的技术,必须在使用低功耗芯片的同时,采用智能的控制策略。例如,让系统在需要工作时全速运行;而当整个系统处理完事件就进入低功耗模式,等待外部事件的唤醒。
系统软件包括基站节点软件、传感器节点软件和上位机处理软件。
3.1 基站节点软件
基站节点的主程序比较简单,初始化后就进入低功耗模式,等待外部事件唤醒。外部事件包括串口中断事件、接收到数据事件和定时器的中断事件。
图3给出了基站节点的串口中断流程。
图3 基站节点串口中断流程
为了防止串口通信过程中丢失数据,软件设计上加了握手协议。当基站节点每发送一个数据包给上位机时,上位机都会向基站节点发送应答信号,直到数据包发送给上位机。接收到数据包后,节点会从低功耗模式中唤醒,根据接收到的数据中标志位的不同字符分别进入不同的处理单元。
当多个传感器节点同时与某个传感器节点通信时,存在挣抢信道的现象。为了避免多个传感器节点同时与某个传感器节点通信造成数据丢失,软件上采用 一定的退避机制。一方面,利用射频芯片nRF905的CD(载波侦听)信号来产生随机延时,以避免同时发送信号;另一方面,当一个传感器节点与某个传感器 节点建立了通信通道时,其他发送数据的节点会增加发射数据的次数。
3.2 传感器节点软件
传感器节点初始化后,首先发送请求基站节点分配级别的命令,同时打开一个定时唤醒的定时器;然后进入低功耗模式,等待外部事件的唤醒。若传感器 发送请求基站节点分配级别的次数达到设定上限,仍未确定节点在网络中的级别,则该节点就会向周围传感器节点广播信息。当广播次数达到设定值时,传感器节点 就根据收到的信息确定自己的级别以及与该节点有直接联系的节点的信息,并把这些信息发送给基站节点。传感器节点的外部中断事件包括接收到数据事件、定时器 中断事件、状态突变事件。
当传感器节点检测到状态突变后,会从低功耗状态唤醒,并及时采集此时的环境参数(包括状态量、温度值及节点电压值),将这些数据发送出去。该数据包通过单跳或多跳到达基站节点并在上位机软件上显示。
3.3 上位机处理软件
为了监测整个网络情况,需要在主机上建立良好的人机交互界面。采用Visual Basic(VB)来设计人机界面。利用VB的MSComm控件实现上、下位机的串口通信,利用其他控件实现对无线传感器网络的分析、显示和操作。
上位机主程序主要完成一些变量和控件初始化,然后等待串口数据。数据的接收和发送都是由中断程序完成的,其流程如图4所示。
图4 上位机的串口中断流程
上位机接收到完整的数据包后,会根据数据包中的关键字进行不同的处理。发送数据时,根据保存的网络数据计算中转数据的路径。为节约基站节点的能量,网络中有很多的数据处理是在上位机中进行的。
4、实验结果
系统研制完成后,需要设计实验来考核自组网效果及网络性能。实验中,首先关注的问题是随机分布的传感器节点在自定义的组织协议下的组网情况。为 了考核自组织效果, 首先让基站节点通过串口与上位机相连并打开上位机处理软件;然后打开传感器节点的电源,并通过人工安放或者随机撒播方式布置好传感器节点。
借助上位机的处理软件,可以非常清楚地看到整个网络的拓扑结构和网络节点的环境参数。当上位机处理软件检测到网络内的传感器节点后,会在上位机上进行显示并保存传感器节点的数据。图5为系统演示的11个传感器节点自由组网时界面的显示情况。组网时间约3 min。
图5中的黑色曲线为数据的传输路径。当鼠标点击某个节点,会弹出该节点的信息采集卡。信息采集卡反映了节点的状态量、温度值、电压值以及剩余能量,通过采集卡可直接对该节点进行远程控制。
图5 网络拓扑及数据传输路线图
在检测网络性能的实验中,让传感器节点一级一级分布下去。通过上位机软件可以很清楚地看到所投放的传感器节点可组成的最大跳数的网络拓扑结构。 当网络组成后,可通过上位机界面对网内各个节点进行远程控制;当各个节点发生状态突变时,会以中断形式唤醒节点,以能量优先的原则逐级传送到基站节点,并 在上位机界面上进行相应显示。
当新的传感器节点加入到网络中,系统会及时反映新加入节点。当系统检测到传感器节点由于电源电压低于工作电压,或人为破坏引起失效时,会从网络 中删除该节点的拓扑结构及相关信息,检测方法有手动刷新和定时采样两种。网络内传送的数据都保存在网络数据库中,便于查寻。通过上位机软件还能够对网络进 行复位,让所有传感器节点进行重新组网。
结 语
本文首先提出了一种无线传感器网络的自组织协议,然后选用MSP430F149和nRF905设计了微型传感器节点,并实现了一种低功耗无线网络,其特点如下:
① 利用无线通信携带的信息自动生成多级网状网络,并按能量优先的原则自动生成数据的传输路径。
② 采取应答和退避机制,防止多个传感器节点向一个节点发送数据时所导致的数据丢失。
③ 无线通信的双向性,不仅被动显示各个传感器节点的信息,还可主动对每个传感器节点进行远程控制。
④ 使用支持低功耗工作模式的硬件,配合软件上的智能控制策略来实现系统低功耗,尽可能延长网络寿命。