Buka Senin - Jumat jam 08.30 s/d jam 16.30 , Sabtu Jam 8.30 s/d jam 13.00 , Minggu tutup
  • Selamat Datang di Indomaker ❯ Silahkan pesan produk sesuai kebutuhan anda, kami siap melayani.
  • Selamat Datang di Indomaker ❯ Silahkan pesan produk sesuai kebutuhan anda, kami siap melayani.
Beranda » Blog » Cara Bikin Sistem Monitoring Kelembapan Tanah Berbasis Arduino Uno dan Sensor YL69

Cara Bikin Sistem Monitoring Kelembapan Tanah Berbasis Arduino Uno dan Sensor YL69

Diposting pada 8 October 2026 oleh indo maker / Dilihat: 60 kali / Kategori: ,

Pernah nggak sih kamu lagi sayang-sayangnya sama tanaman kesayangan, eh tiba-tiba malah layu gara-gara lupa disiram? Atau justru sebaliknya, tanamannya mendadak busuk karena kamu kebanyakan ngasih air (overwatering)? Masalah klasik ini sering banget bikin kita serba salah dalam merawat tanaman!

Nah, buat mengatasi masalah ini, kita bisa memanfaatkan teknologi mikrokontroler. Kalau sebelumnya kita pernah membahas proyek seru lainnya seperti bikin sistem monitor volume air tandon otomatis pakai arduino uno dan sensor ultrasonik, kali ini kita bakal bikin proyek prototipe “Sistem Monitoring Kelembaban Tanah”.

Proyek ini dirancang menggunakan Arduino Uno, sensor kelembaban tanah YL-69, LCD I2C 16×2, dan buzzer. Dengan sistem ini, kondisi kadar air media tanam bisa kamu pantau secara real-time tanpa perlu menebak-nebak lagi!

Alat dan Bahan

Komponen Jumlah Keterangan
Arduino Uno ATmega328P 1 Unit Mikrokontroler utama sebagai pusat pemrosesan data sistem
Sensor Kelembaban Tanah YL-69 1 Unit Sensor resistif untuk membaca kadar air/kelembaban tanah
Layar LCD I2C 16×2 1 Unit Modul penampil data visual 2 baris 16 karakter (Alamat I2C: 0x20)
Buzzer Aktif 5V 1 Unit Transducer suara sebagai indikator alarm peringatan
Kabel dan Sumber Daya Secukupnya Kabel penghubung rangkaian dan catu daya sistem

Skematik Rangkaian

Untuk merangkai komponen-komponen di atas, kamu bisa mengikuti panduan koneksi pin berikut ini:

  • Sensor Kelembaban Tanah YL-69:
    • Pin VCC dihubungkan ke pin 5V atau 3.3V pada Arduino Uno.
    • Pin GND dihubungkan ke pin GND Arduino Uno.
    • Pin Output Analog (AO) dihubungkan ke Pin Analog A0 pada Arduino Uno.
  • LCD I2C 16×2:
    • Pin VCC dihubungkan ke pin 5V Arduino Uno.
    • Pin GND dihubungkan ke pin GND Arduino Uno.
    • Pin SDA dihubungkan ke pin SDA Arduino Uno.
    • Pin SCL dihubungkan ke pin SCL Arduino Uno (menggunakan komunikasi I2C dengan alamat 0x20).
  • Buzzer Aktif:
    • Pin positif (anoda) dihubungkan ke Pin Digital 8 pada Arduino Uno.
    • Pin negatif (katoda) dihubungkan ke pin GND Arduino Uno.

Cara Kerja dan Pemrograman

Sistem ini bekerja dengan cara membaca sinyal analog dari sensor YL-69. Pembacaan nilai analog ADC (Analog-to-Digital Converter) pada sistem berada pada rentang 0 hingga 1023. Nilai analog mentah tersebut kemudian dikonversi menjadi skala persentase kelembaban tanah (0–100%) dengan menggunakan fungsi map().

Berdasarkan nilai ambang batas (threshold) pada simulasi, sistem membagi kondisi tanah menjadi 3 kategori:

  1. Kering: Nilai ADC < 400. Layar LCD akan menampilkan tulisan "TANAH KERING!!", dan buzzer aktif berbunyi 2 kali sebagai alarm peringatan.
  2. Sedang: Nilai ADC 400–699. Layar LCD menampilkan "Kondisi SEDANG", dan buzzer dalam kondisi mati (LOW).
  3. Optimal / Basah: Nilai ADC >= 700. Layar LCD menampilkan "Kondisi OPTIMAL", dan buzzer dalam kondisi mati (LOW).

