BAB 5 IMPLEMENTASI DAN PENGUJIAN Pada Bab ini menjelaskan mengenai langkah-langkah untuk memproses pergerakan motor servo yang diperoleh kemudian diproses oleh Arduino kepada motor servo. Tujuan dari pengujian ini adalah untuk mengetahui kinerja dari sistem yang berupa kehandalan dan ketepatan eksekusi antara program dengan modul yang dibuat untuk mengontrol sistem yang ada, dan tidak menutup kemungkinan adanya error atau bugs serta kekurangan-kekurangan dalam alat yang telah dibuat. Untuk memudahkan dalam menganalisa dan menghindari adanya error, maka sebelum semua program digabungkan menjadi program yang terintegrasi, maka sebaiknya dilakukan pengujian program dari masing-masing bagian secara terpisah. Pengujian keseluruhan yang dilakukan pada bab ini. 5.1
Implementasi Terdapat tiga bagian dalam tahapan implementasi, antara lain implementasi desain
mekanik, desain elektrik dan program kendali. 5.1.1 Implementasi Desain Mekanik Desain mekanik adalah badan robot. Bahan yang digunakan adalah akrilik berukuran tinggi 43cm dengan lebar 24cm sebagai penempatan komponen-komponen pembangun yaitu Arduino uno, motor servo, pompa air, relay, tandon dan bluetooth. Hasil implementasi desain mekanik robot dapat dilihat pada gambar berikut.
5-1
http://digilib.mercubuana.ac.id/
Gambar 5.1 Bodi ASITA
5.1.2 Implementasi Desain Elektrik Implementasi dari desain elektrik adalah rangkaian sistem motor servo, pompa air, regulator, power jack female, relay dan Arduino.
Gambar 5.2 Rangkaian Sistem Motor Servo Dan Pompa Air Untuk mengatur tegangan listrik dari adaptor ke keseluruh komponen ASITA teratasi, maka dibutuhkan step down converter untuk menurunkan tegangan adaptor 12 volt menjadi 6 5-1
http://digilib.mercubuana.ac.id/
volt.Dari adaptor 12 volt, diturunkan menjadi 6 volt oleh step down converter, lalu dialirkan ke Arduino, motor servo dan pompa air.
5.1.3 Implementasi Program Kendali 5.2
Spesifikasi Perangkat Keras Perangkat keras yang digunakan untuk pengisian program ke Arduino mega adalah
laptop dengan spesifikasi sebagai berikut: 1.
Laptop Lenovo 20136
2.
Processor AMD E-300 APU with Radeon(tm) HD Graphics 1.30Ghz
3.
RAM 2GB
5.2.1 Spesifikasi Perangkat Lunak Perangkat lunak yang digunakan untuk perancangan dan implementasi ASITA ialah sebagai berikut: 1. Arduino IDE 1.6.12 2. Adobe Photoshop CS6 3. Microsoft Office 2016 4. Fritzing 0.9.3 Sistem Operasi Windows 7 64bit 5. Aplikasi Arduino IDE (Integrated Development Environment) 6. Smartphone Android 6.0 (Marshmellow) 7. RAM 3GB/ROM 32GB 8. Processor Snapdragon 325 9. Software Terminal Bluetooth
5.3
Pengujian Dalam tahap pengujian, terdapat beberapa pengujian rangkaian alat secara
keseluruhan antara lain.
5.3.1 Pengujian Rangkaian Daya Pengujian ini dilakukan untuk mengetahui apakah rangkaian daya/power supply dapat bekerja dengan baik. Pengujian dilakukan dengan mensuplai tegangan input dari baterai sebesar 12 volt kemudian dilakukan pengukuran pada output masing-masing keluaran dengan satuan ampere diukur dengan menggunakan multimeter. 5-1
http://digilib.mercubuana.ac.id/
Tabel 5.1 Arus Keseluruhan Komponen ASITA Komponen Sensor Tanah
Nilai Tegangan
Kelembaban 5 volt
Sensor Ultrasonic
5 volt
Pompa air
6 volt
Motor Servo
5 volt
Relay
5 volt
Adaptor
12 volt
5.3.2 Pengujian Motor Servo Pengujian program dapat dilakukan apabila kalibrasi motor servo sudah diatur. Maka dari itu, kalibrasi motor servo agar daya gerak motor servo sesuai dengan derajat yang telah di atur . Setelah kalibrasi sudah dilakukan, kita perlu mendefinisikan port pada motor servo untuk dihubungkan dengan mikrokontroler. Pengujian dilakukan didalam rumah dengan 2 pot dengan berisi tanah dan tanaman, wadah yang berisi air. Pada 2 pot tersebut di isi dengan tanah yang kering dan lembab, wadah berisi air untuk melakukan pengujian. Berikut merupakan tabel hasil pengujian keberhasilan sensor kelembaban tanah dalam mendeteksi kelembaban pada tanah dan pengujian sensor pendeteksi sisa air dalam mendeteksi air pada wadah.
5-1
http://digilib.mercubuana.ac.id/
Tabel 5.2 Persentase Keberhasilan Motor Servo No 1 2 3 4 5
Gerakan Motor Servo Derajat Arah 0 160 Kiri 0 60 Kanan 0 90 Tengah 0 90 Tengah Gerakan bolak 1300dan 300 balik kanan dan kiri
Relay
Waktu penyiraman
ON ON Off Off
5 Detik 5 Detik -
ON
5 Detik
Tabel 5.3 Persentase Keberhasilan Keluaran Air Pada Pompa Air
1 2 3 4 5
Level air 10% 20% 30% 40% 50%
6
60%
7
70%
8
80%
9
90%
10
100%
No
Jarak 1,7 cm 3,4 cm 5,1 cm 6,8 cm 8,5 cm 10,2 cm 11,9 cm 13,6 cm 15,3 cm 17 cm
Berikut pengujian pada motor servo: Pengujian motor servo bertujuan untuk mengetahui apakah servo dapat bekerja dengan baik sesuai dengan perintah dari sistem kendali. Untuk menghubungkan Arduino uno dengan masing - masing motor servo yang digunakan pada kandang pintar perlu mendefinisikan port pada motor servo agar dapat tehubung dengan port Arduino uno.
#include <Servo.h> Servo servo_air;
5-1
http://digilib.mercubuana.ac.id/
Agar dapat menggunakan motor servo kita harus memasukkan library <servo.h> ke dalam program. Baris program diatas berfungsi untuk mendefinisikan motor servo.
void setup(){ servo_air.attach(9); servo_air.write(90);
Setelah mendefinisikan motor servo, motor servo harus ditentukan port nya pada Arduino uno. Baris diatas merupakan sintaks untuk mendefinisikan port yang digunakan pada Arduino uno. Pendefinisian port untuk servo harus berada di dalam fungsi void setup(), void setup() berguna untuk menginisialisasi port pada Arduino. Servo_air.attach(9); mendefinisikan bahwa servo air menggunakan port 9 pada Arduino uno.Servo_air.write(90); mendefinisikan bahwa servo air berada pada posisi 900.
void pot1(){ servo_air.write(90); delay(1000); servo_air.write(160); delay(300); servo_air.write(130); delay(300); } delay(25); servo_air.write(90); delay(1000); }
5-1
http://digilib.mercubuana.ac.id/
Fungsi diatas merupakan pilihan yang ada pada mode penyiraman tanaman 1 yang berada pada sisi kiri.Void pot1() { untuk mendefinisikan variable pot 1 atau penyiraman pada tanaman 1 yang berada pada posisi kiri. Servo_air.write(90); mendefinisikan bahwa servo air berada pada posisi 900.Delay(1000);sebagai perintah untuk memberikan jeda selama 1 detik. Servo_air.write(160);untuk mendefinisikan bahwa servo air berada pada posisi 1600atau servo berada pada posisi kiri dan akan melakukan penyiraman pada tanaman 1. Delay(300); sebagai perintah untuk memberikan jeda selama 15ms. Setelah jeda dalam kurun waktu 15ms, servo kembali bergerak sekitar 300 dengan kode servo.air_write(30);selama penyiraman berlangsung. Delay(25); sebagai jeda waktu untuk menunggu servo kembali pada posisi awal 900 dengan kode servo_air.write(90);.
void pot2(){ servo_air.write(90); delay(1000); servo_air.write(60); delay(300); servo_air.write(30); delay(300); } delay(25); servo_air.write(90); delay(1000); }
Fungsi diatas merupakan pilihan yang ada pada mode penyiraman tanaman 2 yang berada pada sisi kanan.Void pot2() { untuk mendefinisikan variable pot 2 atau penyiraman pada tanaman 2 yang berada pada posisi kanan. Servo_air.write(90); mendefinisikan bahwa servo air berada pada posisi 900.Delay(1000);sebagai perintah untuk memberikan jeda selama 1 detik. Servo_air.write(60);untuk mendefinisikan bahwa servo air berada pada posisi 600atau servo berada pada posisi kanan dan akan melakukan penyiraman pada tanaman 2. Delay(300); sebagai perintah untuk memberikan jeda selama 15ms. Setelah jeda dalam kurun waktu 15ms, servo kembali bergerak sekitar 300 dengan kode servo.air_write(30);selama penyiraman berlangsung. Delay(25); sebagai jeda waktu untuk menunggu servo kembali pada posisi awal 900 dengan kode servo_air.write(90);. 5-1
http://digilib.mercubuana.ac.id/
Untuk penyiraman tanaman secara otomatis untuk meintegrasikan kode sensor kelembaban Soil Moisture untuk melakukan penyiraman secara otomatis. Dengan hasil deteksi kekeringan tanah pada Soil Moisture sebagai output penyiraman otomatis. if (sensor_pot1 >= 900 && sensor_pot2 >= 900) { pot1(); pot2(); basah = 1; }else if (sensor_pot1 <= 800 && sensor_pot2 >= 900) { pot2(); basah = 1; }else if (sensor_pot1 >= 900 && sensor_pot2 <= 800) { pot1(); basah = 1; }else if (sensor_pot1 <= 800 && sensor_pot2 <= 800) { if (basah == 1){ Serial.println("POT Masih Basah."); } basah = 0; } bacaperintah(); }
if (sensor_pot1 >= 900 && sensor_pot2 >= 900) :
Kondisi ini jika pot1 dan
pot2 jika kering akan menyiram kedua pot.
else if (sensor_pot1 <= 800 && sensor_pot2 >= 900) : Kondisi ini
jika hanya pot2 yang kering makan hanya akan menyiram pot2
else if (sensor_pot1 >= 900 && sensor_pot2 <= 800): Kondisi ini
jika hanya pot1 yang kering maka hanya akan menyiram pot1 else if (sensor_pot1 <= 800 && sensor_pot2 <= 800) : Jika hanya pot1 dan pot2 masih basah maka tidak menyiram dan akan mencetak status POT Masih Basah.
5-1
http://digilib.mercubuana.ac.id/