硬件基础:认识ESP32开发板、烟雾传感器(如MQ-2)、声音传感器(如KY-037)的引脚、工作原理与选型要点

厨房安全项目的核心在于“感知—判断—响应”这条链路,而链路的起点就是硬件选型与连接。ESP32作为主控芯片,承担数据采集、逻辑判断和网络通信任务;MQ-2烟雾传感器负责感知空气中可燃气体和烟雾浓度;KY-037声音传感器则用于捕捉异常声响(如玻璃碎裂、燃气泄漏的嘶嘶声)。理解这三者的引脚定义、工作原理和选型边界,是后续编写判断逻辑和搭建原型的基础。本节将从硬件架构出发,逐一拆解每个模块的电气特性与工程连接要点。

ESP32厨房安全硬件链路图 电源域 5V USB / 3.3V LDO ESP32-WROOM-32 GPIO 34 / 35 / 32 / 33 ADC1 通道 · 12位 MQ-2 烟雾传感器 AO → GPIO34 (ADC) DO → GPIO32 (数字) VCC 5V · GND KY-037 声音传感器 AO → GPIO35 (ADC) DO → GPIO33 (数字) VCC 3.3V · GND AO 模拟量 AO 模拟量 5V / 3.3V 本地风险判断 阈值比较 + 滑动窗口 蜂鸣器 / LED / 网络告警 UART / USB 调试 串口监视器 · 日志输出 注:ADC输入引脚不可复用为数字输出,GPIO34/35仅支持输入模式

3.1 ESP32开发板核心资源与引脚规划

ESP32-WROOM-32模组是当前物联网原型开发中最常用的双核芯片方案,集成2.4GHz Wi-Fi和蓝牙,主频最高240MHz,内置520KB SRAM和4MB Flash。在厨房安全项目中,ESP32不仅负责读取传感器数据,还要运行阈值判断算法、驱动蜂鸣器/LED,并通过Wi-Fi将告警信息推送到手机或云端。因此,引脚规划必须兼顾模拟采集、数字控制和通信接口三方面需求。

从电气特性上看,ESP32的ADC(模数转换器)分为ADC1和ADC2两组,其中ADC1包含GPIO32至GPIO39共8个通道,支持12位分辨率(0-4095),适合连接模拟输出型传感器。需要特别注意的是,ADC2通道在Wi-Fi开启时无法稳定工作,因为Wi-Fi驱动会占用ADC2的采样资源。因此,在厨房安全项目中,所有模拟传感器应优先连接ADC1通道。GPIO34、GPIO35、GPIO36、GPIO39是纯输入引脚,没有内部上拉/下拉电阻,不能输出PWM信号,但非常适合作为模拟采集端口。

引脚编号 功能类型 推荐用途 注意事项
GPIO34 ADC1_CH6(仅输入) MQ-2模拟输出AO 不可配置为输出模式
GPIO35 ADC1_CH7(仅输入) KY-037模拟输出AO 无内部上拉,需外部上拉
GPIO32 ADC1_CH4 / 数字I/O MQ-2数字输出DO 可复用为数字输入
GPIO33 ADC1_CH5 / 数字I/O KY-037数字输出DO 可复用为数字输入
GPIO25 DAC / 数字输出 蜂鸣器驱动(PWM) LEDC通道可用
GPIO26 数字输出 LED指示灯 推挽输出即可

在供电设计上,ESP32开发板通常通过Micro-USB输入5V电源,板载AMS1117稳压芯片将5V转换为3.3V供芯片和外部传感器使用。但需要注意,MQ-2传感器的加热电路需要5V供电(加热电流约150mA),而KY-037模块的运放电路在3.3V下即可正常工作。因此,推荐采用“USB 5V输入 → 直接给MQ-2供电 → 经板载LDO给ESP32和KY-037供电”的电源树结构。如果使用电池供电,建议选择7.4V锂电池组并通过DC-DC降压至5V,同时确保稳压模块的输出电流不低于1A。

风险提示:MQ-2传感器内部有镍铬加热丝,上电瞬间电流可达180mA,如果与ESP32共用同一路3.3V LDO,可能导致电压跌落超过200mV,引发ESP32意外重启。务必让MQ-2的VCC直接连接5V电源轨,并在靠近传感器引脚处并联一个100µF电解电容和0.1µF陶瓷电容。

