葛彦凯,杨静,赵清华
(1.太原理工大学信息与计算机学院,山西晋中030600;2.太原理工大学信息化管理与建设中心,山西太原030024)
近年来工业化进程不断加快,城市中空气质量污染状况日渐加剧,因室内污染气体超标而引起的呼吸道疾病发病率逐年提高,迫使人们越来越关注室内空气质量,一批室内空气质量监测设备应运而生。当前,国内外厂商生产的空气质量监测设备可以监测多种空气指标,并通过蓝牙或IPv4 网络远程查看数据。但蓝牙通信覆盖范围小,不适用于学校、办公楼等场所[1];IPv4 网络通信受限于IP 地址数量空间不足与节点移动性带来的路由问题,难以满足同时监测大量节点的需求[2-3]。随着云计算、大数据、IPv6 等新技术的兴起与发展,新型物联网技术被大规模用于医疗、通信等领域[4-5]。文中基于新型物联网与IPv6 通信协议相结合的思想,设计了一种基于IPv6 网络实现通信,集空气质量数据采集、历史数据分析、图形化数据展示等多种功能的室内空气质量智能监测系统。
基于IPv6 的室内空气质量智能监测系统由智能监测终端与云平台两部分组成。
智能监测终端基于GD32VF103C 微处理器设计,GD32 通过串口将DHT11、MQ- 7、SGP30、UBLOX_NEO-M8N 等传感器所采集的温湿度以及一氧化碳、二氧化碳、总挥发性有机化合物(TVOC)浓度、空间位置等信息传送至ESP32 无线模块,ESP32无线模块得到信息后通过编解码协议将其编码成一组十六进制数据包,通过IPv6 网络将其上传至云平台[6]。云平台在得到数据包后通过编解码协议将其解码为十进制数据并保存至后端MySQL 数据库,用户可通过上位机登陆云平台查看当前时刻与历史数据。系统结构图如图1所示。
图1 总体设计方案结构图
智能监测终端微控制器采用GD32VF103C 微处理器作为控制单元,包括传感器组、LCD 液晶显示模块、北斗定位模块、ESP32 无线模块,结构框图如图2所示。
图2 智能监测终端结构框图
监测终端的主控单元采用GD32VF103C 32 位通用微处理器,基于RISC-V 内核设计,采用了全新的基于开源指令集架构RISC-V 的Bumblebee 处理器内核,支持RV32IMAC 指令子集的组合,配备精简的指令预存单元和动态分支预测单元,具有108 MHz主频[7],支持flash 访问顶等待,以提供最大效率。
GD32 微控制器提供128 kB 的片上flash 以及32 kB 的SRAM 缓存,支持连接到APB 总线的增强型I/O 口和各种外设多种标准高级通信接口,包括SPI、I2C、USART 和I2S,可连接不同类型的传感器。GD32 以10 s/次的频率控制传感器组进行数据采集,得到数据后通过UART串口传送至ESP32无线模块[8]。
监测终端通过传感器组进行空气质量数据的采集,使用DHT11 温湿度传感器、MQ-7 一氧化碳传感器、SGP30 二氧化碳&TVOC 浓度传感器,各传感器通过AD 转换电路将模拟信号转化为数字信号。
DHT11 温湿度传感器是一款含有已校准数字信号输出的温湿度复合数字传感器,数据通信引脚DATA 采用单总线结构与GD32 微处理器进行通信。当接到GD32 的起始信号后,DHT11 发送回应信号后由低功耗转换为高速模式,进行一次数据采集并将数据通过DATA 总线发送回微处理器进行解析[9]。
MQ-7 一氧化碳传感器使用在清洁空气中电导率较低的二氧化锡作为气敏材料,该传感器对一氧化碳气体有良好的灵敏度,常用来检测空气中一氧化碳气体的浓度。传感器通电后,气敏材料的电导率随空气中一氧化碳气体浓度的增大而增大,在一定范围内,使用简单电路可将电导率的变化转换为与一氧化碳气体浓度相对应的输出信号[10]。
SPG30 二氧化碳&TVOC 浓度传感器常用来检测室内空气的二氧化碳与TVOC 的浓度。传感器内部集成4 个气体传感元件,可用来检测多种挥发性有机化合物的浓度和氢气浓度,经过传感器计算处理后返回总挥发性有机化合物(TVOC)浓度读数与等效二氧化碳(eCO2)浓度读数,并输出为数字信号[11]。
监测终端采用UBLOX_NEO-M8N 北斗定位模块实现定位功能。该模块可并发接收GPS、伽利略、GLONASS、北斗等GNSS,具有-167 dBm 的导航精度,输出数据可配置为NMEA、ublox、RTCM 等多种协议。在监测终端中,UBLOX_NEO-M8N 北斗模块采用ublox 自定义协议,设置控制串口参数后,通过内部射频电路进行卫星搜索并获得定位信息,Arduino 控制器通过提取定位信息中的维度格式、南(北)纬、经度格式、东(西)经、大地水准面起伏高度、大地水准面起伏高度单位等字段获取经纬度及海拔高度信息,获取信息后Arduino 控制器通过UART 硬件串口将信息发送至GD32 微控制器。
监测终端采用ESP32 无线模块作为串口转IPv6网关,从而将串口接收到的空气质量数据信息与位置信息通过IPv6 网络发送至云平台。ESP32 无线模块提供2.4 GHz 双模WiFi 和蓝牙芯片,内部集成天线、功率放大器、低噪声放大器、滤波器和电源管理模块等元器件,工作频率为80~240 MHz,性能稳定。
ESP32 无线模块并不支持IPv6 协议通信,可通过SDK 开发方式移植LwIP 协议栈,使监测终端可以通过IPv6 网络进行数据传输。LwIP(Light weight IP)是采用C 语言开发的一种小型TCP/IP 协议栈,可在实现TCP 协议主要功能的同时减少对RAM 的占用,常用于嵌入式设备实现网络通信[12]。LwIP 协议栈从1.5.0 Beta 版本开始支持IPv6 内核,经过多个版本的迭代,已全面支持DHCPv6,ICMPv6、Neighbor Discovery 等多种IPv6 协议。ESP32 无线模块选择2.1.1 版本Lwip 协议栈进行移植,移植步骤包括LwIP源文件导入、移植后编写cc.h 文件和lwipopts.h 文件、初始化网络、使用netif_add 函数添加网口、创建IPv6地址、初始化LwIP 协议栈。
监测终端选用2.8 寸TFT LCD 液晶屏幕显示各传感器采集到的数据,屏幕选用ILI9341 作为驱动芯片,分辨率为240×320,采用8080 并行接口与4 线SPI 接口与微处理器通信。通电后,模块可实时显示当前时刻的温湿度、一氧化碳浓度、二氧化碳浓度、TVOC 浓度与智能监测终端所处位置等信息。
监测终端软件设计流程如图3所示。
图3 智能监测终端软件设计流程图
1)硬件通电后检查硬件及各模块初始化;
2)读取各传感器数值并填充至Frame 数据帧,实现液晶显示;
3)设置中断时间,确定采样频率为10 s/次;
4)判断是否在标准值内,若超出范围则启动蜂鸣器报警;
5)按协议编码Frame 数据帧,通过串口传送至ESP32,采用IPv6 网络发送至云平台。
基于IPv6 的室内空气质量智能监测系统云平台基于模块化方式开发,共分为3 个子模块,分别为TCP server、Data back 与WEB 页面。TCP server 接收来自智能监测终端通过IPv6 发送的数据包后,根据数据编解码协议将其解码为十进制数据,通过HTTP协议传至Data back 并存储至MySQL 数据库。WEB页面读取数据库中的数据并生成图形化报表,用户或管理员可登录WEB 页面与云平台实现人机交互。云平台主要数据流程如图4所示。
图4 数据主要流程图
智能监测终端与云平台间采用TCP 协议进行通信,传输数据时,TCP server 子模块通过3 次握手法与智能监测终端建立连接,并开始接收来自智能监测中端发送的十六进制数据包,将数据帧解码后发送至数据交互后端Data back[13]。
TCP server 基于smart-socket 框架开发,smartsocket是一款可以实现web socket 通讯的优秀国产开源框架,可进行IOT、IM、RPC 等通信领域的开发。基于smart-socket 进行通信开发,主要有3 个步骤:协议编解码、消息处理与启动服务。在通信领域中,协议是通信双方对传输/接收数据流的编解码实现算法[14]。在文中系统中,定义了一种数据编解码协议实现十六进制数据包与十进制数据的转换,数据传输协议表如表1所示。
表1 数据传输协议表
Data back 子模块将接收到的十进制数据按照空气质量指标名称存储至数据库。子项目采用SpringBoot 框架开发,提供REST 接口调用,数据库采用MySQL 数据库。对于像MySQL 这种传统关系型数据库,SpringBoot 使用JPA(Java Persistence API)资源库实现对数据库的增加与删除[15]。在云平台中,MySQL 数据库中一共有2 张表格,分别为air_device与air_record。air_device 记录用户名、设备名称、设备当前状态(在线或离线)、设备创建时间、最后在线时间等信息;air_device 记录设备名称、各项空气指标数据以及记录时间等。
WEB 页面基于Servlet 与JDBC(Java DataBsae Connectivity)开发,包括用户/管理员登录界面与数据展示页面。用户在登录界面输入用户名与密码后,可以查看所属监测点的实时监测数据,并可根据需求以图表化的形式查看任意时间段的历史数据[16]。
对设计完成后的室内空气质量智能监测系统进行整体测试,监测终端实物图如图5所示。实验前,放置3 个智能监测终端于学校教学区域,各终端通过ESP32 无线模块连接至校园网;将云平台搭建于第二代中国教育和科研计算机网(CERNET2)。
图5 智能监测终端实物图
实验现象为在IPv6 网络环境下,智能监测终端可以稳定地将传感器所采集的空气质量数据上传至云平台。用户通过浏览器窗口访问云平台,进而查看当前各监测点的监测数据,页面如图6所示。
图6 云平台展示页面图
表2展示了某一监测点的实验数据,表3提供了该监测点标准测量值。通过比对两组数据发现,监测终端所采集的数据与标准值很接近,说明智能监测终端测量结果较为准确。
表2 某监测点实验数据
表3 某监测点标准测量值
文中还针对智能监测系统在IPv6 与IPv4 两种网络条件下的延迟时间做了对比实验,实验结果如图7所示。证明在中转路由较少的情况下,IPv6 网络与IPv4 网络相比,延迟时间相差不多,但IPv6 网络更加稳定。
图7 IPv6/IPv4延迟比较图
文中设计了一种基于IPv6 网络的室内空气质量智能监测系统,系统分为监测终端与云平台,可以24小时实时监测室内空气质量状况。监测终端通过IPv6 网络传输数据至云平台,用户访问云平台可查看监测数据。限于时间与实验条件,监测系统仍有改进的空间,下一步的研发重点是对数据的深入分析与移动端APP 的设计与研发。