Praktikum Smart Irrigation: ESP32, Sensor Kelembapan Tanah, dan Pompa Otomatis
Bangun smart irrigation dengan ESP32, sensor kelembapan tanah kapasitif, relay, histeresis, kalibrasi ADC, dan fail-safe durasi pompa.
Artikel ini disusun sebagai panduan teknis Ruang IoT. Gunakan daftar isi untuk berpindah antarbagian dan ikuti langkah secara berurutan ketika artikel memuat praktik atau konfigurasi.
Smart irrigation adalah contoh praktikum IoT yang menggabungkan pembacaan sensor analog, pengambilan keputusan, aktuator, dan telemetry. Pada versi ini ESP32 membaca sensor kelembapan tanah kapasitif, mengubah nilai mentah menjadi persentase hasil kalibrasi, lalu menyalakan pompa DC melalui modul relay ketika media tanam terlalu kering.
Keselamatan: praktikum ditujukan untuk pompa DC tegangan rendah. Jangan menghubungkan listrik PLN/mains langsung ke breadboard atau relay tanpa kompetensi, enclosure, proteksi, dan prosedur kelistrikan yang sesuai.
Tujuan praktikum
- Memahami ADC ESP32 dan pentingnya kalibrasi.
- Menerapkan threshold dengan histeresis agar relay tidak berkedip di sekitar batas.
- Membatasi durasi pompa sebagai proteksi dasar.
- Menghasilkan telemetry yang dapat divisualisasikan pada dashboard.
Perangkat dan rangkaian
| Komponen | Koneksi utama |
|---|---|
| Sensor kelembapan kapasitif | AO → GPIO 34; VCC/GND sesuai modul |
| Relay 1 channel 3.3V-compatible | IN → GPIO 26 |
| Pompa DC tegangan rendah | Melalui kontak relay dan catu pompa terpisah |
| ESP32 | Ground sensor/relay harus referensi bersama sesuai modul |
GPIO 34 dipilih sebagai input analog pada ESP32 klasik; board ESP32 lain dapat memiliki pemetaan ADC berbeda. Periksa dokumentasi board Anda sebelum merakit.
Kalibrasi sensor tanah
Jangan langsung menganggap nilai ADC sebagai persen. Catat rawDry ketika probe berada pada media kering dan rawWet pada kondisi basah yang menjadi acuan. Nilai ini berbeda antar sensor, catu, media, dan board. Pada program, dua nilai tersebut dipakai untuk pemetaan persentase.
Program kontrol dengan histeresis
const int SOIL_PIN = 34;
const int RELAY_PIN = 26;
int rawDry = 3100; // ganti dari hasil kalibrasi
int rawWet = 1450; // ganti dari hasil kalibrasi
const int START_PUMP_BELOW = 35;
const int STOP_PUMP_ABOVE = 50;
const unsigned long MAX_PUMP_MS = 15000;
bool pumpOn = false;
unsigned long pumpStartedAt = 0;
int soilPercent() {
int raw = analogRead(SOIL_PIN);
int pct = map(raw, rawDry, rawWet, 0, 100);
return constrain(pct, 0, 100);
}
void setPump(bool on) {
pumpOn = on;
digitalWrite(RELAY_PIN, on ? LOW : HIGH); // sesuaikan active LOW/HIGH relay
if (on) pumpStartedAt = millis();
}
void setup() {
Serial.begin(115200);
pinMode(RELAY_PIN, OUTPUT);
setPump(false);
}
void loop() {
int moisture = soilPercent();
if (!pumpOn && moisture < START_PUMP_BELOW) {
setPump(true);
}
if (pumpOn && moisture > STOP_PUMP_ABOVE) {
setPump(false);
}
if (pumpOn && millis() - pumpStartedAt >= MAX_PUMP_MS) {
setPump(false); // fail-safe durasi
}
Serial.printf("soil=%d%% pump=%s\n", moisture, pumpOn ? "ON" : "OFF");
delay(1000);
}Tambahkan telemetry
Setelah logika lokal stabil, kirim tiga variabel ke platform IoT: soil_moisture, pump_state, dan raw_adc. Menyimpan nilai mentah penting karena membantu mendeteksi drift sensor dan mengevaluasi kalibrasi. Gunakan interval telemetry yang lebih lambat daripada loop kontrol, misalnya 5–15 detik.
Skenario pengujian
- Uji tanpa pompa: amati nilai kering dan basah.
- Pastikan persentase bergerak ke arah yang benar.
- Hubungkan relay, tetapi gunakan LED indikator terlebih dahulu bila memungkinkan.
- Turunkan kelembapan di bawah threshold dan pastikan output ON.
- Naikkan di atas batas STOP dan pastikan output OFF.
- Uji fail-safe dengan membuat kelembapan tetap rendah; pompa harus berhenti setelah batas waktu.
Evaluasi
Praktikum berhasil jika sensor terkalibrasi, relay tidak berosilasi pada satu nilai batas, dan aktuator selalu berhenti sesuai kondisi atau fail-safe. Untuk implementasi nyata, tambahkan sensor level tangki, proteksi dry-run, enclosure, serta aturan penyiraman berdasarkan karakter tanaman dan lingkungan.
Referensi resmi dan bacaan lanjut
Gunakan dokumentasi resmi berikut untuk memeriksa API, kompatibilitas board, dan perubahan versi library:
Sudah memahami alurnya?
Praktikkan konsep yang baru dipelajari melalui project, perangkat ESP32, telemetry, dashboard, atau Virtual Lab di Ruang IoT.