3.2 MQ-2烟雾传感器:从气敏电阻到电压信号

MQ-2是半导体式气敏传感器,核心敏感材料是二氧化锡(SnO₂)烧结体。在洁净空气中,SnO₂表面吸附氧分子形成负离子势垒,使元件电阻升高;当还原性气体(如丙烷、氢气、烟雾)接触表面时,氧负离子与气体分子发生反应,势垒降低,元件电阻随之下降。MQ-2对液化石油气、丙烷、氢气、酒精蒸气和烟雾均有响应,响应时间约10秒以内,恢复时间约30秒,适合厨房环境的气体泄漏和火灾烟雾监测。

MQ-2模块通常集成比较器电路(LM393),对外提供两个输出端口:AO(模拟输出)和DO(数字输出)。AO引脚直接输出气敏电阻分压后的电压值,电压范围约0.1V至4V(5V供电时),浓度越高电压越大;DO引脚则通过电位器设定阈值,当浓度超过阈值时输出低电平(或高电平,取决于模块设计)。在ESP32项目中,我们主要读取AO引脚的模拟值,通过ADC转换为0-4095的数字量,再映射为浓度百分比或直接用于阈值判断。

从信号链路来看,MQ-2的等效电路可以简化为:气敏电阻Rs与负载电阻RL串联,AO输出电压 = VCC × RL / (Rs + RL)。当气体浓度升高时,Rs减小,AO电压升高。ESP32读取到的ADC值raw与AO电压的关系为:V_ao = raw × 3.3 / 4095(注意:ESP32 ADC参考电压为3.3V,但MQ-2在5V供电时AO输出可能超过3.3V,因此必须使用分压电阻或选择3.3V供电版本)。

工程经验:MQ-2模块在出厂时,AO输出在洁净空气中约为0.3V-0.6V(对应ADC值约400-800),在烟雾浓度较高时可达2.5V以上(对应ADC值约3000+)。建议在代码中先采集100次取平均作为基线值,再设定“基线 + 固定偏移”作为报警阈值,避免因环境温湿度变化导致误报。

MQ-2选型要点

  • 供电电压:标准版为5V加热电压,另有3.3V版本(如MQ-2-3.3V),但灵敏度略低。若使用5V版本,务必确认AO输出不超过ESP32的ADC输入范围(3.3V),必要时增加分压电阻。
  • 检测气体类型:MQ-2对丙烷、丁烷、甲烷、氢气、烟雾均有响应,但灵敏度曲线不同。如果厨房主要使用天然气(甲烷),建议选择MQ-4或MQ-5;如果主要监测油烟和火灾烟雾,MQ-2足够。
  • 预热时间:MQ-2需要至少3分钟预热才能稳定输出,首次上电时基线漂移明显。项目代码中应加入“预热等待”逻辑,避免上电立即判断。
  • 寿命与漂移:MQ-2的敏感材料会逐渐老化,建议每6个月重新校准一次基线值。校准方法:在洁净空气中记录ADC值,更新阈值偏移量。

3.3 KY-037声音传感器:从驻极体麦克风到数字脉冲

KY-037是一款基于驻极体电容麦克风(ECM)和LM393比较器的声音检测模块。麦克风将声波振动转换为微弱的电压信号,经过内置运放放大后,从AO引脚输出模拟波形;同时,比较器将放大后的信号与电位器设定的阈值比较,当声音强度超过阈值时,DO引脚输出低电平脉冲。在厨房安全场景中,KY-037可用于检测玻璃碎裂声、金属撞击声、燃气泄漏的“嘶嘶”高频声,以及异常的人声喊叫。

与MQ-2不同,KY-037的AO输出是交流耦合的音频信号,其直流偏置约为VCC/2(约1.65V),叠加的交流分量幅度与声音响度成正比。ESP32的ADC读取到的数值会在偏置点附近波动,因此不能直接使用“值”判断,而应该计算短时间窗口内的峰值-峰值差或均方根值(RMS)。例如,每10ms采样一次,连续采样50次(共500ms窗口),计算最大值与最小值的差值,若差值超过设定阈值(如300 ADC单位),则判定为异常声音事件。

KY-037的DO输出为数字信号,当声音超过阈值时输出低电平(部分模块为高电平),适合作为“唤醒信号”或“紧急触发信号”。但在厨房环境中,环境噪声(如排风扇、炒菜声)可能频繁触发DO,因此建议以AO模拟量为主进行软件滤波判断,DO仅作为备用或硬件中断源。

