PERANCANGAN SISTEM KONTROL TANAMAN BAWANG BERBASIS MIKROKONTROLLER


PERANCANGAN SISTEM KONTROL TANAMAN BAWANG BERBASIS MIKROKONTROLLER





Tanaman bawang merah (Allium ascalonicum L.) merupakan salah satu komoditas sayuran dataran rendah yang memiliki umbi yang berlapis, berakar serabut, dengan daun berbentuk silinder berongga. Tanaman bawang merah peka terhadap curah hujan dan intensitas hujan yang tinggi, serta cuaca berkabut. Tanaman bawang merah ini membutuhkan penyinaran cahaya matahari yang maksimal (minimal 70% penyinaran), suhu udara 25-32 °C, dan kelembaban nisbi 50-70%. Tanaman bawang merah memerlukan tanah berstruktur remah, tekstur sedang sampai liat, drainase dan aerasi yang baik, mengandung bahan organik yang cukup, dan pH tanah netral (5,6– 6,5). Tanah yang paling cocok untuk tanaman bawang merah adalah tanah Aluvial atau kombinasinya dengan tanah Glei-Humus atau Latosol. Tanah yang cukup lembab dengan air yang tidak menggenang disukai oleh tanaman bawang merah.

Tanaman bawang merah merupakan tanaman hortikultura yang sudah sejak lama di dibudidayakan oleh petani secara intensif. Komoditas unggulan pertanian ini memberikan kontribusi yang cukup tinggi terhadap perkembangan ekonomi di suatu wilayah. Meskipun saat ini banyak petani bawang merah, namun dalam proses budidayanya masih ditemui berbagai kendala terutama dari segi teknis budidaya karena para petani kurang dalam memperhatikan kualitas kelembaban tanah dan kecukupan air untuk tanaman bawang tersebut.

Maka dari itu diajukan sebuah perancangan sistem kontrol untuk tanaman bawang khususnya bawang merah yang berbasis mikrokontroller, sistem kontrol ini memilki fitur untuk mengontrol banyaknya air yang dibutuhkan tanaman bawang, dan mengontrol kelembaban tanah tanaman bawang tersebut. Sistem kontrol ini menggunakan Arduino, water level sensor, soil moisture sensor, rain sensor, LDR sensor, dan touch sensor. Perancangan sistem kontrol ini diharapkan dapat menyelesaikan permasalahan para petani tanaman bawang yang mengalami gagal panen yang diakibatkan tidak terjaganya kelembaban tanah dan kecukupan airnya, diharapkan juga sistem kontrol dapat meningkatkan hasil panen para petani tanaman bawang.



  1. Membuat prototype aplikasi Sitem Kontrol Tanaman bawang yang dapat mempermudah dalam mengontrol kelembaban tanah dan kecukupan air pada tanaman bawang
  2. Mengaplikasikan konsep – konsep PWM, ADC, dan teori komunikasi mikrokontroller yang telah dipelajari saat praktikum.

 

A. Baterai 



 

B. Soil Moisture

 


   

C.  Water Sensor


 

 

 

D. Rain Sensor


  

E. Touch sensor



F. LDR


 

 

G.  Arduino


 

 

 

H.  LCD


   

I. Motor DC


 

 

J. Motor Servo


a. PWM (Pulse Width Modulation)

PWM atau kepanjangan Pulse Width Modulation, dalam bahasa Indonesia biasa disebut Modulasi Lebar Pulsa. Pada prinsipnya, PWM adalah salah satu teknik modulasi yang mengubah lebar pulsa (pulse width) dengan nilai frekuensi dan amplitudo (tinggi pulsa) yang tetap. PWM Signal ini digunakan menghasilkan sinyal analog dari perangkat Digital yang salah satu contohnya adalah dari Mikrokontroler.

Pembagian Pin PWM:



Setiap Board Arduino memiliki pin PWM dan nilai frekuensi yang berbeda-beda. Karena pada percobaan nanti kita akan menggunakan board arduino nano, maka gunakan salah satu dari pin berikut 3, 5, 6, 9, 10, 11.

 

