iv
The development of mobile robot technology has been growing rapidly, especially in artificial intelligent robot which is used to accomplish a maze. In robotics area there is two kinds of maze that commonly used, there are wall maze and lines maze. Commonly wall maze known as labyrinth terms that means a way
web which is built in tunnel with wall without a roof. In line maze a way web that shaped made which is using line. If the lines is white colored so that the background is black colored or reversed. The problem appears in line maze that is the way for getting a shorten way from the line maze.
In this final paper, the problem in line maze has been finished with using depth first search algorithm which is available in artificial intelligent field. The searching process of depth-first search it is done to one level node. The searching
begins from root node to higher level. This process is repeated continue until find the solution.
The robot moving arranged from dual mode, there are search mode and return mode. In search mode, the robot is doing a journey from the start to finish position with the rule that the robot will use mainly turned left if it is facing a crossing way. In return mode, the robot have moved from the start to finish with his shorten way. The shorten way is reached from the unique codes that have been converted. Refer to conversion trial program that have been done in whole system
testing, is reached 70% well done. The failure caused of the battery condition that is getting weak and the robot control systems are not done well.
iii
ABSTRAK
Perkembangan teknologi mobile robot telah berkembang pesat, terutama pada bidang kecerdasan buatan robot yang digunakan untuk menyelesaikan suatu maze. Pada bidang robotika ada dua jenismazeyang umum digunakan, yaituwall maze dan line maze. Wall maze pada umumnya dikenal dengan istilah labirin, yakni suatu jaringan jalan yang terbentuk atas lorong-lorong dengan dinding tanpa atap. Pada line maze, jaringan jalan yang terbentuk dibuat dengan menggunakan garis. Jika garis berwarna putih maka background berwarna hitam atau sebaliknya. Permasalahan yang timbul pada line maze adalah cara untuk mendapatkan jalur terpendek dariline maze.
Pada tugas akhir ini, permasalahan pada line maze diselesaikan dengan memanfaatkan algoritma depth first search yang terdapat pada ilmu kecerdasan buatan. Proses pencarian depth-First Search dilakukan ke node - node yang selevel. Pencarian dimulai dari node akar ke level yang lebih tinggi. Proses ini diulangi terus hingga ditemukannya solusi.
Pergerakan robot terdiri dari dua mode, yaitu mode search dan mode return. Pada mode search, robot melakukan perjalanan dari posisi start menuju finishdengan aturan bahwa robot akan mengutamakan belok kiri bila menjumpai persimpangan. Kode-kode unik dibangkitkan setiap robot berjumpa dengan persimpangan. Pada mode return, robot sudah berjalan dari start menuju finish dengan jalur tependeknya. Jalur terpendek diperoleh dari kode-kode unik yang telah dikonversi. Berdasarkan percobaan program konversi yang telah dilakukan, maka dibutuhkan formulasi yang handal agar diperoleh hasil yang diinginkan. Pada pengujian keseluruhan sistem, diperoleh tingkat keberhasilan 70 %. Kesalahan ini disebabkan kondisi baterai yang semakin melemah dan sistem kendali robot yang kurang baik.
1
PENDAHULUAN
1.1. Latar Belakang
Perkembangan teknologi sekarang ini telah menciptakan berbagai kemajuan dibidang teknologi, khususnya teknologi dibidang robotika. Perkembangan elektronika juga memberikan kemajuan dalam mengontrol robot itu sendiri. Sekarang ini, ilmu pengetahuan dan teknologi sangat diperlukan untuk membantu aktivitas manusia yang semakin berkembang. Perkembangan ilmu dan teknologi ini didasari oleh pola pikir manusia yang semakin cerdas serta keinginannya untuk mencari segala sesuatu yang lebih mudah, praktis dan ekonomis. Salah satu teknologi yang banyak digunakan pada sekarang ini adalah teknologi mikrokontoler. Robot merupakan salah satu perkembangan dalam bidang teknologi mikrokontroler.
Jenis robot yang banyak ditemui pada saat ini adalah mobile robot yang dapat mengikuti garis (line follower) yang berjalan dari titik start ke titik tujuan atau target dengan beragam macam bentuk track, tetapi pada kebanyakannya robot hanya dapat mengikuti garis saja tanpa bisa menghafal trackdan melakukan pemetaan terhadap jalur yang dilewati serta sistem kendali yang digunakan kurang kokoh.
Dengan adanya mobile robot yang mempunyai sistem kendali yang kokoh, dapat menghafal track, dan dapat melakukan pemetaan terhadap track yang dilewati tentu dapat menciptakan suatu mobilerobot yang dapat berjalan di track yang rumit secara efektif dan efisien dengan memanfaatkan ilmu di bidang intelegensi buatan dan mikrokontroler. Berdasarkan permasalahan tersebut, penulis mempunyai gagasan untuk membuat suatu perancangan sistem kendali dan algoritmamobilerobot untuk studi kasusmaze Solving.
2
terbentuk dibuat dengan menggunakan garis. Jika garis berwarna putih maka background berwarna hitam atau sebaliknya. Jadi, Maze solving adalah pemecahan masalah untuk mendapatkan jalur terpendek dari line maze (suatu jaringan jalan yang rumit). Pada tugas akhir ini, permasalahan pada line maze diselesaikan dengan algoritma Depth First Searchyang terdapat pada bidang ilmu intelegensi buatan. Algoritma ini akan mencari semua kemungkinan track yang akan dilewati dengan lebih mengutamakan belok kiri pada saat berjumpa simpangan sekaligus robot akan mengkonversi track tersebut menjadi suatu jalur terpendek dan menyimpan jalur terpendek tersebut ke memori robot.
1.2. Maksud dan Tujuan
Maksud dari tugas akhir ini adalah merancang sistem kendali dan algoritma mobilerobot untuk studi kasusmaze solving.
Sedangkan tujuan perancangan sistem pada tugas akhir ini yaitu agar sebuah mobile robot dapat mencapai titik finish pada sebuah maze dan memiliki kemampuan untuk memilih jalur yang lebih efektif dan efisien.
1.3. Rumusan Masalah
Permasalahan yang akan dibahas pada tugas akhir ini adalah:
1. Bagaimana merancang sistem kendali mobile robot agar dapat menyelesaikan sebualmaze line.
2. Bagaimana merancang algoritma agar dapat melakukan pencarian jalur yang lebih efektif dan efisien untuk mencapai titikfinish.
1.4. Batasan Masalah
Pada perancangan mobile robot yang dibuat ini terdapat beberapa batasan masalah yaitu:
1. Menggunakan mikrokontroler ATmega32.
2. Program dibuat dengan menggunakan bahasa C/C++.
4. Alat yang akan dibuat menggunakan motor DC sebagai kendali putaran roda mobil yang dikendalikan oleh mikrokontroler.
5. Bentuk robot maksimal 20 cm x 20 cm.
6. Bentuk track ± 206 cm x 86 cm dan jalurnya hanya berbentuk garis hitam.
1.5. Metode Penelitian
Metodologi penelitian yang dilakukan dalam penyelesaian tugas akhir ini meliputi:
1. Studi literatur
2. Suatu metode pengumpulan data dengan membaca atau mempelajari buku yang berhubungan dengan masalah yang menjadi topik tugas akhir.
3. Perancangan
4. Mengaplikasikan teori yang didapat dalam perancangan sistem untuk perangkat keras, perangkat lunak dan pengujian sistem.
5. Eksperimen
6. Melakukan eksperimen atau uji coba alat, komponen dan kerja robot. 7. Analisa data
8. Analisa yang dilakukan dari pengujian sistem dan mengambil sebuah simpulan dari penelitian ini.
1.6. Sistematika Penulisan
Sistematika penulisan laporan Tugas Akhir ini adalah sebagai berikut: BAB I : Pendahuluan
Bab ini berisi tentang latar belakang, maksud dan tujuan, batasan masalah, metodologi penelitian dan sistematika penulisan.
BAB II : Landasan Teori
4
BAB III : Perancangan Sistem
Bab ini berisikan tentang perancangan alat yang dibuat untuk tugas akhir ini, meliputi garis besar sistem, perancangan perangkat keras dan perancangansoftwareyang digunakan.
BAB IV : Pengujian dan Analisa Sistem
Bab ini berisi tentang pengujian-pengujian dan analisa data pada tugas akhir ini.
BAB V : Simpulan dan Saran
5
DASAR TEORI
2.1. Sejarah Robot [12]
Robot adalah sebuah alat mekanik yang dapat melakukan tugas fisik, baik menggunakan pengawasan dan kontrol manusia, atau pun menggunakan program yang telah didefinisikan terlebih dulu (kecerdasan buatan).
Kata robot sendiri, diperkenalkan oleh seorang penulis sains-fiksi berkebangsaan Ceko (Czech), Karel Capek (9 Januari 1890-25 Desember 1938) pada tahun 1920an. Robot sendiri, menurut Karel Capek, bukanlah pengertian "robot" yang seperti kita kenal sekarang ini. Robot menurut dia adalah sesuatu yang lebih mengarah kepada "monoton", dan "pekerja". Karel Capek memperkenalkan istilah robot (robota, bahasa Ceko-Ensiklopedia Indonesia) dalam sebuah karya sandiwaranya, Rossum's Universal Robot.
Penciptaan robot yang sesunguhnya (bukan robot dalam sandiwara Karel Capek), bermula dari keinginan manusia untuk membuat tiruan binatang atau manusia itu sendiri. Namun fasilitas pengetahuan pada masa itu nampaknya menjadi kendala terbesar dalam terwujudnya proyek tersebut. Akhirnya, dibuatlah robot sederhana beroda yang digunakan untuk keperluan navigasi, pengamatan tingkah laku, sampai dengan perencanaan jalur. Berkembanglah robot dengan konsep heksapoda (konsep kaki enam) dan beberapa platformkaki banyak lainya. Pada pada masa itu, serangga menjadi inpirasi dalam pembuatan robot.
6
2.2. Perkembangan Robot [12]
Adapun contoh perkembangan hebat robot belakangan ini yaitu robot medis dengan dua perusahaan khusus yaitu Computer Motion dan Intuitive Surgical, yang menerima pengesahan pengaturan di Amerika Utara, Eropa dan Asia atas robot-robotnya untuk digunakan dalam prosedur pembedahan minimal. Otomasi laboratorium juga merupakan area yang berkembang. Di sini, robot benchtop digunakan untuk memindahkan sampel biologis atau kimiawi antar perangkat seperti inkubator, berupa pemegang dan pembaca cairan. Tempat lain dimana robot disukai untuk menggantikan pekerjaan manusia adalah dalam eksplorasi laut dalam dan eksplorasi antariksa. Untuk tugas-tugas ini, bentuk tubuh artropoda umumnya disukai. Mark W. Tilden dahulunya spesialis Laboratorium Nasional Los Alamos membuat robot murah dengan kaki bengkok tetapi tidak menyambung, sementara orang lain mencoba membuat kaki kepiting yang dapat bergerak dan tersambung penuh. Berdasarkan perkembangannya, saat ini robot memiliki berbagai macam konstruksi. Diantaranya adalah:
1. Robot Mobile ( bergerak ) 2. Robot Manipulator ( tangan ) 3. Robot Humanoid
Robot maze solvingadalah mobile robot yang dapat menelusuri jalur yang rumit, mengingat jalur tersebut dan mengambil jalur terpendek. Jalur yang dilewati dapat berupa garis (line) atau dinding (wall).
dinding) rumit dengan 25 penyiku. Lorong tersebut bisa di ubah sesuka hati dan robot tersebut kemudian memeriksa secara menyeluruh jalan yang harus ditempuh untuk menemukan titik tujuan. Setelah melalui lorong tersebut, robot bisa ditempatkan di manapun dan akan bergerak secara langsung sampai tujuan. Hal ini nampak sebagai alat yang bisa belajar untuk pertama kalinya.
Robot maze solving pada saat ini tidak hanya dikenal di kalangan ilmuan tetapi telah di kenal di kalangan siswa SD, SMP, sampai universitas bahkan saat ini sering dilakukan perlombaan robot maze solving. Contoh momentperlombaan yaitu ROBOTIC COMPETITION STMIK LIKMI tingkat SMA pada tanggal 15 April 2010. Berikut contoh robotmaze solving:
2.4. Perangkat Keras (Hardware)
2.5.1. Mikrokontroler (ATmega32) [1]
Mikrokontroler adalah piranti elektronik berupa IC (Integrated Circuit) yang memiliki kemampuan manipulasi data (informasi) berdasarkan suatu urutan instruksi (program). Dalam sebuah struktur
Gambar 2.2 Jalur Berupa Garis dan Jalur Berupa Dinding
8
mikrokontroller akan kita temukan juga komponen-komponen seperti: processor,memory,clock, dll.
Salah satu arsitektur mikrokontroler yang terdapat di pasaran adalah jenis AVR (Advanced Virtual RISC). Arsitektur mikrokontroler jenis AVR ini pertama kali dikembangkan pada tahun 1996 oleh dua orang mahasiswa Norwegian Institute of Technology yaitu Alf-Egil Bogen dan Vegard Wollan.
Dalam perkembangannya, AVR dibagi menjadi beberapa varian yaitu AT90Sxx, ATmega, dan AT86RFxx. Pada dasarnya yang membedakan masing-masing varian adalah kapasitas memori dan beberapa fitur tambahan saja.
Pemrograman mikrokontroler AVR dapat menggunakan low level language (assembly) dan high level language (C, Basic, Pascal, JAVA, dll) tergantungcompileryang digunakan.
Salah satu yang banyak dijumpai di pasaran adalah AVR tipe ATmega, yang tediri dari beberapa versi, yaitu ATmega8535, ATmega16, ATmega162, ATmega32, ATmega324P, ATmega644, ATmega644P dan ATmega128. Mikrokontroler yang digunakan adalah AVR ATmega32. Berikut ini adalah tampilan ATmega32.
Fitur-fitur yang dimiliki ATmega32 sebagai berikut: 1. Frekuensi clock maksimum 16 MHz
3. Analog to Digital Converter 10 bit sebanyak 8 input, 4 chanel PWM 4. Timer/Counter sebanyak 3 buah
5. CPU 8 bit yang terdiri dari 32 register 6. Watchdog Timer dengan osilator internal 7. SRAM sebesar 2K Byte
8. Memori Flash sebesar 32K Byte dengan kemampuanread while write 9. Interrupt internal maupun eksternal
10. Port komunikasi SPI
11. EEPROM sebesar 512 byte yang dapat diprogram saat operasi 12. Analog Comparator
13. Komunikasi serial standar USART dengan kecepatan maksimal 2,5 Mbps
2.5.2. Konfigurasi Pin AVR ATmega32 [1]
Konfigurasi pin pada mikrokontroler ATmega32 dapat dilihat pada gambar 2.5. Dari gambar tersebut dapat terlihat jumlah pin ATmega32 adalah 40pinyang memiliki fungsi yang berbeda-beda yaitu:
1. Vcc merupakanpinyang berfungsi sebagai masukan catu daya. 2. GND merupakanpinground.
10
3. Port A(PA0-PA7) merupakanpin input/outputdua arah dan pin masukan ADC.
4. Port B(PB0-PB7) merupakan pin input/outputdua arah dan pin fungsi khusus, seperti yang dapat dilihat pada tabel 2.1.
Tabel 2.1 Fungsi Khusus Port B
Pin Fungsi Khusus
PB0 T0 T1 (Timer/Counter0 External Counter input) XCK (USARTExternal Clock Input/Output) PB1 T1 (Timer/Counter0 External Counter Input) PB2 AIN0 (Analog Comparator Positive Input)
INT2 (External Interrupt 2 Input)
PB3 AIN0 (Analog Comparator Positive Input)
OC0 (Timer/Counter0 Output Compare Match Output) PB4 SS (SPISlave Select Input)
PB5 MOSI (SPIBus Master Output/Slave Input) PB6 MISO (SPIBus Master Input/Slave Output) PB7 SCK (SPIBus Serial Clock)
5. Port B(PB0-PB7) merupakan pin input/outputdua arah dan pin fungsi khusus, seperti yang dapat dilihat pada tabel 2.2.
Tabel 2.2 Fungsi Khusus Port C
Pin Fungsi Khusus
PC0 SCL (Two-wire Serial Bus Clock Line)
PC1 SDA (Two-wire Serial Bus Data Input/Output Line) PC2 TCK (JTAGTest Clock)
PC3 TMS (JTAGTest Mode Select) PC4 TDO (JTAGTest Data Out) PC5 TDI (JTAGTest Data In) PC6 TOSC1 (Timer OscillatorPIN1) PC7 TOSC2 (Timer OscillatorPIN2)
Tabel 2.3 Fungsi Khusus Port D
Pin Fungsi Khusus
PD0 RXD (USARTInput Pin) PD1 TXD (USARTOutput Pin) PD2 INT0 (External / Interupt0 Input) PD3 INT1 (External / Interupt1 Input)
PD4 OC1B OC1A (Timer / Counter2 Output Compare B Match Output)
PD5 OC1A (Timer / Counter2 Output Compare A Match Output)
PD6 ICP (Timer / Counter1 Input Capture Pin) PD7 OC2 (Timer / Counter2 Output Compare Match
Output)
7. RESET merupakan pin yang digunakan untuk me-reset mikrokontroler.
8. XTAL1 dan XTAL2 merupakanpinmasukanclockeksternal. 9. AVCC merupakanpinmasukan tegangan ADC.
10. AREF merupakanpinmasukan referensi ADC.
2.5.3. Sensor Garis
Sensor garis dalam sebuah robotline follower ibarat mata yang dapat menentukan arah geraknya. Sensor garis adalah sensor yang berfungsi mendeteksi garis yang berwarna hitam atau putih.
Sensor garis terdiri dari komponen yang berfungsi sebagai pemancar cahaya yaitu infrared, led superbright, dll. Komponen yang berfungsi penerima cahaya yaitu phototransistor, photodiode, LDR (light defendant Resistor). Dengan memanfatkan fitur ADC (Analog to Digital Converter) yang terdapat pada mikrokontroler sebagai pembanding tegangan, yang nantinya akan menghasilkanoutputdigital dari sensor.
2.5.2.1. Phototransistor [3]
12
dalam ukuran yang sama. Cara kerja phototransistor yaitu ketika basis menangkap cahaya maka collector akan terhubung dengan emitter dalam hal ini transistor bekerja.
Phototransistormemiliki karakteristik: 1. Pendeteksi jarak dekat Infra merah. 2. Bisa dikuatkan sampai 100 sampai 1500. 3. Respon waktu cukup cepat.
4. Bisa digunakan dalam jarak lebar.
5. Bisa dipasangkan dengan (hampir) semua penghasil cahaya atau cahaya yang dekat dengan inframerah, seperti Neon, Fluorescent, lampu bohlam, cahaya laser dan api.
6. Mempunyai karakteristik seperti transistor, kecuali bagian basis digantikan oleh besar cahaya yang diterima.
Bentuk fisik dan simbol phototransistor dapat dilihat pada gambar 2.6.
2.5.4. Aktuator (Penggerak Robot)
2.5.2.1. Motor DC
Motor DC merupakan perangkat yang berfungsi merubah besaran listrik menjadi besaran mekanik. Prinsip kerja motor didasarkan pada gaya elektromagnetik. Motor DC bekerja bila mendapatkan tegangan searah yang cukup pada kedua kutubnya. Tegangan ini akan menimbulkan induksi elektromagnetik yang menyebabkan motor berputar. Secara umum, kecepatan putaran poros motor DC akan meningkat seiring dengan meningkatnya tegangan yang diberikan. Dengan demikian, putaran motor DC akan berbalik
arah jika polaritas tegangan yang diberkan juga dirubah. Bentuk fisik motor DC dapat dilihat pada gambar 2.7.
Motor DC tidak dapat dikendalikan langsung oleh mikrokontroler, karena kebutuhan arus yang besar sedangkan keluaran arus dari mikrokontroler sangat kecil. Driver motor merupakan alternatif yang dapat digunakan untuk menggerakkan motor DC.
2.5.2.2. Driver Motor
Driver motor adalah sirkuit elektronika yang memungkinkan tegangan dan arus mengalir ke arah beban atau motor DC secara benar artinya dapat mengatur arah putaran motor DC sesuai dengan keinginan. Di dalam IC driver motor berisi empat buah driver-H yang berfungsi sebagai pengatur arus listrik secara dua arah karena dalam pembuatan robot membutuhkan dua motor DC. Berikut jenis IC yang berfungsi sebagaidrivermotor.
1. IC L298D 2. IC L293D
Pada gambar 2.8 dapat dilihat bentuk fisik IC L293D dan IC L298D. Gambar 2.7 Motor DC
14
2.5.2.3. PWM (Pulse Width Modulation)
Salah satu cara untuk mengirimkan informasi analog adalah menggunakan pulsa-pulsa arus. Dengan modulasi pulsa, pembawa informasi terdiri dari pulsa-pulsa persegi yang berulang-ulang. Salah satu teknik modulasi pulsa yang digunakan adalah teknik modulasi durasi atau lebar dari waktu tunda negatif pulsa-pulsa persegi tersebut. Metode tersebut dikenal dengan nama Pulse Width Modulation (PWM).
Untuk membangkitkan sinyap PWM, digunakan komparator untuk membandingkan dua buah masukan yaitu generator sinyal dan sinyal referensi. Hasil dari keluaran dari komparator dalah sinyal PWM yang berupa pulsa-pulsa persegi yang berulang-ulang. Durasi atau lebar pulsa dapat dimodulasi dengan cara mengubah sinyal referensi.
Metode PWM digunakan untuk mengatur kecepatan putaran motor, informasi yang dibawa oleh pulsa-pulsa persegi merupakan tegangan rata-rata. Besarnya tegangan rata-rata tersebut dapat diperoleh dari: Vout = (Vref * duty cycle) / periode. Semakin lebar durasi waktu tunda positif pulsa dari sinyal PWM yang dihasilkan, maka perputaran motor akan semakin cepat, demikian sebaliknya.
2.5.5. Catu Daya
Catu daya memegang peranan yang sangat penting dalam hal perancangan sebuah robot. Tanpa bagian ini robot tidak akan berfungsi. Begitu juga bila pemilihan catu daya tidak tepat, maka robot tidak akan bekerja dengan baik.
Penentuan sistem catu daya yang akan digunakan ditentukan oleh banyak faktor, diantaranya :
1. Tegangan
Setiap aktuator tidak memiliki tegangan yang sama. Hal ini akan berpengaruh terhadap disain catu daya. Tegangan tertinggi dari salah satu aktuator akan menentukan nilai tegangan catu daya. 2. Arus
Arus memiliki satuan Ah (Ampere-hour). Semakin besar Ah, semakin lama daya tahan baterai bila digunakan pada beban yang sama.
3. Teknologi Baterai
Baterai isi ulang ada yang dapat diisi hanya apabila benar-benar kosong, dan ada pula yang dapat diisi ulang kapan saja tanpa harus menunggu baterai tersebut benar-benar kosong.
Baterai yang digunakan pada mobile robot ini adalah baterai berjenis Lithium polymer. Hal ini karena jenis baterai ini merupakan jenis baterai yang dapat diisi ulang (rechargeable). Baterai ini memiliki tegangan kerja 7,4 Volt. Gambar 2.10 memperlihatkan bentuk baterai Lithium polymer 1300 mAh.
Untuk pengisian baterai ini dapat dilakukan kapan saja, selain jenis baterai Lithium polymer, masih banyak lagi jenis baterai yang tersedia di pasaran dengan spesifikasi yang beragam dan dapat digunakan untuk catu
16
daya pada sebuah robot. Diantaranya baterai Ni-cd, Alkaline,Lithium,Lead Acid dan sebagainya, yang masing-masing mempunyai kelebihan dan kekurangannya.
2.5. Perangkat Lunak (Software)
Perangkat lunak merupakan faktor penting dalam tahap perancangan robot. Perangkat lunak ini merupakan algoritma gerak dan tugas robot dalam bentuk listing program yang ditanamkan kedalam mikrokontroler. Program dapat bermacam - macam bentuk versi dan bahasa pemrogramannya, sesuai dengan spesifikasi dari mikrokontroler yang digunakan.
Mikrokontroler AVR (ATmega32) dapat menggunakan bahasa pemrogramanbasic, assembly, pascal, c++. Beberapa contohSoftware editordan compiler yang dapat digunakan adalah CodeVisionAVR, BASCOM-AVR, Programmers Notepad [AVR], mikroBasic PRO for AVR, Arduino. Software ini memungkinkan penggunanya memprogram AVR dengan bahasa tingkat tinggi yang relatif ringan dibandingkan bahasa pemrograman lainnya. Software downloaderyang dapat digunakan adalahAVRprog versi 1.40.
2.5.1. Pengenalan Arduino IDE
Arduino IDE adalah sebuah editor yang digunakan untuk menulis program, mengcompile ke mikrokontroler keluarga AVR. Program ini memungkinkan penggunanya memprogram AVR dengan bahasa C/C++ yang relatif lebih familiar dibandingkan bahasa pemrograman lainnya. Dalam penggunaan, arduino hanya perlu mendefinisikan dua fungsi untuk membuat programrunable, yaitu:
1. Setup () : fungsi dijalankan sekali pada awal program yang dapat menginisialisasi pengaturan.
2. Loop (): fungsi yang disebut berulang-ulang sampai mikrokontoler off.
Menu utama
Berikut dapat dilihat pada tabel 2.4 beberapa instruksi-instruksi dasar yang dapat digunakan pada mikrokontroler ATmega32.
Tabel 2.4 Beberapa instruksi dasar Arduino IDE
Instruksi Keterangan
do...while Perulangan
pinMode() Mengatur, apakah sebuah pin berfungsi sebagai input atau output.
If()...else Percabangan for()... Perulangan
delay() Waktu tunda milidetik
digitalWrire() Digunakan untuk memberikan nilai digital (High atau Low) pada pin output
digitalRead() Digunakan untuk memberikan nilai digital (High atau Low) pada pin input
analogWrite() Digunakan untuk memberikan nilai analog pada pin output tertentu
analogRead() Digunakan untuk memberikan nilai analog pada pin inputtertentu
Pada gambar 2.11 memperlihatkan bentuk tampilan Arduino IDE.
Contohsyntaxbahasa pemrogramanC/C++
Letak keterangan error dan memperlihatkan besar memori yang digunakan
18
2.5.2. Membuat program pada Arduino IDE
Dalam pembuatan program pada Arduino IDE ada beberapa langkah yang harus dilakukan yaitu:
1. Mendeklarasikan Variable, konstanta.
2. Mendefinisikan beberapa fungsi yang akan digunakan pada program utama.
3. Mendefinisikan fungsi setup. 4. Mendefinisikan fungsi loop.
2.5.2.1. Mendeklarasikan Variabel, Konstanta
Pada langkah ini, bertujuan mendeklarasikan variabel, konstanta dan tipe data yang akan digunakan pada program yang akan dibuat. Beberapa tipe data yang digunakan yaitu int (integer), char (character), byte. Pada gambar 2.12 memperlihatkan tampilan pendeklarasian pada arduino IDE.
2.5.2.2. Mendefinisikan Beberapa Fungsi
Pada langkah ini, bertujuan untuk pendefinisian beberapa fungsi yang nantinya akan dipanggil atau digunakan pada bagian program utama. Seperti halnya pada mobile robot ini dibutuhkan fungsi mundur, belok kiri, belok kanan, berhenti dan lain-lain. Pada gambar 2.13 memperlihatkan tampilan pendefinisian fungsi pada arduino IDE.
2.5.2.3. Mendefinisikan fungsi setup
Langkah ini merupakan salah satu langkah terpenting dalam pembuatan program pada Arduino IDE karena fungsi ini yang akan membuat program runable, jadi fungsi ini jangan sampai dilewatkan. Pada fungsi ini terdapat beberapa instruksi pengaturan komunikasi serial, pin input/output dan lain-lain. Pada gambar 2.14 memperlihatkan tampilan pendefinisian fungsi setup pada arduino IDE.
Gambar 2.13 Tampilan pendefinisian fungsi
20
2.5.2.4. Mendefinisikan fungsi loop
Pada langkah ini bertujuan mendefinisikan fungsi loop yang berisi program utama yang akan dieksekusu terus menerus. Fungsi ini juga merupakan fungsi yang terpenting dan jangan sampai dilewatkan. Pada gambar 2.15 memperlihatkan tampilan pendefinisian fungsiloop pada arduino IDE.
2.5.3. Memeriksa Sintaks dan Mengcompile Program
Sangat penting untuk memeriksa sintaks program, hal ini kita lakukan untuk memastikan semua sintaks sudah benar. Untuk memeriksa sintaks sekaligus mengcompile bisa pilih menu Verify yang iconnya mirip tombol play.
Tampilan sintaks program yang sudah benar dapat terlihat pada gambar 2.16.
Menu Verify
2.5.4. Upload Program
Setelah program dicompile menggunakan, selanjutnya program di upload ke mikrokontroler dengan cara menclick menu upload. Tetapi sebelumnya kabel data harus dalam keadaan terhubung ke PC (Personal Computer). Pada gambar 2.17 memperlihatkan tampilan mengupload program ke mikrokontroler.
Gambar 2.17 Tampilan Upload program ke Mikrokontroler
(a)
(b)
Gambar 2.16 (a)Tampilan Menu untuk check sintaks dan untuk mengkompile (b)Tampilan sintaks program yang sudah benar dan proses
compile berhasil
22
2.6. Depth-First Search (Pencarian Kedalam Pertama) [2]
Depth-first search adalah salah satu metode atau algoritma pencarian.. Metode pencarian dikatakan penting untuk menyelesaikan permasalahan karena setiapstate (keadaan) menggambarkan langkah - langkah untuk menyelesa ikan permasalahan dan setiap state juga akan menggambarkan kemungkinan posisi setiap saat.
Jadi, metode pencarian adalah bagian dari kesimpulan, dimana setiapstate menggambarkan hipotesis dalam sebuah rangkaian dedukt if.
Proses pencarian Depth-First Search dilakukan ke node -node yang selevel. Pencarian dimulai dari node akar ke level yang lebih tinggi. Proses ini diulangi terus hingga ditemukannya solusi. Berikut adalah treedaridepth -first search :
Gambar 2.18 Bentuk tree Depth - first Search
Berikut algoritmanya:
1. Buat sebuah antrian atau stack, inisialisasi node pertama dengan root daritree.
2. Bila node pertama, jika bukanfinish, node dihapus diganti dengan anak-anaknya dengan urutan langkah baru.
Keuntungan dari algoritmaDept First Seacrh:
1. Membutuhkan memori yangrelativekecil, karena hanya node-node pada lintasan yang aktif saja.
2.
Secara kebetulan, metode depth-first search akan menemukan solusi tanpa harus menguji lebih banyak lagi keadaan.Kelemahan dari algoritmaDepth First Seacrh:
24
BAB III
PERANCANGAN SISTEM
3.1. Diagram Blok Sistem
Bab ini menjelaskan mengenai komponen yang membangun suatu sistem kendali dan algoritma mobile robot untuk studi kasus maze solving berdasarkan landasan teori. Gambar 3.1 merupakan gambar diagram blok keseluruhan dari sistem.
Gambar 3.1 Diagram Blok Sistem
Fungsi dan cara kerja masing-masing blok sistem:
1. Blok Sensor Garis: blok ini berfungsi mendeteksi garis yang berwarna hitam atau putih. Pada blok ini terdiri dari 2 komponen yang berfungsi sebagai pemancar dan penerima. Komponen yang berfungsi sebagai pemancar yaitu led superbright, dan komponen yang berfungsi sebagai penerima yaitu phototransistor. Cara kerjanya yaitu led akan di pancarkan ke garis hitam atau putih selanjutnya cahaya yang dipantulkan tersebut akan diterima oleh phototransistor, ketika led dipancarkan ke garis hitam maka cahaya akan diserap sedangkan pada garis putih cahaya akan dipantulkan.
internalyang terdapat di mikrokontroler. Setelah dikonversi ke sinyal digital, mikrokontroler akan memerintahkandriver motor untuk menggerakan motor DC melalui bahasa pemrograman tingkat tinggi yang menyebabkan robot bergerak.
3. Blok Driver Motor: blok ini berfungsi untuk mengatur arah putaran motor DC, baik secara one-directional (satu arah) ataupun bidirectional (dua arah/bolak-balik). Cara kerjanya yaitu motor akan berputar searah jarum jam ataupun kebalikannya tergantung dari intruksi yang diberikan mikrokontroler dengan cara memberikan logikahighataulowpada pin ICdrivermotor. 4. Blok Motor DC: blok ini berfungsi untuk memutarkan roda pada mobile
robot.
3.2. Perangkat Keras (Hardware) 3.3.1. Sistem Mekanik Robot
Berikut ini adalah robot yang dipakai dengan spesifikasi sebagai berikut:
1. Jenis robot merupakan robot beroda yang memiliki 1 buah roda caster di depan dan 2 buah roda belakang yang digerakkan dengan 2 motor dc di roda bagian kiri dan kanan.
2. Bodyrobot berdimensi 12,2 cm x13 cm yang terbuat dari akrilik. 3. Sensor garis dipasang di bawah bagian depan.
4. Roda belakang terbuat dari karet dan berdimensi diameter 4,5 cm, lebar 3 cm.
26
3.3.2. Mikrokontroler (ATmega32)
Mikrokontroler yang digunakan adalah mikrokontroler jenis AVR Atmega32 dengan dilengkapi 32 pinyang bisa digunakan sebagi inputatau pinoutput,pintersebut dibagi menjadi 4 port yaitu
1. Port A terdiri dari A.0 sampai A.7 2. Port B terdiri dari B.0 sampai B.7 3. Port C terdiri dari C.0 sampai C.7 4. Port D terdiri dari D.0 sampai D.7
Port yang digunakan pada perancangan sistem ini adalah port A, port B, Port D.
Pemilihan mikrokontroler jenis ini didasari kemampuannya yang cukup handal, permrograman yang tidak terlalu sulit dan harganya yang relatif tidak terlalu mahal. Konfigurasi port yang digunakan dapat dilihat pada tabel 3.2.
Tabel 3.1 Konfigurasi port yang digunakan pada ATmega32
Nama Pin No. Pin Fungsi Keterangan
PORT A 0 Input / ADC 0 Sensor garis 1
PORT B 2 Output Driver motor (A +)
PORT B 3 Output Driver motor (A -)
PORT B 4 Output Driver motor (EN B)
PORT B 5 Output Driver motor (EN A)
28
PORT D 7 Output Driver motor (B -)
3.3.3. Sensor Garis
Sensor garis berfungsi untuk mendeteksi warna dari permukaan yang berada dibawah robot line follower dengan maksud agar sensor garis ini dapat mengasilkan logika posisi dari robotline followerterhadap garis tepat berada dibawah robot.
Logika posisi yang dihasilkan oleh sensor garis ini kemudian akan dijadikan inputke mikrokontroler pada robot. Pada sensor garis, komponen yang digunakan yaituphototransistorsebagai pendeteksi garis hitam dengan dasar putih yang menjadi jalur robot dan LED ( Light Emitting Diode ) superbright sebagai pemancar cahaya ke lantai yang kemudian dipantulkan dan diterima oleh phototransistor. Untuk lebih jelasnya memahami prinsip kerja sensor garis dapat dilihat pada gambar 3.5.
Gambar 3.3 Prinsip Kerja Sensor Garis
Phototransistor bekerja dengan cara menangkap emisi cahaya yang dikeluarkan oleh LED. Prinsip kerja dari phototransistoradalah ketika basis menangkap cahaya makacollectorakan terhubung denganemitterdalam hal ini transistor bekerja.Phototransistor memilikimodeaktif artinya transistor akan menghasilkan reaksi yang sebanding dengan besaran cahaya yang diterima sampai dengan tingkatan tertentu.
Converter) yang terdapat pada IC ATmega32, sinyal analog yang berasal dari sensor garis dapat dibubah menjadi sinyal digital. Hal ini dilakukan karena mikrokontroler hanya bisa bekerja dengan datadigital. ADC tersebut terdiri dari 8 chanel yang terletak pada port A0 sampai port A7 pada IC ATmega32. Pada gambar 3.4 yang memperlihatkan rangkaian sensor garis yang digunakan.
Jumlah sensor yang digunakan adalah 7 sensor yang masing-masing output sensornya dihubungkan ke port A pada mikrokontroler. Tegangan yang menuju led dihubungkan dengan resistor 150Ω yang dihubungkan dari
Vcc dan kaki anoda led, pemilihan resistor tersebut bertujuan untuk menghasilkan intensitas cahaya yang cukup yang nantinya cahaya tersebut akan ditangkap oleh phototransistor. Untuk mendapatkan nilai resistor pada led dapat menggunakan rumus 3.1.
30
Keterangan:
RLED = Resistor LED Vin = Tegangan input
Vf = Tegangan pada saat forward bias (0,5 Volt)
If = Arus pada saat forward bias (dapat dilihat di datasheet)
Selain itu, tegangan juga dihubungkan ke resistor 10 KΩ yang
selanjutnya dihubungkan ke phototransistor, fungsi resistor tersebut yaitu sebagai penghambat arus yang akan mengalir ke mikrokontroler pada saat kondisiphototransistor OFF(tidak terkena cahaya) sehingga didapat logika highyang tepat pada keluaran sensor (Vce) yaitu sebesar 4 volt dan tegangan ini akan dikonversi oleh ADC yang terdapat pada mikrokontroler. Untuk mendapatkan nilai resistor pada led dapat menggunakan rumus 3.2
...3.2 [4, 10]
Keterangan:
RPhototransistor = Resistor Phototransistor
Vin = Tegangan input
VCE = Tegangancollector emiter
IC = Aruscollector(dapat dilihat di datasheet)
Tujuh sensor yang digunakan memiliki fungsi masing-masing, yaitu: 1. Sensor 0 dan sensor 1 berfungsi untuk mendeteksi adanya belok
kanan.
3. Sensor 5 dan sensor 6 berfungsi untuk mendeteksi adanya belok kiri.
Jarak antar sensor pun tidak sama, hal ini bertujuan agar memudahkan dalam mengenali bentuk persimpangan. Untuk lebih jelasnya dapat dilihat pada gambar 3.5.
Gambar 3.5 Design Bord Sensor Garis
3.3.4. Aktuator (Penggerak Robot) 3.3.3.1. Driver Motor
Driver motor berfungsi untuk mengatur kecepatan dan arah putaran motor DC. IC drivermotor yang digunakan adalah IC L293D, pemilihan IC jenis ini selain karena ukurannya yang lebih kecil dan lebih murah, IC L293D juga berisi empat buah driver-H berarus tinggi. IC ini didesain guna menyediakan pengaturan (driver) arus listrik secara dua arah (bidirectional) hingga mencapai lebih dari 1 A pada tegangan dari 4,5 V sampai dengan 36 V. Selain itu, IC L293D juga didesain untuk mengendalikan beban induktif seperti relay, solenoid, motor DC, dan motor stepper bipolar.
32
Tabel 3.2 Tabel Kebenaran untuk Salah Satu Motor
AEN A+ A- Reaksi Motor
L L L Motor off
L L H Motor off
L H L Motor off
L H H Motor off
H L L Stop
H H L Berputar searah jarum jam
H L H Berputar berlawanan arah jarum jam
H H H Stop
Ket:H =High= 1 dan L =Low= 0
3.3.3.2. Motor DC
Motor DC berfungsi untuk memutarkan roda pada sebuah mobile robot. Motor DC kebanyakan memiliki bentuk fisik bulat,
34
sehingga tidak mudah untuk memasangnya pada chassis. Kecepatan putarnya (RPM) tinggi, namun torsinya rendah sehingga perlu dilengkapi dengan gearbox. Gearbox yang digunakan adalah jenis double gearbox yang sudah terpaket dengan satu pasang motor DC yang dapat bekerja pada tegangan 3 Volt hingga 6 Volt. Pemilihan gearbox ini didasarkan karena kecepatan maksimum yang dapat dihasilkan adalah 1.040 rpm dan torsi maksimum hingga 2,3 kgf.cm. Kecepatan dan torsi dapat diatur dengan mengatur gear ratio. Pada gambar 3.7 memperlihatkan bentuk fisikgearboxyang digunakan.
3.3.3.3. Catu Daya
Catu daya merupakan faktor pendukung terpenting, karena hampir keseluruhan komponen hardware pada robot membutuhkan tegangan untuk mengoperasikannya. Catu daya yang dibutuhkan sebanyak 2 buah, pertama untuk mencatu mikrokontroler dan sensor garis. Kedua, tegangan actuator berupa motor dc.
Tegangan yang digunakan berasal dari 1 buah baterai rechargeable berjenis Lithium polymer yang mempunyai nilai tegangan 7,4 volt dengan arus 1300 mAh. Untuk supply tegangan ke aktuator berupa motor dc, baterai dihungkan langsung ke motor dc sedangkan untuk supply tegangan ke mikrokontroler dan sensor garis diperlukan IC regulator untuk mendapatkan tegangan 5 volt, IC tersebut yaitu IC LM2940.
Gambar 3.8 (a) menunjukkan gambar IC regulator untuk tegangan output 5 Vdc (yang terukur 4,9 volt) yang dihasilkan dari tegangan sumber Vin sebesar 7,4 volt. Pada Gambar 3.10 (b) terdapat kapasitor, digunakan untuk menghilangkan ripple yang berasal dari tegangan.
3.3. Perangkat Lunak (Software)
3.3.1. Perancangan Pohon Penelusuran Berdasarkan Algoritma Depth First Search
Berdasarkan teori algoritma depth first search dan bentuk track yang dirancang, maka dapat dirancang sebuah pohon penelusuran untuk mengetahui jalur mana sajakah yang akan ditelusuri robot dan jalur yang ditelusuri tersebut akan disederhanakan menjadi rangkaian jalur yang lebih efektif dan efisien. Gambar 3.9 memperlihatkan bentuk track yang digunakan dan arah jalur yang akan ditelusuri robot.
Finish
36
Pada gambar track di atas terdapat beberapa bentuk persimpangan yang terdapat pada tabel 3.3.
Tabel 3.3 Bentuk-bentuk persimpangan Nama Bentuk track Data Yang
tersimpan
Keterangan
Left
junction Karekter “L” Belok kiri
T-junction
Karakter “L” Belok kiri
Right
junction Karakter “S” Lurus
Cross
junction Karakter “L” Belok kiri
Dead End Karakter “B” Putar kiri
1 2
3 9
4 5 10 11
6 7 12
8 Start
Finish
Gambar 3.10 Pohon penelusuran
Berikut penjelasan pohon penelusuran:
1. Awalnya robot bergerak dari titik start selanjutnya saat robot menemui bentuk persimpangan right junction,robot akan bergerak lurus ke arah
nomer 1 maka akan disimpan karekter “S” yang artinya robot bergerak
lurus, setelah bergerak lurus ternyata jalur tersebut merupakan jalur buntu dan robot akan berputar kembali ke persimpangan sebelumnya.
Pada saat berputar akan sisimpan karakter “B” yang berarti robot telah
menemui jalur buntu. Maka :
Data langkah yang tersimpan = “SB”
2. Selanjutnya robot bertemu bentuk persimpangan left junction, robot
akan bergerak ke arah nomer 2 maka akan disimpan karakter “L” yang
artinya robot belok kiri, pada tahap ini sudah 3 langkah yang tersimpan
pada ingatan robot yaitu “SBL”. Dari 3 data langkah tersebut akan di
konversi menjadi karakter “R”. Maka
Data langkah yang tersimpan = “SBL”
38
3. Selanjutnya robot bertemu bentuk persimpangan right junction, robot akan bergerak ke arah nomer 3 maka akan disimpan karekter “S” yang
artinya robot bergerak lurus. Maka :
Data langkah yang tersimpan = “RS”
4. Robot bertemu bentuk persimpangan left junction, robot bergerak ke
arah nomer 4 maka akan disimpan karakter “L” yang artinya robot
belok kiri, setelah belok kiri ternyata jalur tersebut merupakan jalur buntu dan robot akan berputar kembali ke persimpangan sebelumnya.
Pada saat berputar akan disimpan karakter “B” yang berarti robot telah
menemui jalur buntu. Maka :
Data langkah yang tersimpan = “RSLB”
5. Selanjutnya robot bertemu bentuk persimpanganT-junction,robot akan
bergerak ke arah nomer 5 maka akan disimpan karekter “L” yang
artinya robot belok kiri. Maka :
Data langkah yang tersimpan = “RSLBL”
Dikonversi menjadi = “RSS”
6. Selanjutnya robot bertemu bentuk persimpangan cross junction, robot
akan bergerak ke arah nomer 6 maka akan disimpan karekter “L” yang
artinya robot belok kiri. Setelah belok kiri ternyata jalur tersebut merupakan jalur buntu maka robot akan berputar kembali ke persimpangan sebelumnya. Pada saat berputar akan sisimpan karakter
“B” yang berarti robot telah menemui jalur buntu. Maka :
Data langkah yang tersimpan = “RSSLB”
7. Selanjutnya robot bertemu bentuk persimpangan cross junction, robot
akan bergerak ke arah nomer 7 maka akan disimpan karekter “L” yang artinya robot belok kiri. Setelah bergerak lurus ternyata jalur tersebut merupakan jalur buntu dan robot akan berputar kembali ke persimpangan sebelumnya. Pada saat berputar akan sisimpan karakter
“B” yang berarti robot telah menemui jalur buntu. Maka :
Data langkah yang tersimpan = “RSSLBLB”
8. Selanjutnya robot bertemu bentuk persimpangan cross junction, robot
akan bergerak ke arah nomer 8 maka akan disimpan karekter “L” yang
artinya robot belok kiri. setelah bergerak lurus ternyata jalur tersebut merupakan jalur buntu dan robot akan berputar kembali ke persimpangan sebelumnya. Pada saat berputar akan disimpan karakter
“B” yang berarti robot telah menemui jalur buntu. Setelah berputar
kembali ke persimpangan sebelumnya robot bertemu bentuk persimpangan cross junction, robot akan belok ke kiri maka akan
disimpan karekter “L”. Selanjutnya robot kembali ke persimpang
sebelumnya lagi dan pada titik ini robot bertemu bentuk persimpangan right junction, robot akan bergerak lurus dan karakter yang disimpan
yaitu “S” Maka :
Data langkah yang tersimpan = “RSSSBLBLS”
Dikonversi menjadi = “RSSRBL”
Dikonversi lagi menjadi = “RSSBS”
Dikonversi lagi menjadi = “RSB
9. Pada titik ini robot bertemu bentuk persimpangan left junction, robot bergerak ke arah nomer 9 maka akan disimpan karakter “L” yang
artinya robot belok kiri,. Maka :
Data langkah yang tersimpan = “RSBL”
Dikonversi menjadi = “RR”
10. Selanjutnya robot bertemu bentuk persimpangan right junction, robot akan bergerak ke arah nomer 10 maka akan disimpan karekter “S” yang
artinya robot bergerak lurus. Setelah bergerak lurus ternyata jalur tersebut merupakan jalur buntu dan robot akan berputar kembali ke persimpangan sebelumnya. Pada saat berputar akan sisimpan karakter
“B” yang berartirobot telah menemui jalur buntu.Maka :
Data langkah yang tersimpan = “RRSB”
11. Selanjutnya robot bertemu bentuk persimpangan left junction, robot
akan bergerak ke arah nomer 11 maka akan disimpan karakter “L” yang
artinya robot belok kiri. Maka:
40
Dikonversi menjadi = “RRR”
12. Selanjutnya robot bertemu bentuk persimpangan left junction, robot
akan bergerak ke arah nomer 11 maka akan disimpan karakter “L” yang
artinya robot belok kiri. Maka:
Data langkah yang tersimpan = “RRRL” (right, right, right, left)
Dari hasil penelusuran jalur maka didapat rangkangkaian jalur yang lebih efektif dan efisien yaituright(kanan), right(kanan), right(kanan), left(kiri). Jika diambil dari pohon penelusuran, jalur yang efektif dan efisien yaitu 2, 9, 12, 11.
3.3.2. Perancangan Prosedural
Perancangan prosedural merupakan salah satu bagian terpenting dalam proses perancangan robot, karena pada perancangan prosedural terdiri beberapa algoritma yang disusun secara terprosedur.
Pada perancangan prosedural ini terdiri dari 2 algoritma yang digunakan untuk pergerakan robot dan penelusurantrackyaitu:
1. Algoritma pemetaan (maping)
2. Algoritma penyederhanaan (simplifikasi)
3.3.3.1. Algoritma Pemetaan (Maping)
Algoritma ini bertujuan agar robot dapat bergerak dari titikstart ke finish sambil melakukan penyimpanan data setiap langkah dan algoritma ini juga merupakan program utama. Data langkah tersebut akan dikonversikan menjadi sebuah kode berupa karakter.
disimpan. Adapun kode data langkah yang digunakan pada algoritma pemetaan ini adalah :
1. “L” berarti left.Ini menandakan robot telah melakukan belok kiri karena melewati persimpangan.
2. “S” berarti Straight. Ini menandakan robot telah melakukan jalan terus karena bertemu dengan persimpangan tiga dengan pilihan lurus atau belok kanan.
3. “B” berarti back. Ini menandakan robot berjumpa jalur buntu dan berjalan kembali ke persimpangan yang terakhir.
Untuk lebih jelasnya dapat dilihat pada tabel 3.4.
Tabel 3.4 Bentuk belokan dan persimpangan
Nama Bentuk track Sensor yang digunakan Data Yang disimpan
Left Sensor 5
-Left
junction Sensor 5 Karekter “L”
T-junction Sensor 5 dan Sensor 1 Karakter “L”
Right Sensor 1
-Right
junction Sensor 1 Karakter “S”
Cross
junction Sensor 5 dan Sensor 1 Karakter “L”
Straight Sensor 2 sampai sensor 4
-Dead end Buntu Sensor 2 sampai sensor 4 Karakter “B”
42
Sensor[5] > 400 ?
lFound = 0; timeStart = millis();
millis() – timeStart < 150
analogRead(1) > 400 ?
Gambar 3.12 Diagram alir pemetaan (lanjutan)
Berikut ini penjelasan algoritma pemetaan: a. Memulai awal program.
b. Pendeklarasian program. Deklarasi variabel, konstanta, array. c. Panggilsubroutinesetup.
d. PanggilsubroutinelineFollow agar robot bergerak lurus
44
f. Jika ya, isi nilai 0 pada variabel lFound, isi variabel time start dengan nilai millis.
g. Periksa apakah nilai hasil pengurangan millis dengan variabel time start lebih kecil dari 150.
h. Jika ya, apakah sensor 5 juga lebih besar dari 400 (berada pada garis hitam).
i. Isi nilai 1 pada variabel lFound.
j. Jika ya, panggil subroutine maju (robot akan bergerak maju sedikit).
k. Panggilsubroutineberhenti (robot berhenti selama 100 ms). l. Panggilsubroutinebaca sensor.
m. Periksa apakah sensor 1 dan sensor 5 berada pada garis hitam. n. Jika ya, panggilsubroutine finish.
o. Program selesai.
p. Jika sensor 1 dan sensor 5 tidak berada pada garis hitam, panggil subroutine c_t_junction, selanjutnya panggil subroutine simplifikasi dan kembali ke langkah d.
q. Panggilsubroutineberhenti (robot berhenti selama 100 ms). r. Panggilsubroutinebaca sensor.
s. Periksa apakah sensor 1 dan sensor 5 berada pada garis hitam. t. Jika ya, panggilsubroutine finish.
u. Program selesai.
v. Jika sensor 1 dan sensor 5 tidak berada pada garis hitam, periksa apakah sensor 2 sampai sensor 4 lebih kecil dari 400 (berada pada garis putih).
w.Jika ya, panggil subroutine Right, selanjutnya panggil subroutine simplifikasi dan kembali ke langkah d.
x. Jika tidak, panggil subroutine rightJunction, selanjutnya panggil subroutinesimplifikasi dan kembali ke langkah d.
z. Jika ya, isi nilai 0 pada variabel lFound, isi variabel time start dengan nilai millis.
a.a Periksa apakah nilai hasil pengurangan millis dengan variabel time start lebih kecil dari 150.
a.b Jika ya, apakah sensor 1 juga lebih besar dari 400 (berada pada garis hitam).
a.c Isi nilai 1 pada variabel lFound.
a.d Jika ya, panggil subroutine maju (robot akan bergerak maju sedikit).
a.e Panggilsubroutineberhenti (robot berhenti selama 100 ms). a.f Panggilsubroutinebaca sensor.
a.g Periksa apakah sensor 1 dan sensor 5 berada pada garis hitam. a.h Jika ya, panggilsubroutine finish.
a.i Program selesai.
a.j Jika sensor 1 dan sensor 5 tidak berada pada garis hitam, subroutine prosedur c_t_junction, selanjutnya panggil subroutine simplifikasi dan kembali ke langkah d.
a.k Panggilsubroutineberhenti (robot berhenti selama 100 ms). a.l Panggilsubroutinebaca sensor.
a.m Periksa apakah sensor 1 dan sensor 5 berada pada garis hitam. a.n Jika ya, panggilsubroutine finish.
a.o Program selesai.
a.p Jika sensor 1 dan sensor 5 tidak berada pada garis hitam, periksa apakah sensor 2 atau sensor 3 atau sensor 3 lebih besar dari 400 (berada pada garis hitam).
a.q Jika ya, panggil subroutine Left, selanjutnya panggil subroutine simplifikasi dan kembali ke langkah d.
a.r Jika tidak, panggil subroutine leftJunction, selanjutnya panggil subroutinesimplifikasi dan kembali ke langkah d.
46
3.3.3.2. Algoritma penyederhanaan (simplifikasi)
Algoritma ini merupakan bagian dari algoritma pemetaan. Setiap instruksi yang terdapat pada algoritma pemetaan ini, akan diwakili oleh satu nama subroutine yang nantinya akan di panggil ketika banyaknya data langkah yang tersimpan pada array lebih besar atau sama dengan 3 dan data kedua dari data langkah terakhir array
adalah karakter ‘B’, ketika syarat tersebut terpenuhi maka data
tersebut akan dikonversi menjadi satu karakter tertentu.
Dari proses pemetaan maka akan kode-kode akan tersusun, kode-kode tersebut akan disederhanakan menggunakan formulasi sebagai berikut:
1. Setiap karakter data langkah dikonversi ke sebuah nilai, yaitu
“L” = 270, “R” = 90, “S” = 0, “B” = 180.
2. Nilai tersebut akan dijumlahkan dan akan dibagi dengan 360, sisa pembagiannya akan dikonversi menjadi karakter data langkah (Hasil penyederhanaannya.
Berikut adalah proses pemberian kode dan cara penyederhanaannya berdasarkan bentuk persimpangan:
Data yang tersimpan = “LBL” = 270 + 180 + 270 = 720
Hasil penyederhannya = 720 mod 360 = 0
Data yang tersimpan = “LBS” = 270 + 180 + 0 = 450
Hasil penyederhannya = 450 mod 360 = 90
90 dikonversi menjadi “R”.
“S” “B” 3
“L”
Data yang tersimpan = “SBL” = 0 + 180 + 270 = 450
Hasil penyederhannya = 450 mod 360 = 90
90 dikonversi menjadi “R”.
48
Gambar 3.13 Diagram alir simplifikasi
Berikut ini penjelasan algoritma simplifikasi: a. Memulai awal simplifikasi.
b. Periksa apakah banyak array lebih besar sama dengan 3 atau data
c. Jika ya, isi variabel i dengan 1.
d. Periksa apakahdata pada array karakter ”S”. e. Jika ya, jumlahkan variabel total_angle dengan 0. f. Increment variabel i.
g. Perikasa apakah variabel i lebih kecil sama dengan 3, jika tidak kembali ke langkah c.
h. Jika ya, isi variabel total_angle dengan sisa pembagian dari variabel total_angle dengan 360.
i. Periksa apakah variabel total_angle sama dengan 0.
j. Jika ya, ganti data ketiga dari terakhir dengan array dengan
karakter ”S”.
k. Kurangi jumlah array dengan 2 selanjutnya kembali ke langkah b.
l. Periksa apakah variabel total_angle sama dengan 90.
m. Jika ya, ganti data ketiga dari terakhir dengan array dengan
karakter ”R”.
n. Kurangi jumlah array dengan 2 selanjutnya kembali ke langkah b. o. Periksa apakah variabel total_angle sama dengan 180.
p. Jika ya, ganti data ketiga dari terakhir dengan array dengan
karakter ”B”.
q. Kurangi jumlah array dengan 2 selanjutnya kembali ke langkah b. r. Jika variabel total_angle nilainya selain 0, 90, 180 maka lanjutkan
ke langkah yang terdapat pada algoritma pemetaan. s. Periksa apakah data pada array karakter ”B”.
t. Jika ya, jumlahkan variabel total_angle dengan 180 dilanjukan ke langkah f.
u. Periksa apakah data pada array karakter ”L”.
v. Jika ya, jumlahkan variabel total_angle dengan 270 dilanjukan ke langkah f.
w. Periksa apakah banyak array tidak lebih besar sama dengan 3 atau
data ke dua dari terakhir tidak sama dengan “B”, maka
50
3.3.3.3. Algoritma Bergerak Berdasarkan Peta (Running Map) Algoritma ini akan dikerjakan setelah proses penyederhanaan data langkah selesai dan robot dapat bergerak dari titik start ke titik finish beserta penyimpanan data langkah yang sesuai dengan bentuk persimpangan yang dihadapi.
Gambar 3.14 Diagram alir Run map
Berikut ini penjelasan algoritma pemetaan: a. Memulai awal program.
b. Pendeklarasian program. Deklarasi variabel. c. Isi variabel xpath dengan nilai 0.
d. PanggilsubroutinelineFollow agar robot bergerak lurus.
52
f. Jika ya, panggilsubroutinemaju.
g. Panggilsubroutineberhenti (robot berhenti selama 100 ms). h. Periksa apakah sensor 1 dan sensor 5 berada pada garis hitam. i. Jika ya, robot berhenti.
j. Program selesai.
k. Periksa apakah sensor 1 sampai 5 berada pada garis putih. l. Jika ya, panggilsubroutine right.
m. Jika ya, keluar dari subroutinedan kembali mengeksekusi instruksi d.
n. Jika tidak, ambil data pada array, periksa apakah data array adalah
karakter ’L’.
o. Jika ya, panggilsubroutine left. p. Incrementvariabel array xpath.
q. Keluar darisubroutinedan kembali mengeksekusi instruksi d. r. Jika tidak, ambil data pada array, periksa apakah data array adalah
karakter ’R’.
s. Jika ya, panggilsubroutine right. t. Incrementvariabel array xpath.
u. Keluar darisubroutinedan kembali mengeksekusi instruksi d. v. Jika tidak, ambil data pada array, periksa apakah data array adalah
karakter ’S’.
w. Incrementvariabel array xpath.
x. Keluar darisubroutinedan kembali mengeksekusi instruksi d. y. Periksa apakah sensor 5 lebih besar dari 400 (berada pada garis
hitam).
z. Jika ya, panggilsubroutinemaju.
a.a. Panggilsubroutineberhenti (robot berhenti selama 100 ms). a.b. Periksa apakah sensor 1 dan sensor 5 berada pada garis hitam. a.c. Jika ya, robot berhenti.
a.d. Program selesai.
a.f. Jika ya, panggil subroutine left, keluar dari subroutine dan kembali mengeksekusi instruksi d.
a.g. Jika tidak, ambil data pada array, periksa apakah data array adalah
karakter ’L’.
a.h. Jika ya, panggilsubroutine left. a.i.Incrementvariabel array xpath.
a.j.Keluar darisubroutinedan kembali mengeksekusi instruksi d. a.k. Jika tidak, ambil data pada array, periksa apakah data array adalah
karakter ’R’.
a.l.Jika ya, panggilsubroutine right. a.m.Incrementvariabel array xpath.
a.n. Keluar darisubroutinedan kembali mengeksekusi instruksi d. a.o. Jika tidak, ambil data pada array, periksa apakah data array adalah
karakter ’S’.
a.p. Incrementvariabel array xpath.
a.q. Keluar darisubroutinedan kembali mengeksekusi instruksi d. a.r. Jika sensor 5 tidak berada pada garis hitam kembali
mengeksekusi instruksi d.
3.3.3. Perancangan Subroutine
Perancangan subroutine bertujuan agar program lebih terstruktur dan sederhana.Subroutine - Subroutineini akan dipanggil pada algoritma utama karena dalam suatusubroutineterdapat beberapa instruksi program.
Perancangan subroutine pada tugas akhir ini dibagi menjadi 3 bagian, yaitu:
1. Subroutine utama
2. Subroutine penyimpanan data langkah 3. Subroutine pergerakan robot
54
3.3.3.1. Subroutine Utama
Subroutine ini memegang peran penting karena didalamnya terdapat instruksi yang fatal jika terlewat. Berikut yang termasuk pada subroutineutama:
1. Setup
Pada subroutine ini terdapat instruksi untuk inisialisasi pin, boudrate, tombol start. Gambar 3.15 memperlihatkan diagram alirsubroutinesetup.
Awal Subroutine Setup
Tombol start (Pin 8) = Low? Inisialisasi Pin
Gambar 3.15 Diagram alir subroutine setup
Berikut ini penjelasan diagram alirsubroutine setup: a Memulai diagram alir subroutine setup.
b Inisialisasi pin, inisialisasi boudrate. c Tunggu penekanan tombol start.
e Jika ya, keluar dari subroutine dan kembali mengeksekusi instruksi berikutnya pada program utama dan robot akan mulai bergerak.
2. Baca Sensor
Pada subroutine bertujuan untuk pembacaan sensor melalui pembacaan ADC. Gambar 3.16 memperlihatkan diagram alir subroutinebaca sensor.
Gambar 3.16 Diagram alir subroutine baca sensor
Berikut ini penjelasan diagram alirsubroutine baca sensor: a. Memulai diagram alir subroutine baca sensor.
b. Isi variabel i dengan 0. c. apakah i kurang dari 7.
d. Periksa Periksa apakah isi variabel sensor ke i sama dengan ADC ke i.
e. Jika ya, increment variabel i dan kembali ke langkah c. f. Jika tidak, keluar dari subroutine dan kembali
56
3.3.3.2. Subroutine Penyimpanan Data Langkah
Pada subroutine ini terdiri dari dua proses yaitu pergerakan dan penyimpanan bentuk pergerakan tersebut, jadisubroutineini dipanggil ketika robot menemui salah satu bentuk persimpangan. Berikut yang termasuk subroutine penyimpanan data langkah:
1. Cross, T, Left junction
Subroutine ini dipanggil ketika robot menemui cross junction, left junction, dan T-juntion. Data langkah yang tersimpan pada array adalah karakter ‘L’. Gambar 3.17
memperlihatkan diagram alirsubroutineini.
Gambar 3.17 Diagram alir subroutine cross junction, left junction, dan T-juntion
Berikut ini penjelasan diagram alir subroutine cross, T, left junction:
a. Memulai diagram alir subroutine c_t_l_junction. a. Putar kiri sampai sensor 4 berada pada garis hitam. b. Simpan karakter ‘L’ pada array.
d. Keluar dari subroutine dan kembali mengeksekusi instruksi berikutnya pada program utama.
2. Right Junction
Subroutine ini dipanggil ketika robot menemui left junction. Data langkah yang tersimpan pada array adalah karakter ‘L’.
Gambar 3.18 memperlihatkan diagram alirsubroutineini.
Gambar 3.18 Diagram alir subroutine righ junction
Berikut ini penjelasan diagram alirright junction: a. Memulai diagram alir subroutine right junction. b. Simpan karakter ‘L’ pada array.
c. Increment array.
d. Keluar dari subroutine dan kembali mengeksekusi instruksi berikutnya pada program utama.
3. Dead End
Subroutine ini dipanggil ketika robot menemui track buntu. Data langkah yang tersimpan pada array adalah karakter ‘B’.
58
Gambar 3.19 Diagram subroutine dead end
Berikut ini penjelasan diagram alirsubroutine dead end: a. Memulai diagram alir subroutine left junction. b. Putar kiri sampai sensor 4 berada pada garis hitam. c. Simpan karakter ‘B’ pada array.
d. Increment array.
e. Keluar dari subroutine dan kembali mengeksekusi instruksi berikutnya pada program utama.
3.3.3.3. Subroutine Pergerakan robot
Pada Subroutine ini terdiri beberapa instuksi agar robot dapat berputar atau belok, maju dan berhenti. Subroutine ini dipanggil ketika robot menemui belokan dan persimpangan. Berikut yang termasuksubroutinepergerakan robot:
1. Left
pembatas dan sensor pembatasnya dapat dipilih sesuai dengan pergerakan robotnya. Untuk pemilihan sensor pembatasnya dapat digunakan sebuah variabel yang nilainya dapat diganti. Gambar 3.20 memperlihatkan diagram alir subroutineini.
Gambar 3.20 Diagram alir subroutine left
Berikut ini penjelasan diagram alirsubroutine left: a. Memulai diagram alirsubroutine left.
b. Baca nilai variabel x.
c. Periksa apakah ADC ke x lebih kecil dari 400.
d. Inisialisasi pin yang dihubungkan ke A+ dan A- agar roda berputar maju dan Inisialisasi pin yang dihubungkan ke B+ dan B- agar roda berputar dengan arah berlawanan sehingga robot berputar ke kiri.
60
f. Jika ya, kembali ke langkah c.
g. Jika tidak, lanjutkan ke langkah yang terdapat pada algoritma pemetaan.
2. Right
Subroutine right berfungsi untuk memberi instruksi putar kanan. Subroutine ini dipanggil ketika robot menemui belokan kanan 90 derajat. Pada saat pemanggilan subroutine ini, putaran atau belokannya dapat dibatasi dengan menggunakan sensor pembatas dan sensor pembatasnya dapat dipilih sesuai dengan pergerakan robotnya. Untuk pemilihan sensor pembatasnya dapat digunakan sebuah variabel yang nilainya dapat diganti. Gambar 3.21 memperlihatkan diagram alirsubroutineini.
Awal Subroutine
Berikut ini penjelasan diagram alirsubroutine right: a. Memulai diagram alirsubroutine right.
b. Baca nilai variabel x.
c. Periksa apakah ADC ke x lebih kecil dari 400.
d. Inisialisasi pin yang dihubungkan ke A+ dan A- agar roda berputar maju dan Inisialisasi pin yang dihubungkan ke B+ dan B- agar roda berputar dengan arah berlawanan sehingga robot berputar ke kanan.
e. Panggil subroutine kecepatan untuk memberi nilai PWM kiri dan kanan.
f. Jika ya, kembali ke langkah c.
g. Jika tidak, lanjutkan ke langkah yang terdapat pada algoritma pemetaan.
3. Berhenti
Subroutine berhenti berfungsi untuk memberi instruksi berhenti selama 100 ms kepada robot. Setelah robot berhenti, robot akan melanjutkan instrusi selanjutnya. Gambar 3.22 memperlihatkan diagram alirsubroutineini.
62
Berikut ini penjelasan diagram alirsubroutine berhenti: a. Memulai diagram alirsubroutine berhenti
b. Inisialisasi pin yang dihubungkan ke A+ dan A- agar roda berputar mundur dan Inisialisasi pin yang dihubungkan ke B+ dan B- agar roda berputar mundur sehingga robot berhenti.
c. Delay 100milisecond.
d. Keluar dari subroutine dan kembali mengeksekusi instruksi berikutnya pada program utama.
4. Maju
Subroutine maju berfungsi untuk memberi instruksi maju selama 100 ms kepada robot. Setelah robot maju, robot akan melanjutkan instrusi selanjutnya. Gambar 3.23 memperlihatkan diagram alirsubroutineini.
Berikut ini penjelasan diagram alirsubroutine maju: a. Memulai diagram alirsubroutine maju
b. Inisialisasi pin yang dihubungkan ke A+ dan A- agar roda berputar maju dan Inisialisasi pin yang dihubungkan ke B+ dan B- agar roda berputar maju sehingga robot maju. c. Delay 100milisecond.
d. Keluar dari subroutine dan kembali mengeksekusi instruksi berikutnya pada program utama.
2. Finish
64
Gambar 3.24 Diagram alir subroutine finish
Berikut ini penjelasan diagram alirsubroutine finish: a. Memulai diagram alirsubroutine finish.
b. Robot berhenti.
c. Set pin 8low(tombolstart) pada high. d. Tunggu penekanan tombol start.
e. Jika ya, panggilsubroutine displayPath. f. Tunggu penekanan tombol start.
g. Jika ya, panggilsubroutine Run_map.
3. Line Follow
Subroutine line follow berfungsi untuk menelusuri garis lurus. Gambar 3.25 memperlihatkan diagram alir subroutine ini.
Gambar 3.25 Diagram alir subroutine line follow
Berikut ini penjelasan diagram alirsubroutine line follow: a. Memulai diagram alirsubroutine line follow.
b. Panggilsubroutinemaju. c. Panggilsubroutinebaca sensor.
d. Periksa apakah sensor 3 lebih besar dari 400 (berada pada garis hitam).
e. Jika ya, periksa apakah sensor 2 lebih besar dari 400 (berada pada garis hitam).
66
g. Keluar dari subroutine dan kembali mengeksekusi instruksi berikutnya pada program utama.
h. Jika ya, periksa apakah sensor 4 lebih besar dari 400 (berada pada garis hitam).
i. Jika ya, nilai PWM kiri 80, nilai PWM kanan 100
j. Keluar dari subroutine dan kembali mengeksekusi instruksi berikutnya pada program utama.
k. Jika sensor 3 saja yang lebih besar dari 400 (berada pada garis hitam), nilai PWM kiri 100, nilai PWM kanan 100. l. Keluar dari subroutine dan kembali mengeksekusi
instruksi berikutnya pada program utama.
m. Periksa apakah sensor 2 lebih besar dari 400 (berada pada garis hitam).
n. Jika ya, nilai PWM kiri 100, nilai PWM kanan 50.
o. Keluar dari subroutine dan kembali mengeksekusi instruksi berikutnya pada program utama.
p. Periksa apakah sensor 4 lebih besar dari 400 (berada pada garis hitam).
q. Jika ya, nilai PWM kiri 50, nilai PWM kanan 100.
r. Keluar dari subroutine dan kembali mengeksekusi instruksi berikutnya pada program utama.
s. Jika sensor 2, 3, 4, tidak ada yang lebih besar dari 400 (berada pada garis hitam) Keluar dari subroutine dan kembali mengeksekusi instruksi berikutnya pada program utama.
4. Kecepatan
Gambar 3.26 Diagram alir subroutine kecepatan
Berikut ini penjelasan diagram alirsubroutinekecepatan: a. Memulai diagram alirsubroutine finish
b. Deklarasi variabel.
c. Inisialisasi pin 4 (kanan) dan nilai PWM yang diwkili oleh variabel rspeed, Inisialisasi pin 5 (kiri) dan nilai PWM yang diwkili oleh variabel lspeed.
d. Keluar dari subroutine dan kembali mengeksekusi instruksi berikutnya pada program utama.
3.3.3.4. Subroutine displayPath