#define BLYNK_TEMPLATE_ID "TMPL6ci-42n6F"
#define BLYNK_TEMPLATE_NAME "Smart Farming"
#define BLYNK_AUTH_TOKEN "SL_vt6GJcRZ1XloG9kbYElda2tBKmlh1"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <Ultrasonic.h>
// Informasi WiFi
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
// Definisi Pin
#define TRIG_PIN 12 // ESP32 GPIO 12
#define ECHO_PIN 13 // ESP32 GPIO 13
#define LDR_PIN 36 // ESP32 GPIO 36
#define RELAY_PIN 14 // ESP32 GPIO 14
#define BUZZER_PIN 27 // ESP32 GPIO 27
#define LED_PIN 26 // ESP32 GPIO 26
Ultrasonic ultrasonic(TRIG_PIN, ECHO_PIN);
bool pumpOn = false;
bool hamaDetected = false;
// Fungsi untuk menangani perubahan status tombol di Blynk
BLYNK_WRITE(V4) {
pumpOn = param.asInt();
digitalWrite(RELAY_PIN, pumpOn ? HIGH : LOW);
digitalWrite(LED_PIN, pumpOn ? HIGH : LOW);
}
void setup() {
Serial.begin(115200);
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
pinMode(LDR_PIN, INPUT);
pinMode(RELAY_PIN, OUTPUT);
pinMode(BUZZER_PIN, OUTPUT);
pinMode(LED_PIN, OUTPUT);
}
void loop() {
Blynk.run();
// Membaca ketinggian air
long distance = ultrasonic.read();
Serial.print("Distance: ");
Serial.println(distance);
Blynk.virtualWrite(V1, distance); // Kirim data ke Blynk (V1)
// Membaca nilai LDR
int ldrValue = analogRead(LDR_PIN);
Serial.print("LDR Value: ");
Serial.println(ldrValue);
Blynk.virtualWrite(V2, ldrValue); // Kirim data ke Blynk (V2)
// Simulasi deteksi hama dengan LDR dan alarm
if (ldrValue < 500) { // Ambang batas deteksi hama (misal, kurang cahaya)
if (!hamaDetected) {
hamaDetected = true;
digitalWrite(BUZZER_PIN, HIGH); // Nyalakan buzzer
Blynk.virtualWrite(V3, 1); // Set nilai V3 untuk menandakan deteksi hama
Blynk.logEvent("hama_detected", "Hama terdeteksi!"); // Kirim notifikasi ke Blynk
}
} else {
hamaDetected = false;
digitalWrite(BUZZER_PIN, LOW); // Matikan buzzer
Blynk.virtualWrite(V3, 0); // Set nilai V3 ke 0
}
delay(2000); // Delay untuk stabilitas
}