基于STM32的实验室环境安全监控系统

2022-09-19 04:40薛文辉李仁铭潘宇浚武永华
物联网技术 2022年9期
关键词:共享内存后置前置

薛文辉,李仁铭,潘宇浚,郑 何,武永华

(福建江夏学院 电子信息科学学院,福建 福州 350108)

0 引 言

近年来,随着信息管理水平的迅速提高,传统的实验室管理模式已不能满足实际需要。传统的高校实验室环境监测数据无法得到统一的信息化监管,实验室的物理环境仍需要依靠人工管理,消耗了很多人力和物力。

随着物联网技术的发展,云服务器、网络技术使得环境数据收集有了更好的设计方案。本文将基于云服务器、网络通信技术、STM32嵌入式技术等对实验室环境安全监控系统进行设计。本系统共分成三个模块:云服务端模块、客户端模块、设备端模块。云服务端可划分为前置服务器和后置服务器。前置服务器用于对设备端、客户端的数据进行提取分析,后置服务器用于提取和更新SQLite3数据库的内容。设备端使用STM32F103ZET6作为核心处理器,采用DHT11温湿度传感器采集温湿度、MQ-2烟雾传感器采集烟雾数值、MQ-7一氧化碳传感器采集有毒气体数值,通过ESP8266无线传输模块将三个环境传感器检测到的实验室环境数据上传。客户端运用Qt5.10.1作为开发环境实现系统用户管理功能、环境数据实时监测功能、传感器历史数据查看功能。本系统每30 s对客户端的传感器数据进行实时更新,且用户可以远距离查看实验室监测数据。

1 实验室监控系统总体设计

本系统由服务端、设备端、客户端构成,系统总设计框图如图1所示。

图1 系统总设计框图

本系统服务端是建立在云平台的,可划分为前置服务器和后置服务器。前置服务器采用Epoll Socket技术、线程池技术、IPC通信技术、TCP通信技术等,用于对设备端、客户端的数据进行提取分析。后置服务器主要负责业务处理,用于提取和更新SQLite3数据库内容并实时保存。两个子服务器之间以共享内存作为进程间通信工具。

本系统客户端使用Qt5.10.1界面开发软件作为开发环境,用于与服务器进行通信,获取云端服务器数据库内容;采用MVC框架实现登录注册、获取传感器实时数据和历史数据等功能。

本系统设备端是以HMI串口触摸屏作为主控制器,用户可以查看HMI串口触摸屏所显示的实时传感器数据。设备端以单片机STM32F103ZET6芯片作为中央处理器,主控制器与中央处理器之间的通信靠USART串口完成。环境数据由DHT11温湿度传感器、MQ-2烟雾传感器、MQ-7一氧化碳传感器监测。无线通信系统由ESP8266WiFi模块构成。

2 系统服务端设计

本系统前置服务器负责设备端和Qt客户端之间的TCP Socket通信。通过Epoll Socket的I/O复用实现对客户端、设备端的连接通信对应的Socket套接字进行保存。前置服务器封装的线程池模块负责对接收到的数据包进行解析,并存入共享内存,同时监听并接收后置服务器对业务处理完毕后所写入共享内存的数据。

本系统服务器选用的IPC通信工具是共享内存。本系统云服务器将共享内存区按照结构体大小的1 000倍进行创建,划分成1 000个块结构体,其中共享内存首地址Shm_addr指针作为共享内存判断的起始点。本服务器会开辟一个线程用于判断共享内存起始点内是否为空,倘若为空则不读取数据;如果判断索引内容为有效数值,则提取出来跳入下一个结构体块循环执行,直到下一个块为空。共享内存可以存储1 000个结构体,在全部接收完毕之后会将其清空,保证下一次前置服务器和后置服务器之间的交互能够正常运行。共享内存存储方式如图2所示。

图2 共享内存存储方式

