Bab 3 PDF [PDF]

  • 0 0 0
  • Suka dengan makalah ini dan mengunduhnya? Anda bisa menerbitkan file PDF Anda sendiri secara online secara gratis dalam beberapa menit saja! Sign Up
File loading please wait...
Citation preview

BAB III PERANCANGAN ALAT Bab ini membahas tentang perancangan alat Hidroponik Vertikal Otomatis Berbasis Arduino Nano dan NodeMCU yang disajikan secara detail dan blog diagram dibawah ini. 3.1



Gambaran Umum Alat



Gambar 3.1 Gambaran Kotak Komponen



Gambar 3.1 menunjukan gambaran umum alat secara rinci dan jelas. Semua komponen terletak pada maket akrikilik yang sudah dibuat berbentuk kotak dan dapat mengisi beberapa komponen di dalamnya. Di dalam akrilik terdapat beberapa komponen yang terdiri dari power supply, Arduino Nano,



28



29



NodeMCU, step down 12v to 5v, modul relay dan switch. Power supply memberikan power ke seluruh rangkaian. Power supply 12v di konversi menjadi tegangan 5v melalui step down, kemudian tegangan tersebut di teruskan ke seluruh komponen seperti Arduino Nano, NodeMCU, Sensor Temperatur, Sensor Ultrasonik, dan Servo. Selain itu, power supply juga memberikan tegangan langsung tanpa di konversi ke pompa air dc 12v.



Gambar 3.2 Gambar Keseluruhan Alat



30



3.2



Rancangan Rangkain Alat Secara Blok Diagram Gambar 3.2 merupakan analisa rangkaian secara blok diagram. Blok



diagram tersebut dibagi menjadi tiga blok yaitu blok input, blok proses, dan blok output dan masing-masing blok mempunyai fungsi yang berbeda satu sama lainnya. Masing-masing blok tersebut diaktifkan dengan menggunakan aktivator berupa tegangan sebesar 12 volt yang kemudian di konversi dengan step down menjadi 5 volt.



Gambar 3.3 Blok Diagram



Pada blok diagram gambar 3.2, diawali dengan blok aktivator yang memberikan arus listrik untuk menyalakan seluruh komponen yang ada di alat. Kemudian di bagian input terdapat sensor ultrasonik untuk membaca ketinggian air dan sensor temperatur DS18B20 untuk membaca temperatur udara. Kemudian di bagian proses, terdapat mikrokontroler Arduino Nano dan NodeMCU sebagai pengolah data serta mengirim data ke MQTT dan modul relay untuk kemudian



31



diteruskan ke blok output. Di blok output terdapat Pompa Air DC 12V untuk mensirkulasikan air di dalam hidroponik vertikal.



3.2.1



Blok Aktivator Aktivator merupakan sumber tegangan DC yang medianya dapat



berupa baterai atau power adaptor. Penulis menggunakan sumber tegangan DC berupa power supply 12 volt 5 ampere untuk Arduino dan NodeMCU serta komponen lainnya yang tersambung ke Arduino. LED pada Arduino Uno dan NodeMCU akan menyala apabila diberikan tegangan tersebut.



3.2.2



Blok Input Pada blok input terdapat sensor ultrasonik untuk membaca ketinggian



air pada penampung air agar servo mendapat kondisi untuk mengisi air dengan membuka katup maupun menutup katup. Selain itu sensor temperatur berfungsi untuk membaca temperatur lingkungan. Sensor ultrasonik memancarkan gelombang suara yang dipancarkan melalui transmitter. Kemudian, gemlombang tersebut akan terpantul ke objek yang kemudian diterima oleh receiver. Setelah itu, jarak objek akan terbaca oleh sensor. Setelah sensor mendapatkan pantulan frekuensi, sensor ultrasonik akan merubah data tersebut dan memberikan input berupa sinyal digital. Sinyal digital tersebut dapat digunakan untuk pin pada arduino dan akan langsung terbaca setelah diolah dengan memasukan rumus konversi. Proses sensoring efektif pada sensor ini seharusnya dapat terdeteksi di bawah 3 meter sesuai spesifikasi sensor. Tapi hasil ini sangatlah tergantung dengan program serta lingkungan yang terdapat disekitar sensor tersebut.



32



3.2.3



Blok Proses Pada blok proses terdapat Arduino Nano dan NodeMCU sebagai



