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 caseint 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 serialpinMode(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
Post a Comment