PWM pada arduino bekerja pada frekuensi 500Hz, artinya 500 siklus/ketukan dalam satu detik. Untuk setiap siklus, kita bisa memberi nilai dari 0 hingga 255. Ketika kita memberikan angka 0, berarti pada pin tersebut tidak akan pernah bernilai 5 volt (pin selalu bernilai 0 volt). Sedangkan jika kita memberikan nilai 255, maka sepanjang siklus akan bernilai 5 volt (tidak pernah 0 volt). Jika kita memberikan nilai 127 (kita anggap setengah

 

dari 0 hingga 255, atau 50% dari 255), maka setengah siklus akan bernilai 5 volt, dan setengah siklus lagi akan bernilai 0 volt. Sedangkan jika jika memberikan 25% dari 255 (1/4 * 255 atau 64), maka 1/4 siklus akan bernilai 5 volt, dan 3/4 sisanya akan bernilai 0 volt, dan ini akan terjadi 500 kali dalam 1 detik.


b. ADC (Analog to Digital Converter)

ADC atau Analog to Digital Converter merupakan salah satu perangkat elektronika yang digunakan sebagai penghubung dalam pemrosesan sinyal analog oleh sistem digital. Fungsi utama dari fitur ini adalah mengubah sinyal masukan yang masih dalam bentuk sinyal analog menjadi sinyal digital dengan bentuk kode-kode digital. Ada 2 faktor yang perlu diperhatikan pada proses kerja ADC yaitu kecepatan sampling dan resolusi. Kecepatan sampling menyatakan seberapa sering perangkat mampu mengkonversi sinyal analog ke dalam bentuk sinyal digital dalam selang waktu yang tertentu. Biasa dinyatakan dalam sample per second (SPS). Sementara Resolusi menyatakan tingkat ketelitian yang dimilliki. Pada Arduino, resolusi yang dimiliki adalah 10 bit atau rentang nilai digital antara 0 - 1023. Dan pada Arduino tegangan referensi yang digunakan adalah 5 volt, hal ini berarti ADC pada Arduino mampu menangani sinyal analog dengan tegangan 0 - 5 volt. Pada Arduino, menggunakan pin analog input yang diawali dengan kode A( A0- A5 padaArduino Uno). Fungsi untuk mengambil data sinyal input analog menggunakan analogRead(pin);

 


 

c. Mikrokontroler

Mikrokontroler adalah suatu chip berupa IC (Integrated Circuit) yang dapat menerima sinyal input, mengolahnya dan memberikan sinyal output sesuai dengan program yang diisikan ke dalamnya. Sinyal input mikrokontroler berasal dari sensor yang merupakan informasi dari lingkungan sedangkan sinyal output ditujukan kepada aktuator yang dapat memberikan efek ke lingkungan. Jadi secara sederhana mikrokontroler dapat diibaratkan sebagai otak dari suatu perangkat/produk yang mempu berinteraksi dengan lingkungan sekitarnya. Mikrokontroler pada dasarnya adalah komputer dalam satu chip, yang di dalamnya terdapat mikroprosesor, memori, jalur Input/Output (I/O) dan perangkat pelengkap lainnya. Kecepatan pengolahan data pada mikrokontroler lebih rendah jika dibandingkan dengan PC. Pada PC kecepatan mikroprosesor yang digunakan saat ini telah mencapai orde GHz, sedangkan kecepatan operasi mikrokontroler pada umumnya berkisar antara 1 – 16 MHz. Begitu juga kapasitas RAM dan ROM pada PC yang bisa mencapai orde Gbyte, dibandingkan dengan mikrokontroler yang hanya berkisar pada orde byte/Kbyte.

Meskipun kecepatan pengolahan data dan kapasitas memori pada mikrokontroler jauh lebih kecil jika dibandingkan dengan komputer personal, namun kemampuan mikrokontroler sudah cukup untuk dapat digunakan pada banyak aplikasi terutama karena ukurannya yang kompak. Mikrokontroler sering digunakan pada sistem yang tidak terlalu kompleks dan tidak memerlukan kemampuan komputasi yang tinggi.

 

 

d. Komunikasi

Kegunaan dasar dari sistem komunikasi adalah menjalankan pertukaran data antara dua pihak. Pada gambar dibawah ini merupakan suatu model komunikasi yang sederhana yaitu komunikasi dua arah. Pada mikrokontroler ada beberapa komunikasi yaitu:

 UART (Universal Asynchronous Receiver-Transmitter) adalah bagian perangkat keras komputer yang menerjemahkan antara bit-bit paralel data dan bit-bit serial. UART biasanya berupa sirkuit terintegrasi yang digunakan untuk komunikasi serial pada komputer atau port serial perangkat peripheral.




