基于ESP32的居室燃气检测远程警报系统设计
Design of Remote Alarm System for Gas Detection in Living Room Based on ESP32
DOI: 10.12677/CSA.2019.911226, PDF, HTML, XML, 下载: 955  浏览: 5,947  科研立项经费支持
作者: 熊宇翔, 杨子弘, 刘 佳*:武汉商学院信息工程学院,湖北 武汉
关键词: ESP32燃气检测MQTT远程通信ESP32 Gas Detection MQTT Remote Communication
摘要: 在国家“西气东输”战略推动下,家庭燃气管道得到普及,可是老一代人对新事物接受能力有限,可能无法准确操作这些设备。尤其是那些子女外出的老人来说,他们独自使用燃气更容易产生危险。对此我们基于ESP32设计了居室燃气检测远程警报系统,用于监测燃气状态以及在燃气泄漏后采取补救和告警措施。系统使用MQTT协议实现远程通信传送燃气运行状况,并在危险时及时对外出用户发出提醒。硬件方面使用ESP32芯片控制,不但可以通过读取传感器读取燃气状况,在发现问题时及时自行控制其他硬件消除隐患,还能通过WiFi连接互联网,为远程通信提供条件。
Abstract: Family gas pipelines have been popularized under the promotion of the national “West-to-East Gas Transmission” strategy, but the old generation has limited acceptance of new things and may not be able to operate these equipment accurately. Especially for the elderly whose children go out, they are more likely to use gas alone. Based on ESP32, we designed a remote alarm system for gas detection in the house, which is used to monitor the gas state and take remedial and alarm measures after gas leakage. The system uses MQTT protocol to realize long-distance communication and transmission of gas operation conditions, and timely reminds users when they are out in danger. The hardware is controlled by ESP32 chip. It can not only read gas status by reading sensors, but also control other hardware to eliminate hidden troubles when problems are found. It can also connect the Internet through WiFi to provide conditions for remote communication.
文章引用:熊宇翔, 杨子弘, 刘佳. 基于ESP32的居室燃气检测远程警报系统设计[J]. 计算机科学与应用, 2019, 9(11): 2010-2019. https://doi.org/10.12677/CSA.2019.911226

1. 引言

随着家用燃气管道的普及,大多数家庭已经告别了柴火、煤炭的生活,慢慢的习惯了使用燃气的方便快捷。同时当今社会人口老龄化的加剧,“空巢老人”的现象将越来越突出,年轻人往往不能做到工作和家庭两头顾。在这种情况下,老年人居家使用燃气就是极大的安全隐患。目前,市场上所出售的燃气报警系统大多只能做到燃气泄漏时的报警,极少有对燃气泄漏后的控制,几乎没有对外出人员提醒的功能。针对这些不足,我们设计了一款居室燃气检测远程警报系统,极力将燃气泄漏的危险降到最低,保障家中老年人的安全。

本文的居室燃气检测远程警报系统是基于MQTT协议 [1] 和ESP32主控板开发的,能直接由硬件控制器件消除危险,并且还会由硬件直接通过服务器将环境信息传给用户。系统主要由传感器时刻检测环境中的燃气浓度 [2],超过阀门值就会自动控制电磁阀关闭燃气总阀,开启排气扇排除居室的可燃气体;同时系统还通过ESP32模块连接MQTT服务器,给用户终端提示家中情况,从根本上解决隐患。

2. 总体设计

居室燃气检测远程警报系统最重要的一点就是保护人员的安全,所以系统要能优先自动排除隐患或是控制局势不再恶化,随后在能保证居室安全的情况下去通知用户从根源上解决问题。在此,将居室燃气检测远程警报系统划分为两个功能模块,即硬件自动解决功能和远程通信提醒功能。

2.1. 硬件自动解决功能

