Tutorial ini menjelaskan langkah-langkah sederhana untuk menghubungkan dan mengoperasikan sensor kelembaban tanah kapasitif menggunakan LCD 16×2 I2C serta berbagai mikrokontroler: Arduino Uno, ESP32, dan Arduino Mega.
Prinsip Kerja Sensor Kelembaban Tanah Kapasitif
Sensor kelembaban tanah kapasitif bekerja berdasarkan perubahan kapasitansi yang dipengaruhi oleh kadar air dalam tanah. Berbeda dengan sensor resistif yang mengandalkan konduktivitas listrik (dan cepat korosi), sensor kapasitif tidak memiliki elektroda terbuka, sehingga lebih tahan lama dan akurat.
โ๏ธ Bagian-Bagian Utama Sensor Kapasitif:
- Pelat Kapasitif Internal (PCB Trace)
Terdapat dua jalur konduktif di dalam PCB yang berfungsi sebagai pelat kapasitor. Pelat ini tidak terlihat karena berada di dalam lapisan sensor. - Lapisan Dielektrik (Tanah Sekitar)
Ruang di antara pelat kapasitor diisi oleh tanah, yang berfungsi sebagai media dielektrik. Nilai dielektrik tanah berubah tergantung kandungan air. - Rangkaian Oscillator dan Penguat
Sensor memiliki rangkaian elektronik yang mengubah perubahan kapasitansi menjadi sinyal tegangan analog.
๐ฌ Cara Kerja secara Detail:
- Sensor ditancapkan ke tanah
Ketika sensor dimasukkan ke dalam tanah, tanah menjadi bagian dari sistem kapasitor internal sensor. - Air dalam tanah mempengaruhi kapasitansi
Air memiliki konstanta dielektrik tinggi (~80), dibandingkan tanah kering (~3โ7).
โ Semakin banyak air, semakin tinggi kapasitansinya. - Rangkaian pengubah kapasitansi ke tegangan
Rangkaian pada sensor mengukur kapasitansi tersebut dan mengubahnya menjadi sinyal tegangan analog (biasanya 0โ3.3V atau 0โ5V tergantung VCC). - Output tegangan dibaca oleh mikrokontroler
- Tanah basah โ tegangan output lebih rendah
- Tanah kering โ tegangan output lebih tinggi
Mikrokontroler (Arduino/ESP32) membaca tegangan ini sebagai nilai ADC, yang kemudian dapat diolah menjadi persentase kelembaban atau status (Kering/Lembab/Basah).
๐ Karakteristik Sensor Kapasitif (contoh umum):
Kondisi Tanah | Tegangan Output | Nilai ADC (0โ1023 @ 5V) |
---|---|---|
Basah | ~1.0V | ~200โ400 |
Lembab | ~2.0V | ~500โ700 |
Kering | ~3.5โ4.0V | ~800โ950 |
Nilai ini bisa berbeda tergantung jenis tanah dan sensor.
โ Kelebihan Sensor Kapasitif:
- Tidak mudah korosi karena tidak ada elektroda terbuka
- Lebih akurat dan stabil dibanding sensor resistif
- Cocok untuk pemantauan jangka panjang
โ ๏ธ Kekurangan / Hal yang Perlu Diperhatikan:
- Butuh kalibrasi manual tergantung jenis tanah
- Beberapa sensor versi murah bisa mengalami drift suhu (pengaruh suhu terhadap pembacaan)
- Sensor bisa terganggu oleh logam atau larutan garam tinggi dalam tanah
contoh penerapan yang cocok untuk sensor kelembaban tanah kapasitif dalam berbagai bidang:
๐ฟ 1. Otomatisasi Penyiraman Tanaman (Smart Irrigation)
๐ Deskripsi:
Sensor digunakan untuk memantau kelembaban tanah dan secara otomatis mengaktifkan pompa air atau katup solenoid jika tanah terlalu kering.
โ Manfaat:
- Hemat air
- Tanaman tidak overwatering atau kekeringan
- Dapat bekerja 24 jam tanpa intervensi manusia
๐ก 2. Sistem Taman Pintar di Rumah (Smart Garden/Home Farming)
๐ Deskripsi:
Sensor dipasang di pot atau bedeng tanaman untuk memberikan data ke mikrokontroler + LCD, aplikasi smartphone, atau notifikasi cloud.
โ Manfaat:
- Cocok untuk urban farming atau hidroponik
- Monitoring kelembaban dari dalam rumah
- Integrasi ke Alexa/Google Assistant atau IoT platform
๐ 3. Pertanian dan Perkebunan Skala Besar (Agrikultur Presisi)
๐ Deskripsi:
Sensor diletakkan pada berbagai titik lahan, dihubungkan ke jaringan data (LoRa, Zigbee, WiFi), dan digunakan untuk mengatur pola penyiraman berbasis kebutuhan real-time.
โ Manfaat:
- Meningkatkan efisiensi pertanian
- Mencegah pemborosan air dan energi
- Data bisa digunakan untuk analisis kesuburan tanah
๐ฑ 4. Riset & Pendidikan (Edukit / Lab Tanaman)
๐ Deskripsi:
Sensor digunakan dalam praktikum sekolah / universitas untuk mengajarkan:
- Fisika sensor kapasitif
- Mikrokontroler
- Otomatisasi dan pertanian digital
โ Manfaat:
- Murah dan mudah digunakan
- Melatih siswa dalam praktik IoT dan otomasi lingkungan
๐งช 5. Sistem Monitoring Tanaman Berbasis IoT / Web
๐ Deskripsi:
Sensor dipasangkan dengan ESP32/ESP8266 dan hasilnya dikirim ke:
- Web dashboard (misal: Blynk, Thingspeak)
- Notifikasi Telegram
- Data logging untuk analisis kelembaban harian/mingguan
โ Manfaat:
- Akses jarak jauh
- Bisa menyesuaikan waktu penyiraman sesuai cuaca/data real
๐ฟ 6. Kendali Pompa Otomatis di Greenhouse
๐ Deskripsi:
Sensor digunakan untuk mengontrol pompa air berdasarkan kelembaban tanah di dalam rumah kaca. Bisa juga bekerja bersama sensor suhu dan cahaya.
โ Manfaat:
- Menjaga lingkungan mikro tanaman lebih stabil
- Mendukung pertumbuhan optimal dalam kondisi terkendali
๐ข 7. Pemantauan Tanaman Indoor di Kantor / Gedung
๐ Deskripsi:
Digunakan untuk memantau kelembaban tanaman hias di kantor atau taman dalam ruangan. Dapat memicu LED indikator atau notifikasi saat tanaman butuh air.
โ Manfaat:
- Estetika kantor tetap terjaga
- Tidak perlu cek manual satu per satu
๐ Alat dan Bahan:
- Sensor kelembaban tanah kapasitif (analog)
- LCD 16×2 I2C
- Mikrokontroler: Arduino Uno / ESP32 / Arduino Mega
- Kabel jumper
Cara penggunaan menggunakan arduino uno
Arduino Uno adalah salah satu board mikrokontroler yang paling banyak digunakan. Untuk menghubungkan sensor kelembaban dengan Arduino Uno

