// Deklarasi token, template ID, dan nama template Blynk
#define BLYNK_TEMPLATE_ID "TMPL6TSvpfyZO"
#define BLYNK_TEMPLATE_NAME "Gas Alert"
#define BLYNK_AUTH_TOKEN "gj0olkTtU8ZS2LRWnFYhQtMMWIT1oX6K"
#define BLYNK_PRINT Serial
#include <ESP32Servo.h>
#include <BlynkSimpleEsp32.h>
#include <WiFi.h>
BlynkTimer timer;
// Deklarasi pin
int potPin = 2;
int buzzerPin = 12;
int servoPin = 13;
int gasSensorPin = 34; // diagram menggunakan sensor temperatur untuk simulasi
int ledPin = 14;
// Inisialisasi servo
Servo mendeteksiGas;
void setup() {
// Mulai komunikasi serial
Serial.begin(9600);
// Set mode pin
pinMode(buzzerPin, OUTPUT);
pinMode(ledPin, OUTPUT);
// Attach servo
mendeteksiGas.attach(servoPin);
// Mulai koneksi Blynk
Blynk.begin(BLYNK_AUTH_TOKEN, "Wokwi-GUEST", "");
timer.setInterval(2500L, sendSensor);
}
void sendSensor (){
// Baca nilai sensor gas
int gasValue = analogRead(gasSensorPin);
Blynk.virtualWrite(V0, gasValue)
Serial.print("Gas Sensor Value: ");
Serial.println(gasValue);
if (gasValue > 0){
// Jika iya, putar servo ke posisi 0, nyalakan LED tanpa buzzer
mendeteksiGas.write(potValue);
digitalWrite(ledPin, HIGH);
noTone(buzzerPin);
Blynk.logEvent("gas_warning", "GAS TERDETEKSI");
}
else if (gasValue > 200){ // sesuaikan dengan sensor yang digunakan
// Jika melewati ambang batas, aktifkan buzzer
tone(buzzerPin, 1000);
Blynk.logEvent("gas_alert", "GAS BOCOR");
}
else {
// Jika tidak, sesuaikan posisi servo berdasarkan nilai potensiometer,
// matikan LED, matikan buzzer
int angle = map(potValue, 0, 1023, 0, 180);
mendeteksiGas.write(angle);
digitalWrite(ledPin, LOW);
noTone(buzzerPin);
Blynk.logEvent("gas_info", "GAS AMAN");
}
// Tunda eksekusi selama 1 detik
delay(1000);
}
void loop() {
// Jalankan Blynk
Blynk.run();
timer.run();
// Baca nilai potensiometer
int potValue = analogRead(potPin);
Serial.print("Potensiometer Value: ");
Serial.println(potValue);
// Baca nilai sensor gas
int gasValue = analogRead(gasSensorPin);
Serial.print("Gas Sensor Value: ");
Serial.println(gasValue);
}