In this post, I will be explaining you about making a DIY Arduino Smoke detector with MQ-2 Gas/ Smoke sensor. If you are unfamiliar with the MQ-2 Gas sensor, please read this short and simple introduction about the sensor before you move on.
- Arduino Nano
- Solderless Breadboard - Half +
- MQ-2 Gas sensor
- LCD Display with I2C interface - 16 x 2
- Active buzzer module
- Male/ Male Jumper wires (x3)
- Male/ Female Jumper wires (x4)
- Jumpers - to reduce the usage of wires
- Arduino IDE
- Standard Screwdriver (Flat heat screw driver)
For this project, you will be needing the LiquidCrystal_I2C library and the Wire library. The Wire library is in-built. You can download the LiquidCrystal_I2C library from this github repo.
You would also need the I2C scanner to get the I2C address of your device. You can get the codes for the I2C scanner from this Arduino site.
Create variable for the sensor, buzzer, reading, percentage and threshold values. The data type for the percentage variable should be float.
Create a LiquidCrystal_I2C object interface by using the LiquidCrystal_I2C function. Name your object as lcd and the parameters will be your device's I2C address, number of columns and number of rows.
After some experimentation, the threshold value was determined as 250. You should try experimenting with your MQ2 smoke gas sensor to set the threshold value.
The LCD should print the Welcome message once the Arduino Nano is powered up. After 2 seconds, the LCD should display "Smoke Detector" in the first row and "MQ2" in the second row.
The display should be cleared after 2 seconds.
Use analogRead function to read the analog output of the MQ2 sensor and the resulting value should be assigned it to the reading variable. Calculate the percentage of smoke in the surroundings using the MQ2 sensor reading and the threshold value.
If the value stored in the reading variable is greater than the threshold value, the buzzer should sound off an alarm. The frequency of the buzzer should be 500Hz and the duration should be 500ms. The buzzer should set off an alarm every 1 second. The LCD should display the Reading and Concentration (in percentage).
If no smoke is detected - if the reading value is not greater than the threshold value - the LCD should display "No Smoke Detected".
Watch the Youtube video in the last section to learn how this project works.
If anyone has any questions about the coding, please comment below.
Final LookIf anyone has any questions or suggestions about this project, please comment below.
Comments