Selain menampilkan informasi pada layar LCD, data pembacaan nilai sensor dan persentase kelembaban juga dikirimkan ke Serial Monitor agar pengguna bisa memantau kondisi data secara numerik melalui komputer.

Berikut adalah contoh blok kode program Arduino (C/C++) yang digunakan:

```cpp
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

// Inisialisasi LCD I2C 16x2
LiquidCrystal_I2C lcd(0x20, 16, 2);

// Konfigurasi pin
const int SOIL_PIN = A0;
const int BUZZER_PIN = 8;

// Batas nilai kelembapan
const int BATAS_BASAH = 700;
const int BATAS_SEDANG = 400;

void setup() {
  // Memulai komunikasi Serial Monitor
  Serial.begin(9600);

  // Mengatur pin buzzer sebagai output
  pinMode(BUZZER_PIN, OUTPUT);

  // Inisialisasi LCD
  lcd.init();
  lcd.backlight();

  // Tampilan awal saat sistem dinyalakan
  lcd.setCursor(0, 0);
  lcd.print("Soil Monitor");
  lcd.setCursor(0, 1);
  lcd.print("Loading...");

  delay(1000);
}

void loop() {
  // Membaca nilai analog dari sensor YL-69
  int nilaiSensor = analogRead(SOIL_PIN);

  // Mengubah nilai ADC menjadi persentase kelembapan
  int persenLembap = map(nilaiSensor, 0, 1023, 0, 100);
  persenLembap = constrain(persenLembap, 0, 100);

  // Menampilkan data pada Serial Monitor
  Serial.print("Nilai ADC: ");
  Serial.print(nilaiSensor);
  Serial.print(" | Kelembapan: ");
  Serial.print(persenLembap);
  Serial.println("%");

  // Membersihkan tampilan LCD
  lcd.clear();

  // Kondisi tanah kering
  if (nilaiSensor < BATAS_SEDANG) {
    lcd.setCursor(0, 0);
    lcd.print("TANAH KERING!!");

    lcd.setCursor(0, 1);
    lcd.print("Lembap:");
    lcd.print(persenLembap);
    lcd.print("%");

    // Buzzer berbunyi dua kali
    digitalWrite(BUZZER_PIN, HIGH);
    delay(300);

    digitalWrite(BUZZER_PIN, LOW);
    delay(300);

    digitalWrite(BUZZER_PIN, HIGH);
    delay(300);

    digitalWrite(BUZZER_PIN, LOW);
  }

  // Kondisi kelembapan sedang
  else if (nilaiSensor >= BATAS_SEDANG &&
           nilaiSensor < BATAS_BASAH) {

    digitalWrite(BUZZER_PIN, LOW);

    lcd.setCursor(0, 0);
    lcd.print("Kondisi SEDANG");

    lcd.setCursor(0, 1);
    lcd.print("Lembap:");
    lcd.print(persenLembap);
    lcd.print("%");
  }

  // Kondisi kelembapan optimal
  else {
    digitalWrite(BUZZER_PIN, LOW);

    lcd.setCursor(0, 0);
    lcd.print("Kondisi OPTIMAL");

    lcd.setCursor(0, 1);
    lcd.print("Lembap:");
    lcd.print(persenLembap);
    lcd.print("%");
  }

  // Jeda sebelum pembacaan berikutnya
  delay(1000);
}
```

Secara garis besar, fungsi setup() bertugas melakukan inisialisasi komunikasi serial, mengatur pin output buzzer, serta mengaktifkan layar LCD I2C saat alat pertama kali dinyalakan. Sementara itu, fungsi loop() bertugas menjalankan proses utama secara berulang, mulai dari membaca sinyal sensor, mengonversi nilai, mengirimkan data ke Serial Monitor, menguji kondisi kelembaban berdasarkan threshold, hingga memperbarui tampilan LCD dan indikator suara buzzer.

Pengujian dan Hasil Simulasi Tinkercad

Pengujian seluruh sistem ini dilakukan secara virtual menggunakan platform simulasi Tinkercad. Pada platform tersebut, kondisi tanah disimulasikan menggunakan pengatur slider kelembaban virtual.