实用技巧:KY-037模块上的电位器用于调节灵敏度。顺时针旋转可降低触发阈值(更灵敏),逆时针旋转则提高阈值。建议在项目调试阶段,先将电位器逆时针旋到底(最不灵敏),然后逐步顺时针调整,直到在正常环境噪声下DO不误触发,而在拍手或敲击桌面时能稳定触发。

KY-037与ESP32的连接注意事项

  • 供电电压:KY-037支持3.3V-5V供电,但推荐使用3.3V,避免AO输出超过ESP32 ADC量程。
  • 模拟信号采样:ESP32的ADC采样率最高约6kSPS(每秒采样次数),对于音频信号(20Hz-20kHz)来说偏低。但厨房异常声音检测不需要完整音频还原,只需检测能量变化,因此500Hz-2kHz的采样率足够。
  • 数字输出极性:不同批次模块的DO输出极性可能不同,务必用万用表测量确认:声音触发时DO是拉低还是拉高,再在代码中配置对应的中断触发模式。
  • 抗干扰:KY-037的模拟输出阻抗较高,连接线长度建议不超过20cm,并使用双绞线或屏蔽线,避免与电源线平行走线。

3.4 传感器选型对比与项目决策

在厨房安全项目中,传感器选型直接影响检测准确性和系统成本。下表对比了MQ-2与常见替代方案,以及KY-037与更高端声音传感器的差异,帮助开发者根据实际需求做出选择。

对比维度 MQ-2(推荐) MQ-7(一氧化碳) DHT22(温湿度) KY-037(推荐) MAX9814(音频放大)
检测目标 烟雾、丙烷、氢气 一氧化碳 温度、湿度 声音强度 高质量音频波形
输出类型 模拟电压 + 数字阈值 模拟电压 单总线数字 模拟音频 + 数字脉冲 模拟音频
供电要求 5V(加热) 5V(加热) 3.3V-5V 3.3V-5V 2.7V-5.5V
响应时间 ≤10秒 ≤30秒 2秒 即时 即时
成本(模块级) 约8-15元 约10-18元 约5-10元 约3-8元 约15-25元
适用场景 火灾烟雾、燃气泄漏 煤气中毒预防 环境监测辅助 异常声响检测 语音识别前端

从项目定位来看,ESP32厨房安全系统属于“低成本、本地化、快速响应”的预警设备,而非精密仪器。MQ-2和KY-037的组合已经覆盖了“燃气泄漏/火灾烟雾”和“异常声响”两大核心风险源。如果预算允许,可以增加一个DHT22温湿度传感器,用于区分“高温低湿(火灾初期)”和“常温高湿(水蒸气)”场景,减少误报。

3.5 实战案例:从零搭建烟雾+声音双传感器节点

下面通过一个完整的连接与调试案例,展示如何将ESP32、MQ-2和KY-037组合为一个可工作的厨房安全感知节点。该案例已在ESP32-DevKitC V4开发板上验证通过。

背景与约束:厨房面积约8平方米,使用天然气灶具,有排风扇。要求系统在燃气泄漏或烟雾浓度超标时发出本地蜂鸣器警报,并在声音异常(如窗户被打破)时触发LED闪烁。开发板供电采用USB 5V适配器,传感器与开发板距离不超过15cm。

硬件连接清单:

MQ-2模块 → ESP32开发板
  VCC  → 5V引脚(开发板Vin)
  GND  → GND
  AO   → GPIO34(ADC1_CH6)
  DO   → GPIO32(数字输入,备用)

KY-037模块 → ESP32开发板
  VCC  → 3.3V引脚
  GND  → GND
  AO   → GPIO35(ADC1_CH7)
  DO   → GPIO33(数字输入,备用)

蜂鸣器(有源) → GPIO25(PWM输出)
LED指示灯 → GPIO26(数字输出)

初始现象与调试过程:首次上电后,串口监视器显示MQ-2的ADC值在200-300之间波动,但KY-037的ADC值在1800-2000之间波动(偏置约1.65V)。用手在MQ-2上方喷少量烟雾,ADC值在5秒内上升到1500,但随后又缓慢回落。用螺丝刀轻敲桌面,KY-037的ADC值瞬间从1900跳到2400,但DO引脚始终为高电平,说明电位器阈值设置过高。