Arduino Uno
- Sensor:
- AOUT โ A0
- VCC โ 5V
- GND โ GND
- LCD I2C:
- SDA โ SDA
- SCL โ SCL
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Inisialisasi LCD dengan alamat I2C 0x27 dan ukuran 16x2
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int sensorPin = A0; // Pin analog untuk sensor kelembaban tanah
int nilaiADC; // Nilai mentah dari sensor
int persenKelembaban; // Nilai kelembaban dalam persen
String statusTanah; // Status kondisi tanah
void setup() {
Serial.begin(9600);
lcd.begin();
lcd.backlight(); // Nyalakan lampu latar LCD
lcd.setCursor(0, 0);
lcd.print("Monitoring Tanah");
lcd.setCursor(0, 1);
lcd.print("Initializing...");
delay(2000);
lcd.clear();
}
void loop() {
// Baca nilai analog dari sensor
nilaiADC = analogRead(sensorPin);
// Konversi nilai menjadi persen kelembaban
persenKelembaban = map(nilaiADC, 1023, 300, 0, 100); // Kalibrasi sesuai sensor
persenKelembaban = constrain(persenKelembaban, 0, 100); // Batasi 0-100%
// Tentukan status kelembaban tanah
if (persenKelembaban > 70) {
statusTanah = "Basah";
} else if (persenKelembaban > 40) {
statusTanah = "Lembab";
} else {
statusTanah = "Kering";
}
// Tampilkan di Serial Monitor
Serial.println("====================================");
Serial.print("Nilai ADC: ");
Serial.println(nilaiADC);
Serial.print("Kelembaban: ");
Serial.print(persenKelembaban);
Serial.println(" %");
Serial.print("Status Tanah: ");
Serial.println(statusTanah);
Serial.println("====================================");
Serial.println();
// Tampilkan di LCD
lcd.setCursor(0, 0);
lcd.print("Kelembaban:");
lcd.setCursor(11, 0);
lcd.print(persenKelembaban);
lcd.print("% ");
lcd.setCursor(0, 1);
lcd.print("Status:");
lcd.setCursor(8, 1);
lcd.print(" "); // Clear area
lcd.setCursor(8, 1);
lcd.print(statusTanah);
delay(2000);
}
Cara Penggunaan dengan ESP32
ESP32 adalah mikrokontroler yang lebih canggih dengan konektivitas Wi-Fi dan Bluetooth. Dengan ESP32, Anda dapat mengirimkan data kelembaban tanah ke server atau aplikasi web melalui jaringan

