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. Soil Moisture
3. Dasar Teori[kembali]
-
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:
a) "S" stand for signal input
b) "+" stand for power supply
c) "-" 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).
- Arduino
Arduino adalah kit elektronik atau papan rangkaian elektronik open source yang di dalamnya terdapat komponen utama yaitu sebuah chip mikrokontroler dengan jenis AVR dari perusahaan Atmel. Arduino yang kita gunakan dalam praktikum ini adalah Arduino Uno yang menggunakan chip AVR ATmega 328P. Dalam memprogram Arduino, kita bisa menggunakan komunikasi serial agar Arduino dapat berhubungan dengan komputer ataupun perangkat lain.
- 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.
4. Listining Program[kembali]
-
Master
//MASTER
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x27 for a 16
chars and 2 line display
#define SOIL A1
#define WATER A2
#define RAIN A0
//LiquidCrystal lcd(8, 9, 10, 11, 12, 13);
int nilaiRAIN;
int nilaiSOIL;
int nilaiWATER;
float panjangSensor = 6 ;
void setup()
//Semua kode dalam fungsi ini dieksekusi sekali
{
lcd.init();
lcd.backlight();
//Deklarasi pin A0 sebagai OUTPUT
pinMode(A1, INPUT);
pinMode(A2, INPUT);
lcd.begin(16, 2);
//Dimensi LCD yang digunakan
Serial.begin(9600); //Set baud rate 9600
}
void loop()
//Semua kode dalam fungsi ini dieksekusi berulang
{
int nilaiWATER = analogRead(WATER);
float tinggiAir =
nilaiWATER * panjangSensor / 1023;
//lcd.clear();
//Menghapus layar LCD
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.println("5");
//lcd.clear();
//Menghapus layar LCD
lcd.setCursor(0, 0);
lcd.print("Tinggi Air = ");
lcd.setCursor(13, 0);
lcd.print(tinggiAir);
lcd.setCursor(14, 0);
lcd.print("cm");
delay(100);
}
if (tinggiAir
>= 3)
{
Serial.println("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.println("1");
delay(100);
//lcd.clear();
lcd.setCursor(0, 1);
//Menentukan posisi kursor pada awal penulisan
lcd.print("Kondisi :
Kering");
//Menampilkan text pada LCD
}
if(nilaiSOIL<=700) {
Serial.println("3");
delay(100);
//lcd.clear();
lcd.setCursor(0, 1);
//Menentukan posisi kursor pada awal penulisan
lcd.print("Kondisi :
Basah.");
//Menampilkan text pada LCD
}
delay(1000);
//RAIN
nilaiRAIN = analogRead(RAIN);
if(nilaiRAIN <550) {
Serial.println("2");
delay(100);
}
if(nilaiRAIN>=550) {
Serial.println("6");
delay(100);
}
delay(100);
}
SLAVE
//SLAVE
#include<Servo.h>
Servo servorain;
Servo servosoil;
#define in1 2 //Deklarasi pin 2 sebagai input 1
#define in2 3 //Deklarasi pin 10 sebagai input 2
#define duration 2000 //Deklarasi durasi 2000 ms
int pos1 = 0;
int pos2 = 0;
int data;
void setup()
//Semua kode dalam fungsi ini dieksekusi sekali
{
servosoil.attach(10);
servorain.attach(9);
pinMode(in1, OUTPUT); //Deklarasi in1 sebagai OUTPUT
pinMode(in2, OUTPUT); //Deklarasi in2 sebagai OUTPUT
Serial.begin(9600); //Set
baud rate 9600
}
void loop()
//Semua program dalam fungsi ini dieksekusi berulang
{
if(Serial.available()>0)
{
int data = Serial.read();
if(data=='5') //Jika data yang
dikirimkan berlogika TINGGI AIR < 2
{
digitalWrite(in1, HIGH); //in2 diberi logika 0
digitalWrite(in2, LOW);
// delay(1000);
//Jarak
waktu 1000 ms setelah input dieksekusi
}
else if(data=='3') //Jika data yang
dikirimkan berlogika KONDISI BASAH
{
servosoil.write(0);
delay(15);
}
else if(data=='2') //Jika data yang
dikirimkan berlogika ADA HUJAN
{
servorain.write(90);
}
else if(data=='1') //Jika data yang
dikirimkan berlogika KONDISI KERING
{
servosoil.write(90);
delay(15);
}
else if(data=='4'){
digitalWrite(in1, LOW); //in2 diberi logika 0 TINGGI AIR > 4
digitalWrite(in2, LOW);
}
if(data=='6'){
servorain.write(0); //itidak ada hujan
delay(100);
}
}
}
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 digunakan terpal untuk
menutup tanaman bawang dari atas dengan rain sensor, jadi saat rain sensor
mendeteksi hujan, maka output nya yang berupa motor DC yang akan membuka terpal
untuk menutup tanaman bawang tersebut. Kemudian, karena tamanan membutuhkan air
sesuai dengan kebutuhannya maka digunakan soil moisture untuk mendeteksi
kelembapan dari tanah, yang dimana saat tanah kering, maka sensor soil moisture
akan mendeteksi tanah kering tersebut dan output pada motor servo akan
menghidupkan keran air untuk menyiram tanaman. Selanjutnya disaat hujan turun,
jika terdapat genangan air yang turun dari terpal yang akan menganggu kecukupan
air dari tanaman, maka akan didetekesi level air pada genangan tersebut, dan
apabila genangannya terlalu tinggi, maka water level akan mengeluarkan output
servo yang akan membuka saluran pembuangan air.
Berdasarkan
percobaan yang telah dilakukan, perancangan sistem kontrol tanaman bawang dapat
dilakukan dengan pengaplikasiaan materi yang telah dipelajari saat praktikum
seperti komunikasi pada Arduino dan dengan menggunakan water level sensor, rain
sensor dan soil moisture sensor. Perancangan yang dibuat dalam bentuk prototypr
ini bertujuan untuk mempermudah dalam
mengontrol kelembaban tanah dan kecukupan airnya.
Tidak ada komentar:
Posting Komentar