基于STM32 的家庭厨房有毒气体监控系统设计
2022-05-11于海鹏
李 博, 练 傲, 于海鹏
(河南工程学院 计算机学院, 郑州 451191)
0 引 言
近年来,因为厨房天然气泄漏爆炸和一氧化碳中毒致人死亡的事故时有发生,对人们的生命财产造成了重大的危害。 气体燃料常用于家庭厨房的使用,常见的气体燃料甲烷和煤气都具有一定的危险性。 天然气在空气中达到一定浓度时,遇明火易爆炸;煤气中的主要成分一氧化碳(CO)是一种剧毒气体,天然气的不完全燃烧也会产生CO 气体。美国消防管理署发布了2014 年~2016 年住宅建筑厨房火灾统计报告,平均每年报告188 800 起住宅厨房火灾。 这些火灾共造成195 人死亡,3 800 人受伤,4.6 亿美元财产损失。
随着物联网技术的发展,人们对智能城市的概念进行了许多尝试。 物联网安全监测是其中重要的一部分。 近几年,中国在智能家居方面的发展受到了支持和关注,但是在物联网安全监控上还有待提高。 在关于厨房环境的有毒气体监控方面,由于剧毒气体CO 是无色无味的,人们不可能及时发现其泄漏,并且当人因中毒昏迷时,也无法及时做出反应,如果可以及时通知到紧急联系人,就可以有效的避免气体泄漏造成的二次伤害。 J Kim认为,设计一套对室内有毒、有害气体的实时监测,并能在空气质量相当劣质时进行实时报警的系统很有必要。一款能实时监测厨房内环境状态监控预警装置,对保障生命财产安全、减少事故的发生是非常有意义的事情。
1 系统设计
1.1 整体框架
本设计是针对家庭厨房环境有毒气体的监控系统。 运用最新的物联网技术,通过无线网络技术,将传感器、执行器与前端应用相结合。 系统服务端采用B/S(浏览器/服务器)框架开发,其监控系统结构如图1 所示。
图1 系统结构图Fig.1 System structure diagram
1.2 模块设计
本系统由信息采集模块、数据存储模块、执行器模块、无线通信模块、前端模块组成。
1.2.1 信息采集模块
由于天然气的主要成分为甲烷(CH4),而煤气的主要成分是CO,系统仅需对这两种气体进行监控即可。 因此,信息采集模块采用MQ 系列的气体传感器采集气体浓度。 MQ 系列中的MQ-4 气体传感器对空气中的CH4 气体敏感,MQ-7 气体传感器对空气中的CO 气体敏感。 MQ 系列的传感器可以通过AOUT 引脚产生一个模拟电压,STM32 可以将这个模拟电压值装换成实际浓度值。
1.2.2 数据存储模块
数据存储模块主要负责存储用户信息及各个传感器采集到的数据信息。 系统中采用MySql 关系数据库来建立。 构建数据库实体-关系图(Entity-Relationship,ER),E-R 图主要反映了数据世界中实体及实体与实体之间的关系。 具体的E-R 如图2 所示。
图2 数据库E-R 图Fig.2 Database E-R diagram
1.2.3 执行器模块
系统中选用的蜂鸣器为有源蜂鸣器,通风扇是由双L9110S 芯片电机驱动。 有源蜂鸣器控制较为简单,只需要向蜂鸣器上的I/O 口发送高低电平,高电平时蜂鸣器发出响声,低电平时蜂鸣器停止响动。通风扇可以通过引脚IA 和IB 控制其状态,具体组合方式见表1。
表1 通风扇运转方向组合表Tab.1 Combination table of ventilation fan running direction
1.2.4 无线通信模块
无线通信模块采用乐鑫的ESP8266-01 模块,如图8 所示。 该模块采用3.3 V 的直流电源,具有体积小、功耗低、支持透传等特点,且丢包现象比市场上其它产品较优。 系统中ESP8266-01 模块与STM32 开发板上的串口3 的引脚连接,STM32 通过串口3 向ESP8266-01 模块发送AT 指令和发送接收数据。
1.2.5 前端模块
服务器采用TomCat 应用服务器开发,页面开发采用JSP 动态网页技术标准。 当用户进行访问时,JSP 页面会先从服务器获取数据,并将其写入页面中,然后返回一个静态的HTML 页面。 用户可以通过页面查看实时数据和控制设备状态,实时数据页面如图3 所示。
图3 实时数据页面Fig.3 Real time data page
2 系统实现
2.1 软件系统实现
2.1.1 系统软件
系统在上电之后首先进行各个部件的初始化,然后与服务器建立TCP 连接,并且打开透传模式。之后,系统开始向服务器发送一次心跳,服务器根据这次心跳修改系统状态,并且返回用户在服务端设置的设备状态。 系统根据设备状态采集气体浓度,并且根据设备状态和气体浓度控制执行器,最后将数据信息发送到服务端,系统工作流程如图4 所示。
图4 系统工作流程Fig.4 Program flow chart of the system
系统向服务器发送一次心跳后,获取的状态信息为JSON 类型,JSON 是一种轻量级的数据交换格式,易于阅读和编写,也易于机器解析和生成。 其格式为:
"{"id":"1","co":"1","ch4":"1","fan":"1"," buzzer":"1"}"
其中,每位代表一个设备的一种状态。 分别为系统是否在线,传感器、执行器是否工作。
由于服务器给出上传数据的API 是GET 请求方式,上传数据的长度低于1 024 个字节,而且并不是通过浏览器的地址栏访问。 因此,GET 请求方法只会从服务端请求资源或信息,而不会修改服务器资源,因此使用GET 请求即可完成。 如:
“GET /kitchen_gas/data_add.action? <uid =用户key 值>&<气体1 的id>=<气体1 的浓度>&<气体2 的id>=<气体2 的浓度>”
2.1.2 服务器数据接收
当服务器接收到请求后,会根据用户传来的ID信息进行判断,若该用户不存在则结束处理,否则根据上传的气体ID 号进行判断,获取时间戳,并保存在数据库中。 根据数据信息,判断是否开启或者结束报警定时器。 数据处理流程如图5 所示。
图5 服务端处理数据流程图Fig.5 Flow chart of server processing data
2.1.3 Web 端实现
Web 端包括实时数据、历史数据、个人信息以及设备情况等主要页面,如图6 所示。
图6 Web 端功能图Fig.6 Front end function diagram
其中,历史数据页面可以按条数和日期查询数据;个人信息页面也可以查看和更改个人信息,并设置紧急联系人;设备情况页面可以查询设备是否在线及传感器和执行器的状态;个人设置页面实现系统的退出功能。 实时数据页面可以查看实时数据并显示报警进度,在此页面上通过jQuery 实现ajax 异步访问服务器获得数据,服务器会根据页面提交的用户ID 和当前时间戳从数据库中取出数据,并转换成json 字符串返回给页面,页面再通过解析json 字符串显示数据。 一般返回的json 字符串形式如下:
{"id1":[["2020-04-16 16:16:26","184.448"]],"lasttime":"1588411159721",
"state":{"id1":["158700535947","1587031819000"]}}
当系统在线后,用户可以设置各个传感器或者执行器的状态。 暂时只分为可以采集信息或者执行状态和停止采集信息和停止执行状态。 通过表单提交方式将页面表单的数据传入服务器中,服务器将这个数据存入数据库中,等待下一次系统的心跳时,将数据返回给系统。
2.2 系统硬件实现
监控系统的监测和控制部分是以STM32F407芯片为核心,该型号以嵌入式核心Cortex-M4 架构,功能较为齐全。 STM32 开发板占地较小且功能齐全,性能较为优越。 STM32 开发板的主要作用是接收传感器的数据,控制执行器工作,与服务端进行数据通信。 硬件连线如图7 所示。
图7 硬件连接图Fig.7 Hardware connection diagram
2.3 系统测试
2.3.1 测试环境与系统参数设置
为保证实验安全,实验在相对密闭的环境下进行。 将装有CH4 和CO 的容器靠近传感器模拟厨房环境(实际使用时可将传感器布置于靠近气源的位置)。
由于天然气在空气中的爆炸极限是5%~15%,而一般要求可燃气体报警器报警点设置为被检测可燃气体爆炸下限的1%~25%范围内,也就是允许的安全浓度在0.25%~1%以下,其体积分数为400~10 000 ppm,通过各方面考虑,实验中甲烷的浓度阈值设定为2 000 ppm。
本设计是通过ADC 接口获取模拟电压值,并通过公式将电压值转换成实际浓度值。 一般规定空气中混有0.002 4%CO 即可引起中毒,0.002 4%的浓度等于24 ppm。 因此设计中,设置CO 的阈值为24 ppm。与天然气类似,CO 的浓度也是通过开发板上的ADC 接口获取MQ-7 传感器的模拟电压值,系统通过模拟电压值,计算得到实际的浓度值。
2.3.2 天然气的环境安全测试
实验开始,首先开窗通风,测出当前环境下CH4 气体的浓度稳定在40 ppm 左右,如图8 所示。然后关闭门窗,将释放的CH4 靠近传感器,此时空气中CH4 气体升高如图9 所示,浓度在4 min 后急剧上升超出安全阈值,系统将开启蜂鸣器警报和通风扇工作,服务器端设置的定时器用来判断在15 min内(可根据安全需求自主设定)该气体浓度是否降下,并将报警进度展示在页面上,如图10 所示。如果15 min仍未降低,系统将通过短信平台的API向用户绑定的紧急联系人发送报警短信。
图8 有害气体浓度实时数据曲线Fig.8 Real time data curve of harmful gas concentration
图9 CH4 气体实时数据变化曲线Fig.9 CH4 concentration data change curve
图10 甲烷报警进度Fig.10 Methane alarm progress
2.3.3 一氧化碳气体环境安全测试
与测试CH4 类似,在测试之前可以检测在空气清洁环境下,CO 在空气中的浓度为10 ppm 左右,如图8 所示。 当空气中CO 气体浓度升高,如图11 所示,超出所设定24 ppm 阈值时,系统处理过程与2.3.2相同,其CO 气体浓度报警进度如图12 所示。
图11 CO 浓度实时数据变化曲线Fig.11 CO concentration data change curve
图12 CO 报警进度Fig.12 CO alarm progress
2.3.4 系统传感设备状态监控与数据监测
系统上电后,登录到Web 端系统,可以在实时数据页面查看传感器采集的实时数据,如图8 所示。当浓度高于阈值时,Web 将显示报警进度,如图10、图12 所示。 在历史数据页面可以查询任意日期的历史数据,其结果如图13 所示。
图13 历史数据Fig.13 Historical Data
当设备连接上服务器时,服务器会显示设备在线,并且显示传感器和执行器情况,如图14 所示。当设备未连接到服务器时,服务器会显示用户离线。
图14 设备在线状态Fig.14 Device Online Status
传感器功能的测试,以MQ-7 CO 传感器为例。系统支持在服务器端远程控制终端设备(传感器和执行器)的开启和关闭。 用户在设备界面关闭CO传感器后,当空气中的CO 气体浓度变化时,服务器端的监测数据在6 min 内CO 气体浓度没有再发生变化。 测试结果如图15 所示。
图15 CO 传感器关闭后气体浓度实时数据Fig.15 Gas concentration data after the CO sensor turned off
执行器的测试,以测试通风扇为例。 将CO 气体浓度升高超出阈值时(如图16 所示),在设备界面关闭通风扇,CO 气体浓度处于高位状态,如图17所示。 当在设备界面重新打开通风扇后,系统监测到1 min 后CO 气体浓度下降到约10 ppm(低于系统阈值)。 测试结果如图11 中所见。
图16 CO 气体浓度超出阈值24 ppmFig.16 CO concentration exceeds the threshold by 24 ppm
图17 关闭通风扇后CO 气体浓度实时数据Fig.17 Data of CO gas concentration after the fan turned off
3 结束语
本系统能够通过CH4 和CO 浓度传感器实时检测家庭厨房环境下天气及有害气体浓度的变化情况,安全管理人员可通过设置报警阈值的方式,实现厨房有害气体的被动安全预警。 报警后由单片机控制风扇开启,实现降低有害气体浓度的作用,避免中毒或爆炸等恶性灾害的发生。 同时,系统提供一个Web 端平台,可以实时从云端监测厨房有害气体浓度水平,并远程控制风扇和蜂鸣器的开启或关闭,使系统发生异常时可以被实时发现,并及时处理,做到了两层安全保障。