张晓华,张玉华,岑 宇
(1.华北水利水电学院,河南 郑州450011;2.开封浦华紫光水业有限公司,河南开封 475001)
水资源作为一种稀缺资源在工农业生产和生物生存中都有着不可替代的作用.随着我国经济的飞速发展,对水环境的保护和水资源的合理开发利用,已经变得越来越紧迫.对水信息实时、准确地监测成为水资源合理利用管理的关键[1].
现有的水信息监测技术有传统人工监测和利用移动通讯网络的监测,但都存在着很大的局限性.人工监测费时、费力,准确率不高,难以实现水信息监测站点资料的实时上传分发、实时资料入库、实时浏览和远程监控等,不能适应现代水信息的发展要求.利用移动通讯网络的监测技术把传感器收集到的各类信息利用现有的移动通讯系统(GSM/CDMA)传输到远端.由于传输采用的是点对点模式,因此传感器无法做到自组织和自愈,不具有组网功能的节点之间无法相互合作,同时对移动基站依赖较强,不仅成本高,而且存在无法覆盖的盲区[2].
采用无线传感器网络进行水信息的监测可以很好地弥补上述两种技术的不足.无线传感器网络由随机布设的大量多种类传感器节点组成,能够迅速组成自适应的网络拓扑结构,在实现远程数据采集、监视与控制方面,相对于架设或租用专用电缆来说具有造价低廉、施工快捷、运行可靠、维护简单等优点[3].
目前无线传感器网络在水环境中的应用才刚刚起步,为数不多的研究也还存在着网络的组织结构单一、节点的设计通用性和可扩展性不强等问题,通常只能针对极为有限的水信息进行监测,难以适应水信息的多样性和复杂性要求.针对这些问题,笔者采用ZigBee加GPRS整合的多层模式通讯方案,解决了短程和远程通讯的问题,同时将网络节点按需求不同进行合理分工和设计,主要解决了节点的通用性,使整个网络信息传递、管理更加简捷方便,提高了水资源管理的效率.
为了充分利用ZigBee低能耗、自组网、频道免费、GPRS通讯距离远、数据率高、覆盖面广的优点,系统结构分为数据采集层、网络传输层、管理控制层3层,如图1所示.利用ZigBee技术构成无线传感网络的主干并实现水文、水质等水信息的采集和短距离的传输,利用GPRS技术实现网络数据的远传,利用数据库管理技术实现对数据的管理和节点的控制.
图1 系统层次结构
首先由处于数据采集层的传感器模块采集被监测的各点水资源数据,然后将数据沿着信息网络传输层的终端节点的无线通讯RF模块逐级进行传输.在传输过程中监测的数据可能被多个终端节点处理,经过多跳后汇集到网关节点,最后再由网关节点将整合后的数据传输到处于管理控制层的中心节点.中心节点采用PC机实现,可在对水信息数据进行分析的基础上,全面掌握水资源的实时信息,为水资源的管理提供决策支持.
终端节点通过和传感器的数据接口获得传感器感知到的水文、水质数据,再经初步处理后进行数据封包,按照IEEE802.15.4标准要求进行ZigBee组网和数据的传输.
网关节点是进行数据远程传输前的最后汇聚,并将接收到的整个网络范围内的终端节点数据进行整合和数据封包,同时协调整个ZigBee网络的组织和GPRS远程通讯,按照GPRS协议标准传输到远端的中心节点;同时还具备一定的现场处理能力,以便在必要的时候进行网络的现场布置和维护.
中心节点的核心是数据库管理程序,采用SQL语句实现强大的数据管理、报表分析功能;同时利用终端节点入网时的注册信息,对数据进行分类处理,以便将抽象的数据解析成具体的水信息参数.
由系统结构可知,基于无线传感网的水信息监测系统需要终端节点、网关节点和远端中心节点组成.终端节点兼数据采集层传感器信息采集和网络传输层无线组网、数据传输的双重功能,是无线传感器网络技术的集中体现.
由于水信息数据采集涉及水位、流量、泥沙含量等水文传感器,水温、pH值、含氧量等水质传感器,这些传感器或模块提供的数据接口有SPI、串口、I2C,甚至只提供基本的电流、电压模拟信号,所以需要进一步的A/D转换才能使用.考虑到系统的通用性,设计时尽量屏蔽具体传感器的特点,对其接口进行抽象.因此在设计时改变了大多数无线传感网节点设计时将传感器、处理器、无线模块集成在一块电路板上的模式,采用底板加传感器扩展板的方式,把组网必备的控制模块和无线通讯模块集成在一起作为底板,然后通过提供标准、丰富的扩展接口和传感器板连接.这样的设计思路可以根据具体应用,设计相应的传感器扩展板,最大限度地保证了终端节点的通用性,简化了设计难度、降低了系统设计、运行、维护成本,使得扩展能力大幅增强.
2.1.1 终端节点的硬件设计
基于以上分析,终端节点使用的底板具有完全相同的硬件电路结构,如图2所示,主要包含MCU模块和RF模块,提供基本的控制和数据通讯功能,并为传感器扩展预留基本的支持接口.
图2 终端节点结构
MCU模块的底板采用了ATmega128L低功率处理器作为MCU模块的主芯片,用于实现传感器的数据采集和初步处理并进行通讯控制,该处理器采用低功耗CMOS工艺生产,基于RISC结构,具有片内128 kb的程序存储器(Flash)可以支持Tinyos操作系统的移植需求,有8个10位ADC通道可实现数据转换.具有UART,SPI,I2C总线等接口,为传感器板预留了丰富的传感器数据接口,可根据具体传感器支持的接口类型用ADC,SPI或I2C进行连接,可在多种不同模式下工作,除了正常操作模式外,还具有6种不同等级的低能耗操作模式,因此该微控制器还适合于低能耗的无线传感网应用场合.
在RF模块的选择上,考虑到水信息监测节点地理分布的灵活性、使用的长期性,节点采用了CC2420作为RF通讯芯片,专注于完成协议的解析和网络构建[4-5].利用该芯片开发的无线通讯设备支持数据传输率高达250 kb/s,可以实现多点对多点的快速组网.
ATmega128L处理器通过SPI接口(MISO,MOSI,SCK)与CC2420交换数据发送命令.CC2420是受控的,处理器工作在主机模式,它是数据传输的控制方,CC2420设为从机方式.在SPI设为主机方式通讯时,需要在SPI初始化时将SS拉为低电平,当数据写入主机的SPI数据寄存器后,主机启动时钟发生器,在硬件电路的控制下,移位传送,通过MOSI将数据移出,同时从CC2420由MISO移入数据,8位数据全部移出时,就实现了一次数据交换.
电源模块包括两节容量为2.7 Ah的3.6 V的LS14500C电池,通过串联形成 7.2 V电源.以LM2596电压转换芯片为电路模块核心分别实现5 V和3.3 V的供电,除了为微处理器模块和ZigBee射频模块提供3.3 V电压,还可为需要5 V电压的部分水信息采集模块提供电源.电路设计时采用了PCB天线,同时也预留了SMA连接器,以便在必要时还可以使用其他种类天线.
终端节点可以工作在两种模式下:既可以作为普通的传感器节点使用,也可以作为汇聚节点实现接受所有节点传输包.两种方式在硬件设计上并无不同,仅需在程序设计上做相应改变即可用于协调普通传感器节点的数据传输.
2.1.2 终端节点的软件设计
终端节点的主要任务是感知周围环境参数的变化,然后将数据封包后发送给网关节点.通常的无线传感网一般没有操作系统,采用的传输路由通常是静态的,为了实现灵活的自组网,笔者在终端节点采用了美国加州伯克利大学开发的无线传感器网络的专用操作系统TinyOS为软件平台.
TinyOS操作系统基于构件(component-based)的架构不仅使得快速的更新成为可能,同时又减小了受传感网络存储器限制的代码长度,大大简化了程序开发的难度.TinyOS系统提供了很多网络协议,支持星形拓扑、树形拓扑和网状拓扑结构,只需根据网络规模和需要进行配置选择编译即可.
传感器的种类很多,为了说明终端节点的程序设计方式,下面以WL400水位传感器为例介绍传感器板的硬件结构和程序结构.WL400水位传感器具有极好的线性和较弱的滞后效应,能够及时监测到微小的水位变化,提供4~20 mA电流输出,温度与电压自动补偿.该传感器接口简单,总共有2个引脚,分别是电源和信号输出.由于ATmega128L的ADC端口是对电压信号采样,因此先使用转换电路将传感器的输出信号转换为0.5~2.5 V的平稳电压信号.将转化后的电压信号送入ADC引脚,然后通过编程实现水位值的变换.因此程序设计的主要工作在ADC的实现,ADC的转换和无操作系环境下的编程并无不同,所需注意的是由于采用了Tiny-OS操作系统,就需要按照相应的格式来构成组件,也就是说需要为WL400编写配置组件configuration和模块组件module.
如前所述,终端节点在某些要求不高或者数据处理不复杂、功能简单的场合可以充当汇聚节点,作为网络协调器使用直接通过GPRS和中心节点通讯,这无疑是一个节约成本的方案.但在水信息监测中存在着信息监测部署环境、规模和数据需求的多样性问题,如监测范围的变更要求节点数量能够动态增减,监测指标需求不同要求节点所采用的水文、水质传感器要能灵活变更和替换,此外还存在着运行中节点的新旧替换、注册、注销等动态变化.上述变动的实现都需要一些复杂的支撑功能,如网络变动带来的网络协调、协议转换等现场的布置和调试功能,基于Web的远程访问,数据采集和数据处理模式的灵活配置等等.处理能力相对较弱的8位或16位单片机已难以满足要求,此时就需要使用32位嵌入式系统来扮演网络协调器的角色,基于嵌入式的网关节点成为必要.
2.2.1 网关节点硬件设计
网关节点包含了终端节点的基本功能,同时提供GPRS的数传功能和长途802.11以太网方式进行远程数据传输.此类节点主要用于供电条件较为宽松的场合实现对终端节点的数据汇合和远程传输,起到网关的功能.
网关节点除了具备以上基本的数据汇聚功能之外还具备一定的现场处理能力,提供必要的人机交互调试接口,可以在野外提供一定的处置手段,以便在必要的时候进行现场布置和维护.考虑到功能、功耗、数据处理能力和外围接口的要求,项目实现时采用的是以英特尔XScalePXA270微处理器为核心的嵌入式平台.
为了实现GPRS数据远传功能,在网关节点设计中使用了 Siemens公司的GSM/GPRS模块MC52i,该模块具有很高的可靠性,并且内嵌了TCP/IP协议栈,可以使用AT命令对模块实现控制,很适合在便携移动终端中作为无线通讯模块.它和嵌入式处理器之间通过常规的串口即UART接口实现,在设计时需要注意的是,GPRS模块需要4 V,1 A以上才能启动;同时应考虑到各地GPRS网络质量不同,需要利用心跳数据包确保在发送数据时能够保证网关在线,而不会造成上报数据的缺失.
系统网关节点采用了ARM处理器,利用内置的SPI控制器可以方便地实现SPI功能.在32位ARM处理器基础上直接扩展CC2420模块,扩展GPRS模块采用常规的串口.
2.2.2 网关节点软件设计
网关节点的主要作用是接收各传感器节点的数据,并对数据进行相应处理后发送到监控中心、接收监控中心指令、确定节点的工作状态.网关节点主要工作是网络协调和数据远传,采用Linux系统支持编程环境.
网关节点要实现命令和数据的传输,主要涉及GPRS的数据传输和ZigBee数据传输.GPRS数据传输由于采用了MC52i模块,利用AT命令容易实现,重点主要在ZigBee协议的移植上.
在参考了 MicroChip协议栈的基础上,基于ARMLinux移植并实现了ZigBee协议.需要注意的是ZigBee协议栈的移植主要体现在对平台相关部分的改写或重写,以及在Linux环境下的并发控制和性能优化上.包括SPI接口、动态内存分配、固态存储、节拍控制等的改写或重写,中断服务(ISR)与底半部(bottom half)的设计.其中动态内存分配、节拍控制等可以利用Linux操作系统的系统函数,实现较为方便.利用内核的内存分配和回收函数kmalloc和kfree可实现动态内存分配.利用全局节拍变量改写节拍控制模块.
节点的注册、注销,节点传感器的配置变更和数据处理过程中的存储都需要数据库的支持,考虑到性能和体积的平衡,设计中选择了SQLite作为嵌入式数据库[6].
无线传感网络以获得被感知对象的有效特征信息为目的,也就是以数据为中心.因此无线传感网的节点必须具有适当的数据简约化和关联化处理能力,这就是数据融合.数据融合是针对使用多个或多类传感器的系统而开展的一种信息处理新方法,又被称作多源关联、多源合成、传感器混合或多传感器融合.
在水信息监测系统中存在着众多传感器,由于水信息监测的项目种类比较多,包括综合性指标(溶解氧、悬浮物等)、水质污染指标(生化需氧量、化学耗氧量、总需氧量等)、水文气象参数(流量、流速、水深、潮级等).这些指标之间存在着一定的关系需要进行融合,比如水质方面,水体温度越高含氧量越低;水文方面,河流下游的水位预测可以通过参考上游节点来水流量和下游节点河道宽度来评估.这些都需要在节点设计中加入数据融合设计.
无线传感器网内数据融合包括2个层次,即数据包级与应用级.数据包级融合又分为无损融合与有损融合.无损融合保留所有有效信息,只是对冗余信息进行缩减,比如将具有相同属性的数据重新封装,去掉重复的包头、编号等冗余信息,以减少信息传输量;有损融合是通过一定的算法,减少数据的一部分细节,提取出同类数据的特征或运算结果进行传输,接收端得到的是不完整的或是质量下降的数据,从而达到减少信息传输量的目的.系统底层以配置为汇聚功能的终端节点为中心,构成星形网络,各汇聚节点再通过树状结构逐层汇聚到达网关节点并最终到达上层网络中心节点.在底层网络中,由于每个星形区域内都有若干个传感器终端节点,若将所有数据依次转发,对功耗与带宽来说是不经济的,因此有必要在底层网络中对数据进行一级数据融合.而在上层网络中,中心节点除了接收到ZigBee网络上传来的水文、水质数据,同时还要设置当地特殊的水文地理特征信息、专家的经验参数等.而最终的管理和决策就建立在这些信息的基础上,因此在上层网络中还需进行一级应用级融合.
在底层的数据融合中,为了提高融合的精度,需要对终端节点的数据进行汇总,然后还需对上传的数据进行一级滤波处理去除具有疏失误差的数据,最后进行数据的融合处理.
由终端节点上传的数据可能会存在疏失误差,这种误差很可能对后级的融合产生很大的影响,因此,在进行数据融合之前,需要对其进行一次滤波,来滤掉这种具有疏失误差的数据.在系统的设计中采用了格拉布斯(GRUBBS)检测方法,来剔除具有疏失误差的数据.GRUBBS法是在标准差未知的情况下对异常值检测的一种方法,可以有效地剔除具有疏失误差的数据.一般来说,同一区域的水文、水质测量值随机误差均可认为是服从正态分布.系统采用GRUBBS异常值取舍法来实现多传感器数据的滤波,以水温为例假定某一汇聚节点管理区域内的终端节点所采集的水温数据按从小到大排序后为x1,x2,…,xn,服从正态分布,令
因此在给定显著水平a后(一般取a=0.05或a=0.01),就可以通过查g表找出GRUBBS计算量的临界值g0(n,a),根据统计原理,a为gi≥g0(n,a)时的概率,即小概率事件,在xi服从正态分布时不应该出现.如果计算的gi值大于表中的临界值g0(n,a),则能判断该测量数据是异常值,可以剔除.可以肯定可疑值不是最小值就是最大值,由于数据已按顺序排列,下式统计的是最大值或最小值的gi.
这是因为在这个数据序列中,最大值与最小值是最有可能出现疏失误差的,如果最大值和最小值所对应的gi<g0(n,a),则可以认为在这组数据中不存在具有疏失误差的数据,若gi≥g0(n,a),则数据序列中存在有疏失误差的数据,这时就需要算其他数据的g值,找到所对应的xi,并将其剔除.
剔除了可疑数据后,在保留的有效数据中仍然存在着与真实值具有一定差别的数据,这些精度不等的数据对数据融合准确度的贡献是不同的.在此,引进“权”的概念来衡量不同数据对数据精度的贡献和重要性.通常认为,确定“权”系数的方法有以下3种:①根据经验确定;②根据测量次数确定;③根据数据的精度参数确定.在目前的传感器数据融合算法中,比较流行的是自适应加权融合算法与聚类分析方法.两者均使用方差作为依据进行融合,前者使方差达到最小分配权数,后者根据方差大小进行聚类进而确定权数.本系统采用自适应加权融合算法来确定不同传感器数据的权系数.
假设某一汇聚节点的检测区域内有m个传感器,其采集到的湿度值分别为x1,x2,…,xm,经过GRUBBS滤波后,剩下的有效数据为x1,x2,…,xn,(其中m>n,均为自然数),其值相互独立,它们的方差分别为,…,,每个数据的加权系数分别为w1,w2,…,wn,进而,融合后的值为
可知,每个传感器的权值的大小与此传感器的方差有关,传输基站将数据采集站的数据经自适应加权融合后,封装在数据帧中,上传给中心节点进行进一步的应用级融合处理.
利用设计开发的节点构建了水信息监测系统,将嵌入式、无线传感网技术很好地结合起来,建立了一种通用性很强的远程监测系统.并在小范围内进行了验证,自运行以来,系统运行稳定、可靠,监测效果较为明显,达到了系统设计的目标.并充分实现了各种信息的融合和共享,丰富了水信息监测的手段,提高了管理水平,节省了人力物力,带来了良好的经济效益和社会效益.
致谢:本研究获得了河南省教育厅的自然科学研究计划项目支持,在此表示感谢!
[1]肖贤建,樊棠怀.水信息获取与处理技术及发展[J].水利水电科技进展,2008,28(1):86 -90,94.
[2]靳晟,李兆东,林丽.水质监测管理信息系统开发研究[J].人民黄河,2010,32(9):52 -53.
[3]卢良进,徐向华,童超.无线传感网络协议分析技术研究与实现[J].传感技术学报,2009(12):1828-1833.
[4]吴呈瑜,孙运强.基于ZigBee技术的短距离无线数据传输系统[J].仪表技术与传感器,2008(5):38-39.
[5]李志宇,史浩山.基于ATmega128L的无线传感器网络节点设计与实现[J].计算机工程与应用,2006,42(27):76-79.
[6]黄布毅,张晓华.基于ARM-linux的SQLite嵌入式数据库技术[J].单片机与嵌入式系统应用,2005(4):21-24.