硬件自动解决是为保证居室人员安全而存在的,它应该是系统发现燃气泄漏后最先进行的操作。主要设计思路是通过燃气检测模块实时检测周围环境中可燃气体的浓度,由芯片控制数据的采集,并设置一个报警阀门值。当传感器传输的数据超过阀门值后,芯片将优先开启电磁阀关闭燃气总阀,防止燃气浓度上升;随后打开排气扇进行通风换气,降低居室内可燃气体的浓度;最后才是开启警报器,提示家中人员解决泄漏问题。当然,在通过关闭总阀、开启排气扇等操作后,室内的可燃气体浓度会下降到正常范围,但是系统对电磁阀进行复位,电磁阀的复位必需要由其他人操作,防止燃气的二次泄露。

2.2. 远程通信提醒功能

远程通信提醒功能在于能提示用户家中燃气状况,在出现的紧急情况时能对用户起到一个警告的作用,让用户能迅速回家或者联系家人解决泄漏问题,从而从根本上消除隐患。远程通信提醒功能主要通过WiFi和MQTT协议实现。芯片通过WiFi连接互联网,通过MQTT协议在MQTT服务器上以客户端的身份登录,以其专属的主题发布信息,再由用户端订阅对应主题接收家中燃气的信息 [3]。一般来说,远程通信提醒功能工作时,隔一段时间会给用户发送工作的信号,若用户端长时间未接收到信息则会提示错误,让用户检测设备状况。

3. 硬件设计

3.1. 主控板选择

由于本系统是基于MQTT协议开发的,需要连接互联网进行通信,所以我们需要拥有WiFi功能的模块或是芯片。在这里我们选用ESP32主控板用做开发,实物见图1 ESP32主控板实物所示,引脚图见图2 ESP32主控板引脚图所示。首先选择ESP32芯片是因为它成本低运算能力强 [4],工作温度范围达到

Figure 1. Esp32 development board

图1. ESP32主控板实物

Figure 2. Pin diagram of ESP32 development board

图2. ESP32主控板引脚图

−40℃到+125℃;集成的自校准电路实现了动态电压调整,可以消除外部电路的缺陷并适应外部条件的变化;具有业内高水平的低功耗性能,包括精细分辨时钟门控、省电模式和动态电压调整等 [5]。而ESP主控板搭载低功耗Xtensa LX6 32-bit单/双核处理器,支持高达240 MHz的时钟频率,核心模块采用ESP32-WROOM-32,FLASH容量高达4 M Byte [6],与IDE开发工具配合使用可以方便的一键下载,且有很丰富的库文件和包直接可调用。

3.2. 硬件电路设计

居室燃气检测远程警报系统电路模拟见图3 Fritzing模拟电路硬件设计图所示(注意:在模拟测试电路中,我们使用电机来模拟日常的排气扇,继电器模拟接在220 V家庭交流电上,由ESP32主控板控制通断,ESP32外设原理图 [7] 见图4芯片外设原理图所示)。

Figure 3. Fritzing analog circuit hardware design diagram

图3. Fritzing模拟电路硬件设计图

Figure 4. Schematic diagram of chip peripherals

图4. 芯片外设原理图

本系统由ESP32主控板控制,主要使用燃气检测模块MQ-2、报警器、排气扇和电磁阀等传感器及外设。

燃气检测模块MQ-2用于采集空气中可燃气体浓度并传送给主控板处理,模块通过连接主控板的VIN和GND引脚来获得5 V电压维持正常工作。由于MQ-2模块的本质 [8] 是在不同燃气浓度下电阻大小的不同,所以测量燃气浓度的结果会通过输出电压的大小来显示,主控板想要获取数据就需要使用D34引脚进行ADC操作,从而读取空气中可燃气体的浓度。

报警器本质上是LED灯和蜂鸣器的组合电路,在此报警器电路原理图 [9] 见图5报警器电路,其中CONTROL接在主控板的D13引脚上。电路中,由于仅靠TTL电平无法驱动蜂鸣器,所以使用PNP三极管对电路信号进行放大,使得可以只由一个引脚就能达到控制报警器的功能。

Figure 5. Alarm circuit

图5. 报警器电路

对于排气扇、电磁阀这种工作电压比较高的外设,无法通过主控板直接控制,只能将其连接在继电器上,再由主控板输出控制信号间接控制相应器件。

