基于WSN和GPRS的水资源在线监测系统设计与实现*
2018-07-30王文剑潘善亮
王文剑,潘善亮
(宁波大学,浙江 宁波 315211)
1 引言
通过分析水质监测技术现状及其发展趋势,针对不同的水质监测环境与目标,提出一整套融合多种信息源的水质监测模型与方案。在此基础上,运用先进的无线传感器网络(WSN, Wireless Sensor Networks)、数据分析等技术,建立区域水质监控与管理平台。主要内容包括:
(1)适合于郊外山区的大型水质监测无线传感器网络的设计方案;
(2)高性能、低功耗水质监测无线传感器网络节点设计与实现;
(3)无线传感器节点在目标区域的部署与无线传感器网络组网;
(4)研究多种水质监测技术的有机融合,根据需要合理部署不同类型传感器和监测设备;
(5)水质监测数据的整理,综合型水质监测平台的设计与实现。
本课题的主要研究思路是:在引进国外先进ASI(Actuator-Sensor-Interface)传感器基础上,采用基于NXP JN5148无线微控制器模块的低功耗传感器,通过分布式动态组网,实现大范围、24小时不间断的监测。同时设计具有定位功能的GPRS无线传感器节点,能够随时侦测到饮用水源的污染情况,适用于组网困难等恶劣环境下的监测,使水质监测和管理更为全面有效,从而实现水质状态的实时监测,避免人工测量的繁琐及监测数据的延时,解决传统水质监测平台续航差、维护成本高、适应性差等问题。采用基于支持向量机算法的水质异常模式识别方法进行数据分析,基于WorldWind的可视化界面,逐渐提高系统的智能化水平。
2 总体方案设计
总体方案设计主要分成三个基础组成部分,分别是硬件采集传输模块,服务器端数据存储和处理模块,用户端数据展示模块。
在硬件端,为保证设备在实际应用的可靠性,分别采用了两套传输方案,一套采用ZigBee协议用于无线传输,一套则采用GPRS用于数据传输,中间层协议分别采用TCP/IP协议和MQTT推送协议。终端控制器采用LPC1758和ARM9,ZigBee模块采用NXP JN5148芯片,GPRS模块采用M35GSM芯片[2]。
LPC1758与JN5148间使用串口进行通信,底层通信采用485总线,通信协议使用Modbus协议,单片机终端中使用FreeRTOS系统进行资源管理,同时在系统中架设两个协议栈TCP/IP以及Modbus。GPRS终端中,ARM9与M35GSM芯片同样采用串口进行通信,ARM9中使用linux系统进行资源管理,配置端口单独采用以太口,在ARM9中分别架设两个协议栈:Modbus以及TCP/IP协议,控制芯片与传感器使用标准485连接,传感器与ARM间通信协议采用Modbus协议。
服务端采用MQTT服务终端与BOOST库联合编程,用于实现后端数据的处理。数据库端使用Oracle数据库,并作为底层通信数据与高层终端应用的桥梁,基于OTL库(Oracle, Odbc and DB2-CLI Template Library)开发实现了通信端与服务器端的连接与数据传输。通过在跨平台的C++程序中使用OTL来操作数据库,使数据的通信与存储更加高效安全。在数据可靠性方面,通过设置心跳报文时刻关注各个节点的运行状况,及时将无效的报文排除,维护数据库数据的准确性。增加了硬件中的报文缓存,并重新设计了网络从异常中回复时的处理逻辑,使得系统具有一定的故障恢复能力;增加日志模块,提高了对系统状态的把握。项目的总体框架如图1所示。
3 水质监测系统前端设计
针对传统水质监测平台的硬件终端中续航差及无法适应恶劣环境等问题,分别架设两种终端节点,一种是基于ZigBee终端的网络,该网络下同时挂在多个
图1 水质监测系统总体框架
在该逻辑中,配置网站通过假设Tomcat服务器实现,配置文件为一个XML文件,记录包含有传感器的Modbus地址、传感器中数据的解析方式及传感器中数据的计量单位等信息。
4 水质监测系统后端服务器设计
在服务器端,对应于两种不同的硬件终端,分别开发两套后端处理程序,一套用于处理ZigBee协议传输的TCP二进制文件,另一套则用于处理MQTT协议传输的JSON数据。下面开始介绍两种服务端软件的内部逻辑结构。
4.1 服务端架构
为保证服务质量,在服务端使用MQTT[7]的消息代理终端,用于处理各种硬件连接不可靠的连接情况,业务逻辑则使用专用软件实现,软件的服务端架构如图6所示:
图6 水质监测系统服务端软件框架图
上述框架中,MQTT消息代理采用mosquito程序,负责连接的建立、底层终端信息的获取,上层软件则负责信息的流向、存储。上层软件的构架如图7所示:
图7 水质监测系统业务逻辑管理框架
在业务服务端,主要采用C++编程实现,为保证项目的可移植性和软件的可靠性,多数程序采用BOOST库编程。内存管理全部采用BOOST的智能指针实现,基础数据结构则采用BOOST库和STL库相结合的方式,以保持系统的安全可靠。
4.2 业务逻辑流程
在业务端,业务逻辑被分成两条进程进行管理,以加快数据的处理速率。首先,当MQTT消息代理程序将业务数据投递到程序连接之后[8],MQTT连接管理将负责投递该数据到缓存队列当中,缓存队列通过一个链表实现,链表通过加锁机制防止前后端读写不一致的情况,当数据被投递到数据库管理模块后,管理端首先调用数据处理模块对数据进行解析操作,然后根据解析内容不同,确定投入的表,同时每次数据到达时,设备管理终端刷新计时器,若该设备是新的设备,同时还要负责将该设备插入设备在线管理池中,为该设备开启新的计时器。业务逻辑流程图如图8所示。
5 水质数据显示客户端
利用采集的水质监测数据,基于支持向量机算法建立水质异常模式识别模型,实现水质数据的智能化分类。水质数据显示客户端用于在数字地理信息系统中实时地显示由水质传感器捕获的数据,给予用户更好的体验以及更为直观的数据呈现。用户能够在三维虚拟数字地球中进行漫游,能够通过鼠标以及手势方便地与系统进行交互,实时地查看各个监测点的水质信息。对于检测到的水质异常,系统会以动画的方式向用户发出警报。
系统开发了基于Web以及基于客户端的虚拟数据显示系统,使得用户能够通过不同的途径访问系统,以获取实时的水质监测数据。WorldWind[9]是一个NASA开发的开源虚拟地理信息显示系统,有分别基于java和.net开发两个版本,能够将基于WMS发布的地理信息数据通过一个三维的虚拟地球进行展示。通过WorldWind提供的API对其进行二次开发,能够在三维数字地球中实时地显示水质检测数据。
图8 水质监测系统业务层逻辑
基于WorldWind打造了一个水质数据三维实时显示系统,用户在三维数字地球中进行漫游,查看并管理由分布于不同监测点的水质传感器捕获的水质信息。用户能够通过鼠标以及手势的方式与客户端进行交互,在此,基于Kinect对用户的手势进行捕获和识别。多样的交互方式大大提升了操作的灵活性以及系统的可用性。
该模块的系统框架如图9所示:
图9 基于WorldWind的三维数据显示客户端
系统最终的显示界面如图10所示。
6 结束语
随着水质在线监测系统在市某水库的顺利实施,该系统实现了水质信息的自动获取、实时发布和动态展示等功能;在低功耗无线水质传感器节点研制方面取得了突破,采用基于NXP JN5148无线微控制器模块的低功耗传感器节点,通过分布式动态组网,实现大范围、24小时不间断的监测;同时设计具有定位功能的GPRS无线传感器节点,能够随时侦测到饮用水源的污染情况,适用于组网困难等恶劣环境下的监测,使水质监测和管理更为全面有效。未来将建立具有决策支持的水资源三维展示平台和对外网站,建立水资源图像数据库,开发基于视频图像的水华监测技术和水质图像分析,进一步实现水质监测智能化。
图10 水质监测系统数据显示界面