[TUTORIAL] Menggunakan Sensor Kelembaban Tanah YL-39 dan YL-69 pada Arduino

Ingin mengukur kelembaban tanah untuk penyiraman tanaman secara otomatis? Mari kita simak tutorial berikut...


on Sab, 06/11/2016 - 21:45
109.754 View

Pendahuluan

Untuk aplikasi tertentu, misalnya pada penyiraman tanaman secara otomatis, kita memerlukan informasi mengenai kelembaban tanah untuk tanaman kita. Karena pengaruh suhu lingkungan, proses penguapan akan berpengaruh pada tingkat kelembaban tanah.

Saat ini telah banyak sensor kelembaban tanah yang beredar di pasaran dengan harga yang relatif terjangkau, salah satunya adalah kombinasi dari YL-39 (modul pengkondisian sinyal) dan YL-69 (probe sensor). Amatilah Gambar 1.

[[{"fid":"794","view_mode":"default","fields":{"format":"default","field_file_image_alt_text[und][0][value]":"soil moisture sensor arduino","field_file_image_title_text[und][0][value]":"soil moisture sensor arduino"},"type":"media","link_text":null,"field_deltas":{"1":{"format":"default","field_file_image_alt_text[und][0][value]":"soil moisture sensor arduino","field_file_image_title_text[und][0][value]":"soil moisture sensor arduino"}},"attributes":{"alt":"soil moisture sensor arduino","title":"soil moisture sensor arduino","height":"403","width":"485","class":"media-element file-default","data-delta":"1"}}]]

Gambar 1. Keterangan sensor kelembaban tanah

Modul sensor ini memiliki 4-pin, yaitu GND (untuk ground), VCC (3.3 - 5Volt), AO (keluaran analog yang akan dibaca oleh Arduino), dan DO (dapat diatur sensitivitasnya menggunakan knb pengatur, dan menghasilkan logika digital HIGH/LOW pada level kelembaban tertentu). Untuk saat ini, hanya tiga pin yang kita manfaatkan, yaitu GND, VCC dan AO.

Hardware

Rangkailah sensor dan Arduino seperti pada Gambar 2.

[[{"fid":"795","view_mode":"default","fields":{"format":"default","field_file_image_alt_text[und][0][value]":"soil moisture sensor arduino","field_file_image_title_text[und][0][value]":"soil moisture sensor arduino"},"type":"media","link_text":null,"field_deltas":{"2":{"format":"default","field_file_image_alt_text[und][0][value]":"soil moisture sensor arduino","field_file_image_title_text[und][0][value]":"soil moisture sensor arduino"}},"attributes":{"alt":"soil moisture sensor arduino","title":"soil moisture sensor arduino","height":"256","width":"506","class":"media-element file-default","data-delta":"2"}}]]

Gambar 2.Pemasangan sensor kelembaban tanah pada Arduino

Dalam penggunaan jangka panjang, memberikan tegangan terus-menerus pada probe akan mempercepat rusaknya probe tersebut, terutama saat tanah dominan dalam keadaan lembab. Oleh karena itu, salah satu alternatifnya adalah menempatan pin VCC pada salah satu pin digital (pada tutorial kali ini di pin 6), dan akan diaktifkan sesaat sebelum sensor mengambil data kelembaban.

Software

Bukalah IDE Arduino. Ketik dan upload-lah skrip di bawah ini. Keterangan program telah disertakan sebagai komentar.

int sensorPin = A0;  // pin sensor
int powerPin = 6;    // untuk pengganti VCC

void setup() {  
  // jadikan pin power sebagai output
  pinMode(powerPin, OUTPUT);
  // default bernilai LOW
  digitalWrite(powerPin, LOW);
  // mulai komunikasi serial
  Serial.begin(9600);
}

void loop() {
  Serial.print("Nilai kelembaban: ");
  Serial.println(bacaSensor());
  // baca setiap 5 detik
  delay(5000);
}