pengolah data dan sebagai “otak” dari seluruh komponen alat ini. Arduino Nano menentukan kapan komponen akan bekerja serta mengatur voltase masingmasing komponen dengan PWM apabila komponen tersebut mendukung. NodeMCU bekerja sebagai pengirim data ke MQTT yang kemudian data tersebut dapat dikirim ke perangkat lain untuk ditampilkan. Modul relay digunakan untuk memproses data output dari Arduino Nano agar pompa dapat menyala maupun mati.



Gambar 3.4 Skematik Arduino Nano



33



Gambar 3.5 Skematik NodeMCU



Selain itu Arduino Nano dan NodeMCU juga dihubungkan agar kedua mikrokontroller tersebut dapat saling berkomunikasi satu sama lain. Hal ini dilakukan karena Arduino Nano tidak dapat terhubung ke internet tanpa adanya perangkat keras tambahan.



34



Gambar 3.6 Rangkaian Komunikasi Serial



3.2.4



Blok Output Output atau keluaran dari alat hidroponik vertikal ini adalah pompa dc



12v dan motor servo. Pompa dc 12v digunakan untuk mensikulasikan air ke dalam hidroponik vertikal agar tanaman dapat diberikan air dengan baik. Sumber listrik untuk pompa dc 12v menggunkan listring langsung dari power supply tanpa dikonversikan ke 5v terlebih dahulu. Motor servo digunakan untuk mengerakan katup air untuk mengisi wadah air apabila wadah tersebut memiliki jumlah air yang sedikit. Motor servo ini menggunakan listrik yang sudah dikonversikan menjadi 5v.



3.3



Rangkaian Secara Keseluruhan



Perancangan skematik menggunakan aplikasi Fritzing, perancangan lebih kepada menghubungkan pin antara sensor radar HB100, Arduino Uno, LCD dan Buzzer.



35



Gambar 3.7 Rangkaian Secara Keseluruhan



3.3.1



Penjelasan Skematik Pada gambar 3.6 akan dijelaskan secara detail untuk pin-pin input,



output maupun proses yang digunakan pada penjelasan di bawah ini.  Arduino Nano Pada pin Arduino Nano terdapat beberapa komponen yang tersambung yaitu sensor ultrasonik, motor servo, sensor temperatur dan relay yang kemudian terhubung ke pompa air dc 12v. Sensor ultrasonik terhubung ke pin 7 untuk trigger dan 9 untuk echo, sensor temperatur terhubung ke pin 6,



36



motor servo ke pin 10 dan relay terhubung ke pin 2. Semua komponen tersebut terhubung ke pin digital arduino yang dialiri oleh tegangan 5v. Selain itu, arduino nano juga terhubung langsung ke NodeMCU untuk melakukan komunikasi serial agar data yang terdapat di arduino nano dapat langsung diambil dan diolah oleh NodeMCU.  NodeMCU NodeMCU tidak terhubung dengan komponen manapun selain arduino nano. Ini dilakukan agar NodeMCU dapat melakukan komunikasi serial dengan Arduino Nano. Tujuan mereka terhubung adalah agar data yang terdapat di arduino nano dapat dikirim ke server MQTT melalui NodeMCU. Hal ini dilakukan karena arduino nano sendiri tidak dapat melakukan hal berbasis IoT karena kurangnya chip esp8266.  Step Down 12v to 5v LM2596 Step down ini digunakan agar tegangan 12v dari power supply dapat diturunkan menjadi tegangan 5v. Tujuan melakukan hal ini, karena komponen yang tersambung ke arduino nano dan nodemcu memiliki tegangan kerja 5v, yang apabila diberikan tegangan 12v akan merusak komponen tersebut.  Kapasitor Kapasitor yang terhubung langsung step down digunakan sebagai penambah daya. Komponen ini digunakan karena tanpa adanya kapasitor, daya yang ada tidak dapat menjalankan motor servo yang memiliki daya yang cukup besar.  Modul Relay Modul relay digunakan sebagai switch untuk menyalakan pompa air. Komponen ini digunakan agar pompa air dapat diberikan kondisi 1 dan 0



37



3.3.2



Rancangan Program Aplikasi Berikut ini adalah rancangan dari aplikasi yang sudah penulis buat.