Berikut adalah rangkuman hasil pengujian fungsi sensor, LCD, dan buzzer pada berbagai kondisi:

Kondisi Tanah Nilai ADC (0–1023) Persentase Kelembapan Status Tampilan LCD Status Buzzer
Kering 0–399 0%–38% TANAH KERING!! ON (Pola bunyi 2x)
Sedang 400–699 41%–64% Kondisi SEDANG OFF
Optimal 700–870 68%–85% Kondisi OPTIMAL OFF

Perlu diperhatikan bahwa terdapat keterbatasan bawaan (limitation) pada platform simulator Tinkercad, di mana batas maksimum pembacaan sensor tanah virtual berada pada nilai ADC 870 (setara dengan 85% kelembapan). Hal ini sepenuhnya normal pada platform simulator Tinkercad dan bukan disebabkan oleh kerusakan program atau kesalahan penulisan kode.

Tips Penting Implementasi pada Hardware Fisik

Jika kamu berniat merakit proyek ini langsung menggunakan komponen hardware fisik (dunia nyata), ada catatan teknis penting yang wajib kamu ketahui.

Terdapat perbedaan logika antara sensor virtual Tinkercad dengan modul sensor YL-69 fisik asli. Sensor YL-69 bekerja berdasarkan perubahan resistansi listrik pada media tanah, sehingga karakteristik pembacaannya perlu dipahami sebelum diterapkan pada hardware. Untuk mengetahui spesifikasi dan karakteristik modul secara lebih lengkap, kamu bisa melihat datasheet dan referensi sensor YL-69 sebagai panduan tambahan sebelum melakukan kalibrasi dan pengujian.

  • Tinkercad Virtual: Bekerja secara linier (semakin basah tanah, nilai ADC semakin tinggi).
  • Sensor YL-69 Fisik: Bekerja berbasis resistansi listrik. Saat tanah kering, resistansi tanah sangat tinggi sehingga menghasilkan output nilai ADC yang tinggi (mendekati 1023). Sebaliknya, saat tanah basah, konduktivitas air membuat resistansi rendah sehingga output nilai ADC menjadi rendah.

Oleh karena itu, saat diimplementasikan ke hardware fisik, kamu harus membalik logika pada fungsi map() di dalam kode program menjadi:

persenLembap = map(nilaiSensor, 1023, 0, 0, 100);

Selain itu, logika pengkondisian threshold if-else juga harus disesuaikan, di mana status tanah kering justru akan dipicu saat nilai ADC naik di atas batas tertentu (misalnya > 700).

Pro-Tip Sobat Maker: Buat kamu yang merakit di hardware fisik dan layar LCD-nya menyala tapi nggak menampilkan karakter (hanya berupa kotak putih atau gelap), coba putar potensiometer biru penyesuai kontras yang ada di bagian belakang modul LCD I2C. Selain itu, pastikan kamu sudah menginstal library LiquidCrystal_I2C melalui Menu Library Manager di Arduino IDE sebelum melakukan compile program!

Kesimpulan

Sistem Monitoring Kelembaban Tanah Berbasis Arduino Uno dan Sensor YL-69 ini merupakan solusi praktis untuk memantau kondisi kadar air media tanam secara real-time. Dengan adanya indikator LCD dan alarm buzzer, kita dapat mendeteksi kondisi tanah kering secara presisi sehingga mencegah tanaman dari bahaya kekurangan air maupun kelebihan air (overwatering).

Gimana, seru dan mudah dipahami kan proyeknya? Yuk, Sobat Maker langsung cobain buat proyek ini di simulator Tinkercad atau rakit langsung pakai komponen fisik kamu sendiri! Selamat mencoba dan happy making!

Bagikan ke

Cara Bikin Sistem Monitoring Kelembapan Tanah Berbasis Arduino Uno dan Sensor YL69

Saat ini belum tersedia komentar.

Silahkan tulis komentar Anda

Cara Bikin Sistem Monitoring Kelembapan Tanah Berbasis Arduino Uno dan Sensor YL69

Produk yang sangat tepat, pilihan bagus..!

Berhasil ditambahkan ke keranjang belanja
Lanjut Belanja
Checkout
Produk Quick Order

Pemesanan dapat langsung menghubungi kontak dibawah: