Skip to main content

MQ smoke Gas Sensor with Arduino Uno

In this example, We 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.
What is an MQ-2 Smoke Sensor?
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 sensitivity according to how accurate you want to detect gas.


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 greaterthe gas concentration,the greaterthe output voltage
  • The lowerthe gas concentration,the lowerthe 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.

Pin Wiring

The MQ-2 sensor has 4 pins.
Pin-------------------------------------Wiring to Arduino Uno
A0-------------------------------------Analog pins
D0-------------------------------------Digital pins
GND-----------------------------------GND
VCC------------------------------------5V
So, before jumping into the coding part, let's check whether we've assembled all the necessary hardware components.
Kindly refer to the connection schematic attached below. After you've wired all the
components properly, it's time to upload the necessary code.

Code for Arduino
/*******

 All the resources for this project:
lihuo.blogspot.com

*******/
int RedLED = 12;       // LED Red open in Have problams case
int GreenLED = 11;     // LED Green open in No problams case
int Relay_or_Buzzer= 10;        // Relay for buzzer Alarm
int sensorThres = 400; // Your threshold value


//function of MQ sensor for Gas and Smoke
double MQ(){
 double val;
 val = analogRead (A5);  //Pin A5 for MQ sensor
return val; }


void setup() {
  Serial.begin(9600);      // initialize serial
  pinMode(RedLED, OUTPUT);      // initalize LED as an output
  pinMode(GreenLED, OUTPUT);   // initalize LED as an output
  pinMode(Relay_or_Buzzer, OUTPUT);// initalize Relay as an out
}


void loop() {
  double M ; // for MQ
 
  // out result in serial for MQ by call function
  M = MQ ();
 Serial.print("\nSmoke or Gas = "); Serial.print(M);
      
// out result with buzzer when MQ sensor have problams
 if (M >= sensorThres) {
 digitalWrite(Relay_or_Buzzer, LOW);//LOW for Relay and HIGH   for Buzzer 
 digitalWrite(RedLED, HIGH); }
 
// Out result with buzzer when MQ sensor no Vcc
  else if (M <= 10) { 
        digitalWrite(Relay_or_Buzzer, LOW);//LOW for Relay and HIGH for Buzzer 
        digitalWrite(RedLED, HIGH); }
// out result with buzzer when MQ sensor no GND
  else if (M == 1023) { 
        digitalWrite(Relay_or_Buzzer, LOW);//LOW for Relay and HIGH for Buzzer 
        digitalWrite(RedLED, HIGH); }
// out result when all sensor Don't have problams
  else  { 
        digitalWrite(Relay_or_Buzzer, HIGH);//HIGH for Relay and LOW for Buzzer 
        digitalWrite(GreenLED, HIGH);   }
       
  delay(100);
}
Schematics

Comments

Popular posts from this blog

Lab 2 , 3 , 4 Method math in java

Class Teedcalculator: /*  * To change this license header, choose License Headers in Project Properties.  * To change this template file, choose Tools | Templates  * and open the template in the editor.  */ package teedcalculator; import static teedcalculator.Oparetor.tand;// to access all static Tand of a class import static teedcalculator.Oparetor.tan;// to access all static Tan of a class import static teedcalculator.Oparetor.cost;// to access all static Cost of a class import static teedcalculator.Oparetor.cosd;// to access all static Cosd of a class import static teedcalculator.Oparetor.degree2;// to access all static Degree of a class import static teedcalculator.Oparetor.divide;// to access all static divide of a class import static teedcalculator.Oparetor.minus;// to access all static minus of a class import static teedcalculator.Oparetor.modulo;// to access all static modulo of a class import static teedcalculator.Oparetor.multiply;// to acce...

Barometric pressure sensor with Arduino

Hardware Required - Arduino or Genuino board - SCP1000 Pressure Sensor Breakout Board - hook-up wires  Procedure  Follow the circuit diagram and make the connections as shown in the image given below. Arduino Code /******* All the resources for this project:   https://lihuo.blogspot.com *******/ The code below starts out by setting the SCP1000 's configuration registers in the setup() . In the main loop, it sets the sensor to read in high resolution mode, meaning that it will return a 19-bit value, for the pressure reading, and 16 bits for the temperature. The actual reading in degrees Celsius is the 16-bit result divided by 20.   Then it reads the temperature's two bytes. Once it's got the temperature, it reads the pressure in two parts. First it reads the highest three bits, then the lower 16 bits. It combines these two into one single long integer by bit shifting the high bits then using a bitwise OR to combine them...

Software Arduino IDE

Arduino is an open source computer hardware and software company, project, and user community that designs and manufactures single-board microcontrollers and microcontroller kits for building digital devices and interactive objects that can sense and control objects in the physical world. A program for Arduino hardware may be written in any programming language with compilers that produce binary machine code for the target processor. Atmel provides a development environment for their 8-bit AVR and 32-bit ARM Cortex-M based microcontrollers: AVR Studio (older) and Atmel Studio (newer). IDE The Arduino integrated development environment (IDE) is a cross-platform application (for Windows, macOS, Linux) that is written in the programming language Java. It originated from the IDE for the languages Processing and Wiring . It includes a code editor with features such as text cutting and pasting, searching and replacing text, automatic indenting, brace matching, and syntax highl...