Cara kerja komunikasi UART:

Data dikirimkan secara paralel dari data bus ke UART1. Pada UART1 ditambahkan start bit, parity bit, dan stop bit kemudian dimuat dalam satu paket data. Paket data ditransmisikan secara serial dari Tx UART1 ke Rx UART2. UART2 mengkonversikan data dan menghapus bit tambahan, kemudia di transfer secara parallel ke data bus penerima

 Serial Peripheral Interface (SPI) merupakan salah satu mode komunikasi serial synchrounous kecepatan tinggi yang dimiliki oleh ATmega 328. Komunikasi SPI membutuhkan 3 jalur yaituMOSI, MISO, dan SCK. Melalui komunikasi ini data dapat saling dikirimkan baik antara mikrokontroller maupun antara mikrokontroller dengan peripheral lain di luar mikrokontroler. MOSI: Master Output Slave Input Artinya jika dikonfigurasi sebagai master maka pin MOSI sebagai output tetapi jika dikonfigurasi sebagai slave maka pin MOSI sebagai input. MISO: Master Input Slave Output Artinya jika dikonfigurasi sebagai master maka pin MISO sebagai input tetapi jika dikonfigurasi sebagai slave maka pin MISO sebagai output. SCLK: Clock Jika dikonfigurasi sebagai master maka pin CLK berlaku sebagai output tetapi jika

 

dikonfigurasi sebagai slave maka pin CLK berlaku sebagai input. SS/CS: Slave Select/ Chip Select adalah jalur master memilih slave mana yang akan dikirimkan data.


Sinyal clock dialirkan dari master ke slave yang berfungsi untuk sinkronisasi. Master dapat memilih slave mana yang akan dikirimkan data melalui slave select, kemudian data dikirimkan dari master ke slave melalui MOSI. Jika master butuh respon data maka slave akan mentransfer data ke master melalui MISO.

 

 Inter Integrated Circuit atau sering disebut I2C adalah standar komunikasi serial dua arahmenggunakan dua saluran yang didisain khusus untuk mengirim maupun menerima data. Sistem I2C terdiri dari saluran SCL (Serial Clock) dan SDA (Serial Data) yang membawa informasi data antara I2C dengan pengontrolnya.


 

Pada I2C, data ditransfer dalam bentuk message yang terdiri dari kondisi start, Address Frame, R/W bit, ACK/NACK bit, Data Frame 1, Data Frame 2, dan kondisi Stop. Kondisi start dimana saat pada SDA beralih dari logika high ke low sebelum SCL.Kondisi stop dimana saat pada SDA beralih dari logika low ke high sebelum SCL. R/W bit berfungsi untuk menentukan apakah master mengirim data ke slave atau meminta data dari slave. (logika 0 = mengirim data ke slave, logika 1 = meminta data dari slave) ACK/NACK bit berfungsi sebagai pemberi kabar jika data frame ataupun address frame telahditerima receiver.

 

e. Baterai 

 



         Baterai (Battery) adalah sebuah alat yang dapat merubah energi kimia yang disimpannya menjadi energi Listrik yang dapat digunakan oleh suatu perangkat Elektronik. Hampir semua perangkat elektronik yang portabel seperti Handphone, Laptop, Senter, ataupun Remote Control menggunakan Baterai sebagai sumber listriknya. Dengan adanya Baterai, kita tidak perlu menyambungkan kabel listrik untuk dapat mengaktifkan perangkat elektronik kita sehingga dapat dengan mudah dibawa kemana-mana. Dalam kehidupan kita sehari-hari, kita dapat menemui dua jenis Baterai yaitu Baterai yang hanya dapat dipakai sekali saja (Single Use) dan Baterai yang dapat di isi ulang (Rechargeable).

 

f. Penggunaan Sensor

 Soil moisture sensor




