天津航空机电有限公司 天津市 300308
摘要:库房是现代生产中生产资料存储的重要区域,为保证库房中人员和财物的安全,设计了库房环境安全监控系统,系统由服务端、设备端、客户端构成。服务端进行环境数据的存储,部署在远程服务器上;设备端实时采集库房环境数据上传至服务端;客户端实现库房环境数据实时监测功能、历史数据查看功能和用户管理功能。通过测试,库房环境数据可以实时高效地采集并上传至服务器,合法的系统用户可以在客户端远距离对库房各项环境数据进行实时监控。
关键词:库房;环境监控系统;服务器;传感器;客户端;STM32
0 引 言
近年来,库房安全的重要程度愈加凸显,随着信息化水平的不断提高,传统的库房管理模式已不能满足实际需要[1]。传统的库房环境管理模式仍然依靠人工,具有一定的滞后性,消耗了很多人力和物力的同时,无法将提前预知并消除潜在的安全隐患[2]。
随着物联网技术的发展,云服务器、网络技术的发展,环境数据监测有了更好的设计方案。本文基于云服务器、网络通信技术、STM32 嵌入式技术等设计了库房环境安全监控系统。系统共分成三个模块:云服务模块、客户模块、设备模块。云服务端可划分为前置服务器和后置服务器[3]。前置服务器用于对设备模块、客户模块的数据进行提取分析,后置服务器用于提取和更新数据库[4]的内容。设备端使用STM32F103ZET6[5]作为核心处理器,采用DHT11温湿度传感器[6]采集温湿度、MQ-2 烟雾传感器[7]采集烟雾数值、MQ-7 一氧化碳传感器[8]采集有毒气体数值,通过Lora无线传输模块[9]将三个环境传感器检测到的库房环境数据上传。客户模块运用Qt5.14.1作为开发环境实现系统用户管理功能、环境数据实时监测功能、历史数据查看功能。本系统每60s实时更新客户端的环境数据,用户可以远距离查看实验室监测数据。
1系统服务端设计
系统服务端可划分为前置服务器和后置服务器。
前置服务器负责设备端和客户端之间的TCPSocket[14]通信。客户端、设备端之间通过Socket嵌套字进行对应,前置服务器通过Epoll Socket 的I/O复用对其进行保存。前置服务器内置的线程池模块对接收到的数据包进行实时解析,并存入共享内存,同时将后置服务器处理后的数据进行坚挺并写入共享内存。
前置服务器共有以下三个功能模块 :
(1)读取业务包:将共享内存中的业务包进行读取和解析。
(2)业务包回调:根据业务包的类型,进行相应的业务处理。
(3)数据库函数:根据业务的需要对数据库进行读写访问。
SQLite3数据库信息的提取和更新在后置服务器进行,共享数据的提取和增删改查工作放在封装线程池中进行。同时,后置服务器负责与前置服务器的IPC通信。后置服务器向前置服务器提供所需内容之前,先对数据库数据进行提取和更新。
封装线程池对各个业务对应的共享内存提取数据并进行增删改查的操作。后置服务器结构如图3所示,后置服务器也会使用共享内存与前置服务器进行 IPC 通信。在后置服务器结束当前对数据库数据的提取和更新后,会向前置服务器提供其所需要的内容。
后置服务器通过SQLite数据库管理User_Info和Sensor_Info两个表格。新用户注册时将注册用户信息写入User_Info;用户登录时后置服务器会对User_Info表进行检索,判断当前是否为合法用户。环境传感器的监测数据发生更新时,后置服务器会实时地对Sensor_Info表进行存储;客户端数据的显示和历史数据查询功能通过对Sensor_Info表的读取来实现。
2系统设备端设计
本系统采用单片机STM32F103ZET6 芯片作为设备端的中央核心处理器,该芯片的两个 USART接口分别与HMI电容串口触摸屏、ATK-ESP8266 无线通信模块连接,以完成数据的接收和发送。采用DHT11模块采集温湿度数值、MQ-2模块采集烟雾数值MQ-7模块采集一氧化碳数值以及HMI显示屏显示传感器采集的环境数据。
无线模块ESP8266共有AP、STA、AP+ASP三种模式。本系统采用STA模式,将设备端作为单个客户端,使用 AT指令连接手机热点和云服务器,实现了设备端与云服务器之间的通信。本设计使用的显示器采用的是TJC3224K024_011型HMI电容串口触摸屏,HMI电容串口触摸屏的RXD引脚、TXD引脚与单片机STM32F103ZET6芯片的USART2串口相连,实现了单片机与 HMI 显示屏的数据通信。
3系统客户端设计
3.1 Qt登录注册功能模块
系统客户端登录注册功能利用数据库的User_info表实现。登录按钮被点击后,客户端会当前所输入的登录账号和密码发送给服务器,服务器将接受到的信息与服务器内部的 User_info表进行比对,若查询到相同的结构,说明当前为合法用户,同意该客户端进行登录。
3.2 传感器数据查询显示模块
系统客户端传感器数据查询共分为两个功能模块:(1)用Qlabel类显示接收到的传感器监测的实时数据;(2)通过QListWidget和QListWidgetItem的配合实现传感器监测的历史数据的查看功能。当用户登录成功后,客户端接受并解析服务器的当前传感器数据,并进行显示。传感器数据更新同时会进行数据库存储,更新周期为60s,以实现客户端历史数据查看功能。
4系统设计调试
4.1 硬件测试
将STM32F103ZET6的PG_10、PA_8、PA_0 分别与DHT11模块、MQ-7模块、MQ-2模块连接,使用ST-Link仿真器完成程序调试和下载后,重新给模组上电。通过HMI模块检查各项测试结果。
4.2 软件测试
用户选择查看2023年3月13号当天所采集的库房环境数据信息,用户选择查看日期后,前置服务器接收并解析上位机下发的数据包,将信息写入共享内存,供后置服务器进行提取,并等待后置服务器提取数据库信息的结果。
后置服务器对共享内存数据进行提取和解析,根据日期对数据库进行检索并将搜索到的信息存入链表并逐一发送到前置服务器。前置服务器将从共享内存提取的数据包发往Qt客户端。
5结 语
本文设计了基于STM32的库房环境安全监控系统,Lora模块将传感器采集到的环境数据发送至云服务器,云服务器将数据传输至客户端,实现现场数据的远程监测。本设计主要实现如下功能:(1)Qt客户端用户注册登录功能、环境数据实时监控和历史数据查询功能;(2)客户端与云服务器实时通信功能(3)前置服务器和后置服务器IPC通讯功能(4)环境数据采集与无线传输功能;(5)后置服务器对数据库数据提取和更新功能。
参考文献
[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.