Lompat ke konten utama
Iklan

Cara Membuat Alat Penyiram Tanaman Otomatis dengan Arduino

Tanaman yang lupa disiram saat ditinggal mudik atau sekadar lupa karena sibuk adalah masalah yang sangat umum — dan sangat cocok diselesaikan dengan Arduino. Proyek ini menggabungkan tiga hal yang sudah dibahas terpisah di blog ini: sensor kelembaban, relay, dan pompa air kecil, menjadi satu sistem yang bekerja sendiri tanpa campur tangan Anda sama sekali.

Sensor kelembaban tanah sederhana
Sensor kelembaban tanah. Foto: Sealman / Wikimedia Commons, lisensi CC BY-SA 4.0.

Cara Kerja Sistem

Logikanya sederhana: sensor kelembaban tanah membaca kadar air di media tanam setiap beberapa saat. Kalau nilainya menunjukkan tanah kering, Arduino mengaktifkan relay yang menyalakan pompa air mini selama beberapa detik, lalu mati lagi. Siklus ini berulang otomatis tanpa perlu diawasi.

Alat dan Bahan

KomponenJumlahCatatan
Arduino Uno / Nano1Board apa pun bisa
Sensor kelembaban tanah (higrometer)1Modul dengan output analog dan digital
Modul relay 1 channel1Lihat detail pemakaian di artikel relay
Pompa air mini submersible (DC 5–12V)1Jenis yang biasa dipakai di akuarium kecil
Selang kecilsecukupnyaMenyalurkan air dari wadah ke tanaman
Adaptor/baterai sesuai tegangan pompa1Jangan menyuplai pompa langsung dari Arduino

Skema Penyambungan

Arduino 5V GND A0 Pin 7 Sensor Kelembaban VCC GND AO Modul Relay VCC GND IN Pin 7 → IN relay Pompa + Jalur putus-putus: daya pompa terpisah, dialirkan lewat kontak relay

Kode Lengkap

const int pinSensor = A0;
const int pinRelay = 7;

const int ambangKering = 550;   // sesuaikan lewat kalibrasi
const unsigned long durasiSiram = 4000;   // 4 detik menyiram
const unsigned long jedaCekBerikutnya = 3600000UL; // cek tiap 1 jam

void setup() {
  pinMode(pinRelay, OUTPUT);
  digitalWrite(pinRelay, HIGH); // HIGH = mati, untuk relay active LOW
  Serial.begin(9600);
}

void loop() {
  int nilai = analogRead(pinSensor);
  Serial.print("Kelembaban (mentah): ");
  Serial.println(nilai);

  if (nilai > ambangKering) {
    Serial.println("Tanah kering, menyiram...");
    digitalWrite(pinRelay, LOW);       // nyalakan pompa
    delay(durasiSiram);
    digitalWrite(pinRelay, HIGH);      // matikan pompa
    Serial.println("Selesai menyiram.");
  } else {
    Serial.println("Tanah masih lembab, tidak perlu disiram.");
  }

  delay(jedaCekBerikutnya);
}

Catatan penting soal angka ambangKering: sensor kelembaban tanah membaca nilai terbalik — makin basah tanahnya, makin kecil angkanya, dan makin kering, makin besar. Nilai 550 di kode ini hanya perkiraan awal. Cara mengkalibrasinya: celupkan sensor ke gelas berisi air (catat angkanya), lalu keringkan sepenuhnya di udara (catat angkanya), ambil nilai tengah di antara keduanya sebagai ambang.

Kenapa Memakai delay() di Sini Tidak Masalah

Di artikel motor servo sebelumnya, Anda belajar menghindari delay() supaya program tetap responsif. Di proyek ini, delay(durasiSiram) dan delay(jedaCekBerikutnya) sengaja dipakai karena Arduino memang tidak punya tugas lain yang harus berjalan bersamaan — satu-satunya pekerjaannya adalah mengecek sensor lalu tidur panjang. Prinsipnya bukan "delay selalu buruk", tapi "hindari delay saat ada tugas lain yang perlu tetap berjalan".

Mencegah Pompa Menyala Terus-menerus

Risiko terbesar pada sistem seperti ini bukan tanaman kering, tapi pompa menyala tanpa henti karena sensor rusak, kabel lepas, atau kalibrasi salah — yang bisa membanjiri pot atau membakar motor pompa yang berjalan kering tanpa air. Tambahkan pengaman sederhana ini:

const int batasSiramPerHari = 4;
int hitunganSiram = 0;
unsigned long waktuReset = 0;

void loop() {
  if (millis() - waktuReset > 86400000UL) { // reset tiap 24 jam
    hitunganSiram = 0;
    waktuReset = millis();
  }

  int nilai = analogRead(pinSensor);

  if (nilai > ambangKering && hitunganSiram < batasSiramPerHari) {
    digitalWrite(pinRelay, LOW);
    delay(durasiSiram);
    digitalWrite(pinRelay, HIGH);
    hitunganSiram++;
  }

  delay(jedaCekBerikutnya);
}

Dengan batas maksimal penyiraman per hari, kerusakan sensor paling buruk hanya membuat tanaman kurang air — jauh lebih aman daripada risiko banjir atau pompa terbakar.

Masalah yang Sering Muncul

GejalaPenyebab dan Solusi
Nilai sensor selalu 1023 atau selalu 0 Kabel data tidak tersambung dengan benar, atau sensor rusak akibat korosi (lihat poin berikutnya).
Sensor cepat berkarat setelah beberapa minggu Wajar untuk sensor jenis resistif murah. Pertimbangkan sensor kapasitif yang lebih tahan korosi untuk pemakaian jangka panjang.
Pompa menyala tapi air tidak mengalir Selang terlipat, atau pompa berjalan kering karena wadah air sudah kosong — cek volume air rutin.
Arduino restart saat pompa menyala Sama seperti kasus relay pada umumnya: beri catu daya terpisah untuk pompa, sambungkan GND-nya ke GND Arduino.

Pengembangan Lanjutan

Setelah versi dasar berjalan, beberapa penambahan yang bisa dicoba: tampilkan status kelembaban di LCD I2C supaya terlihat tanpa laptop, atau kirim notifikasi ke Telegram setiap kali sistem menyiram memakai teknik dari artikel notifikasi Telegram — sehingga Anda tetap tahu kondisi tanaman meski sedang di luar rumah.

Iklan
0 Komentar

Berkomentarlah dengan sopan dan menggunakan bahasa yang semestinya.