IMPLEMENTASI DAN PENGUJIAN
4.4. Implementasi Perangkat Lunak
4.4.1. Coding Arduino Mega pada platform Arduino IDE
Pada Arduino IDE merupakan perangkat lunak yang berfungsi menjadi editor dalam pengembangan perangkat mikrokontroller yang digunakan. Dalam file sketchbook pada Arduino Mega terdapat beberapa library code yang harus disertakan pada modul yang digunakan, seperti pada berikut ini :
#include <ArduinoJson.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
54
int pompa1=2, pompa2=3, pompa3=4, aerator=5;
LiquidCrystal_I2C lcd(0x27,20,4);
const unsigned int trigSRF1 = 33;
const unsigned int echoSRF1 = 35;
const unsigned int trigSRF2 = 25;
const unsigned int echoSRF2 = 27;
const unsigned int trigSRF3 = 51;
const unsigned int echoSRF3 = 53;
const unsigned int trigSRF4 = 43;
const unsigned int echoSRF4 = 45;
long duration,distance, SRF1, SRF2,SRF3,SRF4;
int levelNutrisiA, levelNutrisiB, levelAir, levelWadahAir;
Keterangan coding pada sketchbook Arduino Mega :
Pada <ArduinoJson.h> merupakan library untuk modul wifi Wemos D1 Mini dikarenakan data merupakan dalam bentuk dokumen JSON, kemudian data dikirimkan ke database aplikasi android MyHidroponik.
55 Kemudian pada <Wire.h> merupakan library pada modul LCD Monitor dalam melakukan serial komunikasi dengan perangkat mikrokontroler inti Arduino Mega.
Library <LiquidCrystal_I2C.h> merupakan fungsi untuk menampilkan display pada modul.
Lalu <OneWire.h> dan <DallasTemperature.h> merupakan library ketentuan pada sensor Suhu Air DS18B20 agar sensor dapat menjalankan fungsi.
Setelah itu <SimpleDHT.h> adalah library ketentuan pada sensor Suhu dan Kelembapan DHT11 agar dapat melakukan fungsi sensor tersebut.
Pada <EEPROM.h> adalah library yang berfungsi untuk menyimpan data tersimpan terakhir pada memori Arduino Mega ketika terdapat perubahan saat pengaturan pada sistem Arduino Mega yang telah dibangun.
Pada "GravityTDS.h" merupakan library ketentuan agar sensor TDS dapat menjalankan fungsi.
Memasuki pada bagian kodingan #define TEMPERATURE_PRECISION 12 yangmana untuk menentukan Pin Digital dari sensor Suhu Air DS18B20 pada pin 12, OneWire oneWire(40), DallasTemperature sensors(&oneWire) merupakan ketentuan dari sensor Suhu Air DS18B20, dan float tdsValue = 0 merupakan ketentuan dalam menentukan data dalam bentuk bilangan float.
#define TdsSensorPin A0 menentukan Pin sensor TDS pada Pin A0, GravityTDS gravityTds dan float tdsValue = 0 mengikuti ketentuan berdasarkan sensor TDS dan nilai dalam bentuk bilangan float.
Pada int pinDHT11 = 52 adalah peletakan pin sensor Suhu Dan Kelembapan DHT11 pada pin 52 dan SimpleDHT11 dht11 dan int temperatur, kelembapan mentaati ketentuan pada ketentuan dari sensor Suhu Dan Kelembapan DHT11 dan menentukan nilai dalam bentuk bilangan integer.
Pada int pompa1=2, pompa2=3, pompa3=4, aerator=5 menentukan pin modul Pompa pada tiap Wadah dan Aerator. Pompa1 merupakan Pompa pada Wadah Pupuk A terletak pada pin 2. Pompa2 merupakan Pompa pada Wadah Pupuk B terletak pada pin 3. Pompa3 merupakan Pompa pada Wadah Air Baku terletak pada pin 4. Dan Aerator merupakan modul Aerator yang terletak pada pin 5.
Pada LiquidCrystal_I2C lcd(0x27,20,4) merupakan penentuan koding yang menyesuaikan dengan ketentuan ukuran standar dari modul LCD Monitor yang digunakan.
56 Selanjutnya, pada const unsigned int trigSRF1 = 33 menentukan pin trigger dari sensor Ultrasonik SRF05 pada pin 33, const unsigned int echoSRF1 = 35 menentukan pin echo pada pin 35, SRF1 merupakan kode nama untuk sensor jarak pada Wadah Pupuk A. Pada const unsigned int trigSRF2 = 25 menentukan pin trigger pada pin 25, const unsigned int echoSRF2 = 27 menentukan pin echo pada pin 27, SRF2 merupakan kode nama untuk sensor jarak pada Wadah Pupuk B. Pada const unsigned int trigSRF3
= 51 menentukan pin trigger pada pin 51, const unsigned int echoSRF3 = 53 menentukan pin echo pada pin 53, SRF3 merupakan kode nama untuk sensor jarak pada Wadah Air Baku. Pada const unsigned int trigSRF4 = 43 menentukan pin trigger pada pin 43, const unsigned int echoSRF4 = 45 menentukan pin echo pada pin 45, SRF4 merupakan kode nama untuk sensor jarak pada Wadah Air Nutrisi. Selanjutnya pada long duration,distance, SRF1, SRF2,SRF3,SRF4 merupakan ketentuan dari sensor jarak Ultrasonik dalam penentuan metode kinerja sensor. Dan int levelNutrisiA, levelNutrisiB, levelAir, levelWadahAir menentukan nilai pada masing-masing dalam bentuk bilangan integer.
4.4.2. Coding Modul Wifi Wemos D1 Mini pada Arduino IDE
Kemudian dalam mengembangkan mikrokontroler Arduino Mega agar terkoneksi dengan modul Wemos D1 mini, terdapat library yang harus ditambahkan, seperti
penambahan librari dari
https://arduino.esp8266.com/stable/package_esp8266com_index.json melalui bagian Preferences di dalam Arduino IDE karena mengandung paket ESP8266 pada modul wifi yang digunakan yaitu modul Wemos D1 Mini. Kemudian pada menu Boards Manager mengakses pada menu Wemos D1 Mini lalu melakukan penambahan Library Manager “ArduinoJson”. Dalam file sketchbook pada Wemos D1 Mini terdapat beberapa library code yang harus disertakan untuk melakukan koneksi data dengan mikrokontroler Arduino Mega serta membuat internet Access Point dalam mengkoneksikan modul dengan server database pada aplikasi MyHidroponik melalui internet seperti pada berikut ini :
#include <ESP8266WiFi.h>
#include <DNSServer.h>
#include <ESP8266WebServer.h>
#include <WiFiManager.h>
57
#include <ESP8266HTTPClient.h>
#include <WiFiClient.h>
#include <ESP8266WiFiMulti.h>
Keteringan coding pada sketchbook modul wifi Wemos D1 Mini :
Modul ESP8266 merupakan modul yang dikhususkan untuk perancangan sistem jaringan menggunakan wifi, dan pada Wemos D1 Mini tertanam modul wifi bernama ESP8266. Yakni, pada <ESP8266.WiFi.h>, yangmana ini merupakan library ketentuan dari modul wifi yang digunakan.
Pada <DNSServer.h> merupakan penyambungan server pada modul wifi sesuai ketentuan dengan Arduino.
<ESP8266WebServer.h> juga berupa library ketentuan dalam penyambungan modul wifi pada Arduino.
<WifiManager.h> adalah library untuk akses portal dalam konfigurasi internet yang digunakan. Pada penelitian ini menggunakan internet hotspot.
Pada <ESP8266HTTPClient.h> merupakan library untuk poin akses transfer antarjaringan internet secara HTTP (Hypertext Transfer Protocol).
<WiFiClient.h> berupa library modul wifi sebagai client agar dapat mendeteksi internet hotspot yang digunakan.
<ESP8266WiFiMulti.h> berupa library ketika mendaftar dengan minimal dua atau lebih dari akses poin internet yang digunakan dan otomatis beralih ke jaringan wifi lain ketika koneksi jaringan wifi sebelumnya putus.
4.4.3. Coding Otomatisasi Pemberian Nutrisi Hidroponik pada Arduino IDE
Coding dalam menjalankan otomatisasi pemberian nutrisi pada hidroponik diberlakukan coding dengan menyesuaikan metode yang digunakan yaitu logika Fuzzy untuk menentukan pemberian nutrisi hidroponik karena merupakan pendekatan metode yang sesuai dengan kebutuhan penelitian. Tampilan coding pada otomatisasi pemberian nutrisi pada hidroponik dapat dilihat pada berikut ini :
58 unsigned char getMinTdsValue(){
long medTdsValue=(minTdsValue+maxTdsValue)/2;
if (tdsValue <= minTdsValue){minT =1;}
else if (tdsValue >=minTdsValue && tdsValue
<=medTdsValue){minT=(medTdsValue-tdsValue)/(medTdsValue-minTdsValue);}
else if (tdsValue >= medTdsValue){minT =0;}
return minT;
}
char getMedTdsValue(){
long medTdsValue=(minTdsValue+maxTdsValue)/2;
if (tdsValue <= minTdsValue){medT =0;}
else if (tdsValue >= minTdsValue && tdsValue <=
else if (tdsValue >= maxTdsValue){medT = 0;}
return medT;
}
unsigned char getMaxTdsValue(){
long medTdsValue=(minTdsValue+maxTdsValue)/2;
if (tdsValue <= medTdsValue){maxT = 0;}
else if (tdsValue >= medTdsValue && tdsValue <=
maxTdsValue){maxT=(tdsValue-medTdsValue)/(medTdsValue-minTdsValue);}
else if (tdsValue >= maxTdsValue){maxT =1;}
return maxT;
}
Keterangan coding pada metode logika Fuzzy :
Pada tahap ini merupakan terapan metode Fuzzy untuk mendapatkan validasi nilai TDS yang didapatkan terhadap ketentuan yang telah ditetapkan. Terbagi menjadi 3 bagian,
59 yaitu validalitas ketentuan nilai TDS terhadap nilai minimal TDS, median TDS, dan maksimal TDS.
Tahapan pertama yaitu dalam menentukan nilai minimal TDS terbagi menjadi 2 kondisi. Pada kondisi pertama, dinyatakan bahwa jika nilai TDS yang didapat dibawah minimal kebutuhan TDS, maka ditetapkan bahwa nilai adalah true. Pada kondisi kedua terdapat 2 solusi yangmana jika nilai TDS yang didapatkan lebih besar atau sama dengan minimal kebutuhan TDS, dan nilai TDS yang didapatkan lebih kecil dari atau setara dengan nilai median kebutuhan TDS maka dibuka fungsi bahwa variabel minT adalah median nilai TDS dikurang dengan nilai TDS kemudian dibagi dengan median nilai TDS dikurang dengan minimal nilai TDS. Selanjutnya pada solusi kedua, jika nilai TDS lebih besar ataupun setara dengan nilai median TDS, maka ditetapkan bahwa variabel minT adalah false atau. Kemudian diakhiri dengan proses return untuk kembali pada loop pencarian variabel minT.
Tahapan kedua yaitu menentukan nilai median TDS. Kondisi pertama dinyatakan bahwa jika nilai TDS lebih kecil atau sama dengan nilai median TDS, maka ditetapkan bahwa nilai adalah false. Kemudian berlanjut pada kondisi dimana jika nilai TDS lebih besar atau sama dengan minimal TDS, dan nilai TDS lebih kecil atau sama dengan nilai median TDS maka dibuka fungsi bahwa variabel medT sama dengan nilai TDS dikurang dengan minimal TDS, kemudian dibagi dengan median TDS yang dikurang terlebih dahulu dengan minimal TDS. Kondisi selanjutnya, jika nilai TDS lebih besar atau sama dengan median TDS, dan nilai TDS lebih kecil atau sama dengan maksimal TDS, maka ditetapkan bahwa variabel medT adalah false. Kemudian diakhiri dengan proses return untuk kembali pada perulangan loop pencarian variabel medT.
Pada tahapan ketiga yaitu menentukan nilai maksimal TDS. Kondisi pertama yaitu jika nilai TDS lebih kecil atau sama dengan median TDS, ditetapkan bahwa variabel maxT adalah false. Lanjut pada kondisi berikutnya, jika nilai TDS lebih besar atau sama dengan median TDS, dan nilai TDS lebih kecil atau sama dengan maksimal TDS, dibuka fungsi bahwa variabel maxT sama dengan nilai TDS dikurang median TDS terlebih dahulu, lalu dibagi dengan median TDS dikurang dengan minimal TDS.
Lanjut pada kondisi berikutnya, jika nilai TDS lebih besar atau sama dengan maksimal TDS, maka ditetapkan bahwa variabel maxT adalah true. Kemudian diakhiri dengan proses return untuk kembali pada perulangan loop dalam pencarian variabel maxT.
60 4.5. Implementasi Perancangan Antarmuka
4.5.1. Tampilan Login
Pada halaman tampilan login merupakan tampilan utama pada dashboard aplikasi.
Perancangan ini dibuat agar user yang dapat login ke aplikasi dan mengetahui username dan password yang valid saja agar bisa menjalankan aplikasi dengan tujuan tidak terjadi penyalahgunaan. Tampilan login dapat dilihat pada Gambar 4.7 :
Gambar 4.7. Tampilan Login
4.5.2. Tampilan Monitoring
Perancangan pada tampilan monitoring akan menampilkan informasi data terkini pada pendeteksian dari sensor berupa nilai TDS, suhu air nutrisi, suhu udara, kelembapan, level air baku, level wadah nutrisi, level nutrisi A dan level nutrisi B. Tampilan monitoring dapat dilihat pada Gambar 4.8 :
61 ,
Gambar 4.8. Tampilan Monitoring
4.5.3. Tampilan Graph
Pada tampilan graph akan menampilkan data hasil pendeteksian oleh sensor secara historis, yang menunjukkan data terkini serta data terdahulu dalam bentuk graf. Pada Gambar 4.9 dapat dilihat dari tampilan graph yang telah dibuat :
62 Gambar 4.9. Tampilan Graph
4.5.4. Tampilan Log Data
Tampilan yang terdapat pada bagian log data akan memaparkan masukan data yang telah dideteksi oleh sensor disertakan dengan nomor urutan dan tanggal pendeteksian sensor pada sistem hidroponik. Tampilan log data dapat dilihat pada Gambar 4.10 :
63 Gambar 4.10. Tampilan Log Data