分析与调整:MQ-2的响应速度符合预期,但基线值偏低(200-300),可能是传感器尚未充分预热。KY-037的DO不触发,是因为模块上的电位器被逆时针旋到了底(最不灵敏)。将电位器顺时针旋转约30度后,敲击桌面时DO能输出低电平脉冲。同时,在代码中设置MQ-2的报警阈值为“基线值 + 800”(即约1000),并加入5秒连续超阈值确认逻辑,避免瞬时波动误报。

最终代码逻辑(伪代码):

// 初始化
adc1_config(ATTEN_11db, GPIO34);  // MQ-2
adc1_config(ATTEN_11db, GPIO35);  // KY-037
int mq2_baseline = 0;
for (int i = 0; i < 100; i++) {
  mq2_baseline += adc1_read(GPIO34);
  delay(10);
}
mq2_baseline /= 100;  // 计算基线

// 主循环
while (1) {
  int mq2_val = adc1_read(GPIO34);
  int sound_val = adc1_read(GPIO35);
  
  // 烟雾判断:连续5次超过阈值
  static int smoke_count = 0;
  if (mq2_val > mq2_baseline + 800) {
    smoke_count++;
    if (smoke_count >= 5) {
      buzzer_on();  // 蜂鸣器报警
    }
  } else {
    smoke_count = 0;
    buzzer_off();
  }
  
  // 声音判断:计算短窗口峰值差
  int max_v = 0, min_v = 4095;
  for (int i = 0; i < 50; i++) {
    int v = adc1_read(GPIO35);
    if (v > max_v) max_v = v;
    if (v < min_v) min_v = v;
    delay(2);
  }
  if (max_v - min_v > 300) {
    led_blink();  // LED闪烁
  }
  delay(100);
}

结果与复盘:经过上述调整,系统在模拟测试中表现稳定:在距离MQ-2约30cm处点燃打火机(不接触火焰),3秒内触发蜂鸣器;在距离KY-037约1米处拍手,LED能可靠闪烁。复盘发现两个值得注意的问题:一是MQ-2的基线值在连续工作2小时后会漂移约15%,因此代码中应加入“每10分钟自动更新基线”的机制;二是KY-037对排风扇的低频噪声不敏感(因为低频分量在窗口内变化平缓),但对高频敲击声非常敏感,这正好符合厨房异常声音的检测需求。

安全提醒:在测试MQ-2时,切勿使用明火直接靠近传感器,以免高温损坏敏感元件。建议使用打火机气体(丁烷)喷射或点燃棉签产生烟雾进行测试。同时,所有传感器调试应在断电状态下进行接线,避免短路损坏ESP32的GPIO引脚。

3.6 常见误区与总结

在硬件连接和传感器使用中,初学者容易犯以下几类错误,需要特别注意规避。

  • 误区一:将MQ-2的AO直接连接到ESP32的3.3V ADC引脚而不做分压。MQ-2在5V供电时,AO输出最高可达4V左右,超过ESP32 ADC的3.3V量程,会导致ADC读数饱和(始终为4095),且可能损坏引脚。解决方法是使用电阻分压(如10kΩ+5.6kΩ)或改用3.3V供电的MQ-2版本。
  • 误区二:忽略ADC2通道在Wi-Fi开启时的不可用性。如果项目需要同时使用Wi-Fi和模拟传感器,必须将所有模拟输入连接到ADC1通道(GPIO32-39)。否则,Wi-Fi连接后ADC读数会变为随机值。
  • 误区三:将KY-037的AO当作直流电平判断。KY-037的AO是交流耦合信号,其直流偏置约为1.65V,但实际值会随声音波动。如果直接判断“ADC值大于2000”作为报警条件,在安静环境下可能因偏置漂移而误报。正确做法是计算窗口内的峰值差或RMS值。
  • 误区四:忽略MQ-2的预热时间。MQ-2上电后需要3-5分钟预热,期间基线漂移可达30%。如果代码中没有预热等待逻辑,系统可能在刚上电时误报或漏报。
  • 误区五:使用DO引脚作为唯一判断依据。MQ-2和KY-037的DO阈值由模块上的电位器决定,精度有限且容易受温湿度影响。建议以AO模拟量为主,DO仅作为硬件中断或冗余信号。