Soil Moisture Sensor adalah suatu modul yang berfungsi untuk mendeteksi tingkat kelembaban tanah dan juga dapat digunakan untuk menentukan apakah ada kandungan air di tanah/ sekitar sensor. Cara penggunaan modul ini cukup mudah, yakni dengan memasukkan sensor ke dalam tanah dan setting potensiometer untuk mengatur sensitifitas dari sensor. Keluaran dari sensor akan bernilai 1 / 0 ketika kelembaban tanah menjadi tinggi / rendah yang dapat di treshold dengan potensiometer. Spesifikasi dari sensor ini adalah :

1. Comparator menggunakan LM393
2. Hanya menggunakan 2 plat kecil sebagai sensor
3. Supply Tegangan 3.3-5 VDC
4. Digital output D0 dapat secara langsung dikoneksikan dengan MCU dengan mudah

Sensor ini digunakan untuk mengukur kadar air didalam tanah, atau juga bisa untuk menedeteksi cuaca yang terjadi hari kemarin dan hari ini melalui media tanah, prinsip kerja sensor ini sangat simpel yaitu ada dua buah lempengan yang mana jika kedua buah lempengan terkena media penghantar maka elektron akan berpindah dari kutub + ke kutub - sehingga terjadilah arus yang akan menimbulkan tegangan. Pergerakan elektron dimanfaatkan untuk mendeteksi apakah ada air di tanah ataukah tidak, jika tanah basah berarti tanah tersebut mengandung media penghantar, namun jika tanah kering maka tidak mengandung media penghantar elektron, sehingga pada adc mikrokontroller akan terlihat perbedaannya.

 


 Water level Sensor

 


 

 

Prinsip kerja dari sensor water level adalah membaca resistasi yang dihasilkan oleh air yang mengenai lempengan yang bergaris-garis pada sensor tersebut, semakin banyak air yang mengenai permukaan bergaris garis tersebut maka hambatannya semakin kecil dan ketika tidak ada air yang mengenai lempengan sensor tersebut maka hambatanya sangat besar atau bisa dikatakan tidak terhingga.

Karakteristik:
1. Working voltage: 5V
2. Working Current: <20ma
3. Interface: Analog
4. Width of detection: 40mm×16mm
5. Working Temperature: 10℃~30℃
6. Weight: 3g
7. Size: 65mm×20mm×8mm
8. Arduino compatible interface
9. Low power consumption
 
Pinout:
1. "S" stand for signal input
2. "+" stand for power supply
3. "-" stand for GND

 Rainsensor

 


 

 

Rain Sensor (Sensor Hujan) adalah alat yang  dapat  membaca  intensitas air/dengan mengunakan panel sensor air. Panel ini dapat bekerja apabila terhubung dengan komponen lain. Panel ini adalah jenis resistor yang nilai hambatanya dapat berubah tergantung dari intensitas keberadaan air yang ada pada permukaan panel. Jika air mengenai permukaan panel semakin kecil hambatanya dalam panel (Sainsmart 2016). Interval Max = 1023, internal Min = 0.

Pembacaan sensor untuk sistem :

1. Hujan kecil : if (rain >= 600 && rain <=700)
2. Hujan sedang : if (rain >= 500 && rain <=600)
3. Hujan deras : if (rain >= 400 && rain <=500)
4. Hujan sangat deras : if (rain < 400).

 

 Sensor touch

Touch Sensor atau Sensor Sentuh adalah sensor elektronik yang dapat mendeteksi sentuhan. Sensor Sentuh ini pada dasarnya beroperasi sebagai sakelar apabila disentuh, seperti sakelar pada lampu, layar sentuh ponsel dan lain sebagainya. Sensor Sentuh ini dikenal juga sebagai Sensor Taktil (Tactile Sensor). Seiring dengan perkembangan teknologi, sensor sentuh ini semakin banyak digunakan dan telah menggeser peranan sakelar mekanik pada perangkat-perangkat elektronik.


 

Berdasarkan fungsinya, Sensor Sentuh dapat dibedakan menjadi dua jenis utama yaitu Sensor Kapasitif dan Sensor Resistif. Sensor Kapasitif atau Capacitive Sensor bekerja dengan mengukur kapasitansi sedangkan sensor Resistif bekerja dengan mengukur tekanan yang diberikan pada permukaannya.

Sensor  Sentuh Kapasitif