Gambar 3.8 Perancangan Aplikasi Android Pada gambar di atas, penulis merancang aplikasi seperti gambar tersebut. Aplikasi tersebut dibuat dengan menggunakan Thunkable AppInventor yang merupakan software open source pembuat aplikasi android yang disebarkan secara gratis. Aplikasi tersebut menampilkan beberapa status dari sensor yang sudah terpasang di alat hidroponik vertikal yang penulis buat, seperti temperatur, jumlah volume air, status nyala apa tidaknya pompa, dan status valve. Selain itu, terdapat juga mode manual untuk mengendalikan pompa dan valve alat secara



38



manual yang berguna apabila terjadi kendala dengan sistem otomatisnya. Semua status tersebut dikirim ke dalam broker MQTT yang kemudian disubscribe oleh aplikasi tersebut agar status dapat terkirim ke aplikasi smartphone. Selain itu, aplikasi tersebut memiliki sistem notifikasi untuk memberitahu apabila beberapa kondisi terpenuhi, seperti kurangnya air, melakukan pengisian air, temperatur terlalu tinggi/rendah dan lain sebagainya. Button di paling bawah digunakan untuk mereset koneksi MQTT apabila dibutuhkan.



3.4



Flowchart Berikut ini adalah gambaran alur algoritma dari Alat Hidroponik



Vertikal Berbasis Arduino Nano dan NodeMCU.



39



Gambar 3.9 Flowchart Alat Hidroponik Vertikal Menggunakan Arduino Nano dan NodeMCU Berbasis IoT.



Terdapat beberapa symbol pada gambar 3.5, yaitu terdiri dari terminator, decision, process, connector, input- output dan data. Terminator digunakan untuk permulaan (mulai) dan (akhir) suatu program, simbol decision digunakan untuk menunjukkan suatu kondisi tertentu, simbol connector digunakan untuk penyambungan dari proses ke proses lainnya dalam halaman yang sama, simbol process digunakan untuk pada terminal, dan simbol input- output untuk menentukan inputan dari suatu proses dan output merupakan hasil dari proses.



40



Flowchart pada gambar 3.9 menunjukkan bahwa langkah awal terminal menyatakan mulai, lalu dilanjutkan ke kondisi decision apakah catu daya mengalir dan alat menyala, apabila alat menyala maka berlanjut ke proses selanjutnya yaitu memberikan kondisi satu kepada pompa air dan menyalakan pembacaan sensor temperatur. Setelah itu, akan ada decision apakah koneksi MQTT berhasil. Apabila tidak, maka alat akan memunculkan “koneksi gagal terhubung” kemudian looping kembali ke awal. Apabila koneksi berhasil maka akan muncul decision berikutnya yaitu membaca apakah jarak air dengan ultrasonik diatas 10 cm. Apabila iya, maka servo akan menyala dan air akan masuk melalui klep yang sudah terbuka. Apabila tidak maka servo akan menutup dan air tidak dapat mengalir dari klep servo.



Gambar 3.10 Flowchart Program Android



41



Flowchart pada gambar 3.6 menunjukkan langkah-langkah dari program android yang sudah dibuat. Pertama, program menunjukan splash screen, yang kemudian dilanjutkan dengan memunculkan kondisi, apakah MQTT sudah terkoneksi ke dalam program android. Apabila tidak terkoneksi, maka aplikasi tidak akan berjalan dan tidak menunjukan data apapun. Apabila terkoneksi, maka data akan terlihat di label yang sudah tersedia serta gambar on-off yang terlihat dapat berubah sesuai keadaan realtimenya. Setelah itu, button yang ditunjukan untuk mengendalikan pompa dan valve secara manual juga dapat digunakan untuk merubah keadaan pompa serta klep valve. 3.5



Penjelasan Potongan Program Arduino Nano Program terdiri dari beberapa bagian yang masing – masing bagian



akan dijelaskan berdasarkan program input, proses, dan output.



3.5.1



Program Inisialisasi Program ini pada berfungsi untuk inisialisasi atau penentuan nilai awal



pada mikrokontroler yaitu pemberian nilai apakah port yang digunakan sebagai input ataupun output dan inisialisasi jenis variable yang digunakan.



42



Tabel 3.1 Program Inisialisasi Arduino Nano Program #include



Analisa Pada program yang terdapat di bagian



#include



inisialisasi ini terdapat beberapa



#include



command seperti #include yang bertujuan



#define trigPin 7



untuk menambahkan library yang akan



#define echoPin 9



kita gunakan dalam program. Selain itu,



#define ONE_WIRE_BUS 6



terdapat juga #define yang digunakan



#define pompaairutama 2



untuk menentukan tempat pin dari sebuah



#include



variable yang kita gunakan. Dikarenakan



SoftwareSerial arduinoSerial(12, 11); //



alat penulis menggunakan dua



RX, TX



mikrokontroller, maka dibutuhkan



Servo myservo;



koneksi serial antara keduanya agar dua



OneWire oneWire(ONE_WIRE_BUS);



mikrokontroler tersebut dapat



DallasTemperature



berkomunikasi. Int pos = 0 merupakan



sensorSuhu(&oneWire);



inisialisasi servo untuk berada pada posisi



float suhuSekarang;



awal yaitu 0 derajat. Sementara bool



int pos = 0;



valve = 0 digunakan untuk



bool valve = 0;



menginisialisasi data valve untuk



bool state_pompa



kemudian dikirim melalui MQTT.



3.5.2



Program Pada Void Setup Program ini terdiri dari program – program yang ada pada void Setup



yang digunakan untuk menginisialisasi variable, mode pin, menggunakan fungsi library yang telah didefinisikan.



43



Tabel 3.2 Program pada Void Setup Arduino Nano Program Serial.begin(115200);



Analisa Serial.begin digunakan untuk



arduinoSerial.begin(115200);



mensetting kecepatan data ke 115200 bps. Sementara arduinoSerial digunakan untuk memulai komunikasi serial antara kedua mikrokontroller.



myservo.attach(10);



Myservo.attach(10) digunakan



sensorSuhu.begin();



untuk menentukan pin servo yang



pinMode(pompaairutama,OUTPUT);



terdapat di pin 10. Sensorsuhu.begin digunakan untuk memulai pembacaan sensor DS18B20. Pinmode digunakan untuk menentukan mode variabel yang bisa berupa input atau output.



3.5.3



Program Void Loop Program ini terdiri dari program-program untuk cara kerja sensor.



44



Tabel 3.3 Program Void Loop Arduino Nano Program digitalWrite(pompaairutama, LOW);



Analisa digitalWrite digunakan untuk



suhuSekarang = ambilSuhu();



menentukan sebuah variable



Serial.println(suhuSekarang);



tersebut berkondisi low atau high.



delay(2000);



Di kodingan disebelah,



long duration, cm;



pompaairutama dikondisikan



pinMode(trigPin, OUTPUT);



sebagai low, ini dikarenakan relay



digitalWrite(trigPin, LOW);



yang digunakan bersifat active low,



delayMicroseconds(2);



yang berarti akan aktif apabila



digitalWrite(trigPin, HIGH);



keadaan relay low. Selain itu juga



delayMicroseconds(10);



terdapat kodingan untuk



digitalWrite(trigPin, LOW);



menyalakan sensor ultrasonik yang



pinMode(echoPin, INPUT);



ditandai dengan variable trigpin dan



duration = pulseIn(echoPin, HIGH);



echopin. Cm = microsecondstocentimenters



cm = microsecondsToCentimeters(duration);



digunakan untuk mengkonversikan



Serial.print(cm);



microsecond menjadi satuan



Serial.print("cm");



centimeter. Serial.print digunakan



Serial.println();



untuk menampilkan data dari



delay(200);



variable tersebut kedalam serial monitor yang terdapat di arduino.



if (cm >= 10) {



Disini terdapat sebuah kondisi yang



myservo.write(10);



apabila pembacaan sensor



valve = 1;



ultrasonik terhadap air sudah lebih besar 10 cm, maka katup air akan



} else { myservo.write(90);



terbuka dan mengisi air tersebut serta memberikan data 1 untuk



45



valve = 0;



menandakan valve sedang terbuka.



}



Dan sebaliknya apabila sudah dibawah 10 cm, maka katup akan



String str =



menutup dengan sendirinya dan



String(''); arduinoSerial.print(str);



sudah tertutup dengan memberikan kondisi 0. “String str =” digunakan



}



untuk membuat data yang sudah



float ambilSuhu()



diambil menjadi array yang



{



kemudian akan dikirimkan ke sensorSuhu.requestTemperatures();



nodemcu dengan komunikasi serial.



float suhu = sensorSuhu.getTempCByIndex(0);



Di kodingan paling akhir terdapat



return suhu;



sebuah rumus yang digunakan



}



untuk mengkonversikan microseconds yang sudah didapat menjadi centimeter. 29 merupakan



