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.
Gambar 5.1 BodiASITA
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 DanPompa 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
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.
Tabel 5.1 Arus Keseluruhan Komponen ASITA
Komponen Nilai Tegangan Sensor Kelembaban
Tanah
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.
Tabel 5.2 Persentase Keberhasilan Motor Servo
No Gerakan Motor Servo Relay Waktu
penyiraman Derajat Arah 1 1600 Kiri ON 5 Detik 2 600 Kanan ON 5 Detik 3 900 Tengah Off - 4 900 Tengah Off -
5 1300dan 300 Gerakan bolak
balik kanan dan kiri ON 5 Detik
Tabel 5.3 Persentase Keberhasilan Keluaran Air Pada Pompa Air
No Level air Jarak 1 10% 1,7 cm 2 20% 3,4 cm 3 30% 5,1 cm 4 40% 6,8 cm 5 50% 8,5 cm 6 60% 10,2 cm 7 70% 11,9 cm 8 80% 13,6 cm 9 90% 15,3 cm 10 100% 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;
Agar dapat menggunakan motor servo kita harus memasukkan library <servo.h> ke dalam program. Baris program diatas berfungsi untuk mendefinisikan motor servo.
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 setup(){ servo_air.attach(9); servo_air.write(90); 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); }
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);.
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);.
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); }
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) : 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.
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(); }