Modul 4
MODUL 4
"SMART WATERING UNTUK BIBIT TANAMAN CABAI"
1. Prosedur
[Kembali] 1. Menentukan judul dan ide
2. Membuat simulasi menggunakan proteus dari ide yang telah ditentukan
3. Membuat kodingan arduino ide
4. Jalankan program pada simulasi dan cobakan sesuai dengan modul dan kondisi\
5. Mewujudkan simulasi dari proteus ke bentuk asli berupa prototype
5. Selesai
2. Hardware dan diagram blok
[Kembali]
a. Hardware
Alat:
1. Sensor :
• Sensor DHT11
• Sensor Rain
• Sensor Soil Moisture
• Sensor Touch
• LDR (Light dependent resistor)
2. Arduino Uno
3. LCD I2C 16x2
4. Driver L29N
5. Motor DC (Dinamo motor)
6. Pompa air
7. LED
8. Resistor
Komponen:
1. Baterai 3.7v
2. Adaptor 9v
b. Digram Blok
Gambar 1. Diagram Blok
3. Rangkaian Simulasi dan Prinsip kerja
[Kembali]
A. Gambar Rangkaian
Software:
Gambar 2. Rangkaian Simulasi
B. PRINSIP KERJA
Prototype smart watering untuk bibit tanaman cabai ini menggunakan dua arduino yang terhubung dengan komunikasi UART (universal asynchronous receiver transmitter). Komunikasi UART ini ditandai dengan pin Rx dan Tx antara arduino master (yang terhubung dengan input) dengan pin Rx dan Tx arduino slave (yang terhubung dengan output).
Pada arduino master, dihubungkan dengan inputan berupa sensor dan juga LCD I2C 16x2. Diantara sensor yang digunakan ialah sensor soil moisture yang dihubungkan ke pin A0, sensor rain dihubungkan ke pin A1, sensor DHT11 dihubungkan ke pin A2, LDR sensor dihubungkan ke pin 4, dan sensor touch ihubungkan ke pin 2. Pada hubungan sensor ini dapat dilihat bahwa sensor soil moisture, sensor DHT11, dan sensor rain merupakan sensor analog sehingga dihubungkan dengan pin analog arduino master. Sedangkan sensor LDR outputannya dijadikan digital dan sensor touch merupakan sensor digital yang masing-masing keluarannya dihubungkan ke pin digital arduino master. Sedangkan LCD I2C 16x2 outputannya dihubungkan ke pin SDA dan Pin SCL arduino master.
Sedangkan pada arduino slave yang merupakan tempat terhubungnya outputan. Dimana pada outputan dihubungkan menggunakan dua driver L29N. Driver pertama yaitu IN3 dan IN4 secara berturut-turut dihubungkan ke pin 6 dan 7, dan outputannya dihubungkan dengan pompa air yang tujuannya untuk penyiram tanaman. Sedangkan driver kedua, IN1 dan IN2 nya secara berurut dihubungkan dengan pin 10 dan 8 dan outputnya terhubung dengan motor DC dinamo yang fungsinya sebagai pembuka dan penutup atap. IN3 dan IN4 secara berturut-turut terhubung ke pin 5 dan 3 yang outputnya dihubungkan ke pompa yang tujuannya untuk menyiramkan pupuk cair untuk bibit tanaman.
Untuk kerja dari prototype ini ialah ketika soil moisture mendeteksi nilai >700 dari tanah maka pada LCD akan ditampilkan kondisi kering, sedangkan jika <700 maka LCD ditampilkan kondisi basah. Selain itu, ketika tanah kering maka juga akan dipeintahkan ke pompa penyiram tanaman untuk hidup sampai kondisi kembali basah. Dan baris kedua dari LCD menampilkan nilai temperatur yang diperoleh dari DHT11.
Ketika sensor rain mendeteksi hujan, maka outputnya ialah akan menutup atap dan begitupun sebaliknya ketika sensor rain mendeteksi tidak hujan maka atap akan terbuka. Sensor berikutnya yang ikut bekerja ialah sensor touch. Yang fungsinya secara langsung untuk mengaktifkan pompa penyiram pupuk ketika touch bernilai 1 atau ketika disentuh. Sensor teeakhir ialah LDR yang ketika mendeteksi gelap akan menghidupkan lampu untuk penerangan di luar ruangan
4. FlowChart
[Kembali]
1. MASTER
//MASTER A
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#define SOIL A0
#define DHTPIN A2
#define DHTTYPE DHT11
#define RAIN A1 //mendefinisikan pin pin analog dan digital
#define TOUCH 2
#define LDR 4
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27,20,4); // menginisialisasi objek lcd dari kelas LiquidCrystal_I2
// 0x27 adalah alamat I2C dari layar LCD.
// 20 adalah jumlah kolom pada layar LCD.
// 4 adalah jumlah baris pada layar LCD.
void setup() //Semua kode dalam fungsi ini dieksekusi sekali
{
Serial.begin(9600);
Wire.begin();
dht.begin();
lcd.init();
lcd.backlight(); //Deklarasi pin A0 -A3 dan pin 8 sebagai INPUT
pinMode(A0, INPUT);
pinMode(A1, INPUT);
pinMode(A2, INPUT);
pinMode(LDR, INPUT);
pinMode(2, INPUT);
lcd.begin(16, 2); //Dimensi LCD yang digunakan
//Set baud rate 9600 (baud rate standar)
}
void loop() //Semua kode dalam fungsi ini dieksekusi berulang
{
int nilaiRAIN;
int nilaiSOIL;
int nilaiDHT; //mendeklarasikan variabel bertipe integer yang
int nilaiTOUCH; //untuk menyimpan nilai yang dibaca sensor
int nilaiLDR;
delay(2000);
float temperature = dht.readTemperature();
if (isnan(temperature)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Wire.beginTransmission(0); // Alamat slave Arduino
Wire.write((byte*)&temperature, sizeof(temperature));
Wire.endTransmission();
lcd.setCursor(0, 1);
lcd.print("Temp: ");
lcd.print(temperature);
lcd.print(" C");
nilaiSOIL = analogRead(SOIL); //membaca nilai analog dari sensor soil
if (nilaiSOIL > 700) {
Serial.write("2"); //mengirim kondisi 1 melalui komunikasi bahwa tanah kering
delay(100);
//lcd.clear();
lcd.setCursor(0, 0); //Menentukan posisi kursor pada awal penulisan
lcd.print("Kondisi : Kering"); //Menampilkan text pada LCD
}
if(nilaiSOIL<=700) {
Serial.write("3"); //mengirim kondisi 3 melalui komunikasi bahwa tanah basah
delay(100);
//lcd.clear();
lcd.setCursor(0, 0); //Menentukan posisi kursor pada awal penulisan
lcd.print("Kondisi : Basah."); //Menampilkan text pada LCD
}
delay(200);
//RAIN
nilaiRAIN = analogRead(RAIN); //membaca nilai analog dari sensor rain
if(nilaiRAIN <550) {
Serial.write("4"); // mengirim kondisi 2 melalui komunikasi bahwa keadaan ada hujan
delay(100);
}
else if(nilaiRAIN >550) {
Serial.write("5"); //mengirim kondisi 6 melalui komunikasi bahwa keadaan tidak ada hujan
delay(100);
}
nilaiTOUCH = digitalRead(TOUCH); //membaca nilai digital dari sensor touch
if (digitalRead(TOUCH) == HIGH) { //mengecek apakah sensor high atau low
Serial.write("7"); // Mengirimkan sinyal ke Slave Arduino kondisi 7 bahwa Touch Sensor aktif
delay(100);
}
if (digitalRead(TOUCH) == LOW) { //mengecek apakah sensor high atau low
Serial.write("8"); // Mengirimkan sinyal ke Slave Arduino kondisi 7 bahwa Touch Sensor aktif
delay(100);
}
nilaiLDR = digitalRead(LDR); //membaca nilai analog dari sensor LDR
if (digitalRead(LDR) == HIGH) { //mengecek apakah sensor high atau low
Serial.write("9"); // Mengirimkan sinyal ke Slave Arduino kondisi 8 bahwa LDR Sensor aktif untuk menutup atap
delay(100);
}
if (digitalRead(LDR) == LOW) { //mengecek apakah sensor high atau low
Serial.write("#"); // Mengirimkan sinyal ke Slave Arduino kondisi 8 bahwa LDR Sensor aktif untuk menutup atap
delay(100);
}
delay(100);
}
B. SLAVE
//SLAVE ARDUINO
//#include <Servo.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>//memasukkan library pada program
LiquidCrystal_I2C lcd(0x27, 16, 2);
//Servo servosoil; //mendeklarasikan objek servo tutup atap
//Servo servopupuk; //sda mengeluarkan air
//untuk motor DC
#define in1 2 // Deklarasi pin 2 sebagai input 1
#define in2 4 // Deklarasi pin 3 sebagai input 2
#define in3 6 // Deklarasi pin 2 sebagai input 1 //Atap
#define in4 7 // Deklarasi pin 3 sebagai input 2
#define in5 10 // Deklarasi pin 2 sebagai input 1 //Pompa
#define in6 8 // Deklarasi pin 3 sebagai input 2
#define in7 5 // Deklarasi pin 2 sebagai input 1 //pupuk
#define in8 3 // Deklarasi pin 3 sebagai input 2
#define led 11
#define duration 2000 // Deklarasi durasi 2000 ms lama waktu motor dc berputar
int data; //mendeklarasikan variabel integer data, untuk menyimpan data yang dibaca sensor
void setup() // Semua kode dalam fungsi ini dieksekusi sekali
{
// servopupuk.attach(3); //menginisiasi servo dan menghubungkan ke pin 10
//servosoil.attach(5); //menginisiasi servo dan menghubungkan ke pin 9
pinMode(in1, OUTPUT); // Deklarasi in1 sebagai OUTPUT
pinMode(in2, OUTPUT); // Deklarasi in2 sebagai OUTPUT
pinMode(in3, OUTPUT); // Deklarasi in1 sebagai OUTPUT
pinMode(in4, OUTPUT);
pinMode(in5, OUTPUT); // pompa
pinMode(in6, OUTPUT); // Deklarasi in2 sebagai OUTPUT
pinMode(in7, OUTPUT); // atap
pinMode(in8, OUTPUT);
pinMode(led, OUTPUT);
Wire.begin(0); // Alamat slave Arduino
lcd.init();
lcd.backlight();
Serial.begin(9600); // Set baud rate 9600
}
void loop() // Semua program dalam fungsi ini dieksekusi berulang
{
if (Serial.available() > 0) {
char receivedByte = Serial.read();
if (receivedByte == '1') {
digitalWrite(led, HIGH); // Nyalakan lampu jika menerima byte '1'
} else if (receivedByte == '0') {
digitalWrite(led, LOW); // Matikan lampu jika menerima byte '0'
}
}
if (Serial.available() > 0) //memeriksa apakah ada data diterima dari master
{
data = Serial.read();
if (data == '2')
{
digitalWrite(in3, HIGH); //pompa hidup
digitalWrite(in4, LOW);
}
else if (data == '3')
{
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
else if (data == '4')
{
digitalWrite(in5, HIGH);
digitalWrite(in6, LOW);
}
else if (data == '5') {
digitalWrite(in5, LOW);
digitalWrite(in6, HIGH);
}
else if (data == '7')
{
digitalWrite(in7, HIGH);
digitalWrite(in8, LOW);
}
else if (data == '8')
{
digitalWrite(in7, LOW);
digitalWrite(in8, LOW);
}
else if (data == '9')
{
digitalWrite(led, HIGH);
delay(100); //
}
else if (data == '#')
{
digitalWrite(led, LOW);
delay(100); //
}
}
}
void receiveEvent(int byteCount) {
while (Wire.available()) {
float temperature = Wire.read();
lcd.setCursor(0, 0);
lcd.print("Temp: ");
lcd.print(temperature);
lcd.print(" C");
}
}
b. Flowchart
MASTER
5. Video Demo
[Kembali]
Video Simulasi
6. Download File
[Kembali]
Download HMTL klik di sini
Download Video Demo Klik di sini
Download Datasheet ARDUINO UNO klik di sini
Download Datasheet Touch sensor klik di sini
Download Datasheet Rain sensor klik disiniklik disini
Download Datasheet Soil moisture sensor klik disiniklik disini
Download Datasheet DHT11 sensor klik disini klik disini
Download Datasheet LDR sensor klik disiniklik disini
Download Datasheet LCD I2C 16x2 klik disini klik disini
Download Datasheet Waterpump klik disiniklik disini
Download Datasheet dinamo motor DC klik disiniklik disini
Download Datasheet Driver L298N klik disiniklik disini
Download Datasheet LED klik disiniklik disini
Datasheet resistor klik di sini
Komentar
Posting Komentar