Sensor sentuh Kapasitif merupakan sensor sentuh yang sangat populer pada saat ini, hal ini dikarenakan Sensor Kapasitif lebih kuat, tahan lama dan mudah digunakan serta harga yang relatif lebih murah dari sensor resistif. Ponsel-ponsel pintar saat ini telah banyak yang menggunakan teknologi ini karena juga menghasilkan respon yang lebih akurat.

Berbeda dengan Sensor Resistif yang menggunakan tekanan tertentu untuk merasakan perubahan pada permukaan layar, Sensor Kapasitif memanfaatkan sifat konduktif alami pada tubuh manusia untuk mendeteksi perubahan layar sentuhnya. Layar sentuh sensor kapasitif ini terbuat dari bahan konduktif (biasanya Indium Tin Oxide atau disingkat dengan ITO) yang dilapisi oleh kaca tipis dan hanya bisa disentuh oleh jari manusia atau stylus khusus ataupun sarung khusus yang memiliki sifat konduktif.

Pada saat jari menyentuh layar, akan terjadi perubahaan medan listrik pada layar sentuh tersebut dan kemudian di respon oleh processor untuk membaca pergerakan jari tangan tersebut. Jadi perlu diperhatikan bahwa sentuhan kita tidak akan di respon oleh layar sensor kapasitif ini apabila kita menggunakan bahan-bahan non-konduktif sebagai perantara jari tangan dan layar sentuh tersebut.

Sensor Sentuh Resistif

Tidak seperti sensor sentuh kapasitif, sensor sentuh resistif ini tidak tergantung pada sifat listrik yang terjadi pada konduktivitas pelat logam. Sensor Resistif bekerja dengan mengukur tekanan yang diberikan pada permukaannya. Karena tidak perlu mengukur perbedaan kapasitansi, sensor sentuh resistif ini dapat beroperasi pada bahan non-konduktif seperti pena, stylus atau jari di dalam sarung tangan.

 Sensor sentuh resistif terdiri dari dua lapisan konduktif yang dipisahkan oleh jarak atau celah yang sangat kecil. Dua lapisan konduktif (lapisan atas dan lapisan bawah) ini pada dasarnya terbuat dari sebuah film. Film-film umumnya dilapisi oleh Indium Tin Oxide yang merupakan konduktor listrik yang baik dan juga transparan (bening).

 Cara kerjanya hampir sama dengan sebuah sakelar, pada saat film lapisan atas mendapatkan tekanan tertentu baik dengan jari maupun stylus, maka film lapisan atas akan bersentuhan dengan film lapisan bawah sehingga menimbulkan aliran listrik pada titik koordinat tertentu layar tersebut dan memberikan signal ke prosesor untuk melakukan proses selanjutnya.

Grafik Respon Sensor Touch:


 

 

· Sensor LDR

LDR (Light Dependent Resistor) merupakan salah satu komponen resistor yang nilai resistansinya akan berubah-ubah sesuai dengan intensitas cahaya yang mengenai sensor ini. LDR juga dapat digunakan sebagai sensor cahaya. Perlu diketahui bahwa nilai resistansi dari sensor ini sangat bergantung pada intensitas cahaya. Semakin banyak cahaya yang mengenainya, maka akan semakin menurun nilai resistansinya. Sebaliknya jika semakin sedikit cahaya yang mengenai sensor (gelap), maka nilai hambatannya akan menjadi semakin besar sehingga arus listrik yang mengalir akan terhambat.

 



     Grafik




g. Komponen lainnya

 

 LCD


 

Liquid Crystal Display (LCD) adalah sebuah peralatan elektronik yang berfungsi untuk menampilkan output sebuah sistem dengan cara membentuk suatu citra atau gambaran pada sebuah layar. Secara garis besar komponen penyusun LCD terdiri dari kristal cair (liquid crystal) yang diapit oleh 2 buah elektroda transparan dan 2 buah filter polarisasi (polarizing filter). Struktur LCD dapat dilihat pada gambar berikut:


 

Keterangan:
-Film dengan polarizing filter vertical untuk memolarisasi cahaya yang masuk.
-Glass substrate yang berisi kolom-kolom elektroda Indium tin oxide (ITO).
-Twisted nematic liquid crystal (kristal cair dengan susunan terpilin).
-Glass substrate yang berisi baris-baris elektroda Indium tin oxide (ITO).
-Film dengan polarizing filter horizontal untuk memolarisasi cahaya yang masuk.
-Reflektor cahaya untuk memantulkan cahaya yang masuk LCD kembali ke mata pengamat.

