薛文辉,李仁铭,潘宇浚,郑 何,武永华
(福建江夏学院 电子信息科学学院,福建 福州 350108)
摘 要 :为保证实验室人员的人身和财产安全,设计了实验室环境安全监控系统,系统由服务端、设备端、客户端构成。服务端可划分为前置服务器和后置服务器 ;设备端选取 STM32F103ZET6 作为核心处理器,通过ESP8266 无线传输模块实现温湿度传感器、烟雾传感器、一氧化碳传感器数据上传 ;客户端采用 Qt 实现系统用户管理功能、实验室环境数据实时监测功能、传感器历史数据查看功能。通过测试,在网络节点范围内可以对数据进行高效采集并传输至云服务器,每 30 s 对客户端的传感器数据进行更新。用户可以通过客户端远距离查看实验室监测数据,能够更加快捷地发现实验室出现的各种安全问题。
中图分类号 :TP393 文献标识码 :A 文章编号 :2095-1302(2022)09-0029-03
0 引 言
近年来,随着信息管理水平的迅速提高,传统的实验室管理模式已不能满足实际需要 [1]。传统的高校实验室环境监测数据无法得到统一的信息化监管,实验室的物理环境仍需要依靠人工管理,消耗了很多人力和物力 [2]。
随着物联网技术的发展,云服务器、网络技术使得环境数据收集有了更好的设计方案。本文将基于云服务器、网络通信技术、STM32 嵌入式技术等对实验室环境安全监控系统进行设计。本系统共分成三个模块 :云服务端模块、客户端模块、设备端模块。云服务端可划分为前置服务器和后置服务器 [3]。前置服务器用于对设备端、客户端的数据进行提取分析,后置服务器用于提取和更新 SQLite3 数据库 [4] 的内容。设备端使用 STM32F103ZET6[5] 作为核心处理器,采用DHT11 温湿度传感器 [6] 采集温湿度、MQ-2 烟雾传感器 [7] 采集烟雾数值、MQ-7 一氧化碳传感器 [8] 采集有毒气体数值,通过 ESP8266 无线传输模块 [9] 将三个环境传感器检测到的实验室环境数据上传。客户端运用 Qt5.10.1 作为开发环境实现系统用户管理功能、环境数据实时监测功能、传感器历史数据查看功能。本系统每 30 s 对客户端的传感器数据进行实时更新,且用户可以远距离查看实验室监测数据。
1 实验室监控系统总体设计
本系统由服务端、设备端、客户端构成,系统总设计框图如图1所示。
本系统服务端是建立在云平台的,可划分为前置服务器和后置服务器。前置服务器 [10] 采用Epoll Socket技术、线程池技术、IPC通信技术、TCP通信技术等,用于对设备端、客户端的数据进行提取分析。后置服务器主要负责业务处理,用于提取和更新SQLite3数据库内容并实时保存。两个子服务器之间以共享内存作为进程间通信工具 [11]。
本系统客户端使用Qt5.10.1界面开发软件作为开发环境,用于与服务器进行通信,获取云端服务器数据库内容 ;采用MVC[12] 框架实现登录注册、获取传感器实时数据和历史数据等功能。
本系统设备端是以 HMI 串口触摸屏 [13] 作为主控制器,用户可以查看 HMI 串口触摸屏所显示的实时传感器数据。设备端以单片机STM32F103ZET6芯片作为中央处理器,主控制器与中央处理器之间的通信靠USART 串口完成。环境数据由DHT11温湿度传感器、MQ-2 烟雾传感器、MQ-7一氧化碳传感器监测。无线通信系统由ESP8266WiFi模块构成。
2 系统服务端设计
本系统前置服务器负责设备端和Qt客户端之间的TCPSocket[14] 通信。通过Epoll Socket 的I/O复用实现对客户端、设备端的连接通信对应的Socket套接字进行保存。前置服务器封装的线程池模块负责对接收到的数据包进行解析,并存入共享内存,同时监听并接收后置服务器对业务处理完毕后所写入共享内存的数据。
本系统服务器选用的IPC通信工具是共享内存。本系统云服务器将共享内存区按照结构体大小的1000倍进行创建,划分成1000个块结构体,其中共享内存首地址Shm_addr指针作为共享内存判断的起始点。本服务器会开辟一个线程用于判断共享内存起始点内是否为空,倘若为空则不读取数据 ;如果判断索引内容为有效数值,则提取出来跳入下一个结构体块循环执行,直到下一个块为空。共享内存可以存储1000个结构体,在全部接收完毕之后会将其清空,保证下一次前置服务器和后置服务器之间的交互能够正常运行。共享内存存储方式如图2所示。
本系统的后置服务器负责对SQLite3数据库信息进行提取和更新。封装线程池对各个业务对应的共享内存提取数据并进行增删改查的操作。后置服务器结构如图3所示,后置服务器也会使用共享内存与前置服务器进行 IPC 通信。在后置服务器结束当前对数据库数据的提取和更新后,会向前置服务器提供其所需要的内容。前置服务器共有以下三个功能模块 :
(1)读取业务包 :读取共享内存中的业务包。
(2)业务回调函数 :根据业务包的类型,进行相应的业务处理。
(3)数据库函数 :根据业务的需要对数据库进行读写访问。
本系统使用的是SQLite数据库,通过后置服务器管理User_Info和Sensor_Info两个表格。用户在执行登录注册模块时后置服务器将会对User_Info表进行是否存在用户的判断或者添加。用户在获取实时传感器数据和读取历史传感器数据时后置服务器将会对 Sensor_Info表进行读取和存储操作。本系统数据库中关于用户数据和传感器数据表结构如图4所示。
3 系统设备端设计
本系统采用单片机 STM32F103ZET6 芯片作为设备端的中央核心处理器,该芯片的两个 USART 接口分别与 HMI 电容串口触摸屏、ATK-ESP8266 无线通信模块连接,以完成数据的接收和发送。通过 DTH11 温湿度模块的 Data 引脚与PB6 引脚相连,完成单片机与温湿度模块的检测数据交互。
本系统终端节点硬件设计采用了DHT11模块采集温湿度数值、MQ-2模块采集烟雾数值MQ-7模块采集一氧化碳数值以及HMI 显示屏显示传感器采集的环境数据。
DHT11传感器包括电阻式湿敏元件和测温元件,将STM32F103ZET6的PG_11引脚与 DHT11芯片的DATA引脚相连接。DHT11接3.3 V的电压,GND接地,NC悬空。上电后,DHT11 采集数据并将数据通过DATA口进行数据传输,PG_11口负责接收数据,由此完成对环境温湿度数据的采集。DHT11模块原理如图5所示。
本系统采用的MQ-2烟雾传感器的AO引脚与STM32F103ZET6的PA_1口相连,通过 STM32的ADC模数转换测得实际值。MQ-2传感器模块的输出方式分别为数字量和模拟量输出方式。原理如图6所示。
本系统采用的MQ-7一氧化碳传感器的AO引脚与STM32F103ZET6的PA_0口相连,原理如图7所示。
无线模块ESP8266共有AP、STA、AP+ASP三种模式。本系统采用STA模式,将设备端作为单个客户端,使用 AT指令连接手机热点和云服务器,实现了设备端与云服务器之间的通信。本设计使用的显示器采用的是TJC3224K024_011型HMI电容串口触摸屏,HMI电容串口触摸屏的RXD引脚、TXD引脚与单片机STM32F103ZET6芯片的USART2串口相连,实现了单片机与 HMI 显示屏的数据通信。
4 系统客户端设计
本系统客户端是查看传感器采集信息的应用程序,采用MVC框架,使用Qt、C++语言编写。
4.1 Qt 登录注册功能模块
本系统客户端登录注册功能是对数据库的User_info表进行操作,User_inf表结构见表1所列。
当点击登录的时候,客户端会发送此时所输入的登录账号和密码给服务器,服务器通过与服务器内部的 User_info表进行比对,若查询到相同的结构,说明此用户是存在的,则同意该客户端进行登录。
4.2 Qt 传感器数据查询显示模块
本系统客户端传感器数据查询共分为两个功能模块 :(1)用Qlabel类显示接收到的传感器监测的实时数据 ;(2)通过QListWidget和QListWidgetItem的配合实现传感器监测的历史数据的查看功能。用户可以选择日期并查看当天所记录的数据。本功能是对数据库的 SenSor_Num 表进行操作,SenSor_Num 表格式见表2所列。
当登录成功后,客户端会收到来自服务器的当前传感器数据显示包;并且每30s就会再次收到传感器数据包更新后客户端界面显示的数据内容,同时会把这些数据存入数据库,以实现客户端历史数据查看功能。
5 系统设计调试
5.1 硬件测试
将DHT11模块、MQ-7模块、MQ-2模块分别与STM32F103ZET6的PG_11、PA_1、PA_0 连接,使用FlyMCU 完成程序调试和下载后,给模组上电。通过HMI模块显示屏可看到各项测试结果分别如图8、图9、图10所示。
5.2 软件测试
当用户选择查看日期时,前置服务器会收到数据包并进行解析。如图 11(a)所示,前置服务器显示用户想要查看的日期为2021年4月13号当天所采集的传感器数据信息 ;将此信息写入共享内存,供后置服务器读取该结构体信息 ;在后置服务器完成一系列操作后,将会收到关于后置服务器提取数据库信息的结果。
用户选择查看日期后后置服务器提取共享内存数据并进行解析。如图11(b)所示,后置服务器会根据收到的日期对数据库进行一一搜索,将搜索到的信息存入链表并逐一发给前置服务器 ;再由前置服务器从共享内存提取结构体数据包,并将历史记录数据包发往客户端。
6 结 语
本文设计了基于STM32的实验室环境安全监控系统,实现了通过传感器采集数据并通过 ESP8266 模块发送至云服务器,用户通过登录客户端可以查看现场数据。本设计主要实现如下功能 :(1) ESP8266 与 Epoll Socket 服务器交互通信 ;(2)Windows Qt 客户端与 Epoll Socket 服务器交互通信 ;(3)云前置服务器与后置服务器 IPC 通信 ;(4)后置服务器对数据库的提取和更新 ;(5)DHT11 温湿度传感器、MQ-7一氧化碳传感器、MQ-2烟雾传感器的数值采集 ;(6)Qt 客户端用户登录注册功能、Qt 客户端传感器数据和历史数据查看功能。
经过测试,结果表明本文设计的基于STM32的实验室环境安全监控系统基本实现了以上功能 ;在网络节点范围内可以对数据进行高效采集并传输至云服务器,每 30 s 对客户端的传感器数据进行更新。用户能够及时地发现实验室可能出现的各种安全问题。
参考文献
[1] 张松,陈志刚,金亮 . 开放实验室管理系统设计方案比较及实现
[J]. 计算机工程与应用,2004,44(3):230-232.
[2] 郭敏 . 忻州职业技术学院实验室管理系统设计与实现 [D]. 大连:
大连理工大学,2018:12-15.
[3] 王军舰 . 开放实验室智能监控系统设计 [D]. 武汉:湖北工业大学,2016:20-23.
[4] 吴玉强,王旭 . 基于 SQLite3 的 Android 手机数据恢复技术研究[J]. 电脑知识与技术,2019,15(27):6-9.
[5] 郑才国,江剑 . 基于 STM32 单片机智能小车设计 [J]. 工业控制计算机,2021,34(9):143-144.
[6] 罗潜,廖文浩,柳畅 . 基于 STC89C52 单片机的车内温湿度智能监控系统 [J]. 仪器仪表用户,2021,28(9):34-37.
[7] 谢永超,杨利,严俊 . 基于 MQ-2 型传感器的烟雾探测报警器的设计 [J]. 计算机测量与控制,2021,29(8):255-259.
[8] 李花,姜维,刘晓东,等 . 基于 MQ7 传感器测量 CO 浓度补偿方法与实验研究 [J]. 大连交通大学学报,2020,41(5):62-66.
[9] 刘西阁 . 基于 ESP8266 的智能门锁控制器设计 [J]. 电子技术与软件工程,2021,10(17):93-95.
[10] 段翰聪,卢显良,宋杰 . 基于 EPOLL 的单进程事件驱动通信服务器设计与分析 [J]. 计算机应用,2004,24(10):36-39.
[11] 胡萍,陈志鹏 . 基于线程池的高性能服务器软件的设计和实现[J]. 计算机技术与发展,2006,16(8):49-50.
[12] 张屹峰 . 基于 MVC 框架的 WEB 系统项目的设计研究 [J]. 电子世界,2021,43(17):53-54.
[13] 李梁京,张雪芹,刘华波 . 基于 USART-HMI 智能串口屏的节能恒温控制系统设计 [J]. 制造业自动化,2021,43(9):140-143.
[14] 龚成莹,何辉,兰聪花,等 . 仪表程控异步 Socket 通信方法研究[J]. 电气自动化,2019,41(2):14-17.
编辑:黄飞
评论
查看更多