Today in this tutorial we are going to make a "Smoke Detection Circuit" using MQ-2 Gas Sensor & Atmega328p IC. In this example, you will read the MQ-2 sensor analog output voltage and when the smoke reaches a certain level, it will make the sound of a buzzer and a red LED will turn on. When the output voltage is below that level, a green LED will be on. So let's get Started!

JLCPCB is the foremost PCB prototype & manufacturing company in china, providing us with the best service we have ever experienced regarding (Quality, Price Service & Time).

Hardware Required

Sr NoValueQty
1MQ-2 Sensor1
35mm LED1
5Bread Board1
7Jumper wire1

Atmega328p Pinout

MQ2 Pinout


Circuit Diagram

Working Explanation

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 gas.

The smoke sensor has a built-in potentiometer that allows you to adjust the sensor sensitivity according to how accurately you want to detect gas.

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

Atmega328p Code

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


  • Air quality monitoring.
  • It can also be used in gas leak detection equipment.
  • It may be employed in any safety-related equipment