Skip to content
E

Gas & Air Quality

Interfacing MQ 7 Gas & Air Quality with Espressif ESP32

What is the MQ 7?

MQ 7 practical reference

A gas sensor calibrated specifically for carbon monoxide detection, used in DIY CO alarm and indoor air-safety projects.

Key specifications

  • Sensing element: SnO2 (tin dioxide) semiconductor, sensitivity decreases as CO concentration decreases in clean air
  • Operating voltage: 5 V DC (heater circuit and sensing circuit both run on 5V)
  • Detection range: 20-2000 ppm carbon monoxide (CO)
  • Heating cycle: 5 V for 60s (high-temp burn-off), then 1.4V for 90s (low-temp sensing) — 150s total cycle for spec-accurate CO readings
  • Current draw: ~150 mA during the 5V heating phase — noticeably more than typical digital sensors, budget accordingly
  • Preheat time: Usable within minutes, but full stabilization for accurate baseline readings takes up to 48 hours of burn-in
  • Output: Analog voltage (AOUT) proportional to gas concentration, plus a threshold digital output (DOUT) via onboard comparator
  • Interface: Analog (AOUT) — requires ADC and Rs/Ro curve conversion to get ppm; DOUT is a simple threshold trigger

Pinout and connection notes

The heating cycle is not optional for spec accuracy — many breakout boards simply tie VCC straight to a constant 5V, which the sensor will tolerate and still respond to CO, but the datasheet's accuracy figures assume the 60s-high/90s-low duty cycle. If CO-selectivity actually matters for your project (vs. just "some gas is present"), drive the heater pin with a MOSFET or relay on a timer/PWM to reproduce that cycle rather than running it at a constant voltage.

AOUT is raw voltage, not ppm — converting to a ppm figure requires computing the Rs/Ro resistance ratio and mapping it against the sensor's datasheet curve, plus a clean-air calibration step to establish your board's Ro baseline. Treat raw analogRead() values as relative/qualitative unless you've done this calibration.

DOUT needs calibration too — the trigger threshold is set by the onboard potentiometer and is not accurate out of the box. Adjust it while exposing the sensor to a known-safe CO level (i.e., clean air) before trusting DOUT as an alarm trigger.

Power budget — the ~150mA heater draw is easy to overlook if you're used to sub-10mA digital sensors. On a 3.3V-logic board reading AOUT through a voltage divider, make sure your 5V supply rail (not just logic) can actually source this current, especially if several MQ-series sensors run simultaneously.

Sensor lifetime and drift — SnO2 elements degrade over 1-3 years of use and drift with humidity and temperature; periodic recalibration against known-clean air is necessary for any long-term deployment, not just a one-time setup step.

  • VCC: Power, 5V DC — also powers the internal heating element
  • GND: Ground
  • AOUT: Analog voltage output, proportional to gas concentration — read with an ADC, not a direct ppm value
  • DOUT: Digital threshold output — trips based on the onboard comparator, threshold set by the potentiometer on the module

Integration checklist

  1. Confirm the exact part number and breakout-board revision.
  2. Verify supply voltage, current demand, logic levels, and signal direction against the datasheet.
  3. Check controller pin assignments and bus address or interface mode against the example code.
  4. Power up with external loads disconnected, then test signals before full integration.
  5. If readings or communication fail, check power and ground first, then pin mapping, interface settings, and library initialization.

Troubleshooting and reproducibility

Record the board used, wiring, library/version, supply arrangement, and measured behavior. Use the selected board-specific wiring example as the source of truth. Never assume visually similar modules share identical voltage tolerance or pin order.

Setting Up MQ 7 with Espressif ESP32

Wiring

Component pinEspressif ESP32 pinNote
VCC5V (VIN)Heater draws ~150mA and needs the full 5V rail — don't power from 3V3
GNDGND
AOUTGPIO34 (through a voltage divider)AOUT can swing close to 5V, above the ESP32 ADC's 3.3V limit — use a divider sized for a 5V source
DOUTGPIO25 (optional)Digital threshold output

Swipe sideways to see every column →

C++
  • Don't skip the voltage divider — MQ-7's analog output isn't 3.3V-safe on its own.
  • Same heater-cycle caveat as the Arduino Uno: this reads a constant-5V-heater signal, not the datasheet's 60s/90s cycle. Fine for alarm/threshold use, not for spec-accurate ppm.
  • Carbon monoxide detection is safety-relevant — don't rely on a hobbyist sensor as your only CO alarm.

Related Components

Related Guides & Projects