MQ-2 Gas/Smoke Sensor With Arduino

About: Share Knowledge about Arduino, ESP,GSM,Basic Electronics, DIY PROJECTS, Raspberry pi

This Post shows how to build a smoke detector that beeps when it detects flammable gas or smoke.

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

  • Butane
  • Propane
  • Methane
  • Alcoho
  • lHydrogen

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.

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: 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 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.

Step 2: Pin Wiring

The MQ-2 sensor has 4 pins.

PinWiring to Arduino Uno

A0 Analog pins

D0 Digital pins



Step 3: 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.

Step 4: Parts Needed:

So, for this example, you’ll need:

  1. 1 x MQ-2 gas sensor
  2. Arduino UNO
  3. 1x Breadboard
  4. 1 x red LED
  5. 1 x green LED
  6. 1 x buzzer
  7. 3 x 220Ω resistor
  8. Jumper wires

Step 5: Schematics

Follow these schematics to complete the project:

Step 6: Code

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


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);

Serial.begin(9600); }

void loop() {

int analogSensor = analogRead(smokeA0);

Serial.print("Pin A0: ");

Serial.println(analogSensor); // Checks if it has reached the threshold value

if (analogSensor > sensorThres) {

digitalWrite(redLed, HIGH);

digitalWrite(greenLed, LOW);

tone(buzzer, 1000, 200); }

else {

digitalWrite(redLed, LOW);

digitalWrite(greenLed, HIGH);





Be the First to Share


    • Made with Math Contest

      Made with Math Contest
    • Multi-Discipline Contest

      Multi-Discipline Contest
    • Robotics Contest

      Robotics Contest