int bacaSensor() {
  // hidupkan power
  digitalWrite(powerPin, HIGH);
  delay(500);
  // baca nilai analog dari sensor
  int nilaiSensor = analogRead(sensorPin);
  digitalWrite(powerPin, LOW);
  // makin lembab maka makin tinggi nilai outputnya
  return 1023 - nilaiSensor;
}

Bukalah serial monitor dan amati hasilnya. Berikut contohnya:

Nilai kelembaban: 50
Nilai kelembaban: 52
Nilai kelembaban: 627
Nilai kelembaban: 635
Nilai kelembaban: 50

Makin lembab, maka sensor akan mengeluarkan nilai lebih besar. Demikian tutorial kali ini.. Semoga bermanfaat :)

Profil Penulis

User Picture
  • Member Since 8 tahun 2 bulan ago
Kusuma Wardana

MATLAB, Mikrokontroler, FPGA, Elektronika, Kontrol/Kendali, Signal Processing

I Nyoman Kusuma Wardana, yang akrab dipanggil Kusuma, lahir dan besar di Bali. Ia tinggal di Desa Wisata Ubud, dan lebih banyak melaksanakan aktivitasnya di Denpasar. Profesinya adalah sebagai staf pengajar di Jurusan Teknik Elektro, Politeknik...

Komentar Terbaru

Comments

permisi mau tanya mengenai kodingan diatas. saya sudah coba kodingannya dan sudah dihubungkan ke sensornya, tapi ketika serial monitornya dibuka tidak menampilkan apapun. hanya kosong saja. butuh penjelasan dan penerangan mengenai hal tersebut. mohon dijawab. terima kasih
Sab, 12/17/2016 - 16:21 Link permanen

Halo mas, biasanya kalau tidak mau muncul di serial itu baud ratenya belum diset. Coba pada serial monitur arduino pada bagian pojok kanan bawah disetting dulu baud ratenya ke 9600.

Jum, 12/23/2016 - 13:17 Link permanen

Permisi, maaf numpang tanya.. saya sudah coba codingan ini, tapi jika saya ingin hasilnya dalam bentuk persen bagaimana ya ? saya sudah mencoba menggunakan map arduino tapi hasilnya tidak berubah. Bagaimana ya ? mohon pencerahan. Terimakasih
Kam, 01/12/2017 - 00:52 Link permanen

Halo Mas, 

Untuk menampilkan data sensor kekembapan dalam persen cara yg paling mudah memang menggunakan fungsi map, mungkin mas bisa coba potongan kode ini:

float persen = map(nilaiAnalogKelembapan,0,1023,0,100);

Saya selalu pakai itu untuk menampilkan dalam bentuk persen, silahkan dicoba jika masih tidak mau silahkan reply lagi

Sen, 01/16/2017 - 11:07 Link permanen

Permisi gan mau bertanya, kenapa fungsi bacaSensor() yang agan buat harus memakai return 1023 - (nilai Sensor), padahal kalau diliat sekilas itu akan membalik nilai yang semula nya sensor membaca kelembaban, akan terbaca menjadi kering.
Sebagai contoh, misal nilai kelembaban tanah = 700, maka nilai fungsi bacaSensor(1023-700=323), malah kebaca mendekati nilai kering, padahal sebenarnya sensor membaca nilai tersebut adalah lembab.

Mohon penjelasannya, terimakasih

Jum, 09/15/2017 - 14:03 Link permanen

Halo,

nilai sensornya memang sengaja dibalik untuk mempermudah pembacaan dikondisi normal. Kalau tidak dibalik, pada kondisi normal nilainya akan terlalu kecil jadi sulit untuk dilakukan mapping ke persentase. Kondisi normal misalnya pada tanah biasa, tetapi jika sensor mau dipasang ke kondisi super basah (sepenuhnya nyelup ke air) maka tidak perlu dibalik nilainya. :D

Jum, 09/15/2017 - 18:38 Link permanen

Baik, terima kasih banyak mas atas penjelasannya.

