#define BLYNK_PRINT Serial
#define BLYNK_TEMPLATE_ID "TMPL6HCCxzlIK"
#define BLYNK_TEMPLATE_NAME "Pendeteksi Kebakaran dan Pemadaman Otomatis"
#define BLYNK_AUTH_TOKEN "SrbvJovcQf-KYN4PTS5Zl8VNcanXScmb"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
#define potentiometerPin 4 // Pin untuk potensiometer
#define photoresistorPin 19 // Pin untuk sensor photoresistor
#define buzzerPin 18 // Pin untuk buzzer
#define relayPin 5 // Pin untuk relay module
#define servoPin 2 // Pin untuk servo
int potentiometerValue = 0; // Nilai dari potensiometer
int photoresistorValue = 0; // Nilai dari sensor photoresistor
bool fireDetected = false; // Variabel untuk menyimpan status deteksi api
const int threshold = 100; // Nilai threshold untuk deteksi api dan gas
BlynkTimer timer;
void setup() {
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
timer.setInterval(1000L, checkFire);
pinMode(potentiometerPin, INPUT);
pinMode(photoresistorPin, INPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(relayPin, OUTPUT);
pinMode(servoPin, OUTPUT);
Blynk.virtualWrite(V0, "Tidak ada api");
Blynk.virtualWrite(V1, "Pompa OFF");
Blynk.virtualWrite(V2, "Katup tertutup");
}
void loop() {
Blynk.run();
timer.run();
}
void checkFire() {
potentiometerValue = analogRead(potentiometerPin);
photoresistorValue = analogRead(photoresistorPin);
if (photoresistorValue > threshold && potentiometerValue > threshold) {
// Jika terdeteksi api dan gas
digitalWrite(relayPin, HIGH); // Aktifkan relay
digitalWrite(servoPin, HIGH); // Buka servo
Blynk.virtualWrite(V0, "Api terdeteksi");
Blynk.virtualWrite(V1, "Pompa ON");
Blynk.virtualWrite(V2, "Katup terbuka");
fireDetected = true;
} else {
// Jika tidak terdeteksi api
digitalWrite(relayPin, LOW); // Matikan relay
digitalWrite(servoPin, LOW); // Tutup servo
Blynk.virtualWrite(V0, "Tidak ada api");
Blynk.virtualWrite(V1, "Pompa OFF");
Blynk.virtualWrite(V2, "Katup tertutup");
fireDetected = false;
}
}