物联网水环境监控系统设计
2018-01-22黄桂萍
黄桂萍
(龙岩学院 机电工程学院,福建 龙岩 364000)
水质监测是保护水资源的重要环节。水质自动监测在国外起步较早,我国在水质的自动监测与分析、报警体系等方面还处于初级阶段[1]。国内的水质监测系统大多设在自来水厂、污水处理厂等水处理机构,其精度高但价格昂贵,一套设备动辄几十万、上百万,不适合推广和用于大面积的水质监测。再加上其显示设备,大多是现场设备无法实现共享,满足不了目前的网络化、信息化、数字化要求[2-3]。本文设计了物联网水环境监测系统,通过传感器采集的水温度、电导率、PH值、浑浊度等值,使用STM32将数据处理打包。通过STM32的USART接口与GPRS模块通信,将数据传入GPRS模块缓存中,使用GPRS模块将采集到的水质参数按照数据帧格式打包。后台服务器获取相应数据后,经过分析处理,通过采用B/S结合C/S模式存储与显示相关数据,实现数据的网络化快捷显示,使数据得到很好的共享[4]。
1 监控系统结构设计
图1 系统结构图
系统通过水温度传感器、水电导率传感器、PH值传感器与浑浊度传感器,把与水质相关的参数转化成电信号,再经过滤波放大电路,将电信号转化成可以被STM32采集的电压信号和频率信号,再通过STM32将数据封装成HTTP协议报文的格式,使用串口与GPRS模块通信,通过GPRS把数据发送给服务器开放的接口,再通过网页和手机端显示,并实现水质污染报警等功能。
1.1 PH监测设计
PH检测采用的是电位检测法[5],通过玻璃电极传感器获取水中的氢离子含量。传感器由两端组成,电极的一端连接通过玻璃电极头部的球泡的特殊敏感材料,这种材料只对氢离子敏感,另一端连接用甘汞材料制成的电极作为参考电极。当溶液中的氢离子的浓度也就是PH值发生变化时,指示电极与参考电极之间的电动势发生变化,根据能斯特方程式(1)。式(1)中R为气体常数的8.3 J/(K·mol),T是绝对温度K,F为法拉第常数NA,n为电极反应中得失的电子数,OX为氧化型物质浓度,Red为还原型物质浓度,它反映的是非标准电极的电势与标准电极电势的关系,从而得出计算公式(2)。
E=E0-RT/nF*lg[OX/Red],
(1)
E=E0+ST(PH-7)。
(2)
式(2)中E为电极的输出电动势mV,E0为动标准电极电动势单位为mV。S为能斯特系数,T为绝对温度K,PH水的PH值。可令K(T)=ST,根据式(3),可使用用最小二乘法可求出K(T)。
PH=(E-E0)/K(T)+7。
(3)
由于PH传感器的输出电动势太小,且内阻大,无法直接被STM32微处理器采集,因此,电信号必须要进行放大。系统采用三级OP07的方法电路,如图2所示。由于PH传感器的内阻大,因此第一级放大电路采用电压跟随器的接法,以减少内阻,增强电压信号。第二级对主要对电压信号进行放大与滤波。其放大倍数可根据电路计算求出。第三级将放大后的信号滤波放大后,将电压转化成0-3.3V,以满足STM32微处理器的AD采样电压的要求。
图2 PH值监测转化电路
1.2 电导率监测设计
图3 电导率监测电路
水电导率可通过水中含有的离子总量来判断,简而言之就是水的导电能力。水的电导率监测在环境水质检测、电子工业用水水质评定中运用非常广泛[6]。通过这一特性,就有两种测量的方法测量水电导率:第一种,直接测量电阻;第二种,交流激励。采用第一种方法,会导致水的电解,使测量结果不正确。系统采用第二种,使用交流激励电极极化的方法,削弱了介质电极化现象,提高了测量的精确度和稳定度。此外,为了最大程度地减少电解对系统产生的影响,可加大电极面积或使用惰性金属的电极。该方法一般采用1 kHz-2 kHz的振荡频率,由于水的电容作用,频率不能无限增高。通过实验选取1 kHz的振荡频率比较合适。系统通过NE555自激振荡电路直接产生矩形脉冲。电路如图3所示。
1.3 温度与浊度监测设计
水的温度检测采用最常见的温度检测元器件DS18B20,这款芯片具有体积小、精度高的优点。一根通信线可以挂很多这样的数字温度计,十分方便。测量温度范围在-55度到+125度之间,供电电压为3.0 V-5.5 V,分辨率为9 bit到12 bit可选,转化时间最长为750 ms,系统采用防水凯装的DS18B20传感器。
水的浊度是检测水质的重要指标之一,用来表示液体的清洁度[7]。浑浊度可通过测量光在水中传播的散射强度来确定。光的散射是指光通过不均匀介质时一部分光偏离原方向传播的现象。浑浊度传感器由光束发送端与光束接收端组成,接收端由光敏感元器件组成。使用时,发射端发出一段光束,照射在接收端上面。当水质较清澈时,散射作用较弱,接收端接收到的光照强度高,电阻下降;当水质较为浑浊时,由于散射作用较强,接收端接收到的光照强度较低,电阻上升。接收端再通过简单的放大电路使电压到达STM32微处理器AD的采样要求,实现对水的浑浊度的检测。光敏电阻采用非密封型的MG45,发射的光源采用普通的发光二极管,然后把它们封装在n形状的透明塑料中,以保证传感器的正常运行和稳定性。由于系统容易受外在因素的影响,所以实际使用时,采用多个传感器多次一起采样数据并取平均值作滤波处理。
2 HTTP协议与报文的拼接
报文的拼接是系统的难点,系统使用STM32拼接HTTP字符串,HTTP协议全称超文本传输协议,是基于TCP之上的应用层网络协议,它主要用于B/S模式下传输超文本文档,它可以使得浏览器更加高效,传输任务减少。HTTP消息包括两种显示,第一种是客服端向服务区请求消息,第二种是服务器向客服端响应消息。请求报文由请求头、请求体组成。请求体是数据的载体,而请求头记录的是数据的目的地址、格式、数据体的字节长度等[8]。请求的方式有Get,Post,Delete,Put等,系统采用Post请求方式。HTTP的请求协议具体如图4所示。
图4 HTTP请求报文格式
图5 HTTP响应报文格式
响应报文由响应头与响应体组成。响应体是HTTP数据的数据体;响应头的功能与请求头功能相似,包含响应数据体的格式、数据体的字节长度、请求是否成功等。具体协议格式如图5所示。
系统通过GPRS模块先建立TCP连接,连接成功后,首先通过链表动态分配出一块内存,获取数据,将数据转化成JSON格式的字符串形式,接着拼接HTTP报文头,向服务器发送请求,等待服务器响应,再把响应的报文显示到LCD上。
3 采集系统软件设计
图6 硬件系统流程图
系统一开始运行时,先对STM32的时钟、定时器、中断、串口等初始化,再通过串口发送AT指令与GPRS模块通信,对GPRS模块进行初始化,通过GPRS尝试连接服务器。连接服务器失败时,重新初始化、GPRS模块重新连接。连接上服务器时,即以服务器建立稳定的TCP连接就可以向服务器发送数据了。
发送过程:首先,STM32通过自带12位AD获取经过水质的3种指数,水的浑浊度,电导率,PH;接着,获取温度值;获取完所有的值后,使用战舰板子上自带的LCD显示屏显示具体参数;利用动态数组拼接HTTP字符串;再通过串口把HTTP字符串发送给GPRS模块,通过GPRS发送到服务器上。硬件系统流程图如图6所示。
4 服务端软件设计
上位机服务器软件,利用asp.net设计相关网页,使用Web API接口实现数据的传输。Web API网站是程序的一部分,网页端在读写数据库的过程中与接收端软件读写数据库时就不会发生冲突问题。使用HTTP的报文可以访问Web API接口,即实现了GPRS数据发送给Web API。STM32主控如何将数据发送TCP报文,因为水质数据的长度会变化,如果使用静态字符串将不能满足数据变化的需要,所以使用动态链表来解决数据长度变化问题。在数据库方面采用SQLite小型数据库。软件系统将从硬件获取的数据,写入数据库中,利于高德地图的JavaScript接口,将实时数据显示在高德地图上面,通过High Charts将历史数据显示通过折线图显示出来;开发相应的手机端接口,通过手机APP把数据显示在手机上,在手机上实现用户管理。实现报表导出、报警的自定义设置、数据表格形式的查看、用户管理设置、系统管理等功能。
4.1 地图端的显示实时数据
系统采用高德地图显示,无论是在显示的效果方面,还是在人性化与趣味性方面都有很好的效果。用户登录时,为了提高用户体验,先加载网页,然后通过Ajax异步加载地图,获取相应的数据再加载到客服端上。由于数据结构比较多,包括各个点的实时数据和历史数据,所以,使用一般的for语句无法遍历,因而系统采用正则表达式分离数据,再拼接成相应的HTML格式文本,最后调用高德地图的接口含数显示在网页上面。为了增加显示效果,在系统打开是默认以水源地为中心画阴影,并在监控的水源地点与点之间画线,如图7所示。
图7 高德地图页面
4.2 表格形式显示与报表导出
系统采用Bootstrap完成数据的表格形式显示。Bootstrap是Twitter的前台框架,是基于HTML、CSS、JavaScript的简洁灵活的Web开发工具。使用Bootstrap显示表格数据极大地美化了前台的显示效果。由于数据量比较庞大,为了满足用户需求,可以通过选择或自定义时间设置、查询相关的数据,当点击导出报表时,获取用户的自定义时间,重新查询数据库,并生成报表提供给用户下载。表格形式显示如图8所示。
图8 表格显示图
4.3 报警设置
当水质发生问题时,及时发现并处理问题是非常必要的,这就需要及时地发出报警信息。系统在每次接收到数据时,与数据库设置的最小值与最大值进行比较,当小于最小值或大于最大值时,给指定用户发送此时超标的指数和超标的值。系统开发了相应的报警设置,如图9所示,可以自由设置温度、pH值、浑浊度、电导率的最高值和最低值,并设置报警的方式与报警的频率。
图9 设置报警消息图
5 结语
本文利用STM32作为主控制器,设计相关电路用于检测水环境的PH值、电导率、温度与浑浊度,并在STM32上面实现HTTP报文传输协议,最终通过GPRS模块发送至服务器上。研究与使用了TCP、HTTP等相关协议,利用asp.net设计及相关数据库系统设计相关网页,实现了对水质的多项指标进行监测,可长期监测并实时上传数据到公共平台。
[1] 刘文利,代进,张俊栋.水源地水质监控预警体系的建立[J]. 工业安全与环保, 2011,37(3):15-16.
[2] 许佳,张明珊. 基于物联网的水环境在线监测系统的研发[J]. 中国新通信, 2015,17(10):120.
[3] 卢亚楠. 水环境智慧监测服务系统设计与实现[D].南京:南京邮电大学,2014.
[4] 肖彦均,苏世旭,郭永安.基于物联网的水环境智能监控分析系统[J]. 微型机与应用, 2016,35(22):102-104,107.
[5] 胡月明,黄建清,王卫星,等. 水产养殖水质pH值无线监测系统设计[J]. 传感器与微系统, 2014,33(11):113-116,120.
[6] 金倩倩. 在线水溶液电导率仪的研制[D].南昌:东华理工大学, 2013.
[7] 盛强,何小刚. 远红外发光二极管与水的浊度检测[J]. 科技情报开发与经济,2007,17(7):274-275.
[8] 王超,胡晨,刘新宁,等. 嵌入式系统中HTTP协议的实现[J].电子器件, 2002,25(1):93-96.