Skip to content
R

Gas & Air Quality

Interfacing MQ 3 Gas & Air Quality with Raspberry Pi

What is the MQ 3?

MQ 3 practical reference

Tuned specifically for detecting alcohol vapor concentration, frequently used in breathalyzer-style hobby projects. The MQ-3 is a metal-oxide semiconductor gas sensor whose surface resistance changes in the presence of ethanol vapor, producing an analog output that increases with alcohol concentration — like other MQ-series sensors it needs a warm-up period and isn't lab-calibrated, so it's best suited for relative/comparative alcohol-detection demos rather than legally-relevant breathalyzer readings.

Key specifications

  • Sensor type: MQ-3 metal-oxide semiconductor (MOS) gas sensor, tuned for alcohol vapor
  • Operating voltage: 5 V DC (heater circuit + sensing circuit both typically run at 5V)
  • Detection range: ~0.05-10 mg/L alcohol vapor concentration
  • Warm-up time: Requires several minutes (some sources recommend 24-48 hours for first-use burn-in) of heater warm-up before stable readings
  • Output: Analog voltage proportional to alcohol vapor concentration, plus a digital threshold output (DO) on breakout modules with an onboard comparator
  • Sensitivity adjustment: Onboard potentiometer sets the digital-output trigger threshold
  • Interface: 1 analog pin (AO) + 1 digital pin (DO, breakout-dependent)

Pinout and connection notes

Like all MQ-series sensors, allow several minutes of warm-up after power-on before trusting readings, since the internal heater element needs time to reach a stable operating temperature; results also drift with humidity and temperature, so treat readings as relative/comparative rather than a precisely calibrated measurement, and never rely on this sensor for legal or medical breath-alcohol determinations.

  • VCC: Power, 5V DC (powers both the internal heater and sensing circuit)
  • GND: Ground
  • AO: Analog output — voltage proportional to alcohol vapor concentration
  • DO: Digital output — threshold-triggered HIGH/LOW based on the onboard potentiometer setting

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 3 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)
AOThrough a divider into MCP3008 CH0The Pi has no analog input — route through an MCP3008 over SPI, dividing the ~5V swing down to the MCP3008's 3.3V reference
DOGPIO27 (optional)Digital threshold output

Swipe sideways to see every column →

Python
  • The Pi has no analog input pins, so an MCP3008 (or similar external ADC) is required here, not optional.
  • Wire the divider the same way as the ESP32 setup — the MCP3008 also tops out at 3.3V.
  • Same warm-up and "not a real breathalyzer" caveats apply as on the other boards.

Related Components

Related Guides & Projects