long microsecondsToCentimeters(long microseconds) { return microseconds / 29 / 2;



kecepatan gelombang suara yang terdapat di udara.



}



3.6



Penjelasan Potongan Program NodeMCU Program terdiri dari beberapa bagian yang masing – masing bagian



akan dijelaskan berdasarkan program input, proses, dan output.



3.6.1



Program Inisialisasi Program ini pada berfungsi untuk inisialisasi atau penentuan nilai awal



pada mikrokontroler yaitu pemberian nilai apakah port yang digunakan sebagai



46



input ataupun output dan inisialisasi jenis variable yang digunakan.



Tabel 3.4 Program Inisialisasi NodeMCU Program #include



Analisa Pada program yang terdapat di inisialisasi



#include



nodeMcu ini, terdapat beberapa library



#include



yang harus dimasukan seperti kodingan esp8266 untuk melakukan koneksi



// Update these with values suitable for



terhadap wifi, lalu library komunikasi



your network.



serial yang digunakan untuk melakukan komunikasi serial. Lalu ada library



const char* ssid = "Istana Kepresidenan



pubsubclient yang digunakan untuk



Hachiohji";



melakukan koneksi MQTT yang berupa



const char* password = "ahuehue8686";



subscribe maupun publish. Selain itu



const char* mqtt_server =



terdapat program yang digunakan untuk



"broker.hivemq.com";



mengkoneksikan nodeMCU ke wifi yang



const char* topic =



sudah kita gunakan. Dibawahnya terdapat



"SmartO'Ponic_From_Device";



program yang digunakan untuk



const char* subs =



mengkoneksikan nodeMCU ke server



"SmartO'Ponic_From_Smartphone";



MQTT broker yang kita inginkan. Disini penulis menggunakan



WiFiClient espClient;



broker.hivemq.com. Selain itu, terdapat



PubSubClient client(espClient);



program yang menghubungkan komunikasi serial yang berasal dari



SoftwareSerial nodeSerial(5, 4);



nodeMCU. Ini terletak di pin 5 sebagai receiver dan 4 sebagai transmitter.



// Example 5 - Receive with start- and



Setelah data diterima dari arduino nano,



end-markers combined with parsing



terdapat proses parsing yang akan



47



dimasukan ke array sementara yang const byte numChars = 32;



terdapat di program sebelah ini.



char receivedChars[numChars];



Kemudian, data yang sudah diparsing



char tempChars[numChars];



//



temporary array for use when parsing



akan dimasukan kedalam beberapa variable yang sudah kita siapkan.



// variables to hold the parsed data int jarak, suhu; bool valve; boolean newData = false;



void setup_wifi() {



Pada program yang terdapat disebelah ini,



delay(10);



koneksi wifi akan dilakukan. Pertama



// We start by connecting to a WiFi



dengan memberikan status bahwa koneksi



network



wifi sudah terhubung ke ssid yang kita



Serial.println();



inginkan. WiFi.begin digunakan untuk



Serial.print("Connecting to ");



memulai koneksi wifi dengan memasukan



Serial.println(ssid);



ssid yang digunakan dan password dari



pinMode(12, OUTPUT);



ssid tersebut. Apabila koneksi wifi belum



WiFi.begin(ssid, password);



terkoneksi ke ssid yang diinginkan, maka serial monitor akan menampilkan status



while (WiFi.status() != WL_CONNECTED) {



}



wifi dengan “......” hingga ssid berhasil dikoneksikan ke NodeMCU. Titik



delay(500);



tersebut diberikan delay sebesar 0,5 detik



Serial.print(".");



untuk setiap printnya.



48



Apabila wifi sudah terkoneksi, maka randomSeed(micros());



status di serial monitor akan diupdate dan memberikan kita status ip address yang



Serial.println("");



kita dapatkan ke nodeMCU kita yang



Serial.println("WiFi connected");



didapat dari ssid tersebut.



Serial.println("IP address: "); Serial.println(WiFi.localIP()); } void callback(char* topic, byte* payload,



Pada program ini, kita akan melakukan



unsigned int length) {



sistem callback terhadap payload MQTT



Serial.print("Message arrived [");



yang kita subscribe. Payload atau isi dari



Serial.print(topic);



data MQTT yang kita dapat apabila kita



Serial.print("] ");



subscribe akan dikonversikan menjadi



for (int i=0;i