Sebuah citra dibentuk dengan mengombinasikan kondisi nyala dan mati dari pixel-pixel yang menyusun layar sebuah LCD. Pada umumnya LCD yang dijual di pasaran sudah memiliki integrated circuit tersendiri sehingga para pemakai dapat mengontrol tampilan LCD dengan mudah dengan menggunakan mikrokontroler untuk mengirimkan data melalui pin-pin input yang sudah tersedia

 Motor DC

Motor Listrik DC atau DC Motor adalah suatu perangkat yang mengubah energi listrik menjadi energi kinetik atau gerakan (motion). Motor DC ini juga dapat disebut sebagai motor arus searah. Seperti namanya, DC Motor memiliki dua terminal dan memerlukan tegangan arus searah atau DC (Direct Current) untuk dapat menggerakannya.Motor Listrik DC ini biasanya digunakan pada perangkat-perangkat elektronik dan listrik yang menggunakan sumber listrik DC seperti vibrator ponsel, kipas DC dan bor listrik DC.

Motor Listrik DC atau DC Motor ini menghasilkan sejumlah putaran per menit atau biasanya dikenal dengan istilah RPM (Revolutions per minute) dan dapat dibuat berputar searah jarum jam maupun berlawanan arah jarum jam apabila polaritas listrik yang diberikan pada Motor DC tersebut dibalikan. Motor listrik DC tersedia dalam berbagai ukuran rpm dan bentuk. Kebanyakan motor listrik DC memberikan kecepatan rotasi sekitar 3000 rpm hingga 8000 rpm dengan tegangan operasional dari 1,5V hingga 24V. Apabila tegangan yang diberikan ke motor listrik DC lebih rendah dari tegangan operasionalnya maka akan dapat memperlambat rotasi motor DC tersebut sedangkan tegangan yang lebih tinggi dari tegangan operasional akan membuat rotasi motor DC menjadi lebih cepat. Namun ketika tegangan yang diberikan ke Motor DC tersebut turun menjadi dibawah 50% dari tegangan operasional yang ditentukan maka Motor DC tersebut tidak dapat berputar atau terhenti. Sebaliknya, jika tegangan yang diberikan ke Motor DC tersebut lebih tinggi sekitar 30% dari tegangan operasional yang ditentukan, maka motor DC tersebut akan menjadi sangat panas dan akhirnya akan menjadi rusak.

Pada saat motor listrik DC berputar tanpa beban, hanya sedikit arus listrik atau daya yang digunakannya, namun pada saat diberikan beban, jumlah arus yang digunakan akan meningkat hingga ratusan persen bahkan hingga 1000% atau lebih (tergantung jenis beban yang diberikan). Oleh karena itu, produsen motor DC biasanya akan mencantumkan Stall Current pada Motor DC. Stall Current adalah arus pada saat poros motor berhenti karena mengalami beban maksimal.



  1. Download library yang diperlukan pada bagian download dalam blog.     
  2. Buka proteus yang sudah diinstal untuk membuat rangkaian.
  3. Tambahkan komponen seperti Arduino, sensor, dan perangkat lainnya lalu susun menjadi rangkaian.
  4. Buka Arduino IDE yang sudah diinstal.
  5. Di Arduino IDE, pergi ke menu "File" > "Preferences".Pastikan opsi
  6. "Show verbose during compile" dicentang untuk mendapatkan informasi detail saat kompilasi.
  7. Salin kode program Arduino pada blog kemudian tempelkan program tadi ke Arduino IDE.
  8. Kompilasikan kode dengan menekan tombol "Verify" di Arduino IDE.
  9. Cari dan salin path file HEX yang dihasilkan selama proses kompilasi.
  10. Kembali ke Proteus dan pilih Arduino yang telah Anda tambahkan di rangkaian.
  11. Buka opsi "Program File" dan tempelkan path HEX yang telah Anda salin dari Arduino IDE.
  12. Jalankan simulasi di Proteus.



 


 




Rangkaian Simulasi :
                                       