ESP32
SCL โ GPIO22
Sensor:
AOUT โ GPIO34 (atau pin analog lainnya)
VCC โ 3.3V / 5V*
GND โ GND
LCD I2C:
SDA โ GPIO21
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Inisialisasi LCD I2C dengan alamat 0x27 dan ukuran 16x2
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int sensorPin = 34; // Gunakan pin input analog ESP32 (misalnya GPIO34)
int nilaiADC;
int persenKelembaban;
String statusTanah;
void setup() {
Serial.begin(115200); // Kecepatan serial untuk ESP32
// Inisialisasi LCD
lcd.begin();
lcd.backlight();
// Tampilkan pesan awal
lcd.setCursor(0, 0);
lcd.print("Monitoring Tanah");
lcd.setCursor(0, 1);
lcd.print("ESP32 + LCD");
delay(2000);
lcd.clear();
}
void loop() {
// Baca nilai analog dari sensor
nilaiADC = analogRead(sensorPin);
// Konversi ke persen kelembaban (kalibrasi sesuai sensor kamu)
persenKelembaban = map(nilaiADC, 4095, 1500, 0, 100);
persenKelembaban = constrain(persenKelembaban, 0, 100);
// Tentukan status
if (persenKelembaban > 70) {
statusTanah = "Basah";
} else if (persenKelembaban > 40) {
statusTanah = "Lembab";
} else {
statusTanah = "Kering";
}
// Tampilkan di Serial Monitor
Serial.println("==================================");
Serial.print("Nilai ADC: ");
Serial.println(nilaiADC);
Serial.print("Kelembaban: ");
Serial.print(persenKelembaban);
Serial.println(" %");
Serial.print("Status Tanah: ");
Serial.println(statusTanah);
Serial.println("==================================\n");
// Tampilkan ke LCD
lcd.setCursor(0, 0);
lcd.print("Kelembaban:");
lcd.setCursor(11, 0);
lcd.print(persenKelembaban);
lcd.print("% ");
lcd.setCursor(0, 1);
lcd.print("Status:");
lcd.setCursor(8, 1);
lcd.print(" ");
lcd.setCursor(8, 1);
lcd.print(statusTanah);
delay(2000);
}
Cara Penggunaan dengan Arduino Mega
Arduino Mega memiliki lebih banyak pin dan lebih banyak port serial dibandingkan dengan Arduino Uno, yang membuatnya lebih fleksibel

Arduino Mega
- Sensor:
- AOUT โ A0 (atau pin analog lainnya)
- VCC โ 5V
- GND โ GND
- LCD I2C:
- SDA โ Pin SDA
- SCL โ Pin SCL
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Inisialisasi LCD I2C (alamat default 0x27), ukuran 16x2
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Pin analog tempat sensor terhubung
const int sensorPin = A0;
int nilaiADC;
int persenKelembaban;
String statusTanah;
void setup() {
Serial.begin(9600);
lcd.begin();
lcd.backlight();
// Tampilkan pesan awal
lcd.setCursor(0, 0);
lcd.print("Monitoring Tanah");
lcd.setCursor(0, 1);
lcd.print("Arduino Mega");
delay(2000);
lcd.clear();
}
void loop() {
// Baca nilai ADC dari sensor
nilaiADC = analogRead(sensorPin);
// Kalibrasi sesuai sensor (semakin tinggi ADC = semakin kering)
persenKelembaban = map(nilaiADC, 1023, 300, 0, 100); // sesuaikan angka!
persenKelembaban = constrain(persenKelembaban, 0, 100);
// Tentukan status tanah
if (persenKelembaban > 70) {
statusTanah = "Basah";
} else if (persenKelembaban > 40) {
statusTanah = "Lembab";
} else {
statusTanah = "Kering";
}
// Serial Monitor
Serial.println("==================================");
Serial.print("Nilai ADC: ");
Serial.println(nilaiADC);
Serial.print("Kelembaban: ");
Serial.print(persenKelembaban);
Serial.println(" %");
Serial.print("Status Tanah: ");
Serial.println(statusTanah);
Serial.println("==================================\n");
// Tampilkan di LCD
lcd.setCursor(0, 0);
lcd.print("Kelembaban: ");
lcd.setCursor(12, 0);
lcd.print(persenKelembaban);
lcd.print("% ");
lcd.setCursor(0, 1);
lcd.print("Status: ");
lcd.setCursor(8, 1);
lcd.print(" "); // clear
lcd.setCursor(8, 1);
lcd.print(statusTanah);
delay(2000);
}
- Pantau Hasil Pembacaan
Setelah diunggah, kamu dapat melihat:- Persentase kelembaban tanah pada LCD
- Status tanah (kering, lembab, basah)
- Dan nilai sensor di Serial Monitor (jika ditampilkan)
๐ฏ Tips Kalibrasi:
Setiap sensor bisa memiliki rentang bacaan yang sedikit berbeda. Lakukan uji coba pada tanah kering dan basah untuk menentukan batas nilai ADC yang tepat.