4. 程序设计

4.1. 燃气检测程序

我们对于可燃气体浓度的检测是通过MQ-2传感器检测的,数据输入主控板对应D26引脚。MQ-2传感器的工作原理是在不同其他环境下导电率是不同的,通过输出电压不同的信号来传递空气中可燃气体的浓度。所以MQ-2传感器传递给芯片的数据是模拟信号,需要通过ADC将它转换为我们可以理解的数据。

我们使用的ESP32主控板与常用的Arduino是兼容的,可以直接使用Arduino的好多函数,例如pinMode()、Serial.println()、digitalWrite()……不过想要使用这些函数,除了硬件引脚的功能要相同,还需要调用Arduino库。

燃气检测代码如下:

#include

int MQ_2 = 34; //燃气

int MQ_2_data = 0

MQ_2_data = analogRead(MQ_2)

其中MQ_2_data为读取的环境中可燃气体的浓度值,用于进行阀门值的比较,判断是否泄漏燃气。

4.2. 硬件控制程序

主要控制硬件有报警器、排气扇和电磁阀,其中排气扇和电磁阀由继电器间接控制。在此为保证在出现泄漏事件时,系统不会因为环境燃气浓度降低而复位电磁阀造成二次泄漏,特地定义一个变量ZhuangTai来存储环境情况(ZhuangTai = 0为正常,ZhuangTai = 1为泄漏,ZhuangTai = −1为未处理泄漏)。详细控制流程见图6硬件控制程序流程图所示。

Figure 6. Hardware control program flow chart

图6. 硬件控制程序流程图

程序先为“状态变量”定一个初值,随后根据MQ-2传感器的值进行判断。在燃气浓度超过阀门值时,若“状态变量”未显示泄漏,则对其进行置1,同时开启各种报警装置;若“状态变量”显示泄漏,则表明已经触发警报,接着检测燃气浓度实时更新数据。在燃气浓度未超过阀门值时,若“状态变量”显示泄漏,则表明燃气已经泄漏,只不过在硬件的操作下缓解了局面,并没有根本解决问题,在此电磁阀必须保持原样防止燃气继续泄漏,同时还要将“状态变量”置为−1提醒用户;若“状态变量”未显示泄漏,则表明一切正常,继续检测。判断程序部分代码见图7部分程序代码所示。

Figure 7. Part of program code

图7. 部分程序代码

4.3. 远程通信报警程序

远程通信是基于MQTT协议 [10] 开发的,通过使用ESP主控板的MQTT库完成客户端的登录、订阅及发布等操作。但是在完成客户端的登录前,还需要调用主控板的WiFi库,通过WiFi连接互联网,才能实现远程通信的第一步。

为方便编写,我们将MQTT客户端的登录、订阅等操作放入connect函数中,在主程序中进行调用,函数代码见图8 connect函数代码所示。函数先判断WiFi是否连接成功,判断成功才会进入登录MQTT客户端的操作,否则就一直等待WiFi连接。MQTT客户端登录也是一直进行判断,只有登录成功才会进行信息的订阅。

Figure 8. Connect function code

图8. Connect函数代码

在系统中,真正实现远程通信功能的就只有一条语句,即使用client.publish函数发布信息。芯片判断ZhuangTai不是正常时会以“ranqi”的主题发布“danger”;判断ZhuangTai正常时会以“ranqi”的主题发布“normal”。用户端收到信息会由APP进行处理,推送给用户。

5. 模拟测试

由于实验环境的限制,将MQ-2传感器换成电位器模拟不同燃气浓度条件下MQ-2的输入结果,使用LED灯模拟电磁阀开闭。本次模拟主要模拟系统是否能实现与云端通信的功能以及硬件控制泄漏功能,所以将电路简化,实际模拟电路见图9电路模拟搭载所示,MQTT服务器后台见图10服务器后台界面所示。模拟运行时,可以在MQTT服务器后台看到两个各户端登录,其中一个是由ESP32登录用作发送消息的客户端,另一个则是用户端用来接收消息的客户端,这表示ESP32主控板能够实现连接WiFi并完成客户端登录的操作。

