李 秘, 花仕海, 李贵柯, 赵柏秦, 吴南健
(1.中国科学院 半导体研究所,北京 100083;2.无锡中科智联科技研发中心有限公司,江苏 无锡 214135)
无线传感器网络(WSNs)[1,2]是物联网实现数据信息采集的一种末端网络,由部署在监测区域内大量的传感器节点(sensor node)组成,通过无线通信方式形成的一个多跳的自组织网络系统,其目的是协作感知、采集和处理网络覆盖区域中被感知对象的信息,并发送给观察者。
传统的传感器节点主要是依靠能量十分有限的电池供电,有限的能量限制了传感器节点的有效工作时间,进而影响到整个WSNs的实际应用。所以,解决传感器节点的能源问题并降低传感器节点功耗成为WSNs的重要研究方向。目前,在解决WSNs传感器节点的耗能问题方面研究较多,可主要分为硬件和软件2种方式。硬件方式是采用外界能量供给的方式,主要是采用太阳能供电,只要外界供给的能量大于负载的功耗需求,就可保证传感器节点长期稳定工作,但这种方式无疑会增加不少硬件成本。软件方式主要是优化通信机制和路由算法[3],以避免网络堵塞或拥挤造成的能量浪费。然而单纯的软件或硬件解决办法是有限的,而且,WSNs节点无法仅依靠某种优化降耗的方法来达到节点长期正常工作的要求。
因此,传感器节点一方面必须采取外界能量供应途径,获得源源不断的外界能量;另一方面还要通过软件的方式降低传感器节点的功耗。这样既可以尽可能地降低成本,又能保证传感器节点长期稳定工作。本文提出的休眠方法将以上2种方式有效地结合在一起,针对WSNs节点的能量消耗问题,采用太阳能充电管理模块和电量检测机制,并结合有效的智能休眠方法,实现了WSNs低功耗运行,保证传感器节点的长期稳定工作。
本文提出的这种智能休眠方法,主要应用于基于TinyOS平台的WSNs系统,此系统是一种基于WSNs的应用系统,该系统主要由大量传感器节点组成的WSNs,收发基站和用于数据显示与监控的上位机三部分组成。其中传感器节点和基站依托TI的CC2530—SoC芯片作为硬件平台,以TinyOS实时操作系统作为软件平台,而上位机监控软件则使用无锡中科智联公司开发的CasiStudio。系统示意图如图1所示。监测区域内的传感器节点周期性采集各种环境信息(如温度、湿度、光照等)和传感器节点电池电量,以一跳或多跳的自组织方式,通过2.4GHz的无线通道上传给基站,基站通过RS—232有线链路主动上传给PC。上位机监控软件CasiStudio实现对串口上传的数据的实时解析和显示。
图1 WSNs应用系统示意图
传感器节点是本系统最重要组成部分之一,是智能休眠方法研究的主要对象。传感器节点结构[4]示意图如图2。一般情况下,WSNs布网完成以后,所有的传感器节点休眠周期长短已由烧写的程序决定,并在工作期间保持不变[5]。这种情况会存在一个不可避免的问题:一旦传感器节点电池电量不断降低时,休眠周期不变,功耗依然很大,此时还没有外界能量(太阳能)的供给(例如:晚上的时候),必然会产生电池电量过低致使传感器节点不能正常工作的结果。本文的设计思路是实时地检测传感器节点电池电量[6],检测到电量低到一个界限,延长传感节点休眠时间,如休眠周期加倍,功耗就会降低将近50 %,这样传感器节点就有更多的时间等待外界能量的供给;外界能量开始供给,电池电量积累到一个界限时,传感器节点自动恢复原来的休眠周期,从而提高传感器节点的供电稳定性。
图2 WSNs节点结构示意图
本系统软件设计是基于TinyOS实时操作系统[7],是专门针对WSNs中的低功耗低速网络节点设计的嵌入式操作系统。TinyOS是一种适用于网络化嵌入式系统的编程框架,通过这个框架将用户设计的一些组件和操作系统的必要组件连接起来,就能方便地编译出面向特定应用的操作系统,这对硬件资源和能量资源极为有限的系统来说非常重要。
软件设计主要实现的功能是电量检测和基于电量检测的休眠周期的修改。传感器节点实现的功能是电量检测并传递给基站,同时监听并接收基站的休眠周期指令,按照休眠指令具体执行休眠周期;基站实现的功能是接收电池电量数据,并对电量界限进行判断和发送给节点修改休眠周期的指令。
1)电量检测功能
TinyOS采用了组件的架构方式,一个完整的应用系统通过组合不同的组件来实现应用。电量检测部分用到的组件有App组件、Main组件、SensorCollection组件、RF收发组件、传感器驱动组件和Adc组件等,各个组件形成一层一层的调用关系。其中最底层的组件是传感器驱动组件和Adc组件,传感器驱动组件是正确读取传感器数据的基础,本系统中的传感器节点采用数字温度湿度传感器,以I2C协议通信,所以,需按照I2C协议的标准编写驱动程序;电池电量是模拟量,所以,需要使用Adc组件设置采集的参考电压、分辨率、AD端口(即CC2530的AD输入口)。
传感器节点的流程图如图3,具体电量采集过程如下:首先系统初始化各个组件,调用并使能传感器驱动组件和Adc组件,周期地采集环境信息,温度、湿度和电池电量,分别作为3组传感器的数据,单一传感器数据的长度为2 byte,经过RF组件送到2.4 GHz的发射天线,以电磁波的方式发给基站,整个过程完成了数据的采集与传输。
图3 WSNs节点的流程图
2)基于电量检测的休眠周期的修改
节点执行休眠周期修改的流程,具体过程如下:节点通过RF收发组件,监听并接收基站发送的广播信息。此时节点会遇到2种情况:第一种情况是节点没有收到广播信息,则保持此时的休眠周期不变地运行。第二种情况是节点收到广播信息,广播的指令是加倍休眠周期,则休眠组件就会将休眠周期信息告诉给系统中的各个组件,以加倍的休眠周期运行;广播的指令是恢复原来的休眠周期,则休眠组件同样会通知系统中的各个组件,恢复原来的休眠周期。
基站的软件流程图如图4,软件程序中每个传感器节点分别设有自己的节点号和对应节点的标志位,使用节点号目的是区分不同的节点,对应节点的标志位可以表示该节点的休眠周期是否已被修改。工作流程如下:基站接收节点发送的数据包,首先通过节点的标志位来判断节点的休眠周期是否被修改过,没有修改过(即对应的节点标志位等于0),则寻找传感器数据包中表示电量的数据,判断电量的大小,一旦电量小于50 %,则对该单一节点以广播的形式发送加倍休眠周期的指令,同时将该节点的标志位置1,否则,直接进入下一周期的循环;如果休眠周期已被修改过(即对应的节点标志位等于1),同样判断电量的大小,电池积累的电量大于50%时,就以广播的形式对该节点发送恢复原来休眠周期的指令,否则,进入下一周期的循环。基站总是循环反复的执行着上面的过程。
图4 基站的软件流程图
传感节点和基站有效的“配合”,可实现传感器节点“以需求为导向”地调整休眠周期,达到智能休眠的效果。
1)测试设备:2个传感器节点,1个基站和接收数据的上位机。
2)测试条件:2014年1月7日,江苏无锡,阴雨天。
3)测试过程:本实验将基站的节点号定义为1#,2个节点的节点号分别定义为2#和3#。2个传感器节点初始(默认)休眠周期为1 h,电池电量的界限设在50 %,加倍的休眠周期为2 h。
4)测试内容:观察传感器节点的休眠周期是否会随着电池电量的改变而有规律的调整:当电池电量低于50 %,休眠周期是否会加倍;当电池电量高于50 %,是否会恢复原来的休眠周期。还需验证是否只针对电量低于50 %的节点修改休眠周期和节点之间的休眠周期是否会产生相互影响。
5)测试结果:基于CasiStudio上位机接收的实验数据,可得2#节点和3#节点的数据(包括温度、湿度和电池电量)变化曲线,如图5所示。具体分析如下:2个节点在04∶48∶16之前的4组数据的时间间隔是1 h,即休眠周期都是1 h,此时是夜晚,无太阳能供电,2个节点的电池电量逐渐降低。04∶48∶16时,3#节点的电量下降到47 %,低于50 %,从图5(b)可知,3#节点的休眠周期自动置为2 h,期间2#节点的电量一直在50 %之上,所以,休眠周期修仍为1 h;白天,太阳能供电给节点,12∶42∶04时,3#节点的电量积累到53 %,高于50 %,3#节点恢复原来的休眠周期1 h。测试结果显示:传感器节点的休眠周期会随着其电池电量的改变而有规律的变化,传感器节点基于电量检测的自动调整休眠周期的功能也基本实现。
图5 2#和3#节点的数据变化曲线
本文设计了一种基于传感器节点电量检测的WSNs智能休眠方法,成功地应用在CC2530的硬件平台和TinyOS实时操作系统的软件平台。整个系统实现了传感器节点基于电池电量自动调整传感器节点休眠周期的功能,达到了“智能”地降低传感器节点的功耗,提高了系统的稳定性和可靠性。此休眠方法可广泛的应用于基于TinyOS平台的WSNs,达到系统功耗与外界能量(太阳能和锂电池)供给的较好匹配,基本实现智能化管理WSNs传感器节点电池电量的目的。
参考文献:
[1] Fakyildiz Ian,Su Weilian,Sankarasubramaniam Yogesh.A survey on sensor networks[J].IEEE Communication Magazine,2007,40(8):102-114.
[2] 孙利民.无线传感器网络[M].北京:清华大学出版社,2005:14-22.
[3] Shih E.Physical layer driven protocol and algorithm design for energy-efficient wireless sensor networks[C]∥Proc of the Se-venth Annual IEEE International Conference on Mobile Computing and Networking,2001:272-286.
[4] 胡奇勋,段渭军,王福豹.无线传感器网络节点太阳能电源系统设[J].现代电子技术,2011,34(6):199-201.
[5] 程 冬,丁保华,李 威.基于片上系统CC2530的采煤机远程遥控装置设计[J].矿山机械,2010,38(3) :19-21.
[6] 唐慧强,李 超.基于CC2530的锂电池电量检测系统的设计[J].化工自动化及仪表,2010,38:350-351.
[7] 潘 浩.无线传感器网络操作系统TinyOS[M].北京:清华大学出版社,2011:3-17.
[8] 王小强.Zig Bee无线传感器网络设计与实现[M].北京:化学工业出版社,2013:7-8.