The MQ-2 Gas Sensor



The MQ-2 smoke sensor is the one in the following figure:

The mq 2 gas 1



The MQ-2 smoke sensor is sensitive to smoke and to the following flammable gases:


  • LPG
  • Butane
  • Propane
  • Methane
  • Alcohol
  • Hydrogen



The resistance of the sensor is different depending on the type of the gas.

The smoke sensor has a built-in potentiometer that allows you to adjust the sensor digital output (D0) threshold. This threshold sets the value above which the digital pin will output a HIGH signal.




How does it work?



The voltage that the sensor outputs changes accordingly to the smoke/gas level that exists in the atmosphere. The sensor outputs a voltage that is proportional to the concentration of smoke/gas.


In other words, the relationship between voltage and gas concentration is the following:

  • The greater the gas concentration, the greater the output voltage
  • The lower the gas concentration, the lower the output voltage


  • The mq 2 gas 2


The output can be an analog signal (A0) that can be read with an analog input of the Arduino or a digital output (D0) that can be read with a digital input of the Arduino.


Pin Wiring


The MQ-2 sensor has 4 pins.



Wiring to Arduino Uno


Analog pins


Digital pins







Example: Gas Sensor with Arduino


In this example, you will read the sensor analog output voltage and when the smoke reaches a certain level, it will make sound a buzzer and a red LED will turn on.

When the output voltage is below  that level, a green LED will be on.



Parts needed:


So, for this example, you’ll need:

DOWNLOAD FREE GUIDE: Ultimate Guide for Arduino Modules and Sensors

The mq 2 gas 3


  • 1 x MQ-2 gas sensor 
  • Arduino UNO 
  • 1x Breadboard 
  • 1 x red LED
  • 1 x green LED
  • 1 x buzzer
  • 3 x 220Ω resistor
  • Jumper wires


You can use the preceding links or go directly to to find all the parts for your projects at the best price!





Follow these schematics to complete the project:

The mq 2 gas 4




Upload the following sketch to your Arduino board (feel free to adjust the variable sensorThres with a different threshold value):




 All the resources for this project:


int redLed = 12;

int greenLed = 11;

int buzzer = 10;

int smokeA0 = A5;

// Your threshold value

int sensorThres = 400;

void setup() {

  pinMode(redLed, OUTPUT);

  pinMode(greenLed, OUTPUT);

  pinMode(buzzer, OUTPUT);

  pinMode(smokeA0, INPUT);



void loop() {

  int analogSensor = analogRead(smokeA0);

  Serial.print("Pin A0: ");


  // Checks if it has reached the threshold value

  if (analogSensor > sensorThres)


    digitalWrite(redLed, HIGH);

    digitalWrite(greenLed, LOW);

    tone(buzzer, 1000, 200);




    digitalWrite(redLed, LOW);

    digitalWrite(greenLed, HIGH);





view raw    Projects/smoke_detector.ino


Les commentaires sont clôturés