#define BLYNK_TEMPLATE_ID "TMPL6EAc4aFi8"
#define BLYNK_TEMPLATE_NAME "Soil Moisture"
#define BLYNK_AUTH_TOKEN "fKJ4fIydTcUAfhChhEQUtQugDYVR7Nhx" // Masukkan Authentication Token dari Blynk
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST"; // Masukkan nama WiFi-mu
char pass[] = ""; // Masukkan password WiFi-mu (biarkan kosong untuk WiFi tanpa password)
#define SOIL_MOISTURE_PIN 35 // Pin untuk sensor kelembaban tanah (GPIO 35)
#define PUMP_PIN 4 // Pin untuk relay atau LED pompa air
int moistureLevel = 0; // Variabel untuk menyimpan nilai kelembaban tanah
void setup() {
pinMode(PUMP_PIN, OUTPUT); // Mengatur pin untuk pompa air sebagai output
digitalWrite(PUMP_PIN, LOW); // Mematikan pompa air saat startup
Serial.begin(115200); // Memulai komunikasi serial
Blynk.begin(auth, ssid, pass); // Memulai koneksi ke Blynk
}
void loop() {
Blynk.run(); // Menjalankan Blynk
readSoilMoisture(); // Membaca kelembaban tanah
}
// Membaca kelembaban tanah dan mengirim datanya ke aplikasi Blynk
void readSoilMoisture() {
moistureLevel = analogRead(SOIL_MOISTURE_PIN); // Membaca nilai dari sensor
int percentage = map(moistureLevel, 1680, 3620, 0, 100); // Mengubah nilai ke persentase (0-100%)
Blynk.virtualWrite(V1, percentage); // Mengirim data ke Blynk
Serial.print("Soil Moisture: ");
Serial.print(percentage);
Serial.println("%");
// Jika kelembaban tanah di bawah 30%, pompa akan menyala
if (percentage < 30) {
digitalWrite(PUMP_PIN, HIGH); // Nyalakan pompa
Blynk.logEvent("low_soil_moisture", "Peringatan: Kelembapan tanah terlalu rendah! Pompa diaktifkan."); // Kirim notifikasi ke Blynk
} else if (percentage >= 40) {
digitalWrite(PUMP_PIN, LOW); // Matikan pompa jika kelembaban cukup
}
}
// Fungsi ini akan dipanggil saat tombol di Blynk ditekan untuk kontrol manual
BLYNK_WRITE(V2) {
int pinValue = param.asInt(); // Membaca status tombol dari Blynk
digitalWrite(PUMP_PIN, pinValue); // Mengontrol pompa air secara manual
}