#define BLYNK_TEMPLATE_ID "TMPL3ZbBUgbYh"
#define BLYNK_TEMPLATE_NAME "Gas Leakage1"
#define BLYNK_AUTH_TOKEN "LfoucvbvmUhUVBrGQAi-nHSonLAXtH4f"
#include <WiFi.h>
#include<BlynkSimpleEsp32.h>
#include <LiquidCrystal_I2C.h>
#define mq 34
#define buzzer 25
#define gled 26
#define rled 27
#define rb 33
const int th=2000;
LiquidCrystal_I2C lcd(0x27,16,2);
bool isMuted= false;
char auth[]=BLYNK_AUTH_TOKEN;
char ssid[]="Wokwi-GUEST";
char pass[]="";
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(mq, INPUT);
pinMode(buzzer, OUTPUT);
pinMode(gled, OUTPUT);
pinMode(rled, OUTPUT);
pinMode(rb, INPUT_PULLUP);
Blynk.begin(auth,ssid,pass);
lcd.init();
lcd.backlight();
lcd.print("Gas Sensor");
lcd.setCursor(0,1);
lcd.print("Loading..");
delay(2000);
lcd.clear();
digitalWrite(buzzer,LOW);
digitalWrite(rled,LOW);
digitalWrite(gled,HIGH);
}
void loop() {
// put your main code here, to run repeatedly:
Blynk.run();
int sv=analogRead(mq);
if(sv>=th){
if(!isMuted){
digitalWrite(buzzer, HIGH); }
digitalWrite(rled,HIGH);
digitalWrite(gled,LOW);
lcd.setCursor(0,0);
lcd.print("!!! Danger !!!");
lcd.setCursor(0,1);
lcd.print("Gas Val:");
lcd.print(sv);
Blynk.logEvent("gas_alert","Warning: Gas Leakage Detected!");
}
else{
isMuted=false;
digitalWrite(buzzer,LOW);
digitalWrite(rled,LOW);
digitalWrite(gled,HIGH);
lcd.setCursor(0,0);
lcd.print("!!! Safe !!!");
lcd.setCursor(0,1);
lcd.print("Gas Val:");
lcd.print(sv);
}
if(digitalRead(rb)==LOW && sv>=th){
digitalWrite(buzzer,LOW);
isMuted=true;
lcd.setCursor(0,1);
lcd.print("Gas Val:");
lcd.print(sv);
lcd.print("Muted");
delay(1000);
lcd.clear();
}
Serial.println(sv);
delay(1000); // this speeds up the simulation
}