基于Qt的室内环境监测系统设计与实现
2019-04-19程小劲
李 超,程小劲
(上海工程技术大学 机械工程学院,上海 201620)
0 引 言
煤气、天然气是现代家庭主要能源之一。由于煤气、天然气的泄露导致的中毒和火灾是高层住宅的重大隐患,每年因为燃气泄露造成的火灾数不胜数。随着经济的发展和人民生活水平的不断提高,各式各样的原材料制成的装修材料进入家庭,而随之释放出来的有害气体时刻威胁着大家的安全。其中甲醛是最为常见的有害气体之一,具有强烈的致癌性[1]。与此同时,PM2.5也时刻威胁着家庭成员的健康[2]。目前,室内环境参数监测系统的多数功能较为单一,完成一个完整的监测系统需要使用多个产品。对此,文中将传统的监控系统和环境监测系统融合在一起,实现环境参数查询、监控查询一体化。与此同时,还可以对参数进行阈值设置,当环境里的参数值超出阈值后会及时提醒,该系统可以满足大多数室内环境的监测要求。后期还可以进行二次开发利用,可以方便地添加传感器,使整个系统的功能更加丰富,数据保存在本地,采用封闭式的管理机制也可以保护数据的安全[3]。
1 系统总体设计
基于Qt的室内环境监测系统(见图1)由三部分组成,分别为Qt制作的客户端、上位机和下位机。Qt是由Qt Company开发的跨平台C++图形用户界面应用程序开发框架[4-5]。经过交叉编译器编译后,可以运行到ARM平台上。Qt上主要实现用户的注册、登录,环境参数的阈值设置以及环境参数的实时查看等功能。上位机由Cortex A9组成,移植Linux3.14的内核和文件系统,主要运行主程序[6-7]。下位机上连接有温湿度传感器、甲醛气体传感器、可燃气体传感器、蜂鸣器和继电器等。
图1 系统构成
下位机采集到传感器的数据后,通过RS232串口通信将数据发送给上位机。经过上位机处理后,通过TCP/IP协议发送给Qt,并在Qt界面中显示出来。Qt中设置的阈值通过TCP/IP协议发给上位机,与下位机采集到的数据进行对比,超出阈值,将会触发蜂鸣器。摄像头产生的数据流通过TCP/IP协议传给Qt,实时显示在Qt界面中。
2 硬件部分
基于Qt的智能家居环境监测系统硬件部分包括显示屏、三星的Exynos4412、STM 32、以及各种传感器等,如表1所示。
表1 系统主要硬件信息
2.1 温湿度传感器电路
温湿度传感器采用的型号为DS18B20,具有体积小,硬件开销低,精度高,抗干扰能力强等特点。其硬件电路简单,功耗较小,测量范围大。具体硬件连接电路如图2所示[8-9]。
图2 DS18B20温湿度传感器
2.2 PM2.5传感器
PM2.5传感器采用的型号为GP2Y1010-AU0F,具有封装体积较小,可以检测较小的粉尘,检测时间短等优点。具体电路如图3所示[8-9]。
2.3 甲醛气体传感器
甲醛传感器采用的型号为MS1100-P111VOC,该传感器是一款原装进口的半导体式VOC气体传感器,具有质量好,测量精准度高,灵敏度好等优点。具体电路如图4所示[8-9]。
图4 甲醛气体传感器
3 软件部分
软件部分由Qt制作的客户端、上位机程序和下位机程序组成。
3.1 Qt客户端软件设计
为了方便用户管理,需要满足如下几个需求:
(1)使用SQLite建立数据库,完成用户的注册和登录。
(2)登录成功后,进行数据显示页面,可以设置环境参数的阈值以及查看实时监控信息。
为了实现以上需求,Qt的客户端控制系统设计主要包括用户界面UI、Socket通信、SQLite数据库设计。
3.1.1 Qt客户端注册登录界面
Qt控制程序注册界面如图5所示。由于该系统所需要存储的数据量小,用户注册登录的数量少,无需较大的数据库,因此该客户端采用Qt平台内置的SQLite数据库。SQLite数据库小巧,移植性高,维护方便,便于管理,并且对资源的需求较小。同时支持NULL、TEXT、BLOB、REAL等数据类型,满足该应用程序的开发使用。
Qt中提供了QSqlDatabase类,可以完成对SQLite数据库的一系列操作。QSqlDatabase类提供了addDatabase方法完成数据库的添加,setDatabaseName方法设置数据的名称,exec()可以执行SQLlite语句,完成数据的插入、查找、删除等一系列基本操作[10]。
数据库主要存储以下信息:用户名和密码,各种环境参数(温度、湿度、甲醛气体浓度等),各种环境参数的阈值(温度、湿度、甲醛气体浓度等)。
图5 Qt注册登录页面
3.1.2 Qt主页面显示功能
Qt主页面显示功能包括各参数的阈值设置,获取各参数并显示。与此同时使用Qt中内嵌的绘图工具QCustomPlot创建customPlot类,将各个参数实时绘制成曲线并显示。
3.1.3 Qt中基于Socket通信
在网络通信方面,Qt提供了非常好的支持。针对TCP传输,Qt提供QTcpSocket类和QTcpServer类。针对UDP传输,Qt提供QUdpSocket类。TCP(transmission control protocol,传输控制协议)是一个底层网络协议,应用于大多数互联网协议,如HTTP和FTP,进行数据传输。它是一种面向连接的、可靠的、基于字节流的传输层通信协议,特别适合数据的连续传输。通过创建Socket对象,就可以通过打开输入输出流来进行通信[11]。
基于Qt中Socket通信的客户端和服务器之间的通信实现步骤如下[12]:
(1)建立QTcpServer对象,通过bind()绑定Socket和端口号,通过listen()建立监听,等待客户端发出的连接请求;
(2)建立QTcpSocket对象,通过connect()连接指定的服务器和端口,向服务器发出连接请求;
(3)服务器通过accept接收客户端的连接请求并且实现服务器与客户端的连接;
(4)客户端通过send()发出命令和相应数据给服务器;
(5)服务器通过recv()响应客户端的请求,并获取客户端的数据;
(6)服务器处理数据后返回结果;
(7)客户端接收服务器返回的结果;
(8)重复步骤3~7;
(9)结束连接,完成通信。
3.2 上位机实现
上位机采用三星公司生产的Exynos- 4412芯片,在Ubuntu 12.04的环境下完成Linux内核的相关配置和编译。采用Linux 3.14内核,通过make menuconfig 配置内核中的USB以及和视频相关的USB-_GSPCA_ZC3XX、VIDEO_V4L2、USB-_GSPCA等[13]。配置好相关信息后,进行编译,然后将做好的内核移植到芯片上。
主程序采用多线程编程,通过pthread_creat()创建多线程,在线程中初始化串口实现温湿度读取,可燃气体监控,甲醛气体浓度读取以及TCP/UDP通信。
3.3 下位机实现
下位机采用STM 32连接温湿度传感器DS18b20、甲醛气体传感器MS1100、可燃气体传感器MQ-2等,获取各传感器的数值后,通过RS232将数据传给上位机[14]。
4 结束语
设计了一种室内环境监控系统,克服了传统系统的局限性,具有移动性强、简单、可靠、经济、便于维护等优点。通过测试,客户端运行流畅,既可以运行在Windows上也可以运行在ARM相关平台上。该系统能够完成用户的注册和登录,实时查看当前环境的温湿度、甲醛气体浓度、可燃气体是否超出设置的阈值等关于环境的信息。
该系统可以实时查看和掌握室内环境的各种环境参数,可以设置各种参数的阈值。系统采用计算机和嵌入式相关技术,使用无线通信的方式,具备较强的通用性,易于移动,并且在该系统上可以做二次开发,具备较强的扩展性。采用的硬件简单便宜,通用性好,便于更换,具有稳定可靠、成本低廉等特点。