Kalau boleh saya bertanya lagi, mas tau tidak bagaimana mekanisme pembacaan sensor YL-69. Apakah benar bahwa jika nilai kelembaban yang terbaca besar, maka resistansi yang dihasilkan oleh sensor besar juga sehingga output yang dihasilkan juga besar juga. Rentang 0-1023 itu merupakan besar nilai output analog sensor tsb sekitar 8 bit??

Mohon koreksian nya  kalau saya salah.

Jum, 09/15/2017 - 20:56 Link permanen

Halo,

Untuk mekanisme pembacaan tipe sensor YL-69, ya memang seperti itu semuanya hanya soal resistensi. Sama saja dengan sensor analog lainnya. Dia mengukur nilai voltase yang berubah2 sesuai dengan kondisi hambatan dan arus (V = I x R). Hambatan dan arus ini tentunya berubah karena lingkungan, ketika bagian pengindera (probe) yang berbentuk seperti garpu itu dicelupin, maka ujung anoda dan katoda mulai bisa menghantarkan arus listrik sesuai dengan tingkat kelembapan (biasanya semakin lembap semakin mudah arus mengalir). Nilai voltase inilah yang dijadikan acuan oleh si ADC untuk mengetahui nilai kelembapan.

Untuk rentang 0-1023 itu karena AVR yang dipakai Arduino (ATMega 328) memiliki resolusi ADC sebesar 10Bit (2 ^ 10 = 1024) karena mulai dari 0 jadinya sampai 1023. Bukan bergantung pada nilai output sensor, nilai 1023 itu didapat dari nilai pembaca yang dalam hal ini adalah Arduino. Jadi si Arduino hanya bisa memapping/memetakan nilai 0 - 5V menjadi 0 - 1023. Biasanya semakin tinggi nilai resolusi ADC (pembaca) maka semakin akurat pembacaannnya.

Begitu kurang lebih, semoga bisa memperjelas :D

Sab, 09/16/2017 - 10:44 Link permanen

Permisi mas, mau bertanya sedikit, mudah-mudahan mas tidak bosan sharing ilmu di forum ini.

Pembacaan sensor YL-69 saya kok, semakin lembab maka semakin kecil yaa, apa kira-kira penyebab error nya mas, saya sudah cari datasheet dan komponen dari sensor tsb, namun saya masih belum mendapat titik terang dari permasalahan yang saya hadapi.

Tegangan masukan bagi sensor = 3,3v (saya menggunakan wemos).

Kodingan :

void setup() {
  Serial.begin(115200);
}

void loop() {
  delay(5000);
  
  int yl = analogRead(A0); //pembacaan nilai sensor
  int soil = map(yl,0,1023,0,100); //perubahan rentang nilai analog menjadi persentase
  
  Serial.print("Kelembaban Tanah : ");
  Serial.println(soil);
}

Kam, 09/28/2017 - 22:28 Link permanen

Halo Mas, Terimakasih sudah berkunjung kesini :) Kebetulan sekali, saya juga ada project yang memerlukan pengukuran kelembapan tanah. Besok saya juga mau coba pasang YL-69 di ESP8266... tapi board saya pakai NodeMCU. Jadi saya dapat gambaran permasalahan yang mungkin terjadi jika menggunakan YL-69 pada board dengan logic 3.3V. Kodingan yang rencananya akan saya pakai untuk testing besok adalah kodingan seperti di tutorial diatas. Maka dari itu, silahkan mas pakai juga kodingan diatas, dan bandingkan hasilnya, apakah masih tetap mengecil atau tidak. Silahkan dicopy biar tidak scroll keatas lagi:
  1. int sensorPin = A0;  // pin sensor
  2. int powerPin = D1;   // untuk pengganti VCC agar probe sensor tidak cepat korosi.
  3.  
  4. void setup() {  
  5.   // jadikan pin power sebagai output
  6.   pinMode(powerPin, OUTPUT);
  7.   // default bernilai LOW
  8.   digitalWrite(powerPin, LOW);
  9.   // mulai komunikasi serial
  10.   Serial.begin(9600);
  11. }
  12.  
  13. void loop() {
  14.   Serial.print("Nilai kelembaban: ");
  15.   Serial.println(bacaSensor());
  16.   // baca setiap 5 detik
  17.   delay(5000);
  18. }
  19.  
  20. int bacaSensor() {
  21.   // hidupkan power
  22.   digitalWrite(powerPin, HIGH);
  23.   delay(500);
  24.   // baca nilai analog dari sensor
  25.   int nilaiSensor = analogRead(sensorPin);
  26.   digitalWrite(powerPin, LOW);
  27.   // makin lembab maka makin tinggi nilai outputnya
  28.   nilaiSensor = 1023 - nilaiSensor;
  29.   float persen = map(nilaiSensor,0,1023,0,100);
  30. return persen;
  31. }
