第10课 可燃性气体检测#
10.1 项目介绍#
MQ-2气体传感器检测到可燃性气体比较浓时,蜂鸣器发出警报声,显示屏显示dangerous。
10.2 模块相关资料#

(1)元件知识
MQ-2模拟气体传感器: 所使用的气敏材料是在清洁空气中电导率较低的二氧化锡(SnO2)。当传感器所处环境中存在可燃气体时,传感器的电导率随空气中可燃气体浓度的增加而增大。使用简单的电路即可将电导率的变化转换为与该气体浓度相对应的输出信号。
MQ-2模拟气体传感器对丙烷、烟雾的灵敏度高,对天然气和其它可燃蒸气的检测也很理想。这种传感器可检测多种可燃性气体,是一款适合多种应用的低成本传感器。
广泛适用于家庭用气体泄漏报警器、工业用可燃气体报警器以及便携式气体检测仪器。
此外,上电后,传感器模块上的一个指示灯亮绿灯,可以通过调节蓝色的电位器(使用一字螺丝刀调节)使另一个指示灯(亮红灯)介于不亮与亮之间的临界点时,灵敏度最高。

⚠️ 特别提醒:MQ-2模拟气体传感器在使用之前必须加热一段时间,这样输出的电阻和电压较准确。但是加热电压不宜过高,否则会导致内部的信号线熔断。
(2)参数

工作电压: |
3.3-5V |
|---|---|
工作电流: |
160mA (DC5V) |
工作温度: |
0°C ~ 40°C |
控制接口: |
数字、模拟输出 |
检测浓度: |
300-10000ppm(可燃气体) |
浓度斜率: |
≤0.6(R3000ppm/R1000ppm C3H8) |
灵敏度: |
Rs(in air)/Rs(1000ppm异丁烷)≥5 |
敏感体表面电阻(Rs) |
2KΩ-20KΩ(in 2000ppm C3H8 ) |
10.3 实验组件#
|
|
|
|
|---|---|---|---|
ESP32 Plus主板 *1 |
MQ2传感器 *1 |
无源蜂鸣器模块 *1 |
3P线 *1 |
|
|
|
|
I2C LCD1602模块 *1 |
4P线* 2 |
USB线 *1 |
10.4 模块接线图#
MQ-2气体传感器,无源蜂鸣器和I2C 1602 LCD模块的控制引脚:
⚠️ 特别提醒: MQ-2气体传感器同时具有数字和模拟两个引脚。在本项目中,我们将只连接传感器的数字引脚(D引脚),连接到IO23,用于检测是否能够感应到可燃气体。
MQ-2气体传感器(D引脚) |
io23 |
|---|---|
无源蜂鸣器(S引脚) |
io25 |
I2C 1602 LCD模块(SDA引脚) |
SDA |
I2C 1602 LCD模块(SCL引脚) |
SCL |
⚠️ 特别注意:智能家居已经组装好了,这里不需要把MQ-2气体传感器、无源蜂鸣器和I2C 1602 LCD模块拆下来又重新组装和接线,这里再次提供接线图,是为了方便您编写代码!

10.5 代码流程图#

10.6 实验代码#
/*
* 项目: gas_lcd
* 描述: LCD显示MQ2气体值,气体泄露警报
* 编译IDE:ARDUINO IDE
* 作者: http//www.keyes-robot.com
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// 初始化LCD与I2C地址0x27, 16列和2行
LiquidCrystal_I2C mylcd(0x27, 16, 2);
#define gasPin 23 // 气体传感器输入引脚
#define buzPin 25 // 蜂鸣器输出引脚
// LCD显示更新的状态标志
boolean dangerDisplayed = 1;
boolean safetyDisplayed = 1;
void setup() {
Serial.begin(9600);
// 初始化LCD
mylcd.init();
mylcd.backlight();
mylcd.clear();
// 设置引脚模式
pinMode(buzPin, OUTPUT);
pinMode(gasPin, INPUT);
// 显示初始消息
mylcd.setCursor(0, 0);
mylcd.print("safety");
}
void loop() {
boolean gasVal = digitalRead(gasPin); // 读取气体传感器值
Serial.println(gasVal);
if(gasVal == 0) // 如果检测到危险气体
{
while(dangerDisplayed == 1) // 如果需要,更新显示
{
mylcd.clear();
mylcd.setCursor(0, 0);
mylcd.print("dangerous");
dangerDisplayed = 0;
safetyDisplayed = 1;
}
// 声音报警蜂鸣器(短脉冲)
digitalWrite(buzPin, HIGH);
delay(1);
digitalWrite(buzPin, LOW);
delay(1);
}
else // 未检测到危险气体
{
digitalWrite(buzPin, LOW); // 确保蜂鸣器处于关闭状态
while(safetyDisplayed == 1) // 如果需要,更新显示
{
mylcd.clear();
mylcd.setCursor(0, 0);
mylcd.print("safety");
dangerDisplayed = 1;
safetyDisplayed = 0;
}
}
}
10.7 实验结果#
按照接线图接好线,外接电源,选择好正确的开发板板型(ESP32 Dev Module)和 适当的串口端口(COMxx),然后单击按钮
上传示例代码至ESP32主控板。示例代码上传成功后,上电后,屏幕正常状态下显示safety,当气体传感器检测到一些危险气体,例如:烷类可燃性气体(使用打火机,轻轻按压打火处使气体喷出,但不要打出火来。但为了安全起见,也可以嘴对着传感器呼气),检测到一定浓度时,蜂鸣器就会发出警报声,显示屏显示dangerous。






