Jesbin ShajuABEL JOSEVYSAKH HARIKUMARSHIFA USMANN
Published

Smart Gas Leak Detector with Flame Alert and Auto Gas Cutoff

Smart IoT system using ESP8266 to detect LPG leaks, sense flames, and auto shut off gas with a solenoid valve for instant safety.

BeginnerShowcase (no instructions)3 hours168
Smart Gas Leak Detector with Flame Alert and Auto Gas Cutoff

Things used in this project

Hardware components

ESP8266 ESP-12E
Espressif ESP8266 ESP-12E
×1
Grove - Gas Sensor(MQ2)
Seeed Studio Grove - Gas Sensor(MQ2)
×1
Solenoid Valve, 2 Way
Solenoid Valve, 2 Way
×1
1-Channel Signal Relay 1A SPDT IΒ²C Mini Module
ControlEverything.com 1-Channel Signal Relay 1A SPDT IΒ²C Mini Module
×1
Gravity: Analog Flame Sensor For Arduino
DFRobot Gravity: Analog Flame Sensor For Arduino
×1

Software apps and online services

Arduino IDE
Arduino IDE
Blynk
Blynk

Hand tools and fabrication machines

Multitool, Screwdriver
Multitool, Screwdriver
Wire Stripper & Cutter, 18-10 AWG / 0.75-4mmΒ² Capacity Wires
Wire Stripper & Cutter, 18-10 AWG / 0.75-4mmΒ² Capacity Wires

Story

Read more

Schematics

khgjfbjhk_k9ZStG3tEn.jpg

Code

IoT-Based Gas Leak Detection and Auto Shutoff System using ESP8266

C/C++
#define BLYNK_TEMPLATE_ID "YourTemplateID"
#define BLYNK_DEVICE_NAME "GasLeakSafetySystem"
#define BLYNK_AUTH_TOKEN "YourAuthToken"

#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <BlynkWidgets.h>

char ssid[] = "YourWiFiName";     // Your WiFi SSID
char pass[] = "YourWiFiPassword"; // Your WiFi Password

#define MQ2_PIN A0         // Gas sensor (analog)
#define FLAME_PIN D1       // Flame sensor (digital)
#define RELAY_PIN D2       // Relay (to solenoid valve)

int gasThreshold = 400;     // Set your gas leak threshold here
BlynkTimer timer;

// Auto gas + flame logic
void checkSensors() {
  int gasVal = analogRead(MQ2_PIN);
  bool flamePresent = digitalRead(FLAME_PIN) == LOW; // Flame = LOW

  // Send sensor data to Blynk
  Blynk.virtualWrite(V0, gasVal);
  Blynk.virtualWrite(V1, flamePresent ? 1 : 0);

  // Auto valve logic: if gas leak AND no flame β†’ close valve
  if (gasVal > gasThreshold && !flamePresent) {
    digitalWrite(RELAY_PIN, HIGH); // Close valve
    Blynk.virtualWrite(V3, "🚨 Leak Detected! Valve CLOSED");
  } else {
    digitalWrite(RELAY_PIN, LOW);  // Valve stays open
    Blynk.virtualWrite(V3, "βœ… Normal: Valve OPEN");
  }
}

// Manual override from Blynk (V2 switch)
BLYNK_WRITE(V2) {
  int manualState = param.asInt(); // 1 = ON, 0 = OFF
  digitalWrite(RELAY_PIN, manualState ? HIGH : LOW);
}

void setup() {
  Serial.begin(115200);

  pinMode(FLAME_PIN, INPUT);
  pinMode(RELAY_PIN, OUTPUT);
  digitalWrite(RELAY_PIN, LOW); // Default: valve open

  Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
  timer.setInterval(1000L, checkSensors); // Check every 1s
}

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

Credits

Jesbin Shaju
1 project β€’ 0 followers
ABEL JOSE
2 projects β€’ 2 followers
VYSAKH HARIKUMAR
1 project β€’ 1 follower
SHIFA USMANN
1 project β€’ 1 follower

Comments