好的!我来帮你详细介绍 ESP32 连接和读取 MQ-3 酒精传感器的原理、引脚功能,以及示例代码。


一、MQ-3 酒精传感器简介

  • MQ-3 是常见的酒精气体传感器,灵敏度高,适合检测空气中的酒精浓度。
  • 传感器带有 模拟输出(AO) 和 数字输出(DO) 两种信号输出。
  • 模拟输出(AO):输出模拟电压,跟酒精浓度成比例,适合 ESP32 的 ADC 读取。
  • 数字输出(DO):内置阈值比较器,超过设定浓度输出高/低电平。

二、MQ-3 传感器引脚功能

引脚功能说明
VCC电源正极5V 或 3.3V(建议参考模块规格)
GND接地
AO模拟输出输出电压,酒精浓度越高,电压越大
DO数字输出超过阈值时输出高电平(可调节)
A0模拟输入(部分模块)同 AO
D0数字输入(部分模块)同 DO

注意:某些 MQ-3 模块带有内置电位器调节阈值。


三、ESP32 与 MQ-3 连接示意

MQ-3 引脚连接 ESP32
VCC3.3V 或 5V(通常用 5V)
GNDGND
AOGPIO 34(ADC1_CH6)等 ADC 引脚
DOGPIO 25(数字输入,可选)

ESP32 ADC 支持 0~3.3V,传感器输出电压一般在这个范围内。


四、ESP32 读取 MQ-3 模拟输出示例代码(Arduino)

const int mq3AnalogPin = 34;  // ADC1_CH6

void setup() {
  Serial.begin(115200);
  analogReadResolution(12);   // ESP32 ADC 分辨率为 12 位(0~4095)
}

void loop() {
  int analogValue = analogRead(mq3AnalogPin);
  
  // 简单打印原始 ADC 值
  Serial.print("MQ-3 Analog Value: ");
  Serial.println(analogValue);
  
  // 可根据校准曲线将 ADC 转换成酒精浓度
  // float voltage = analogValue * (3.3 / 4095);
  // float alcoholConcentration = mapVoltageToConcentration(voltage);

  delay(1000);
}

五、数字输出读取示例

const int mq3DigitalPin = 25;  // 数字引脚

void setup() {
  Serial.begin(115200);
  pinMode(mq3DigitalPin, INPUT);
}

void loop() {
  int digitalValue = digitalRead(mq3DigitalPin);

  if (digitalValue == HIGH) {
    Serial.println("Alcohol concentration above threshold!");
  } else {
    Serial.println("Alcohol concentration below threshold.");
  }
  
  delay(1000);
}

六、注意事项

  • MQ-3 传感器预热时间较长(约 20-30 分钟),预热期间读数不准确。
  • 模拟输出受温度、湿度等环境因素影响,需进行校准。
  • 数字输出阈值通过模块上的电位器调节。
  • ESP32 ADC 输入电压不要超过 3.3V,传感器输出电压最好在此范围内。