Prinsip Kerja :
Sistem kontrol tanaman bawang ini memiliki prinsip kerja dimana jika kandungan air pada tanaman bawang sudah cukup, maka jika terjadi hujan dan agar air hujan tidak mengenai tanaman bawang dan kandungan air pada bawang tidak terlebih maka sensor rain akan mendeteksi hujan lalu servo atap akan berputar 90° untuk menutup atap, ketika sudah kering maka atap akan terbuka kembali menggunakan servo. Kemudian, karena tamanan membutuhkan air sesuai dengan kebutuhannya maka digunakan soil moisture untuk mendeteksi kelembapan dari tanah, ketika tanah kering servo penyemprot air akan berputar 90° dan mengeluarkan air, ketika tanah basah servo penyemprot air ke posisi 0° menutup tempat keluar air, dan di LCD ditampilkan kondisi kering dan basah dari tanah tersebut. Selanjutnya disaat hujan turun, jika terdapat genangan air yang turun dari atap yang akan menganggu kecukupan air dari tanaman, maka akan didetekesi level air pada genangan tersebut,  ketika ketinggian air  <3 cm maka motor dc pump akan memompa air menuju penampungan air untuk diisi, ketika ketinggian  > 3 cm tidak terjadi apa apa, dan LCD akan menampilkan kondisi ketinggian air. karena tanaman juga membutuhkan nutrisi tambahan maka digunakan pupuk dengan menggunankan servo untuk penyemprotannya dan touch sensor sebagai inputan, ketika disentuh (ditahan) maka servo pupuk akan menyemprotkan pupuk, ketika tidak ditahan sensornya servo pupuk akan menutup. Lalu untuk menjaga intensitas cahaya yang diterima oleh tanaman bawang terjaga maka digunakan LDR sensor untuk mengukur jumlah cahaya yang diterimanya,. Ketika sensor LDR tidak mendeteksi cahaya yang cukup atau kondisi lingkungan gelap, servo motor akan menggerakkan atap untuk menutup,untuk  melindungi tanaman bawang. Sebaliknya, ketika sensor LDR mendeteksi adanya cahaya, menandakan kondisi lingkungan terang, servo motor akan membuka atap tersebut.


Master Arduino



Slave Arduino


Listing Program :

A. Master

//MASTER ARDUINO

#include <Wire.h>

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,20,4);  

#define SOIL A1

#define WATER A2

#define RAIN A0

#define TOUCH 8

#define LDR A3

        

float panjangSensor = 6 ;                       

void setup()                                    

{

  lcd.init();

  lcd.backlight();                              

  pinMode(A0, INPUT);

  pinMode(A1, INPUT);

  pinMode(A2, INPUT);

  pinMode(A3, INPUT);

  pinMode(8, INPUT);

  lcd.begin(16, 2);                             

  Serial.begin(9600);                           

}

void loop()   

{

int nilaiRAIN;

int nilaiSOIL;

int nilaiWATER;  //mendeklarasikan variabel bertipe integer yang

int nilaiTOUCH;  

int nilaiLDR;

 

  //WATER

  nilaiWATER = analogRead(WATER);             

  float tinggiAir = nilaiWATER * panjangSensor / 1023;    

   

   lcd.setCursor(0, 0);                  

   lcd.print("Tinggi Air = ");             

   lcd.setCursor(13, 0);                    

   lcd.print(tinggiAir);                  

   lcd.setCursor(14, 0);                

   lcd.print("cm");                       

 

  if (tinggiAir < 3 )

  {

    Serial.write("5");

    lcd.setCursor(0, 0);                       

    lcd.print("Tinggi Air = ");

    lcd.setCursor(13, 0);

    lcd.print(tinggiAir);

    lcd.setCursor(14, 0);

    lcd.print("cm");

    delay(100); //jeda atau delay 100ms

  }

  if (tinggiAir >= 3)

  {

    Serial.write("4");  

    delay(100);

    lcd.setCursor(0, 0);

    lcd.print("Tinggi Air = ");

    lcd.setCursor(13, 0);

    lcd.print(tinggiAir);

    lcd.setCursor(14, 0);

    lcd.print("cm");

  }

   //SOIL

    nilaiSOIL = analogRead(SOIL);

    if (nilaiSOIL > 700) {

      Serial.write("1");                       

      delay(100);

      //lcd.clear();

      lcd.setCursor(0, 1);                     

      lcd.print("Kondisi : Kering");           

    }

    if(nilaiSOIL<=700) {

      Serial.write("3");                 

       delay(100);

      //lcd.clear();

      lcd.setCursor(0, 1);                

      lcd.print("Kondisi : Basah.");       

  }

      delay(200);

      

  //RAIN

    nilaiRAIN = analogRead(RAIN);  

    if(nilaiRAIN <550) {

    Serial.write("2"); //

    delay(100);

    }

    if(nilaiRAIN>=550) {

    Serial.write("6");

    delay(100);

    }

 

  //TOUCH

    nilaiTOUCH = digitalRead(TOUCH);

    if (digitalRead(TOUCH) == HIGH) {

    Serial.write("7");

    delay(100);

    }

    if (digitalRead(TOUCH) == LOW) {

    Serial.write("9");

    delay(100);

    }

 

  //LDR

    nilaiLDR = analogRead(LDR);

    if (analogRead(LDR)< 500) {

    Serial.write("8");

    delay(100);

  }

    if (analogRead(LDR) >500) {

    Serial.write("#");

    delay(100);

  }

    delay(100);

}

 

