23 May 2018

Tutorial 17 - Arduino dan Soil Moisture Sensor


Apa khabar pada pembaca setia blog litar projek2u semua? Sihat ke dak tu? Yang paling penting, puasa ke tak? Hehe.. Jangan curi - curi minum air pula waktu berwuduk nanti.. Kot ye pun dahaga sangat, tunggulah waktu Maghrib ye..

Sempena bulan Ramadhan yang mulia ini, saya doakan pembaca semua mendapat keampuanan dan keredhaan dari Allah s.w.t.. Amin...

Pada entry kali ini, saya akan berkongsikan sedikit ilmu berkaitan sensor yang agak bermanfaat dalam kehidupan harian kita, iaitu Soil Moisture Sensor. Komponen ini memang sangat sesuai digunakan pada projek - projek yang bertemakan pertanian. Kenapa? Sensor ini biasa digunakan untuk mengukur tahap kelembapan tanah pada kebun, ladang, padang golf, padang bola sepak dan lain-lain lagi.

Soil Moisture Sensor
Apabila membeli sensor jenis ini, anda akan memperoleh 2 komponen, iaitu:
  1. Sensor ( yang macam garfu tu )
  2. Comparator ( warna biru )

Jika dilihat pada struktur sensor ini, terdapat 2 hujung yang tajam macam garfu la. Mengapa ek?
Ini bagi memudahkan kepada pengguna untuk mencucuk atau menenggelamkan sensor ini ke dalam tanah.

Kenapa nak kena cucuk dalam tanah pulak??
Kan kita nak ukur tahap kelembapan tanah.. kena la cucuk kat tanah.. Takkan nak cucuk sensor ni dalam lubang hidung pulak.. Kan? Apa punya soalan la ni..

Jadi, pada kali ini, saya nak kongsikan pada pembaca semua cara untuk membuat satu projek yang ringkas menggunakan Soil Moisture Sensor ini. Projek adalah bertemakan pertanian iaitu Automatic Plant Watering System atau dalam bahasa Melayu, Sistem Penyiraman Pokok Automatik. Projek ini berfungsi dengan mengesan kelembapan tanah secara berterusan. Apabila kelembapan tanah berada pada paras rendah (40% dan ke bawah), Arduino akan menghidupkan pam bagi menyiram air ke kawasan yang kering tadi selama 20 saat. Selepas tamat 20 saat, pam akan berhenti dan sensor akan kembali menngesan kelembapan tanah. Proses ini berlaku secara berterusan. 

Walaubagaimanapun, saya akan menggantikan relay dengan LED pada pin 13 bagi memudahkan penulisan tutorial ini. Sekiranya Tuan/Puan/Cik berjaya dengan menggunakan LED, sudah pasti anda berjaya juga dengan menggunakan relay kerana kedua-duanya dikawal secara digital.

Komponen yang diperlukan:
  1. Arduino UNO
  2. Soil Moisture Sensor
  3. Kabel penyambung
Cara Sambungan

How to connect it?
Sambungkan antara bahagian sensor dengan comparator seperti diatas. Akan terdapat tanda ground (3 line macam simbol Adidas) pada sensor dan comparator yang menunjukkan ianya adalah bahagian negatif. Sambungkan bahagian ini dan pin yang ke-2 itu pastinya bahagian positif.

Seterusnya pada bahagian keluaran comparator, terdapat 3 pin yang perlu disambungkan pada Arduino. Eh, kenapa 3 pula? Bukan ada 4 pin ke? Ya, seperti yang kita nampak pada gambar diatas, ada 4 pin iaitu:
  1. Vcc
  2. GND
  3. Digital Output (D0)
  4. Analog Output (A0)
Pin Vcc dan GND sudah wajib disambungkan pada Arduino. Persoalannya sekarang, mana satu kita nak guna? A0 atau D0?

Anda bebas memilih sama ada ingin gunakan A0 atau D0. Untuk guna D0, sensor mengesan hanya 2 keadaan sahaja sama ada tanah kering atau basah. 2 keadaan sahaja. Jika tanah basah, sensor akan hantar isyarat HIGH (1) manakala jika tanah kering, sensor akan hantar LOW (0).

Jika gunakan A0, kita boleh memilih tahap kelembapan yang ingin digunakan. Ini disebabkan analog dapat mengukur dari 0 hingga ke 1027. 0 adalah paling kering, manakala 1027 adalah paling lembap.
Jika kita nak air mula dipam sekiranya tahap kelembapan pada kadar 50%, maka, kita boleh membuat tetapan dengan mengambil nilai 1027 darab 0.5 = 513. Jika nak 40% kelembapan, kita tetapkan nilai 1027 darab 0.4 =  411.. Dekat mana nak buat tetapan?? Kat dalam coding la.. Sabaq la sat... Cheq nak tunjuk la ni..

Aturcara:

1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
const int MoistureSensor = A0;     // sambungkan pin A0 comparator pada pin A0 Arduino
const int waterPump =  13;         // Saya gunakan LED bagi menggantikan relay

int SensorState = 0;               // declare pembolehubah yang mana semua bacaan yang diterima akan disimpan di dalam ini

void setup() {
  
  pinMode(waterPump, OUTPUT);      // tetapkan water pump sebagai output
  pinMode(MoistureSensor, INPUT);  // tetapkan moisture sensor sebagai input
}

void loop() {
  
  SensorState = analogRead(MoistureSensor); // baca nilai yang diterima oleh sensor pada pin A0 secara analog iaitu 0 hingga 1027

  if (SensorState < 411)           // jika bacaan kelembapan kurang dari 40%:
  {
    digitalWrite(waterPump, HIGH); // waterpump akan ON
    delay (20000);                 // tunggu 20 saat
    digitalWrite(waterPump, LOW);  // tutup semula water pump
  } 
  
  else 
  {
    digitalWrite(waterPump, LOW);  // jika bacaan kelembapan lebih dari 40%, jangan hidupkan pump
  }
}

Jika berjaya, anda boleh ke langkah seterusnya, iaitu menggantikan LED pada pin 13 dengan menggunakan pam air yang sebenar. Litar geganti diperlukan.

Apa? Tak tau nak buat sambungan litar relay macam mana? Takpe, boleh klik pada pautan di bawah untuk melihat kembali tutorial saya berkaitan relay.
  1. Relay 1
  2. Relay 2

SELAMAT MENCUBA & SEMOGA BERJAYA