Skip to content
S

Gas & Air Quality

Interfacing MQ 7 Gas & Air Quality with STM32 Blue Pill

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 STM32 Blue Pill

Wiring

Component pinSTM32 Blue Pill pinNote
VCC5VHeater needs 5V — fed straight from USB/VIN, not regulated down
GNDGND
AOUTPA0Blue Pill ADC tops out at 3.3V — this signal needs the same voltage divider as the ESP32 setup
DOUTPA1 (optional)Digital threshold output

Swipe sideways to see every column →

C++
  • Same divider requirement as the ESP32 — never wire AOUT straight into PA0 without it.
  • Most Blue Pills need a USB-TTL adapter on PA9/PA10 for Serial output.
  • Same constant-heater caveat as the other boards — this is alarm/threshold-grade CO sensing, not spec-accurate ppm.

Related Components

Related Guides & Projects