Kam, 09/28/2017 - 23:06 Link permanen

Halo mas, selamat siang, salam sejahtera bagi kita semua.

Kebetulan sekali, saya jga sedang meniliti sensor tsb, namun saya juga menemukan error, saat sensor di tancapkan ke tanah dan diberi air, nilai sensor menjadi tidak stabil, terkadang naik, terkadang turun. apa yaa mas penyebabnya?? Mohon pencerahannya.

Kam, 10/26/2017 - 15:18 Link permanen

Halo, selamat siang trimakasih sudah berkunjung :D

Untuk sensor jenis ini memang agak sedikit tricky penggunaannya mas, hal ini karena ada banyak sekali vendor yang buat dengan harga yang sangat super murah jadi berimbas pada kualitas chip komparator maupun probenya.

Berdasarkan pengalaman kita disini, hal ini bisa diatasi melalui kalibrasi pada kode program seperti misalnya menetapkan nilai batas atas dan batas bawah yang normal, kemudian menambahkan sampling dengan cara membaca misalnya 100 kali kemudian dirata-ratakan untuk menghindari kesalahan pembacaan. Untuk mendapatkan nilai normalnya, kita bisa test pada kondisi yang ideal untuk batas atas dan batas bawah. Misalnya, untuk menentukan batas atas mas bisa celupkan ke tanah yang basahnya mas anggap sebagai basah yang paling maksimal, dan begitu juga untuk batas keringnya.

Perlu dicatat, beberapa chip komparator mungkin mengalami gangguan apabila dicelup ke media yang tidak ideal seperti misalnya air. Karena sensor jenis ini umumnya didesain untuk membaca kelembapan tanah, jadi untuk lebih pastinya harus diuji menggunakan tanah yang basah, bukan air saja.

Untuk kode program dari hasil eksperimen kita sedang kita tulis di tutorial terpisah, stay tune *help*

Sab, 10/28/2017 - 11:17 Link permanen

kang cara mengubah nilai yang terbaca sensor YL 69 ini agar bisa menjadi dalam % RH (relatif Humidity) yaitu satuan international gmna ya?? mohon bantuannya nuhun

Sen, 11/06/2017 - 16:41 Link permanen

misi gan, mau nanya
sensor saya walau sudah di celup air kok ga bisa sampe 1023 ya nilainya? padahal coding dah sama dengan yang di atas dan kalo sudah dicelup paling dapet sekitar 700an. apakah sensor saya rusak atau emang segitu kemampuannya?

Min, 03/18/2018 - 06:23 Link permanen

Halo Gan,

silahkan mampir ke sini gan, disini ada penjelasan dan koding terbaru untuk jenis sensor ini.

https://tutorkeren.com/artikel/kode-program-membaca-kelembapan-tanah-yl69-arduino-nodemcu.htm

Semoga bermanfaat. *emo_43*

Sen, 03/19/2018 - 12:23 Link permanen

Permisi, mo nanya untuk sensitivitas sensor yl-69 apa bisa di atur? Soalnya saya pakai buat ngukur kadar air biji bijian (gabah, jagung) ga bisa kebaca. Hasilnya tetep dibaca 0%. Terimakasih... 

Min, 12/01/2019 - 20:47 Link permanen