基于Wi-Fi的空气质量监测无线传感器系统设计*
2019-06-25程远航许雪姝杜英魁赵丽娟
程远航, 许雪姝, 杜英魁, 关 屏, 赵丽娟, 刘 枢
(1.沈阳大学 信息工程学院,辽宁 沈阳 110014;2.沈阳恒源伟业环境检测服务有限公司,辽宁 沈阳 110003;3.辽宁省生态环境事务服务中心,辽宁 沈阳 110161)
0 引 言
环境空气质量的区域高密度在线监测,是目前环境监测领域的一个研究热点。随着工业的发展,人们所处的生活环境日益恶劣,各种呼吸道疾病的发病率大幅度提高[1]。传统空气监测设备多以有线通信方式为主。有线通信方式线路复杂,成本高,不适合大范围电力系统的监测[2]。为了方便实际的应用部署,本文采用无线通信方式监测空气质量。主要通过Wi-Fi模块、STM32单片机、气体传感器、TFT式显示屏构建稳定的无线空气质量监测终端。用户只需上电启动,仪器即可监测环境参数,并把相应结果实时显示在屏幕上,同时还设有数据上传云端功能,随时随地供分析使用[3]。
本系统自定义数据通信协议,以STM32F103[4,5]为主控芯片,串口连接多合一传感器进行数据采集与解析,用TFT式显示屏显示实时数据变化,并采用Wi-Fi模块,依照自定义的数据通信协议将数据上传到云端。如果网络传输发生失败,将把数据存入SPI Flash当中,在网络通信恢复后,将上传SPI Flash中的数据。可以通过Web下发Wi-Fi账户和密码,人们可根据实际工程需求更改Wi-Fi账户和密码,实现不同场景的空气质量监测。该系统可以实时从显示屏查看数据,也可以在云端查看连续完整的数据。
1 总体设计
自定义基于TCP/IP[6~8]数据通信协议,并可通过Web下发Wi-Fi账户和密码。以STM32F103为主控芯片,传感器测量温度、湿度、二氧化碳、甲醛等气体浓度,传感器将采集到的数据通过串口发送给STM32F103,STM32F103将数据进行解析并按照自定义的数据通信协议进行打包,串口接入TFT式显示屏实时显示温度、湿度及各气体浓度,同时STM32F103将数据包通过Wi-Fi模块上传到云端。如果网络传输发生失败,将把数据存入SPI Flash当中。在网络通信恢复之后,将补传SPI Flash中的数据。在程序设计中,时刻监测服务端是否下发的Wi-Fi账户和密码。如果监测到下发的Wi-Fi账户和密码,等待此刻的数据传输完成之后,重新连接新的Wi-Fi账户。
2 硬件设计
2.1 主控芯片模块
本系统采用的是STM32F103微控制器,芯片尺寸为32位,程序存储器类型为FLASH。
2.2 显示屏设计
本系统采用TFT式屏幕显示气体数据变化。TFT-LCD即薄膜晶体管液晶显示屏,TFT液晶屏是一类有源矩阵液晶显示设备[9]。可直接在上位机配套软件USART HMI上制作,将制作好的文件下载到屏幕中,STM32F103通过串口发送指令控制屏幕变化。
2.3 数据采集终端设计
该系统采用PTQS1005型号传感器进行数据采集,PTQS1005是一种多合一气体传感器模组,数据采集模块与主控芯片的通信方式为串口。它可以同时测量温度、湿度、二氧化碳、甲醛等气体浓度,各参数均以数字信号形式输出到单片机。PTQS1005电路图如图1(a)所示。
2.4 无线通信电路
Wi-Fi模块ESP8266[10,11]与主控芯片的通信方式为串口。ESP8266支持数据透传模式。主控芯片通过AT指令控制ESP8266。ESP8266电路图如图1(b)所示。
图1 数据采集与通信电路
3 数据通信协议设计
根据空气质量监测无线传感器终端采集的数据内容和数据传输的完整性要求,设计统一的数据通信协议,此协议在国家标准通信协议及数据格式的基础上修改,包括起始符、网络类型、命令单元、设备识别码、时间单元、数据单元、判断位、校验码。该协议可根据实际工程需要扩展数据单元部分,并带有时间单元,可实时上传带有时间戳的数据。Wi-Fi模块与云端依照此协议进行通信,自定义的数据通信协议的数据包结构和定义如表1所示。
表1 数据通信协议的数据包结构和定义
4 软件设计
本系统通过气体传感器对空气质量进行数据采集。主控芯片对采集到的数据进行解析,并且通过TFT式显示屏实时显示气体数据变化。通过Wi-Fi模块实时将数据发送到云端,当网络发生异常,数据存入SPI Flash中,网络恢复后,将SPI Flash中数据上传到云端。期间可通过Web下发Wi-Fi账户和密码更改Wi-Fi模块所连接的账户与密码。
4.1 数据采集模块
开启定时器,设置数据采集时间间隔为2 s,主控芯片通过串口发送读取数据的指令,传感器收到指令之后,将上传给主控芯片一组数据,STM32F103对此组数据进行解析,并且将各气体数据通过串口实时发送给TFT式屏幕显示。在程序中,为了避免其他干扰信号的影响,采取一段时间内多个数值去掉最大与最小值再求平均值的方式得到最终的各气体浓度数据。
4.2 Wi-Fi数据传输模块
本系统在TCP协议下进行网络传输。首次开机Wi-Fi模块通过AT指令连接原始热点,原始热点账户与密码存储在FLASH中地址0x00处。Wi-Fi模块连接对外服务IP地址以及端口号,发送登录包。登录成功后,在浏览器下发所要更改的Wi-Fi账号以及Wi-Fi密码。当Wi-Fi模块检测到服务端平台下发的带有Wi-Fi账号以及Wi-Fi密码的数据包,主控芯片确认该数据包的命令标识为Wi-Fi标识,将对数据包进行解析,并断开原有连接,尝试用新的Wi-Fi账号及Wi-Fi密码连接网络。如果连网成功,再次连接到对外服务IP地址以及端口号,发送登录包,并且在芯片内部FLASH中地址0x40处存储新的Wi-Fi账户以及Wi-Fi密码,以便下次开机时直接连接此网络。
程序中设WiFi_FLAG为判断下发WiFi账号后是否重新连接网络成功标识。连接成功之后,标志位WIFI_FLAG设置为1,如果连续3次连接网络失败,WiFi_FLAG设置为0。当WiFi_FLAG为1,Wi-Fi模块进入透传模式,在定时器中断中进行校时、发送实时数据以及补传数据。当WIFI_FLAG为0,Wi-Fi模块自动重新连接到以前的Wi-Fi账号及Wi-Fi密码。Wi-Fi模块与云端将依照表1的数据通信协议进行通信。
4.3 云平台
云平台在CentOS系统下基于SSM(Spring+SpringMVC+Mybatis)框架下进行开发。终端与云端采用异步非阻塞通信方式,采用Netty组件进行接入请求响应和建立长链接通道。云端负责接收Wi-Fi模块发送的数据包、解析数据包和下发应答报文。
5 系统测试
5.1 采集终端运行测试
采集终端运行测试主要包括:主控芯片读取从传感器返回的数据,并且在TFT式显示屏上实时显示出来。终端采集测试结果如图2所示。
图2 终端采集测试结果
5.2 网络通信测试
网络通信测试主要包括:Wi-Fi模块与云端建立的TCP/IP长链接是否成功,当Web下发新的Wi-Fi账号及密码时,系统是否能正常响应,在网络中断后的数据补传是否稳定。具体有如下的过程:1)主控芯片串口接入Wi-Fi模块,等待主控芯片监测到Wi-Fi模块。2)Wi-Fi模块进行初始化,连接IP地址以及端口号,建立TCP连接。3)通过Web下发新的Wi-Fi账号及密码,Wi-Fi模块重新建立TCP连接之后,发送登录包。之后开始进行实时数据传输,当主控芯片监测到Flash中存有数据,还将进行补发数据。串口助手显示数据补传测试结果如图3所示。
图3 数据补传测试结果
6 结束语
采用STM32F103微处理器,串口接入传感器,系统能自动测试温度、湿度、甲醛等气体浓度指标,TFT式显示屏显示各参数变化。自定义了柔性可扩展数据通信协议,通过Wi-Fi模块实现基于TCP/IP协议的网络通信,并且可通过Web下发所要更改的Wi-Fi账户和密码。系统具有校时功能,可上传带有时间戳的数据。当Wi-Fi网络出现异常时,将数据保存在SPI Flash中,网络恢复正常后,将SPI Flash中的数据补传到云端,以确保数据的完整性。经实验测试,数据传输稳定,即使网络发生异常,网络恢复后也可实现稳定的数据补传,同时验证了数据通信协议设计的有效性。