Gas Sensor

How to make a Gas Monitoring device with esp8266

This project uses the MQ-135 gas sensor integrated with an ESP8266 microcontroller to monitor air quality. The sensor detects harmful gases like CO₂, CO, and ammonia, and sends real-time data to the Blynk app. If gas concentration exceeds a safe threshold, the system activates an alarm and sends a notification to your smartphone via Blynk.

Components Used:
– ESP8266 (NodeMCU)
– MQ-135 Gas Sensor
– Buzzer (for alarm)
– LED (for visual indicator)
– Breadboard and Jumper
– Power Supply (Micro USB or adapter)

Wiring:
MQ-135 Sensor:
– VCC → 3V3 on ESP8266
– GND → GND on ESP8266
– AO (Analog Output) → A0 on ESP8266
Buzzer:
– Positive (+) → D2 on ESP8266
– Negative (-) → GND
LED:
– Anode (long leg) → D5 on ESP8266 (via 220Ω resistor)
– Cathode (short leg) → GND

Set Up Blynk.cloud:

Blink Template
Blynk Datastream
Blynk Gauge Settings

Code Arduino IDE:

/*
  Blynk example for MQ-135 air quality sensor
  You should get Auth Token in the Blynk App.
  You need to write the right wifiCredentials.
*/

#define BLYNK_TEMPLATE_ID "TMPL6vS9Qc0M1"
#define BLYNK_TEMPLATE_NAME "UDARA"
#define BLYNK_AUTH_TOKEN "3GDwv9Sf23Oy-o-YVADmQYmrB538JbLc"

#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>

int airQualityPin = A0; // Pin analog untuk sensor MQ-135
int buzzer_pin = 2; // Pin untuk buzzer
int led_pin = 5;    // Pin untuk LED

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "3GDwv9Sf23Oy-o-YVADmQYmrB538JbLc";

// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "Lab Robotika"; //nama hotspot yang digunakan
char pass[] = "lab_robotika"; //password hotspot yang digunakan

BlynkTimer timer;

void setup()
{
  // Debug console
  Serial.begin(9600);
  pinMode(airQualityPin, INPUT);   // Set pin sensor kualitas udara sebagai input
  pinMode(buzzer_pin, OUTPUT);     // Set buzzer pin as output
  pinMode(led_pin, OUTPUT);        // Set LED pin as output

  Blynk.begin(auth, ssid, pass, "blynk.cloud", 80);
  timer.setInterval(1000L, sendSensor); // Kirim data setiap detik
}

void loop()
{
  Blynk.run();
  timer.run();
}

void sendSensor() {
    int airQualityValue = analogRead(airQualityPin);  // Membaca nilai dari sensor kualitas udara MQ-135
    
    // Cetak nilai kualitas udara ke Serial Monitor
    Serial.print("Air Quality Value: ");
    Serial.println(airQualityValue);
    
    // Kirim data kualitas udara ke Blynk
    Blynk.virtualWrite(V14, airQualityValue);  // Kirim nilai kualitas udara ke virtual pin V14 di Blynk
    
    // Tetapkan ambang batas untuk kualitas udara buruk
    int airQualityThreshold = 300; // Contoh ambang batas kualitas udara (bisa disesuaikan)

    // Periksa apakah nilai kualitas udara melebihi ambang batas
    if (airQualityValue > airQualityThreshold) {
        digitalWrite(buzzer_pin, HIGH); // Nyalakan buzzer
        digitalWrite(led_pin, HIGH);    // Nyalakan LED
        Blynk.logEvent("notif_sensor"); // Kirim notifikasi Blynk
    } else {
        digitalWrite(buzzer_pin, LOW);  // Matikan buzzer
        digitalWrite(led_pin, LOW);     // Matikan LED
    }
}

Result:

ESP8266
Blynk Result

Selamat Mencoba !!

Jika anda berminat menggunakan jasa labrobotika, silahkan hubungi admin: WHATSAPP