Ruang IoT · IoT

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.

Penulis
Ruang IoT Admin
Dipublikasikan
12 Agustus 2026
Waktu baca
3 menit

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.

Mulai membaca
Ilustrasi tutorial: Praktikum Smart Irrigation: ESP32, Sensor Kelembapan Tanah, dan Pompa Otomatis
Ilustrasi praktikum Ruang IoT.

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

KomponenKoneksi utama
Sensor kelembapan kapasitifAO → GPIO 34; VCC/GND sesuai modul
Relay 1 channel 3.3V-compatibleIN → GPIO 26
Pompa DC tegangan rendahMelalui kontak relay dan catu pompa terpisah
ESP32Ground 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

  1. Uji tanpa pompa: amati nilai kering dan basah.
  2. Pastikan persentase bergerak ke arah yang benar.
  3. Hubungkan relay, tetapi gunakan LED indikator terlebih dahulu bila memungkinkan.
  4. Turunkan kelembapan di bawah threshold dan pastikan output ON.
  5. Naikkan di atas batas STOP dan pastikan output OFF.
  6. 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:

TUTORIAL SELESAI

Sudah memahami alurnya?

Praktikkan konsep yang baru dipelajari melalui project, perangkat ESP32, telemetry, dashboard, atau Virtual Lab di Ruang IoT.

Buka Ruang IoT