胡 娇1,孙 坚1,王晓薇1,沈 澍2,3,邹志强2,3
(1.南京邮电大学 贝尔学院,江苏 南京 210023;
2.南京邮电大学 计算机学院,江苏 南京 210003;
3.江苏省无线传感网高技术研究重点实验室,江苏 南京 210003)
摘 要: 为了对水环境进行数据采集、传输和显示的全方位处理,设计了一套基于无线传感网(WSNs)的水环境云端监测系统,阐述了系统的网络架构及具体组成部分,包括终端监测节点、簇头节点、数据汇聚节点和基于Yeelink的远程监视中心,并详细介绍了各部分的软硬件设计。同时,支持用户在手机终端实时监测采集到的水温、压强、pH值等信息。通过实验和测试可以看出,该系统为低成本实时在线水质监测提供了一套可行的方案。
关键词:Arduino;水环境监测;无线传感网络(WSNs);云端网络;Yeelink
0 引言
随着人口膨胀和经济的高速增长,环境污染变得日益严重,特别是近年来的水质污染。大自然是一个有机的整体,水环境的恶化不可避免地会影响整体环境改变[1]。传统的水质监测主要是通过用便携式仪器进行人工检测、分析计算水环境中微生物的活性情况,但这些方法或效率低,或成本高,或精度低,并且对周边生态环境有影响[2-3]。也有人采用开源平台来搭建监测系统,但规模较小,不适合大面积、分散的水域监测[4]。直到最近几年,无线传感器网络(Wireless Sensor Networks,WSNs)技术的引入,使得监测效率得到大幅度提高[5-6]。但是,由于水质环境的复杂性以及河流湖泊地域的限制,WSNs实施起来比较困难,并且单个节点大多数只能测量单一数据,很难对水环境做出正确判断,处理的数据也是通过较为传统的终端机显示。
本文在WSNs的基础上,针对当前水质监测技术的不足,设计了一种水环境云端监测系统。该设计对传感器节点进行整合,利用双核结构将原本单一的传感器整合在一个节点上,使得单一节点可同时监测温度、pH值和压强等多项数据;凭借WSNs技术布局灵活、成本低、功耗低、无需基础设施支撑等优势,解决组网问题,实现对水域的覆盖;加入GPS模块,结合压力传感器实现监测节点的三维定位;在数据显示上,本设计一改传统的终端机显示方法,引入当前热门的云端网络技术,将数据汇聚节点处理得到的数据直接发送至云端网络,使用户可以在Yeelink物联网平台上实时监测水质数据,真正实现随时随地进行水质监测。
1 系统网络拓扑结构
为了获得最佳效果,本系统设计了一种混合网络拓扑结构,整个系统由以下四部分组成:终端监测节点、簇头节点、数据汇聚节点和远程监视中心。其中终端监测节点、簇头节点和数据汇聚节点构建成了一个无线传感器网络,如图1所示。拟定在监测区域部署N个节点得到N维的原始信号。接着,按照分层分簇的网络结构进行逻辑映射得到M个簇,簇头节点分别为{B1,B2,B3,…,BM},簇头节点负责收集本簇内的数据;最后,由M个簇头节点把信息汇聚到数据汇聚节点,由数据汇聚节点传输到上层的云端网络。因此,数据汇聚节点与簇头节点之间构成了树状网络,而每个簇头节点所负责的一簇区域内的各个终端节点之间则构成了一个网状网络,以确保能选择最佳的路由路径进行数据的传输。
在簇头节点上部署GPS定位装置,用以提供准确的参考坐标,而在每个簇头节点负责的一簇区域当中,采用三边定位算法来计算每个终端监测节点的位置坐标。结合压力传感器得出的水深,从而获得三维坐标。
2 系统硬件设计
系统核心处理器选用ATmega328,其I/O口丰富,可以支持更多种类和更大数量的传感器,实现更多水质参数的监测[7]。系统各部分分工合作,终端监测节点采集传感器数据,分析处理后发送给簇头节点;簇头节点实现本簇内终端监测节点数据的收集;数据汇聚节点监测网络,实现数据的统计分析和上传。系统硬件结构组成如图2。
2.1 电源模块
节点采用外部+5 V电源供电,通过高效线性稳压器AMS1117得到+3.3 V电压供给无线传输模块、数据上传模块、GPS模块和温度压强传感器。而调理电路工作所需的±5 V电压则是利用ICL7660得到,如图3所示。
2.2 调理模块
本系统测量pH值采用雷磁公司的E-201-C传感器,其输出信号为微弱的直流信号,大小与pH值存在线性关系,信号范围为-450~+450 mV,不便于采集。于是通过调理模块对该信号进行线性处理,最终得到便于采集的0~3 V范围的电压信号。
图3展示的便是调理电路,由跟随、线性放大和反向放大三部分组成。用VOUT表示调理电路的输出,VIN表示pH传感器信号,最终两者间服从关系如下:
这里取R2、R3、R4、R7皆为1 k,则式(1)为:
VOUT=VREF-2VIN(2)
得到的输出可直接送至处理器读取进行A/D转换。由于实际情况多变,调理电路的放大倍数和电平抬升量均是可调节的,可以减小误差,更好地适应多样化的环境。
2.3 GPS模块
GPS模块选用一款与Arduino兼容的GPS扩展板,支持GPS卫星导航技术,能让簇头节点发送信息并使用GSM网络。同时在GPS模块加入GPS记录单元——Itead Arduino GPS定位导航扩展板NEO-6,可记录GPS数据,方便后期数据分析,改进分簇算法,解决覆盖率不足等问题。
2.4 数据上传模块
数据上传模块采用以W5100为核心的网络扩展模块。W5100内部集成了TCP/IP协议栈、以太网介质传输层和物理层,使用它可以不需要考虑以太网的控制,只需要进行简单的端口控制便可实现网络连接。扩展版支持SPI接口,使得W5100可以利用SPI协议与处理器进行通信从而获取需要上传的数据[7]。
2.5 接口电路
无线通信模块选用CC2530核心板,进行逻辑电平匹配后,使用标准的串口与ATmega328通信,不仅降低了开发难度,也提升了系统的整体性能。终端监测节点采用了微型数字型温度压强传感器MS5541C,其工作于+3.3 V的数字电压下,内部集成了A/D转换器,可将电压值直接转换为16位数字信号输出,精度高,支持SPI协议,在时钟(32.768 kHz)的控制下与ATmega328通信,实现温度压强的测量[8]。接口电路原理如图4所示。
3 系统软件设计
3.1 终端监测节点主程序
MS5541C是一款综合了温度和压力测量的微型数字型传感器,可以根据下式
P=P0+ρgh(3)
计算水深。其中P是水下压强,P0是大气压强(约为1 Pa),ρ、g、h分别是水的密度、重力加速度和水的深度。这样结合簇头节点上GPS模块可以实现水域的三维监测。由于压强传感器的输出电压受温度等因素的影响较大,需要通过外围处理器进行软件补偿。
于是主程序除了负责系统的初始化、定位和数据的采集处理之外,还要实现与传感器的通信,如图5所示。
主程序主要进行以下操作:
(1)系统初始化,包括传感器的初始化;
(2)获取校正系数,处理器先从MS5541C的64 bit的PROM中读取它自带的校准数据,然后将校准数据转换成校正系数;
(3)读取水质参数;
(4)温度校正,首先计算出校正温度,然后依据测量温度和校正温度计算得出实际温度;
(5)对压强值和pH值进行温度补偿;
(6)数据传递,即对数据进行位置信息绑定后将数据包通过串口传递给无线通信模块。
3.2 簇头节点主程序
簇头节点主要实现位置信息的获取和数据的转发,主程序流程图如图6。主要步骤如下:
(1)系统初始化,包括GPS模块的初始化;
(2)通过AT指令启动GPS功能并记录GPS坐标;
(3)将本簇头节点获取的位置坐标广播给终端监测节点及其他簇头节点;
(4)簇头节点进入路由模式,与终端监测节点和其他簇头节点进行无线通信,实现数据包的转发等功能。
3.3 数据汇聚节点主程序
数据汇聚节点主程序负责读取CC2530传递过来的数据并交由W5100上传。由于采用双核模式,主程序可以设计得非常简单,流程如图7所示。主要步骤如下:
(1)系统初始化,包括网络端口初始化以及设备编号、传感器编号配置等,初始化后进入侦听状态;
(2)如果产生串口中断,表明CC2530有数据发送过来,则读取数据;
(3)数据读取完毕后,进行简单的处理,随后将数据上传至远程监视中心,上传结束后继续侦听。
3.4 无线通信程序
CC2530的引入使得无线通信的软件设计变得非常简单,直接使用TI公司提供的协议栈ZStack进行开发[9-11]。该协议栈是基于操作系统而存在的,建立在事件循环机制的思想之上。
数据汇聚节点上电初始化后首先询问是否存在现有网络,如有则直接入网绑定,开始转发数据、审核入网申请,相当于执行簇头节点程序;若不存在则将自己配置为协调器,启动网络,为入网节点分配地址,接收数据并上传。终端监测节点初始化后询问是否存在现有网络,没有则等待,有则直接入网绑定,运行三边算法进行定位,然后开始采集传感器数据并传递给父节点,等待应答,如果一直收不到应答则重新寻找网络。无线通信的工作流程如图8所示。
4 远程监视中心
远程监视中心采用Yeelink物联网交互平台,可以实现对前端的信息采集和信息处理设备的管理。在平台上注册,然后添加自己的设备,对设备进行管理。由于Yeelink平台是开放的,这就需要对每个用户以及用户的设备进行管理,确保传感器数据与用户传感器一一对应。Yeelink为了解决这个问题,采用分层管理的模式:用户层、设备层和传感器层[12]。首先分配给注册用户独有的APIKEY,每个用户可自行管理自己账户的设备,系统分配给每个设备独有的设备编号,设备里可以添加各种传感器,同样地,系统分配给传感器独有的传感器编号。
Yeelink物联网平台能同时支持电脑终端和手机终端实时显示,用户可实时查看水质参数,十分便捷。客户端显示界面如图9所示。
5 系统测试
对监测节点进行了防水处理之后,选取了室内和室外两种测试对该系统进行了初步测试。其中室外选在了南京邮电大学仙林校区的人工湖(大致在北纬32°06′34.40″,东经118°55′40.58″)。
温度测量范围能达到-40℃~+85.0℃,精度在1℃以内;压强测量范围为0~14 bar,精度达到1 mbar;pH值测量范围为1~14,精度达0.01。在水下测量时,选择12月初某天的8∶00~20∶00时间段,每半小时测量一次,并记录数据。在湖面下0.5 m左右处最低温度为 7.0 ℃,最高温度为9.12 ℃,压强在1 050 mbar左右,pH值在7.20左右。测试数据显示如图10所示。并对标准仪器进行人工测量得到的值与系统测量得到的数据进行了对比。
通过以上数据可以发现,pH值的测量误差相对较大,这是由于pH电极的信号需要经过调理电路的处理,而这种模拟电路带来的误差较大,但总体来说系统测量值与人工测量得到的数据基本接近,说明本系统数据测量的准确性。目前平均数据传送时延在20~30 s之间,有较好的实时性。无线通信部分采用最新的ZigBee2007协议栈,采取了碰撞避免策略,MAC层也采用了完全确认(ACK)的数据传输模式,支持差错重传,提升了系统的可靠性。
6 结论
本文针对水质参数的网络监测问题,设计并实现了一个基于无线传感网的水质参数云端监测系统,该系统由终端监测节点、簇头节点、数据汇聚节点和远程监视中心组成,可以完成信息的自动采集、信息的无线传输以及基于云端的信息存储,并可以在移动终端实时查看监测数据。大量的实际实验表明本系统具有一定的实时性和可靠性。本系统不仅可以满足对水环境的监测需要,而且由于模块化设计,使得本系统具有一定的普适性,可用于其他环境监测的领域,具有广阔的应用市场。考虑到能源功率和成本问题,本系统还需要进一步优化。
参考文献
[1] JIN D L, LIU Y W. An overview of the water environment[J]. Water Resour, 2006(27):33-36.
[2] Jiang Peng, Xia Hongbo, He Zhiye. Design of a water environment monitoring system based on wireless sensor networks[J]. Sensors, 2009,9(8):6411-6434 .
[3] 周良明,刘玉光,郭佩芳,等.多参数水质检测仪在海洋水质监测中的应用[J].气象水文海洋仪器,2003(4):45-56.
[4] TATSIOPOULOS C, KTENA A. A smart ZigBee based wireless sensor meter system[C]. 2009 16th International Conference on Systems,Signals and Image Processing,2009:1-4.
[5] He Dong, Zhang Lixin. The water quality monitoring system based on WSN[C]. 2012 2nd International Conference on Consumer Electronics, Communications and Networks,2012:3661-3664.
[6] 秦华,孙晓松.基于Arduino/Android的环境状况监测系统设计[J].无线互联科技,2013(1):59-61.
[7] 程晨.Arduino开发实践指南AVR篇[M].北京:机械工业出版社,2012.
[8] 徐守品,刘越,张靓.基于ATMEGA32单片机高精度微水测量仪的设计与实现[J].精密制造与自动化,2012(4):34-36.
[9] 李新.基于CC2530的ZigBee网络节点设计[J].PLC&FA,2011(3):97-99.
[10] 吴岳忠,汪涛,周训志,等.基于物联网的家居室内环境在线监控系统研究[J].微型机与应用,2014,33(14):60-63.
[11] 张毅,张灵至,卢威.面向物联网的ZigBee-红外控制系统设计[J].电子技术应用,2013,39(5):82-85.
[12] Yeelink. API Documents[EB/OL].(2014-12)[2015-01-12]. http://www.yeelink.net/develop/api.