舒 杰,曹 建
(中南大学 物理科学与技术学院,湖南 长沙410083)
无线传感器网络的应用领域非常广,包括环境的监测和保护、医疗护理、军事领域、工业领域等。美国商业周刊和MIT技术评论在预测未来技术发展的报告中,分别将无线传感器网络列为21世纪最有影响的21项技术和改变世界的十大技术之一[1]。
无线传感器节点一般通过电池供电,硬件结构简单,通信带宽小,点到点的通信距离短[2],所以工作时间有限及通信距离短成为无线传感器网络的两个主要瓶颈。如果要求工作时间长同时通信距离远,就必须在软硬件上同时做处理。因此本设计在硬件上采用集成度高、功耗超低的MSP430F149作为控制芯片,以功能强大、外围电路简单、功耗低的Si4432作为无线收发芯片,并通过电源管理芯片TPS61200充分利用电池的能量(只要电池电压在0.2 V~5 V范围内整个系统即可正常工作)。在软件上,所有节点之间都具有自组织能力,通过转发、多跳等方式进行通信;通信可覆盖范围广。采用等待唤醒方式即休眠模式下经唤醒进入工作模式,完毕后再进入休眠模式的工作方式,大大降低了能量的消耗;充分考虑其工作坏境的恶劣性,采用E2PROM存储技术及看门狗技术,系统把所有有用信息保存在E2PROM中,当系统因外界干扰使程序进入非正常工作时,看门狗使系统复位,然后从E2PROM中读取有用信息继续工作,增强了系统的抗干扰能力。
系统由基站节点、传感器节点和上位机组成。节点硬件主要包括 7部分:处理器(MSP430F149)、Si4432射频收发模块、电源管理模块、串口通信模块、JITAG下载模块、传感器接口模块和E2PROM存储模块。基站节点没有传感器模块,传感器节点没有串口通信模块。基站节点由上位机USB接口供电。传感器节点使用2节5号电池供电。采用TPS61200作为电源管理器,只要电池电压在 0.2 V~5 V范围内,系统即可以正常工作,大大地延长了电池的使用时间。为了调试方便,在节点上增加了拨码开关和LED信号指示灯。整个系统软件由上位机处理软件、基站节点软件、传感器节点软件三部分组成。在传感器节点软件设计上充分考虑了低功耗节能问题,因为它的能量主要消耗于无线射频模块,因此在组网时尽量使Si4432的输出能量设定为最小,且在没有收发信息时工作在睡眠模式,即等待唤醒模式。
在协议中,通过定义数据包的格式和关键字来实现节点的自组织。
自组织协议格式如图1所示。
图1 自组织协议格式
其中,Pre表示前导码,这些字符杂波不容易产生,通过测试和试验发现,噪声中不容易产生0x55和0xAA等非常有规律的信号,因此前导码采用 0x55AA。Sync(同步字)在前导码之后,本系统设定的同步字为2 B,同步字内容为0x2DD4,接收端在检测到同步字后才开始接收数据。Key表示关键字,高6位用来表示目标地址的级别,接收节点会根据高6位决定数据的去向(比本级节点大则向下级节点传,若小则反之,如果相等则判断目标地址是否为本节点地址,是则直接向目标表地址发送,否则向上级发送节点回复重发应答);低2位用来区分各种情况下的数据(命令信号、组网信息、采集信息、广播信息);接收节点会根据这些关键字低2位分别进入不同的数据处理单元。From表示源地址,是发送数据的节点地址;Mid表示接收信息的中转节点地址;Fina表示数据的目标地址;除广播信息外,每个信息都有唯一的源地址和目标地址;Data表示有效数据,这些数据随着关键字(Key)的不同而采用不同的格式,可携带不同的信息;Che表示检验位,说明采用何种校验方和还是CRC校验),可避免接收错误的数据包;示数据包的结束标志位。Si4432内部集成有调制/解调、编码/解码等功能,从而 Pre、Sync和 Che都是硬件自动加上去的,用户只需设定数据包的组成结构和部分结构的具体内容(如前导码和同步字)。
网络由一个基站和若干个传感器节点组成,基站上电初始化后就马上进入低功耗状态(Si4432射频模块处于睡眠状态);传感器节点随机地部署在需要采集信息的区域内,上电初始化后开始组网。首先发送请求基站分配级别的命令,若收到基站应答则定义为一级并把自身信息(包括地址、级别等)发给基站;反之若发送次数达到设定值,则向周围节点发送广播信号,通过周围节点应答信息整理得出自身的网络级别,并向周围节点及基站发送自身信息。如果还是未能分配到级别则延时等待其他节点分配好级别后重新请求入网。每个入网的传感器节点都保存有周围节点(上级、同级、下级节点)信息(级别及对应的地址),最后就形成了网络拓扑结构。自组织算法流程图如图2所示。
图2 自组织算法流程图
传感器节点要求低功耗、体积小,因此选用的芯片都是集成度高、功耗低、体积小的芯片,其他器件基本上采用贴片封装。节点硬件框图如图3所示。
本设计中MCU采用TI公司生产的一种混合信号处理器MSP430F149,内部资源丰富,具有两个16位定时器、一个 14路的 12 bit的模数转换器、6组 I/O、一个看门狗、两路USART通信端口等;因此节点的外部电路非常简单,并且还具有功耗超低的突出特点,当工作频率为1 MHz、电压为2.2 V时全速工作电流仅为280 μA,待机状态下电流低至1.6 μA。它的工作电压范围为1.8 V~3.6 V,非常适合应用于电池供电的节能系统中。
Si4432芯片是Silicon Labs公司推出的一款高集成度、低功耗、宽频带EZRadioPRO系列无线收发芯片。其工作电压1.8 V~3.6 V,可工作频率范围为240 MHz~930 MHz;内部集成分集式天线、功率放大器、唤醒定时器、数字调制解调器、64 B的发送和接收数据FIFO,以及可配置的GPIO等[4]。Si4432在使用时所需的外部元件很少,1个30 MHz的晶振、几个电容和电感就可组成一个高可靠性的收发系统,设计简单,且成本低。预留了大量外接传感器接口,外接传感器的信号能以中断方式唤醒节点。
本系统软件设计注重低功耗、数据采集实时性、系统稳健性及可靠性,在低功耗设计中采用智能控制策略,让系统需要工作时处于全速工作模式,其他时刻处于低功耗模式。数据采集实时性设计中关键是路由选择,主要依据是跳数最少路径最短原则(兼顾能量优先原则)[3]。系统稳健性设计部分,当传感器节点因能量耗尽或其他原因不能工作或者有新的传感器节点请求加入网络时,整个网络会马上重新组网,形成新的网络拓扑结构。在系统可靠性设计中采用看门狗等技术增强系统抗干扰能力。系统软件框图如图4所示。
图4 系统软件结构
基站节点通过上位机USB供电所以一直工作在全速状态,加快了对外部的响应速度。上电初始化后,根据中断程序中的标志位值对获得的信息进行相应处理,处理完后把标志位置零,循环执行此操作。基站节点通过串口与上位机相连;因此外部事件包括串口中断事件和接收到数据中断事件。
为了防止串口通信过程中丢失数据,软件设计上加了握手协议。当基站节点每发送一个数据包给上位机时,上位机都会向基站节点发送应答信号,直到数据包发送给上位机。上位机接收到数据包后,马上进入中断处理,处理完后把相应标志位置1,通过主程序做进一步处理。
传感器节点主程序主要是实现组网,当节点上电初始化后设定发射功率为最小,请求入网。如果入网不成功则加大发射功率,继续请求入网。经试验证实,发射功率越小,电池的使用寿命就越长。入网成功后,保存入网信息,并马上进入低功耗状态,同时使用两个中断,一个外部接收数据中断,一个定时器采集中断。程序流程图分别如图5、图6所示。数据发送放在定时中断程序里完成。
图5 接收数据中断
图6 串口中断流程
当多个传感器节点同时发送数据时,则会出现挣抢信道的现象。为了避免多个传感器节点同时与某个传感器节点通信造成数据丢失,软件上采用一定的退避机制。一方面,利用射频芯片Si4432的载波侦听信号来产生随机延时,以避免同时发送信号;另一方面,当一个传感器节点与某个传感器节点建立了通信通道时,其他发送数据的节点会增加发射数据的次数。
上位机主要功能有发送重组网命令、向任意传感器节点发送采集信息命令、建立良好的人机界面用于观察传感器采集来的信息、帮助基站节点处理数据减轻基站的负担等。人机界面采用Visual Basic(VB)来设计,利用VB的MSComm控件实现上、下位机的串口通信。利用其他控件实现对无线传感器网络的分析、显示和操作,在此不再详细说明。
本文采用MSP430F149作为处理器,Si4432作为无线收发器,利用它们的高集成度、超低功耗等优势设计了一种无线传感器网络系统。该系统节点上电后会自行组网,当向网络加入新节点或移除某个节点时系统会重新组网,并且不会对系统通信产生毁坏性影响。系统节点最多可达256个,覆盖范围广。Si4432的缓冲寄存器为64 KB,一次性可发送接收信息量可多达62 KB。基站节点通过串口跟上位机相连,在上位机建立良好的人机界面可以观察每个传感器采集来的信息,并且可以控制每个节点的工作状态。本系统已在实际中成功应用。
[1]孙利民,李建中,陈渝,等.无线传感器网络[M].北京:清华大学出版社,2005.
[2]EDGAR H,CALLAWAY J.无线传感器网络:体系结构与协议[M].王永斌,屈晓旭,译.北京:电子工业出版社,2007.
[3]Kan Baoqiang,Cai Li,Zhu Hongsong,et al.Accurate energy model for WSN node and its optimal design[J].Journal of Systems Engineering and Electronics,2008,19(3):427-433.
[4]魏小龙.MSP430系列单片机接口技术及系统设计实例[M].北京:北京航空航天大学出版社,2002.