Skip to content
R

Gas & Air Quality

Interfacing MQ 2 Gas & Air Quality with Raspberry Pi

What is the MQ 2?

MQ 2 practical reference

A widely used analog gas sensor tuned for detecting LPG, smoke, and combustible gases in DIY safety and air-quality projects.

Key specifications

  • Sensing element: SnO2 (tin dioxide) semiconductor — resistance drops in the presence of combustible gases
  • Operating voltage: 5 V DC (heater and sensing circuit both run continuously on 5V, no duty-cycle required)
  • Detection range: 300-10,000 ppm — LPG, propane, hydrogen, methane, and smoke
  • Preheat time: Usable within ~20s of power-up; full baseline stabilization takes 24-48 hours of burn-in
  • Current draw: ~150 mA, dominated by the heating element running continuously
  • Output: Analog voltage (AOUT) proportional to gas concentration, plus a threshold digital output (DOUT) via onboard comparator
  • Interface: Analog (AOUT) — requires an ADC and a datasheet Rs/Ro curve to convert to ppm; DOUT is a simple threshold trigger

Pinout and connection notes

Heater runs constantly at 5V — unlike the MQ-7/MQ-9, the MQ-2 doesn't need a duty-cycled heating voltage; a plain, constant 5V supply is correct per its datasheet. Just budget for the ~150mA continuous draw, which is easy to underestimate if your power rail is shared with other sensors.

AOUT is a raw voltage, not ppm — converting a reading to an actual ppm figure needs the Rs/Ro resistance ratio and the datasheet's gas-response curve, plus a clean-air calibration step to establish your specific sensor's Ro baseline. Don't treat raw analogRead() values as calibrated gas concentrations.

DOUT threshold needs manual calibration — the onboard potentiometer sets the trip point for DOUT and is not accurate out of the box; adjust it in known clean air before trusting it as an alarm trigger.

Don't touch the sensing element while powered — the metal mesh cap covers an actively heated element; it gets warm during normal operation.

Expect drift and burn-in behavior — readings during the first uses after unboxing will be noisier and less accurate than after ~24-48 hours of cumulative on-time; don't calibrate against a brand-new, un-burned-in sensor.

  • VCC: Power, 5V DC — also powers the internal heating element continuously
  • 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 2 with Raspberry Pi

Library

Adafruit-MCP3008 by Adafruit

pip3 install adafruit-circuitpython-mcp3xxx

Wiring

Component pinRaspberry Pi pinNote
VCC5V (physical pin 2)Heater needs the full 5V rail
GNDGND (shared with MCP3008)
AOUTThrough a divider into MCP3008 CH0The Pi has no analog input — route through an MCP3008 over SPI, and divide the sensor's ~5V swing down to the MCP3008's 3.3V reference
DOUTGPIO27 (optional)Digital threshold output — check your breakout's logic level before wiring straight to a GPIO

Swipe sideways to see every column →

Python
  • The Pi has no analog input pins at all, so an external ADC (MCP3008 here) is mandatory for this sensor, not optional.
  • Wire the divider for a ~5V source into the MCP3008 the same way as the ESP32 setup — the MCP3008 itself also tops out at 3.3V.
  • Same relative-reading and burn-in caveats apply as on the other boards — see the Arduino Uno notes on this page.

Related Components

Related Guides & Projects