# MQ-2 Gas/Smoke Sensor With Arduino

43

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:
LPG

• 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

GND GND

VCC 5V

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

noTone(buzzer);

}

delay(100);

}

## Recommendations

• ### Internet of Things Class

22,793 Enrolled