Figure 9. Circuit analog carrying

图9. 电路模拟搭载

Figure 10. Server background interface

图10. 服务器后台界面

当电位器电阻小时(即模拟MQ-2在燃气浓度正常的情况下),可以在客户端上收到“normal”的消息,见图11模拟燃气浓度正常所示。一方面,客户端收到消息证明通过MQTT服务器,系统可以实现客户端之间的通信;另一方面,收到“normal”代表ESP32主控板可以通过ADC转换读取MQ-2模块的数据。

Figure 11. The simulated gas concentration is normal

图11. 模拟燃气浓度正常

当电位器电阻大时(即模拟MQ-2在燃气泄漏的情况下),可以在客户端上收到“danger”的消息,见图12模拟燃气已泄漏所示,且可以看到LED灯亮起。用户端收到“danger”的消息,代表系统可以通过分析读入的数据区分燃气泄漏情况;可以看到LED灯亮起,说明报警器、风扇等外设可以在系统判断燃气泄漏后做出报警、处理的工作。

Figure 12. Analog gas leaking

图12. 模拟燃气已泄漏

经过上述实验验证,可以看出系统在燃气检测方面拥有较好的精度,能够判断燃气泄漏情况。并且相对于那些以往的燃气报警装置,居室燃气检测远程警报系统可以在燃气泄漏的时候立即进行控制处理,减低家中的危险,同时也拥有远程报警的能力,非常适合有老年人的家庭。

6. 结语

本系统致力于解决老年人独自在家中使用燃气的危险,采用对燃气浓度实时监测的方法来检测危险的存在,在出现危险时,系统第一时间控制局势,使用“电磁阀”、“排气扇”等装置及时消除危险,同时也会将危险信号传送给用户知道,让用户从根本上解决问题。系统经过硬件设计、软件设计等步骤后,已经有了基本的雏形,并且经过模拟实验,已经确定本系统最困难的通信部分实现的可行方案。相信经过后续的改进,居室燃气检测远程警报系统完全有能力在燃气管理方面为家人提供最完备的安全保障。

基金项目

本篇论文获得项目编号为201911654041武汉商学院2019年度大学生创新创业训练项目《“无忧”银发监护系统》的研究资助。

NOTES

*通讯作者。

参考文献

[1] 蒋树庆, 房滢. 一种基于MQTT协议的数据采集控制系统[J]. 信息通信, 2019(8): 80-82.
[2] 毛敏. 基于Arduino和LabVIEW远程可燃气体监测系统[J]. 电气自动化, 2017, 39(5): 28-30.
[3] 牛浩男. 基于MQTT的工业物联网接入平台研究与设计[D]: [硕士学位论文]. 桂林: 广西师范大学, 2018.
[4] 张瀚坤, 李嘉源, 原畅, 范银玲, 黄启宏. 一种新型的智能化输液监测平台[J]. 电子世界, 2018(19): 129-131.
[5] 季坚莞, 陈淼, 陈渭力. 基于ESP32的用电器状态监测系统设计[J]. 工业控制计算机, 2019, 32(6): 147-148.
[6] ROC. 零知ESP32开发板发布蓝牙+WIFI双核[EB/OL]. http://www.lingzhilab.com/forum.php?mod=viewthread&tid=1223, 2019-7.
[7] Naisu_kun. ESP32概述与入门准备[EB/OL].
https://blog.csdn.net/Naisu_kun/article/details/84583785#_25, 2018-11.
[8] 郭占苗. 烟雾酒精报警器的设计与制作[J]. 长沙航空职业技术学院学报, 2019, 19(2): 73-77.
[9] 孟圣亚, 魏威, 杨金利, 许诗雨, 付毅伟. 无人陪护输液报警装置设计[J]. 科技与创新, 2019(19): 71-73+75.
[10] 丘源, 经本钦, 李精华. 基于ESP8266WiFi模块和MQTT协议的物联网传感节点设计[J]. 物联网技术, 2019, 9(6): 24-26+29.