// ---------------- BLYNK TEMPLATE ----------------
#define BLYNK_TEMPLATE_ID "TMPL3IPmjAidu"
#define BLYNK_TEMPLATE_NAME "Gas Leak Sensor"
#define BLYNK_AUTH_TOKEN "UCPDQmwaExijwhIDK_3TgiD8XUeoiBs8"
// ---------------- LIBRARIES ----------------
#include <WiFi.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <BlynkSimpleEsp32.h>
// ---------------- WIFI ----------------
char ssid[] = "SajMu";
char pass[] = "Ga@2006";
// ---------------- LCD ----------------
LiquidCrystal_I2C lcd(0x27, 16, 2);
// ---------------- PINS ----------------
#define GAS_SENSOR 34
#define GREEN_LED 18
#define RED_LED 19
#define BUZZER 23
#define BUTTON 4
// ---------------- VARIABLES ----------------
int threshold = 2000; // Adjust after testing
bool alarmActive = false;
// ---------------- SETUP ----------------
void setup() {
Serial.begin(115200);
pinMode(GREEN_LED, OUTPUT);
pinMode(RED_LED, OUTPUT);
pinMode(BUZZER, OUTPUT);
pinMode(BUTTON, INPUT_PULLUP);
// LCD setup
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Gas System...");
delay(2000);
lcd.clear();
// Connect WiFi + Blynk
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
}
// ---------------- LOOP ----------------
void loop() {
Blynk.run();
int gasValue = analogRead(GAS_SENSOR);
Serial.print("Gas Value: ");
Serial.println(gasValue);
// Display gas value
lcd.setCursor(0, 0);
lcd.print("Gas: ");
lcd.print(gasValue);
lcd.print(" ");
// GAS DETECTED
if (gasValue > threshold && !alarmActive) {
digitalWrite(RED_LED, HIGH);
digitalWrite(GREEN_LED, LOW);
digitalWrite(BUZZER, HIGH);
alarmActive = true;
lcd.setCursor(0, 1);
lcd.print("DANGER! ");
Serial.println("GAS LEAK!");
// Send notification
Blynk.logEvent("gas_alert", "Gas Leak Detected!");
}
// SAFE
else if (gasValue <= threshold) {
digitalWrite(GREEN_LED, HIGH);
digitalWrite(RED_LED, LOW);
digitalWrite(BUZZER, LOW);
alarmActive = false;
lcd.setCursor(0, 1);
lcd.print("SAFE ");
}
// RESET BUTTON
if (digitalRead(BUTTON) == LOW) {
digitalWrite(BUZZER, LOW);
alarmActive = false;
lcd.setCursor(0, 1);
lcd.print("RESET DONE ");
Serial.println("Reset Pressed");
delay(500);
}
delay(500);
}