#define BLYNK_TEMPLATE_ID "TMPL6ia2Y0t9s"
#define BLYNK_TEMPLATE_NAME "Gas Detector"
#define BLYNK_AUTH_TOKEN "Z6aYpChLVw8w2oIuAiyjEuoskQ9TE1Rn"
#define gasPin 32 //letak pin gas value
#define ledPin 18 //letak pin led
#define buzzerPin 2 //letak pin buzzer
#define servoPin 4 //letak pin servo (pintu)
#define gasThreshold 500 //definisi ambang batas gas untuk kondisi bahaya
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h> //library ESP32
#include <ESP32Servo.h> //library servo
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
Servo evacServo; // nama servo
int gasVal = 0; //gas value
void setup() {
Serial.begin(115200); //serial communication pada baud rate 115200 bits
Serial.println("Menghubungkan pada Blynk...");
pinMode(ledPin, OUTPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(gasPin, INPUT);
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
if (Blynk.connected()) {
Serial.println("Simulator online!"); //debugging untuk koneksi berhasil
}
else {
Serial.println("Error. Gagal terkoneksi!"); //debugging untuk koneksi gagal
}
evacServo.attach(servoPin); //set up letak pin servo esp
}
void loop() {
gasVal = analogRead(gasPin);
gasVal = map(gasVal, 0, 4095, 0, 1024);
if (gasVal > gasThreshold) { //gas value lebih dari 500
digitalWrite(ledPin, HIGH);//led menyala
digitalWrite(buzzerPin, HIGH); // alarm berbunyi
Blynk.virtualWrite(V1, 1);
Blynk.virtualWrite(V2, "Bahaya!"); //pin untuk kondisi lingkungan pada blynk
evacServo.write(0); //letak posisi servo 0 derajat
Blynk.virtualWrite(V3, "Pintu Darurat Terbuka!"); //pin untuk label kondisi pintu pada blynk
}
else { //gas value kurang dari 500
digitalWrite(ledPin, LOW); //led mati
digitalWrite(buzzerPin, LOW);//alarm mati
Blynk.virtualWrite(V1, 0);
Blynk.virtualWrite(V2, "Situasi Aman"); //pin untuk kondisi lingkungan pada blynk
evacServo.write(90); //letak posisi servo 90 derajat
Blynk.virtualWrite(V3, "Pintu Darurat Tertutup"); //pin untuk label kondisi pintu pada blynk
}
Blynk.virtualWrite(V0, gasVal); //menampilkan volume gas blynk
Blynk.run();
Serial.println(gasVal); //menampilkan volume gas diwokwi
delay(10);
}