B. Slave

//SLAVE ARDUINO

#include <Servo.h>

Servo servorain;  

Servo servosoil;  

Servo servopupuk;

//untuk motor DC

#define in1 2

#define in2 3

#define duration 2000

 

int data;

void setup()

{

  servosoil.attach(10);

  servorain.attach(9);

  servopupuk.attach(11);

  pinMode(in1, OUTPUT);

  pinMode(in2, OUTPUT);

  Serial.begin(9600);

}

void loop()

{

  if (Serial.available() > 0)

  {

    data = Serial.read();

    if (data == '5') // Jika data yang dikirimkan berlogika TINGGI AIR < 3 cm

    {

      digitalWrite(in1, HIGH); // in1 diberi logika 1

      digitalWrite(in2, LOW); // in2 diberi logika 0

    }

    else if (data == '3') // Jika data yang dikirimkan berlogika KONDISI BASAH

    {

      servosoil.write(90);

      delay(100);

    }

    else if (data == '2') // Jika data yang dikirimkan berlogika ADA HUJAN

    {

      servorain.write(90);

      delay(100);

    }

    else if (data == '1') // Jika data yang dikirimkan berlogika KONDISI KERING

    {

      servosoil.write(0);

      delay(100);

    }

    else if (data == '7') { // Jika menerima sinyal dari Master bahwa Touch Sensor aktif

      servopupuk.write(90);

      delay(100);

    }

    else if (data == '8') { // Jika menerima sinyal dari Master bahwa LDR Sensor tidak mendeteksi cahaya

      servorain.write(90); // Menggerakkan servo untuk menutup atap

      delay(100);

    }

    else if (data == '4') // Jika data yang dikirimkan berlogika TINGGI AIR > 3 cm

    {

      digitalWrite(in1, LOW); // in1 diberi logika 0

      digitalWrite(in2, LOW); // in2 diberi logika 0

    }

    else if (data == '6') // Jika data yang dikirimkan berlogika TIDAK ADA HUJAN

    {

      servorain.write(0);

      delay(100);

    }

    else if (data == '9') { // Jika menerima sinyal dari Master bahwa Touch Sensor tidak aktif

      servopupuk.write(0);

      delay(100);

    }

    else if (data == '#') { // Jika menerima sinyal dari Master bahwa LDR Sensor mendeteksi cahaya

      servorain.write(0); // Menggerakkan servo untuk menutup atap

      delay(100);

    }

  }

}








Download HTML  [download]
Download Rangkaian [download]
Download Video [download]
Download Kodingan Master[download]
Download Kodingan Slave[download]
Download library rain sensor [download]
Download library water level sensor [download]
Download library soil moisture sensor [download]
Download library touch sensor [download]
Download datasheet rain sensor [download]
Download datasheet LDR sensor [download]
Download datasheet Touch sensor [download]
Download datasheet soil moisture sensor [download]
Download datasheet water level sensor [download]
Download datasheet Motor DC [download]
Download datasheet Motor Servo [download]
Download datasheet LCD [download]
Download datasheet Arduino [download]

Tidak ada komentar:

Posting Komentar