HASIL DAN PEMBAHASAN
4.3 Pengujian dan Pembahasan Hardware
4.4.3 Pembahasan Program Master
Program master dalam penelitian ini menggunakan mikrokontroler Arduino Nano. Secara garis besar program master berfungsi untuk komunikasi antar slave, memprogram
sound activation, sensor UVtron, Sensor Thermal Array, pompa dan servo penyemprot.
Program master menggunakan beberapa library dan inisialisasi beberapa variabel, berikut penjelasan tiap baris pada Gambar 4.36.
1. Baris 6 – 8 menunjukkan library yang digunakan pada program slave 1.
Library wire.h berfungsi untuk Arduino IDE berkomunikasi dengan board
Arduino, library Adafruit_PWMServoDriver.h berfungsi untuk mengontrol
driver servo kaki, library Adafruit_AMG88xx.h berfungsi untuk
memperoleh data sensor AMG8833.
2. Baris 16-64 inisialisasi variabel sensor-sensor yang digunakan.
program komunikasi slave 1 dan 2, dan program utama yang terdiri atas program Sound activation, cari ruang, cek api ruang, keluar ruang, posisi api dan memadamkan api.
1. Proses Jalan
Master akan menjalankan program fuzzy_jalan() dahulu. Pada program fuzzy_jalan() master menerima data derajat kanan dan derajat kiri dalam variabel kanan dan kiri dari slave 1. Data-data yang dikirim oleh slave 1 merupakan hasil pembacaan fuzzy yang nilainya berkisar antara 4 hingga 32, namun selain nilai tersebut slave 1 juga mengirimkan kode khusus untuk kondisi khusus (tabel 4.20) yang dialami oleh robot. Kode khusus tersebut kemudian diberi variabel kanan dan kiri untuk mengarahkan robot sesuai dengan variabelnya pada program maju().
Tabel 4.20. kondisi khusus di master No Kondisi tertentu
kode dari
slave 1 Keterangan kanan kiri
1
PING depan (PING ke-0)
dekat dengan tembok 50 0
badan robot bergeser ke kiri kurang lebih 30 derajat 2
IR depan dekat dengan
boneka 60 0
badan robot berputar ke kiri kurang lebih 90 derajat 3
PING atas kanan (PING
ke-7) dekat dengan tembok 80 0
badan robot berputar ke kiri kurang lebih 20 derajat 4
Output fuzzy mendeteksi set
point (18) 18 18
robot berjalan maju dan lebih cepat
Program maju() merupakan program untuk menggerakkan servo kaki untuk berjalan. Variabel kanan dan kiri dari program fuzzy_jalan() tadi dimasukkan ke program maju() agar robot dapat bergerak sesuai dengan pembacaan fuzzy dan kode khusus yang dikirim oleh slave 1 untuk meminimalkan robot menabrak dinding arena (tabel 4.22). Robot berjalan sesuai dengan program maju() dengan derajat base kaki +/- agar robot dapat bergerak maju/mundur (tabel 4.21). Program ini mensetting pin-pin pada servo (gambar 4.37) dan melakukan gerakan sesuai dengan step gerakan maju().
0 75 servo terluar kaki A, gerakan ke kiri/kanan
8 82 servo terluar kaki C, gerakan ke kiri/kanan
12 75 servo terluar kaki D, gerakan ke kiri/kanan
5 97 servo tengah kaki B, gerakan naik/turun
1 90 servo tengah kaki A, gerakan naik/turun
9 75 servo tengah kaki C, gerakan naik/turun
13 85 servo tengah kaki D, gerakan naik/turun
6 95 servo dalam kaki B, gerakan maju/mundur
2 100 servo dalam kaki A, gerakan maju/mundur
10 80 servo dalam kaki C, gerakan maju/mundur
14 85 servo dalam kaki D, gerakan maju/mundur
Tabel 4.22. Step gerakan jalan robot No.
Gerakan
Nama
kaki Derajat gerakan Gerakan servo
keterangan pin servo 1 A (derajat base pin 1)+20 naik pin 1
C (derajat base pin 9)+20 naik pin 9 2 B (derajat base pin 6) - kiri mundur pin 6 D (derajat base pin 14) posisi siap pin 14 3 A (derajat base pin 2) posisi siap pin 2
C (derajat base pin 10) + kiri maju pin 10 4 A (derajat base pin 1) turun/posisi siap pin 1
C (derajat base pin 9) turun/posisi siap pin 9 5 B (derajat base pin 5) - 20 naik pin 5 D (derajat base pin 13) - 20 naik pin 13 6 A (derajat base pin 2) + kanan mundur pin 2
C (derajat base pin 10) posisi siap pin 10 7 B (derajat base pin 6) posisi siap pin 6
D (derajat base pin 14) - kanan mundur pin 14 8 B (derajat base pin 5) turun/posisi siap pin 5
Gambar 4.37. Ilustrasi pin servo kaki 2. Program komunikasi slave 1 dan 2
Program komunikasi slave 1 sesuai gambar 4.38 program tersebut terdapat di void cekdata_slave1(). Pada void ini master berkomunikasi ke slave 1 dengan alamat ID 8 dan 2 jumlah data (kanan,kiri). Slave 1 berhubungan dengan proses fuzzy sehingga program berikut setelah komunikasi dengan slave 1 adalah void fuzzy_jalan(). Void tersebut berfungsi untuk mengolah kode yang dikirimkan oleh slave 1 menjadi pergerakan badan robot .
Gambar 4.38. Void cekdata_slave1
Program komunikasi slave 2 pada gambar terdapat di void cekdata_slave2() (gambar 4.39). Pada void ini master berkomunikasi dengan
slave 2 melalui alamat ID 9 dan 1 data. Void ini aktif setelah slave 2 diaktifkan
oleh master dengan program Sound activation, void ini berfungsi untuk membaca data garis pada slave 2.
Gambar 4.39. Void cekdata_slave2 3. Program utama
Program utama pada master terdiri dari program Sound activation, cari ruang, cek api ruang, keluar ruang, posisi api dan memadamkan api.
a. Sound Activation
Void untuk program Sound activation adalah soundactive() (gambar 4.40). Void ini berfungsi untuk mengaktifkan robot. Pertama-tama program yang akan membaca pin sensor sound activation dan disimpan pada variabel val, jika variabel val telah mendeteksi adanya suara (val=0) maka akan masuk ke label konter, label konter berfungsi untuk menunggu suara selama 5 detik, maka indikator LED suara aktif dan master mengaktifkan program utama master, slave 1 dan slave 2 sehingga akan melanjutkan ke program selanjutnya yaitu program cari ruang.
Void untuk program cari ruang adalah cari_ruang(). Program pada void ini berfungsi untuk mengecek robot dalam ruang, gerakan robot dan pembacaan sensor garis. Jika kondisi garis yang terbaca bernilai 1 (telah membaca garis) maka robot akan meluruskan badan robot sesuai kondisi pada baris 200-207 dan robot dinyatakan telah masuk dalam ruang. Setelah robot telah mencapai kondisi yang ditentukan robot akan mengecek api pada ruang dengan memanggil program cek api ruang.
Gambar 4.41. Listing program cari ruang
c. Cek api ruang
Program cek api ruang berfungsi untuk mengecek api pada tiap ruang yang dilalui oleh robot. Program cek api ruang dibagi menjadi 3 void yaitu cek_apirg_1(), cek_apirg_2() dan cek_apirg_3(). Cek_apirg_1() merupakan kondisi pertama kali robot masuk ruangan sehingga posisi badan robot lurus dan telah masuk ke kondisi robot dalam ruang (Gambar 4.42). Program yang dijalankan adalah program sensor UVtron Hamamatsu untuk mengecek ada atau tidaknya api dalam ruang, jika sensor Hamamatsu mendeteksi adanya api maka LED api akan menyala dan robot akan menyusuri ruang. Kemudian program akan membaca program sensor thermal array dan program cari api agar robot dapat mendeteksi posisi api. Namun sensor Hamamatsu memiliki kemungkinan tidak dapat membaca beberapa letak api (tabel 4.5) sehingga program yang akan dijalankan adalah program Cek_apirg_2().
Gambar 4.42. Ilustrasi robot masuk ruang (1) Keterangan :
- Lingkaran biru : Letak sensor Hamamatsu
Pada program Cek_apirg_2() robot akan bergerak dahulu ke arah kanan (gambar 4.43) robot agar sensor Hamamatsu dapat membaca api dalam ruang, jika sensor Hamamatsu dapat mendeteksi api dalam ruang maka master akan menjalankan program sensor thermal array dan program cari api. Namun jika sensor Hamamatsu masih belum mendapatkan api dalam ruang maka program cek_apirg_3() akan dijalankan.
Gambar 4.43. ilustrasi robot masuk ruang (2) Keterangan :
- Lingkaran biru : Letak sensor Hamamatsu
Pada program cek_apirg_3() robot akan bergerak dahulu ke arah kiri (gambar 4.44) robot agar sensor Hamamatsu dapat membaca api dalam ruang, jika sensor Hamamatsu dapat mendeteksi api dalam ruang maka program sensor
thermal array dan program cari api akan dijalankan. Jika sensor Hamamatsu
tidak mendeteksi api dalam ruang maka master akan menjalankan program keluar ruang
Gambar 4.44. Ilustrasi robot masuk ruang (3) Keterangan :
- Lingkaran biru : Letak sensor Hamamatsu
d. Keluar ruang
Program keluar ruang dijalankan ketika robot tidak menemukan api dalam ruang (gambar 4.45). Pertama robot akan berputar hingga menghadap ke arah pintu ruang, kemudian program akan masuk ke label keluar, di label keluar robot akan berjalan menyusuri dinding hingga menemukan garis, setelah garis terdeteksi master akan menjalankan program cari ruang.
Gambar 4.45. Listing program keluar ruang
e. Posisi api
Pada program cek api ruang setelah api dideteksi ada dalam ruang oleh sensor Hamamatsu, master menjalankan program sensor thermal array dan
threshold maka master akan menjalankan program grideye_2().
Gambar 4.46. Listing program posisi api
f. Memadamkan api
Program memadamkan api terdapat pada void grideye_2(), program akan mengecek ulang pembacaan sensor thermal array, kemudian tiap baris pixel dibandingkan kembali dengan threshold. Jika api yang dideteksi berada pada kolom yang nilainya lebih besar dari threshold maka servo penyemprot akan bergerak mengarahkan nozzle ke arah api dan pompa akan myemprotkan air selama 5 detik. Setelah melakukan penyemprotan sensor Hamamatsu akan mengecek kembali apakah masih ada api, jika masih ada api maka program grideye_2() akan dijalankan lagi, namun jika api sudah tidak terdeteksi oleh Hamamatsu maka indikator LED api padam dan misi pemadaman api selesai
Gambar 4.47. Program grideye_2 (1)
Misi memadamkan api dilakukan dengan cara robot diuji dengan 2 konfigurasi ruang (berdasarkan gambar 2.2 dan 2.4) 1 posisi rintangan, 3 posisi
home (berdasarkan gambar 2.5) dan 4 posisi lilin (berdasarkan gambar 2.6),
berikut hasil data misi memadamkan api dalam tabel 4.23 : Tabel 4.23. Data keberhasilan misi memadamkan api Kombinasi Tipe
ruang Boneka Home Api
Menghindari boneka mendeteksi api memadamkan api 1 B 1 H11 A32 Ya Ya Ya 2 B 1 H11 A23 Ya Ya Ya 3 B 1 H11 A34 Ya Ya Ya 4 B 1 H11 A41 Ya Ya Ya 5 B 1 H23 A11 - Ya Ya 6 B 1 H23 A12 - Ya Tidak 7 B 1 H23 A34 Ya Ya Ya 8 B 1 H23 A41 Ya Ya Ya 9 B 1 H41 A11 Ya Ya Ya 10 B 1 H41 A24 Ya Ya Ya 11 B 1 H41 A33 Ya Ya Ya 12 B 1 H41 A34 Ya Ya Ya 13 D 1 H11 A34 Ya Ya Ya 14 D 1 H11 A22 Ya Ya Ya 15 D 1 H11 A32 Ya Ya Ya 16 D 1 H11 A41 Ya Ya Ya 17 D 1 H23 A14 Ya Ya Ya 18 D 1 H23 A11 Ya Ya Ya 19 D 1 H23 A32 Tidak Ya Ya 20 D 1 H23 A41 Tidak Ya Ya 21 D 1 H41 A14 Tidak Ya Ya 22 D 1 H41 A23 Tidak ya Ya 23 D 1 H41 A32 Tidak ya Ya 24 D 1 H41 A32 Tidak ya Ya
ketika robot masuk ke ruang dan posisi robot berbelok ke arah kiri, slave 1 masuk ke kode khusus untuk berputar ke kanan sehingga saat belok ke kanan robot memerlukan jalur belok yang panjang, sehingga robot terlalu dekat dengan lilin dan mengakibatkan lilin jatuh tersentuh oleh kaki robot. Namun berdasarkan tabel hasil misi memadamkan api keberhasilan robot sebesar 95,83% didapat dari ((jumlah percobaan berhasil/jumlah percobaan) x 100).
79