本系统的后置服务器负责对SQLite3数据库信息进行提取和更新。封装线程池对各个业务对应的共享内存提取数据并进行增删改查的操作。后置服务器结构如图3所示,后置服务器也会使用共享内存与前置服务器进行IPC通信。在后置服务器结束当前对数据库数据的提取和更新后,会向前置服务器提供其所需要的内容。前置服务器共有以下三个功能模块:

图3 后置服务器结构

(1)读取业务包:读取共享内存中的业务包。

(2)业务回调函数:根据业务包的类型,进行相应的业务处理。

(3)数据库函数:根据业务的需要对数据库进行读写访问。

本系统使用的是SQLite数据库,通过后置服务器管理User_Info和Sensor_Info两个表格。用户在执行登录注册模块时后置服务器将会对User_Info表进行是否存在用户的判断或者添加。用户在获取实时传感器数据和读取历史传感器数据时后置服务器将会对Sensor_Info表进行读取和存储操作。本系统数据库中关于用户数据和传感器数据表结构如图4所示。

图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所示。

图5 DHT11模块原理

本系统采用的MQ-2烟雾传感器的AO引脚与STM32F103ZET6的PA_1口相连,通过STM32的ADC模数转换测得实际值。MQ-2传感器模块的输出方式分别为数字量和模拟量输出方式。原理如图6所示。

图6 MQ-2模块原理

本系统采用的MQ-7一氧化碳传感器的AO引脚与STM32F103ZET6的PA_0口相连,原理如图7所示。

图7 MQ-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_info表结构见表1所列。

表1 User_info表结构

当点击登录的时候,客户端会发送此时所输入的登录账号和密码给服务器,服务器通过与服务器内部的User_info表进行比对,若查询到相同的结构,说明此用户是存在的,则同意该客户端进行登录。

4.2 Qt传感器数据查询显示模块

本系统客户端传感器数据查询共分为两个功能模块:(1)用Qlabel类显示接收到的传感器监测的实时数据;(2)通过QListWidget和QListWidgetItem的配合实现传感器监测的历史数据的查看功能。用户可以选择日期并查看当天所记录的数据。本功能是对数据库的SenSor_Num表进行操作,SenSor_Num表格式见表2所列。

表2 SenSor_Num表格式

当登录成功后,客户端会收到来自服务器的当前传感器数据显示包;并且每30 s就会再次收到传感器数据包更新后客户端界面显示的数据内容,同时会把这些数据存入数据库,以实现客户端历史数据查看功能。

5 系统设计调试

5.1 硬件测试

将DHT11模 块、MQ-7模 块、MQ-2模 块 分 别 与STM32F103ZET6的 PG_11、PA_1、PA_0连 接, 使 用FlyMCU完成程序调试和下载后,给模组上电。通过HMI模块显示屏可看到各项测试结果分别如图8、图9、图10所示。

图8 温湿度数据显示

图9 烟雾指数显示

图10 一氧化碳指数显示

5.2 软件测试

当用户选择查看日期时,前置服务器会收到数据包并进行解析。如图11(a)所示,前置服务器显示用户想要查看的日期为2021年4月13号当天所采集的传感器数据信息;将此信息写入共享内存,供后置服务器读取该结构体信息;在后置服务器完成一系列操作后,将会收到关于后置服务器提取数据库信息的结果。

图11 服务器历史数据查看功能显示

用户选择查看日期后后置服务器提取共享内存数据并进行解析。如图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对客户端的传感器数据进行更新。用户能够及时地发现实验室可能出现的各种安全问题。

猜你喜欢
共享内存后置前置
被诊断为前置胎盘,我该怎么办
前置性学习单:让学习真实发生
国企党委前置研究的“四个界面”
非正交五轴联动数控机床后置处理算法开发
通过QT实现进程间的通信
被诊断为前置胎盘,我该怎么办
基于Linux内核的文件服务器模型的研究与构建
基于PCI总线的多处理器协同机制研究
沉淀后置生物处理组合工艺的工程应用
Review of Research on the Prevention of HPV Infection and Cervical Cancer