bab iii perancangan alat - repository.uksw.edu
TRANSCRIPT
17
BAB III
PERANCANGAN ALAT
Pada bab 3 ini akan dibahas mengenai perancangan alat yang meliputi skematis dan
wiring, diagram blok, flowchart, tata letak alat pada ruangan, dan analisa kode pada alat
yang digunakan.
3.1 Skematis dan Wiring Alat
2
1
3
4
5
6
7
8
9
10
11
12
14
13
15
18
Gambar 3.1 Skematis rangkaian
Gambar 3.1 adalah skematik dari sistem automasi greenhouse berbasis kebutuhan
iklim mikro tanaman. Pada skema di atas air cooler dan fog machine dimisalkan
kipas dc karena di aplikasi fritzing tidak ada simbol dari kedua alat tersebut.
Tegangan 220V dimisalkan konektor karena di aplikasi fritzing tidak ada simbol dari
alat tersebut. Adaptor 24 V dimisalkan baterai 9 V karena di aplikasi fritzing tidak
ada simbol dari alat tersebut
Keterangan pada Gambar 3.1:
1. Keypad 4×4
2. 2 Kipas DC 24V
3. LCD 20×4
4. Adaptor 24 V
5. Modul I2C
6. Sensor GY302-BH1750
7. Sensor DHT11
8. Halogen Reflector Bulb 300 Watt
9. 4 Lampu led sorot 100 Watt
10. Air cooler
11. Mesin kabut
12. Tegangan 220V
13. Driver motor L298N
14. Arduino Mega 2560
15. 2 Relay Module 4 Channels 5V
Tabel 3.1 Wiring dari modul I2C lcd 20×4, DHT11, GY302-BH1750, relay, L298 dan
keypad ke arduino mega 2560
I2C Arduino mega 2560
SCL SCL
SDA SDA
VCC 5V
19
Tabel 3.1 (lanjutan) Wiring dari modul I2C lcd 20×4, DHT11, GY302-BH1750, relay,
L298 dan keypad ke arduino mega 2560
GND GND
DHT 11
VCC 5 V
DATA D11
NULL -
GND GND
GY302-BH1750
SCL SCL
SDA SDA
VCC 5 V
NULL -
GND GND
Relay
In 1 D38
In 2 D40
In 3 D42
In 4 D44
In 5 D46
In 6 D48
In 7 D50
VCC 5 V
GND GND
L298N
In 1 D4
In 2 D5
ENA D10
20
Tabel 3.1 (lanjutan) Wiring dari modul I2C lcd 20×4, DHT11, GY302-BH1750, relay,
L298 dan keypad ke arduino mega 2560
In 3 D6
In 4 D7
ENB D9
VCC 6-35V POWER SUPPLY 24V
GND GND
VCC 5V -
M1-01 MOTOR DC 24V
M1-02 MOTOR DC 24V
M2-01 MOTOR DC 24V
M2-02 MOTOR DC 24V
Keypad
col 1 D22
col 2 D24
col 3 D26
col 4 D28
row 1 D30
Row 2 D32
Row 3 D34
Row 4 D36
Tabel 2 adalah wiring dari modul I2C lcd 20×4, DHT11, GY302-BH1750,
L298N, keypad dan relay arduino mega 2560. Wiring modul I2C lcd 20×4 ke
arduino. SCL dan SDA dari arduino terletak di kaki D21 dan D20. Kaki VCC dan
GND modul I2C disambungkan ke 5V dan GND arduino.
Wiring DHT11 ke arduino. VCC dan GND dari DHT 11 sambungkan ke 5V dan
GND arduino pin data dari DHT 11 disambungkan ke kaki D11. Wiring GY302-
21
BH1750 ke arduino. SCL dan SDA GY302-BH1750 disambungkan ke D21 dan
D20 arduino. Kaki VCC dan GND GY302-BH1750 disambungkan ke 5V dan
GND arduino.
Wiring relay ke arduino. In 1 sampai In 4 disambungkan ke pwm mikrokontroler.
Hal ini dilakukan agar kita dapat mengatur alat yang akan dikendalikan. Kabel
dari catu daya 220V dipasang seri dengan lampu led sorot 100 Watt. Kemudian
salah satu kaki dari catu daya yang tidak terhubung dengan led dimasukan ke kaki
relay yang tengah sedangkan kaki led yang tidak terhubung dengan kaki catu daya
220V masuk ke kaki relay yang lainnya. Wiring yang sama dilakukan ke alat yang
terhubung dengan catu daya 220V.
Wiring L298N ke arduino mega 2560. ENA dan ENB berfungsi untuk
mengaktifkan bagian output motor 1 dan motor 2. In 1, in 2, in 3 dan in 4
berfungsi sebagai kendali perputaran dan kecepatan motor. Wiring keypad 4×4 ke
arduino. Col 1 sampai dengan col 4 dihubungkan ke pin D22, D24, D26, D30 dan
row 1 sampai dengan row 4 dihubungkan ke D30, D32, D34, D36.
3.2 Diagram blok
Relay Modul I2C L298N
Motor
DC 24V
Arduino mega 2560
LCD 20×4
led Bulb Air
Cooler
Mesin
kabut
Keypad
DHT 11 GY302 BH1750
22
Gambar 3.2 Diagram blok dari sistem automasi greenhouse berbasis
kebutuhan iklim mikro tanaman
Gambar 3.2 adalah diagram proses dari sistem automasi greenhouse berbasis
kebutuhan iklim mikro tanaman. Sensor DHT 11 dan GY302-BH1750 akan
mengirimkan data hasil pembacaan sensor ke arduino. Kemudian arduino akan
memproses data yang telah kirim oleh kedua sensor tersebut. Data yang telah
diproses akan digunakan untuk mengendalikan alat yang digunakan. Data yang
telah diproses juga akan ditampilkan di LCD 20×4 . Selain digunakan untuk
memantau data, LCD 20×4 juga dapat mengendalikan alat yang ada dengan
mengirim data yang diinginkan ke arduino menggunakan keypad.
3.3 Flowchart
Mulai
1. Sensor DHT 11 dan GY302-BH1750
membaca kondisi ruangan suhu,
kelembaban serta intensitas cahaya
dan mengirimkan hasil pembacaan
sensor ke mikrokontroler.
3. Mengolah data
masukan.
4. Perintah
ditampilkan
di LCD.
2. Keypad digunakan untuk
mengatur data.
5. Menyalakan LED sesuai besar
intensitas cahaya serta lama penyinaran
sesuai data yang diinginkan user.
23
6. Apakah
suhu
ruangan di
atas atau
bawah
suhu yang
diinginkan?
9. Apakah
kelembaban
ruangan di
atas atau
bawah
kelembaban
yang
diinginkan?
A
A
Di atas
Di bawah Di bawah
Di atas
Selesai
7. Menyalakan
pemanas
ruangan.
10. Menyalakan
mesin kabut.
8. Menyalakan
air cooler.
11. Menyalakan
kipas DC.
24
Gambar 3.3 Flowchart dari sistem telah dibuat
Gambar 3.3 adalah flowchart dari sistem telah dibuat. Berikut cara kerja dari sistem
automasi greenhouse berbasis kebutuhan iklim mikro tanaman. Pada proses yang
pertama sensor DHT 11 akan membaca suhu serta kelembaban ruangan sedangkan
Sensor GY302-BH1750 membaca intensitas cahaya dalam ruangan. Data dari kedua
sensor akan di kirim ke mikrokontroler. Data yang diperoleh dari kedua sensor
selanjutnya akan diolah oleh mikrokontroler. Selanjutnya pada proses kedua pemilik
greenhouse memberikan masukan yang berupa data yang diinginkan melalui tombol
keypad 4×4. Pada proses ketiga data yang telah diperoleh dari masukan penguna
greenhouse melalui tombol keypad 4×4 dan hasil pembacaan sensor, selanjutnya
akan diproses oleh mikrokontroler. Pada proses keempat pemilik greenhouse dapat
memilih tampilan menu yang diinginkan yang nantinya akan ditampilkan di layar
LCD 20×4. Pada menu 1 penguna greenhouse dapat mengetahui hasil pembacaan
sensor yang berupa besarnya suhu, kelembaban, intensitas cahaya serta lama
penyinaran. Pada menu 2 pemilik greenhouse dapat mengatur iklim mikro yang ada
di dalam greenhouse. Sedangkan menu 3 pengguna greenhouse dapat mengetahui
data yang sudah diatur pada menu 2.
Selanjutnya pada proses kelima mikrokontoler akan menyalakan lampu led sorot 100
Watt untuk mengatur intensitas cahaya dan lama penyinaran sesuai masukan yang
telah diberikan. Proses keenam mikrokontroler membandingkan apakah suhu yang
dibaca sensor lebih besar atau lebih kecil dari masukan yang diberikan penguna
greenhouse. Pada proses ketujuh apabila suhu yang dibaca sensor dibawah suhu yang
diingingkan maka mikrokontroler akan menaikkan suhu ruangan menggunakan
lampu halogen reflector bulb 300 Watt yang telah terhubung dengan relay secara
otomatis. Udara panas yang dihasilkan oleh lampu halogen reflector bulb 300 Watt
akan diatur dengan sistem kendali on/off dari mikrokontroler. Apabila suhunya sudah
sampai pada yang diinginkan maka lampu halogen reflector bulb 300 Watt otomatis
mati. Sedangkan pada proses kedelapan apabila suhu yang dibaca sensor diatas suhu
yang diingingkan maka mikrokontroler menurunkan suhu menggunakan air cooler
25
yang terhubung dengan relay. Apabila suhunya terlalu panas maka air cooler akan
otomatis menyala dan bila suhunya sudah sampai pada yang diinginkan maka air
cooler otomatis mati. Pada proses kesembilan mikrokontroler membandingkan
apabila kelembaban udara yang dibaca sensor lebih besar atau lebih kecil dari
masukan yang diberikan penguna greenhouse. Pada proses kesepuluh apabila
kelembaban yang dibaca sensor di bawah kelembaban yang diingingkan maka
mikrokontroler akan menaikkan kelembaban ruangan dengan menghidupkan mesin
kabut dan bila kelembabannya sudah sampai pada yang diinginkan maka mesin kabut
otomatis mati. Pada proses kesebelas apabila kelembaban yang dibaca sensor di atas
kelembaban yang diingingkan maka mikrokontroler akan nurunkan kelembaban
ruangan dengan menghidupkan 2 kipas dc 24V untuk membuang kelembaban udara
yang ada. Nyala dari 2 kipas dc 24V akan dikendalikan oleh sistem on/off dari
mikrokontroler. Bila kelembaban sudah sampai pada yang diinginkan maka kipas dc
24V otomatis mati.
3.4 Tata Letak Alat pada Ruangan
Gambar 3.4 Foto alat dalam ruangan greenhouse(1)
1 2
3 4
26
Gambar 3.5 Foto alat dalam ruangan greenhouse(2)
Gambar 3.4 dan Gambar 3.5 adalah tata peletakan alat dalam ruangan greenhouse
yang berukuran 3,5×3,5×2,5 meter. Kotak pengendali diletakkan di atas meja agar
memudahkan pengguna greenhouse untuk memantau ataupun mengatur iklim
mikronya. Kotak pemanas diletakkan di atas meja dan menghadap ke arah tanaman
agar pernyebaran panas lebih cepat dirasakan oleh tanaman. 4 lampu led 100 watt
diletakkan mengantung di tengah ruangan. Gantungan untuk lampu sengaja dibuat
mudah untuk dilepas dan dipasang agar dapat menyesuaikan tinggi tanaman. Sensor
GY302-BH1750 diletakan 15 cm dibawah kerangka penopang 4 lampu led 100 Watt.
Mesin pelembab ruangan diletakan di samping tanaman agar kelembaban yang
dihasilkan oleh mesin dapat dengan cepat dirasakan oleh tanaman. 2 kipas DC 24 V
diletakkan di atas mesin pelembab agar apabila kelembaban yang dihasilkan oleh
mesin pelembab berlebihan, dapat langsung dibuang oleh kipas DC 24 V. Air cooler
mengarah langsung ke tanaman agar penyebaran dingin lebih cepat dirasakan oleh
tanaman.
Keterangan pada Gambar 3.4 dan Gambar 3.5 :
1. Kotak pengendali
2. Kotak pemanas
3. Lampu led
4. Mesin kabut
5
6
27
5. Kipas DC 24 V
6. Air cooler
3.5 Analisa Kode
Koding di atas merupakan library yang akan dipakai untuk masing-masing
modul.
Menetapkan alamat I2C untuk LCD yaitu di 0×3F dan menetapkan tampilan
LCD untuk 20 karakter dan 4 baris.
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
#include <Wire.h>
#include <BH1750.h>
#include <dht.h>
#include<PWM.h>
LiquidCrystal_I2C lcd(0X3F,20,4);
dht DHT;
BH1750 lightMeter(0x23);
#define DHT11_PIN 11
28
Membuat variable bernama DHT dan mendeklarasikan output sensor DHT11 ke
pin digital 11 arduino mega. Menetapkan alamat I2C untuk sensor GY302-
BH1750 yaitu di 0×23.
Membuat variable matriks 4×4, membuat isi matriks 4×4, menghubungkan
pinouts row dan column ke pin digital arduino, mendeklarasikan variabel
ROWS san COLS sebagai rowPins dan colPins yang terdapat di library
keypads arduino
const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {36, 34, 32, 30}; //connect
to the row pinouts of the keypad
byte colPins[COLS] = {28, 26, 24, 22}; //connect
to the column pinouts of the keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins,
colPins, ROWS, COLS );
int SH[]={48,48};
int HD[]={48,48};
int IN[]={48};
int PD[]={48,48};
29
Membuat variabel dan memberi nilai awal 0 untuk suhu, kelembaban,
intensitas cahaya serta lama penyinaran. Tipe data keypads berupa string dan
untuk keperluan perhitungan rumus yang nantinya digunakan maka harus
dikonversi terlebih dahulu menjadi tipe data interger.
int IN1=38;//Pin PhotoPeriod and Intensitas 1
int IN2=40;//Pin PhotoPeriod and Intensitas 2
int IN3=42;//Pin PhotoPeriod and Intensitas 3
int IN4=44;//Pin PhotoPeriod and Intensitas 4
int SH1=46;//Pin Bohlam
int SH2=48;//Pin AC
int HD1=50;//Pin Fog
int ENA=10;//Pengatur kecepatan putar motor A
int INA=4;
int INB=5;
int ENB=9;//Pengatur kecepatan putar motor B
int INC=6;
int IND=7;
30
Mendeklarasikan pinouts yang ada pada modul relay dan driver motor L298N
ke pin digital arduino. Peletakan pinouts ini tidak boleh terbalik-balik saat
disambungkan di arduino ataupun modulnya karena harus sesuai yang
dideklarasikan di program arduino. Apabila pinouts terbalik-balik maka alat
tidak akan berkerja sesuai yang diharapkan.
void setup()
{
lcd.init();
lcd.backlight();
Wire.begin();
lightMeter.begin();
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
pinMode(SH1, OUTPUT);
pinMode(SH2, OUTPUT);
pinMode(HD1, OUTPUT);
pinMode(ENA, OUTPUT);
pinMode(INA, OUTPUT);
pinMode(INB, OUTPUT);
pinMode(ENB, OUTPUT);
pinMode(INC, OUTPUT);
pinMode(IND, OUTPUT);
31
Menginisialisasi LCD modul untuk segera digunakan, menyalakan lampu
backlight pada LCD dan menginisialisasi variabel lightMeter untuk segera
digunakan. Mendeklarasikan variabel IN1, IN2, IN3, IN4, SH1, SH2, HD1,
ENA, INA, INB, ENB, INC, IND sebagai keluaran dari dari proses yang ada
diprogram arduino.
Membuat tampilan pembuka saat memasuki sistem. Tampilan pembukaan ini
akan ditampilkan di LCD 20×4 selama 3 detik.
lcd.setCursor(7,0);
lcd.print("WELCOME");
lcd.setCursor(9,1);
lcd.print("TO");
lcd.setCursor(8,2);
lcd.print("YOUR");
lcd.setCursor(5,3);
lcd.print("GREENHOUSE");
delay(3000);
}
void loop()
{
char key = keypad.getKey();
uint16_t lux = lightMeter.readLightLevel();
32
Membuat variabel key untuk membaca inputan dari keypads 4×4 dan variable
lux untuk membaca masukan dari sensor GY302-BH1750.
lcd.clear();
lcd.setCursor(7,0);
lcd.print("MENU :");
lcd.setCursor(0,1);
lcd.print("1. MONITORING");
lcd.setCursor(0,2);
lcd.print("2. SETTING");
lcd.setCursor(0,3);
lcd.print("3. CHECK DATA");
if(key=='1')
{
menu1(PD,lux);
}
if(key=='2')
{
menu2(SH,HD,IN,PD);
}
if(key=='3')
{
menu3(SH,HD,IN,PD);
}
33
Menghapus tampilan yang ada di layar LCD 20×4 dan menampilkan tulisan
MENU pada baris pertama, 1. MONITORING pada baris kedua, 2. SETTING
pada baris ketiga, 3. CHECK DATA pada baris keempat. Selain menampilkan
tulisan pada layar LCD. Mikrokontroler juga menunggu masukan dari
keypads. Apabila pengunna menekan tombol 1 maka sistem akan memanggil
fungsi “menu1” dan menggirim data besarnya variabel lama penyinaran yang
sudah diatur dan besarnya intensitas cahaya dari hasil pembacaan sensor. Jika
menekan tombol 2 maka sistem akan memanggil fungsi “menu2” dan
mengirim data variabel suhu, kelembaban, intensitas cahaya dan lama
penyinaran yang nantinya akan diatur oleh pemilik greenhouse. Apabila
pengguna menekan tombol 3 maka sistem akan memanggil fungsi “menu3”
dan dan mengirim data variabel suhu, kelembaban, intensitas cahaya dan
lama penyinaran yang nantinya akan ditampilkan di layar LCD 20×4. Setelah
variabel suhu, kelembaban, intensitas cahaya serta lama penyinaran diatur
maka selanjutnya akan dikirim di fungsi “sistem” untuk diproses.
sistem(SH,HD,IN,PD);
delay(500);
}
void menu1(int PD[],uint16_t lux)
{
lcd.clear();
int PHOTO;
float baca = DHT.read11(DHT11_PIN);
34
Masuk ke fungsi “menu1” dan menerima data lama penyinaran yang diatur
serta data besarnya intensitas cahaya hasil pembacaan sensor GY302-
BH1750. Menghapus tampilan di layar LCD, membuat variabel “PHOTO”
untuk pengolahan data. Membuat variabel “baca” untuk membaca hasil
pembacaan sensor DHT11 yang berupa suhu dan kelembaban.
lcd.setCursor(0,0);
lcd.print("TEMPERATURE: C");
lcd.setCursor(18,0);
lcd.print((char)223);
lcd.setCursor(12,0);
lcd.print(DHT.temperature,1);
lcd.setCursor(0,1);
lcd.print("HUMIDITY : %");
lcd.setCursor(12,1);
lcd.print(DHT.humidity,1);
lcd.setCursor(0,2);
lcd.print("INTENSITY : lux");
lcd.setCursor(12,2);
lcd.print(lux);
35
Mengatur letak tulisan TEMPERATURE , HUMIDITY dan INTENSITY serta
menampilkan hasil pembacaan suhu dan kelembaban dari sensor DHT11 dan
besarnya intensitas cahaya dari sensor GY302-BH1750 di layar LCD 20×4.
Mengatur letak tulisan PHOTOPERIOD serta menampilkan hasil perhitungan
dari “PHOTO” untuk menggetahui lama penyinaran yang dimasukan penguna
greenhouse melalui tomboh keypads.
Masuk ke fungsi “menu2” dan menerima data suhu, kelembaban, intensitas
cahaya dan lama penyinaran untuk diatur serta membuat variabel “SUHU,
lcd.setCursor(0,3);
lcd.print("PHOTOPERIOD: HOUR");
PHOTO=(PD[0]-48)*10+(PD[1]-48);
lcd.setCursor(12,3);
lcd.print(PHOTO);
delay(5000);}
void menu2(int SH[],int HD[],int IN[],int PD[])
{
int SUHU,KELEM,INTENSI,PHO;
lcd.clear();
int i1,i2,i3,i4=0;
36
KELEM, INTENSI, PHO” untuk perhitungan. Memberi nilai awalan 0 untuk
i1, i2, i3, i4.
lcd.setCursor(4,0);
lcd.print("SETTING YOUR");
lcd.setCursor(2,1);
lcd.print("TEMPERATURE:");
lcd.setCursor(2,2);
lcd.print("MAXIMAL :30 C");
lcd.setCursor(16,2);
lcd.print((char)223);
lcd.setCursor(2,3);
lcd.print("MINIMAL :20 C");
lcd.setCursor(16,3);
lcd.print((char)223);
lcd.setCursor(16,1);
lcd.print((char)223);
lcd.setCursor(17,1);
lcd.print("C");
lcd.setCursor(14,1);
37
Mengatur tampilan di menu SETTING pada bagian pertama. Pada bagian ini
pemilik greenhouse dapat mengatur berapa suhu yang mau diatur serta akan
ditampilkan batas minimal dan maksimal suhu yang bisa dimasukan di layar
LCD 20×4.
while(i1<2)
{
char key1=keypad.getKey();
if(key1)
{
SH[i1++]=key1;
lcd.print(key1);
}
}
delay(1000);
SUHU=(SH[0]-48)*10+(SH[1]-48);
if(SUHU<20||SUHU>30)
{
salahinputsuhu1();
}
38
Memasukan input dari tombol keypad ke dalam array “SH” kemudian array
yang sudah terisi data suhu yang diinginkan akan dimasukan ke dalam rumus
“SUHU” untuk diubah menjadi tipe data integer. Apabila hasil perhitungan
tersebut kurang dari 20 atau lebih dari 30 maka akan masuk ke fungsi
”salahinputsuhu1” tapi kalu hasil perhitungannya antara 20 sampai 30 maka
akan lanjut ke menu SETTING pada bagian kedua.
Mengatur tampilan di menu SETTING pada bagian kedua. Pada bagian ini
pemilik greenhouse dapat mengatur berapa kelembaban yang mau diatur serta
akan ditampilkan batas minimal dan maksimal kelembaban yang bisa
dimasukan di layar LCD 20×4.
lcd.clear();
lcd.setCursor(4,0);
lcd.print("SETTING YOUR");
lcd.setCursor(4,1);
lcd.print("HUMIDITY:");
lcd.setCursor(4,2);
lcd.print("MAXIMAL :90%");
lcd.setCursor(4,3);
lcd.print("MINIMAL :50%");
lcd.setCursor(15,1);
lcd.print("%");
lcd.setCursor(13,1);
while(i2<2)
{
char key2=keypad.getKey();
39
Memasukan input dari tombol keypad ke dalam array “HD” kemudian array
yang sudah terisi data kelembaban yang diinginkan akan dimasukan kedalam
rumus “KELEM” untuk diubah menjadi tipe data integer. Apabila hasil
perhitungan tersebut kurang dari 50 atau lebih dari 90 maka akan masuk ke
fungsi ”salahinputkelem1” tapi kalau hasil perhitungannya antara 50 sampai
90 maka akan lanjut ke menu SETTING pada bagian ketiga.
HD[i2++]=key2;
lcd.print(key2);
}
}
delay(1000);
KELEM=(HD[0]-48)*10+(HD[1]-48);
if(KELEM<50||KELEM>90)
{
salahinputkelem1();
}
lcd.clear();
lcd.setCursor(1,0);
lcd.print("SETTING YOUR LIGHT");
lcd.setCursor(1,1);
40
Mengatur tampilan di menu SETTING pada bagian ketiga. Pada bagian ini
akan ditampilkan berapa intensitas cahaya yang mau diatur oleh pemilik
greenhouse serta batas minimal dan maksimal intensitas cahaya yang bisa
dimasukan.
lcd.setCursor(0,2);
lcd.print("4)26804 (lx) 5)31161");
lcd.setCursor(0,3);
lcd.print("INPUT:1 TO 5|INPUT:");
lcd.setCursor(19,3);
while(i3<1)
{
char key3=keypad.getKey();
if(key3)
{
IN[i3++]=key3;
lcd.print(key3);
}
}
delay(1000);
41
Memasukan input dari tombol keypad ke dalam array “IN” kemudian array
yang sudah terisi data intensitas cahaya yang diinginkan akan dimasukan
kedalam rumus “INTENSI” untuk diubah menjadi tipe data integer. Apabila
hasil perhitungan tersebut kurang dari 1 atau lebih dari 5 maka akan masuk ke
fungsi ”salahinputinten1” tapi kalau hasil perhitungannya antara 1 sampai 5
maka akan lanjut ke menu SETTING pada bagian keempat.
if(INTENSI<1||INTENSI>5)
{
salahinputinten1();
}
lcd.clear();
lcd.setCursor(4,0);
lcd.print("SETTING YOUR");
lcd.setCursor(0,1);
lcd.print("PHOTOPERIOD:");
lcd.setCursor(16,1);
lcd.print("HOUR");
lcd.setCursor(0,2);
lcd.print("MAXIMAL : 24 HOUR");
lcd.setCursor(0,3);
42
Mengatur tampilan di menu SETTING pada bagian keempat. Pada bagian ini
pemilik greenhouse dapat mengatur berapa lama penyinaran yang mau diatur
serta akan ditampilkan batas minimal dan maksimal lama penyinaran yang
bisa dimasukan di layar LCD 20×4.
while(i4<2)
{
char key4=keypad.getKey();
if(key4)
{
PD[i4++]=key4;
lcd.print(key4);
}
}
PHO=(PD[0]-48)*10+(PD[1]-48);
if(PHO<0||PHO>24)
{
salahinputphoto1();
}
delay(1000);
}
43
Memasukan input dari tombol keypad ke dalam array “PD” kemudian array
yang sudah terisi data lama penyinaran yang diinginkan akan dimasukan
kedalam rumus “PHO” untuk diubah menjadi tipe data integer. Apabila hasil
perhitungan tersebut kurang dari 0 atau lebih dari 24 maka akan masuk ke
fungsi ”salahinputphoto1” tapi kalu hasil perhitungannya antara 0 sampai 24
maka akan lanjut ke fungsi “sistem”.
void menu3(int SH[],int HD[],int IN[],int PD[])
{
lcd.clear();
int TEMPE,HUMID,INTEN,PHOTO;
lcd.setCursor(0,0);
lcd.print("TEMPERATURE: C");
lcd.setCursor(18,0);
lcd.print((char)223);
TEMPE=(SH[0]-48)*10+(SH[1]-48);
lcd.setCursor(12,0);
lcd.print(TEMPE);
lcd.setCursor(0,1);
lcd.print("HUMIDITY : %");
HUMID=(HD[0]-48)*10+(HD[1]-48);
lcd.setCursor(12,1);
lcd.print(HUMID);
44
Masuk ke fungsi “menu3” dan menerima data suhu, kelembaban, intensitas
cahaya dan lama penyinaran untuk ditampilkan serta membuat variabel “
TEMPE, HUMID, INTEN, PHOTO ” untuk perhitungan. Mengatur tampilan
TEMPERATURE dan HUMIDITY pada layar LCD serta menghitung
“TEMPE” dan “HUMID” untuk ditampilkan hasil konversi dari tipe data
string ke tipe data interger di layar LCD sebagai suhu dan kelembaban yang
diharapkan pemilik greenhouse.
lcd.setCursor(0,2);
lcd.print("INTENSITY : lux");
INTEN=(IN[0]-48);
if(INTEN==1)
{
lcd.setCursor(12,2);
lcd.print("0");
}
if(INTEN==2)
{
lcd.setCursor(12,2);
lcd.print("11315");
}
if(INTEN==2)
{
lcd.setCursor(12,2);
45
Mengatur tampilan INTENSITY pada layar LCD serta menghitung “INTEN”
untuk ditampilkan hasil konversi dari tipe data string ke tipe data interger.
if(INTEN==3)
{
lcd.setCursor(12,2);
lcd.print("19306");
}
if(INTEN==4)
{
lcd.setCursor(12,2);
lcd.print("26804");
}
if(INTEN==5)
{
lcd.setCursor(12,2);
lcd.print("31161");
}
46
Hasil konversi ini akan digunakan untuk menentukan besarnya intensitas
cahaya yang diharapkan pemilik greenhouse dan hasil konversi akan
ditampilkan di layar LCD. Jika hasil konversinya 1 maka yang besarnya
intesitas cahaya yang ditampilkan adalah 0 lux, kalau hasil konversinya 2
maka yang besarnya intesitas cahaya yang ditampilkan adalah 11315 lux, jika
hasil konversinya 3 maka yang besarnya intesitas cahaya yang ditampilkan
adalah 19306 lux, jika hasil konversinya 4 maka yang besarnya intesitas
cahaya yang ditampilkan adalah 26804 lux, dan apabila hasil konversinya 5
maka yang besarnya intesitas cahaya yang ditampilkan adalah 31161 lux.
Mengatur tampilan PHOTOPERIOD pada layar LCD serta menghitung
“PHOTO” untuk ditampilkan hasil konversi dari tipe data string ke tipe data
interger di layar LCD sebagai lama penyinaran yang diharapkan pemilik
greenhouse. Tampilan pada “menu3” akan menyala selama 10 detik.
lcd.setCursor(0,3);
lcd.print("PHOTOPERIOD: HOUR");
PHOTO=(PD[0]-48)*10+(PD[1]-48);
lcd.setCursor(12,3);
lcd.print(PHOTO);
delay(10000);}
void sistem(int SH[],int HD[],int IN[],int PD[])
{
int INTEN1, TEMPE1, HUMID1;
INTEN1=(IN[0]-48);
TEMPE1=(SH[0]-48)*10+(SH[1]-48);
HUMID1=(HD[0]-48)*10+(HD[1]-48);
47
Masuk ke fungsi “sistem” dan menerima data suhu, kelembaban, intensitas
cahaya dan lama penyinaran yang telah diatur serta membuat variabel “
TEMPE1, HUMID1, INTEN1” untuk perhitungan. Menghitung “TEMPE1”,
“INTEN1” dan “HUMID1” untuk dikonversi dari tipe data string ke tipe data
interger sebagai suhu, intensitas cahaya dan kelembaban yang diharapkan
pemilik greenhouse.
// TEMPERATURE
float baca2 = DHT.read11(DHT11_PIN);
if(DHT.temperature>TEMPE1)
{
digitalWrite(SH1,HIGH);// BOHLAM OFF
digitalWrite(SH2,LOW);// AC ON
}
else if(DHT.temperature<TEMPE1)
{
digitalWrite(SH1,LOW);// BOHLAM ON
digitalWrite(SH2,HIGH);// AC OFF
}
else
{
digitalWrite(SH1,HIGH);// BOHLAM OFF
digitalWrite(SH2,HIGH);// AC OFF
}
48
Membaca keadaan suhu dan kelembaban ruangan. Jika suhu yang dibaca
lebih besar dari yang dimasukkan pengguna greenhouse maka mikrokontroler
akan mematikan pemanas dan menyalakan air cooler. Apabila suhu yang
dibaca lebih kecil dari yang dimasukkan pengguna greenhouse maka
mikrokontroler akan menyalakan pemanas dan akan mematikan air cooler.
Apabila suhu yang sama dengan yang dimasukkan pengguna greenhouse
maka mikrokontroler akan mematikan pemanas dan mematikan air cooler.
// HUMIDITY
if(DHT.humidity>HUMID1)
{
// FAN 1 ON
digitalWrite(INA,HIGH);
digitalWrite(INB,LOW);
analogWrite(ENA,255);
// FAN 2 ON
digitalWrite(INC,HIGH);
digitalWrite(IND,LOW);
analogWrite(ENB,255);
digitalWrite(HD1,HIGH);// FOG OFF
}
else if(DHT.humidity<HUMID1)
{
// FAN 1 OFF
digitalWrite(INA,LOW);
49
Jika kelembaban yang dibaca lebih besar dari yang dimasukkan pengguna
greenhouse maka mikrokontroler akan menghidupkan kipas DC 24 V dan
mematikan mesin kabut. Apabila suhu yang dibaca lebih kecil dari yang
dimasukkan pengguna greenhouse maka mikrokontroler akan mematikan
kipas DC 24 V dan akan menyalakan mesin kabut. Apabila suhu yang sama
dengan yang dimasukkan pengguna greenhouse maka mikrokontroler akan
mematikan kipas DC 24 V dan mematikan mesin kabut.
// FAN 2 OFF
digitalWrite(INC,LOW);
digitalWrite(IND,LOW);
digitalWrite(HD1,HIGH);// FOG OFF
}
// Photoperiod and Intensity
int PHOTO1,PHOTO2;
PHOTO1=((PD[0]-48)*10+(PD[1]-48))*3600000;
//DURATION LED ON
PHOTO2=86400000-(((PD[0]-48)*10+(PD[1]-
48))*3600000); // DURATION LED OFF
50
Membuat variabel “ PHOTO1 ” dan “ PHOTO2” untuk perhitungan.
Menghitung “ PHOTO1 ” dan “ PHOTO2 ” untuk dikonversi dari tipe data
string ke tipe data interger sebagai lama penyinaran yang diharapkan pemilik
greenhouse.
if(INTEN1==1)
{
digitalWrite(IN1,HIGH);
digitalWrite(IN2,HIGH);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,HIGH);
}
if(INTEN1==2)
{
digitalWrite(IN1,LOW);
digitalWrite(IN2,HIGH);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,HIGH);
delay(PHOTO1);
digitalWrite(IN1,HIGH);
digitalWrite(IN2,HIGH);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,HIGH);
delay(PHOTO2);
}
51
if(INTEN1==3)
{
digitalWrite(IN1,LOW);
digitalWrite(IN2,LOW);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,HIGH);
delay(PHOTO1);
digitalWrite(IN1,HIGH);
digitalWrite(IN2,HIGH);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,HIGH);
delay(PHOTO2);
}
if(INTEN1==4)
{
digitalWrite(IN1,LOW);
digitalWrite(IN2,LOW);
digitalWrite(IN3,LOW);
digitalWrite(IN4,HIGH);
delay(PHOTO1);
52
Jika pemilik greenhouse memilih nomor 1 pada menu SETTING intensitas
cahaya maka mikrokontroler akan mematikan semua led. Jika pemilik
greenhouse memilih nomor 2 pada menu SETTING intensitas cahaya maka
digitalWrite(IN1,HIGH);
digitalWrite(IN2,HIGH);
digitalWrite(IN3,HIGH);
digitalWrite(IN4,HIGH);
delay(PHOTO2);
}
if(INTEN1==5)
{
digitalWrite(IN1,LOW);
digitalWrite(IN2,LOW);
digitalWrite(IN3,LOW);
digitalWrite(IN4,LOW);
}
}
53
mikrokontroler akan menghidupkan 1 led dan mematikan 3 led selama waktu
yang dikehendaki pemilik greenhouse. Jika pemilik greenhouse memilih
nomor 3 pada menu SETTING intensitas cahaya maka mikrokontroler akan
menghidupkan 2 led dan mematikan 2 led selama waktu yang dikehendaki
pemilik greenhouse. Jika pemilik greenhouse memilih nomor 4 pada menu
SETTING intensitas cahaya maka mikrokontroler akan menghidupkan 3 led
dan mematikan 1 led selama waktu yang dikehendaki pemilik greenhouse.
Jika pemilik greenhouse memilih nomor 1 pada menu SETTING intensitas
cahaya maka mikrokontroler akan menghidupkan semua led.
void salahinputsuhu1()
{
lcd.clear();
lcd.setCursor(2,0);
lcd.print("YOU CAN SETTING");
lcd.setCursor(2,1);
lcd.print("YOUR TEMPERATURE");
lcd.setCursor(4,2);
lcd.print("MAXIMAL:30 C");
lcd.setCursor(14,2);
lcd.print((char)223);
lcd.setCursor(4,3);
lcd.print("MINIMAL:20 C");
lcd.setCursor(14,3);
lcd.print((char)223);
delay(3000);
menu2(SH,HD,IN,PD);
}
54
Masuk ke fungsi “salahinputsuhu1” dan menampilkan batas maksimal dan
minimal suhu yang bisa diatur selama 3 detik kemudian kembali ke fungsi
“menu2”.
void salahinputkelem1()
{
lcd.clear();
lcd.setCursor(2,0);
lcd.print("YOU CAN SETTING");
lcd.setCursor(3,1);
lcd.print("YOUR HUMIDITY");
lcd.setCursor(4,2);
lcd.print("MAXIMAL:90%");
lcd.setCursor(4,3);
lcd.print("MINIMAL:50%");
delay(3000);
menu2(SH,HD,IN,PD);
}
55
Masuk ke fungsi “salahinputkelem1” dan menampilkan batas maksimal dan
minimal kelembaban yang bisa diatur selama 3 detik kemudian kembali ke
fungsi “menu2”.
Masuk ke fungsi “salahinputinten1” dan menampilkan batas maksimal dan
minimal nomor yang bisa dipilih selama 3 detik kemudian kembali ke fungsi
“menu2”.
void salahinputinten1()
{
lcd.clear();
lcd.setCursor(3,0);
lcd.print("YOU CAN CHO0SE");
lcd.setCursor(3,1);
lcd.print("YOUR INTENSITAS");
lcd.setCursor(2,2);
lcd.print("FROM THE NUMBER 1");
lcd.setCursor(1,3);
lcd.print("UNTIL THE NUMBER 5");
delay(3000);
menu2(SH,HD,IN,PD);
}
56
Masuk ke fungsi “salahinputphoto1” dan menampilkan batas maksimal dan
minimal lama penyinaran yang bisa diatur selama 3 detik kemudian kembali
ke fungsi “menu2”.
void salahinputphoto1()
{
lcd.clear();
lcd.setCursor(2,0);
lcd.print("YOU CAN SETTING");
lcd.setCursor(2,1);
lcd.print("YOUR PHOTOPERIOD");
lcd.setCursor(3,2);
lcd.print("MAXIMAL:24 HOUR");
lcd.setCursor(3,3);
lcd.print("MINIMAL:0 HOUR");
delay(3000);
menu2(SH,HD,IN,PD);
}