14
KOMUNITAS KAMPUNG ROBOT Aayo, Buat Sendiri Robotmu! PROMISE Programmable Multisensory Robot www.kampungrobot.net Graha Kuncara Eksekutif AS-6 Kemiri Sidoarjo 61234, Jawa Timur, Indonesia [email protected] | 031-892-2524 | 0819-3844-3470

Panduan Perakitan SINAURO Robot PROMISE

Embed Size (px)

DESCRIPTION

Buku ini berisi penjelasan dan panduan perakitan robot PROMISE (Programmable Multi-sensor), yang merupakan proyek tingkat lanjut dari modul robot edukasi SINAURO.SINAURO adalah alat peraga edukasi untuk pembelajaran robotika yang dikembangkan oleh Komunitas Kampung Robot dari perangkat keras dan lunak sumber-terbuka (open-source) dengan biaya terjangkau. Kini siapapun dapat belajar lebih mudah menggunakan SINAURO tentang teknik dasar robot-bergerak (mobile-robot) manual dan otomatis seperti penjejak-dinding (wall-tracer), penghindar-rintangan (obstacle-avoider), pengikut (follower), dan penjejak-garis (line-tracer), baik yang analog maupun diprogram. Lebih dari itu, SINAURO masih dapat dikembangkan menjadi robot dengan berbagai fungsi melalui penambahan sensor atau aktuator lainnya.

Citation preview

Page 1: Panduan Perakitan SINAURO Robot PROMISE

KOMUNITAS KAMPUNG ROBOTAayo, Buat Sendiri Robotmu!

PROMISEProgrammable Multisensory Robot

www.kampungrobot.netGraha Kuncara Eksekutif AS-6 KemiriSidoarjo 61234, Jawa Timur, [email protected] | 031-892-2524 | 0819-3844-3470

Page 2: Panduan Perakitan SINAURO Robot PROMISE

Nama Proyek: PROMISEProgrammable Multisensory RobotRobot Multisensori yang Diprogram

Kategori: Robot bergerakMikrokontrolerOtomatis

Proyek Robot PROMISE merupakan kelanjutan dariproyek sebelumnya. Kali ini, robot dilengkapi denganmikrokontroler dari kompatibel Arduino Uno dengantambahan shield khusus dari Kampung Robot untukmempermudah pemakaiannya.

Tentang Arduino Uno

Arduino Uno merupakan mikrokontroler berbasis chipAVR Atmega328 dari Atmel yang sudah dilengkapidengan downloader dan komunikasi USB-serial.Komunitas Kampung Robot menggunakan kompatibelArduino Uno buatan lokal karena memang Arduinodilisensikan sebagai open source hardware sehingga siapasaja diperbolehkan mengambil sumbernya danmembuatnya. Informasi lebih lengkap tentang Arduinodapat diperoleh dari website-nya www.arduino.cc.

Secara sederhana, di sini dijelaskan tentang tata letak portdan cara pemasangannya pada komputer.

Gambar 1: Arduino Uno, dengan Atmega328.

KOMUNITAS KAMPUNG ROBOT – PROMISE 1

Page 3: Panduan Perakitan SINAURO Robot PROMISE

Gambar 1 di atas adalah papan rangkaian Arduino Uno.Warna abu-abu di sebelah kiri atas adalah port USB untuksambungan dengan komputer. Sedikit ke bawah adapower select jumper yaitu untuk pemilihan sumbertegangan rangkaian: dari USB atau dari teganganeksternal yang disediakan tersendiri, misalnya denganbaterai. Dan di bawahnya yang berwarna hitam adalahcolokan untuk sumber tegangan eksternal tersebut.

Pada sisi atas dan sisi bawah ada sederetan female-headeryang merupakan perpanjangan dari kaki-kaki chipmikrokontroler yang diberi nomor atau tanda sesuaiperuntukannya.

Yang atas terdiri dari 2 blok, diurutkan dari kanan ke kiriadalah port digital input/output nomor 0 sampai 13,ditambah ground (GND) dan input untuk teganganreferensi analog eksternal (AREF). Ada beberapa nomorport atau pin yang mempunyai kekhususan. Pin 0 dan 1digunakan untuk komunikasi serial sebagai Rx dan Tx,sehingga biasanya kedua pin ini tidak dihubungkan selaindengan perangkat komunikasi, misalnya modul bluetooth.Pin 3, 5, 6, 9, 10, dan 11 mempunyai fitur PWM (pulsewitdh modulation).

Deretan female-header yang berada di sisi bawah jugaterbagi menjadi 2 blok. Blok di sebelah kanan adalah portanalog input dengan nomor dari kiri ke kanan 0 sampai 5(atau A0 sampai A5, untuk membedakannya dengan portdigital). Berbeda dengan port digital yang dapat disetelsebagai port input atau output, port analog ini hanyauntuk input saja.

Blok yang berada di sebelah kiri bawah digunakan untuksambungan daya. Di sana ada pin Vin, GND, 5V, 3V3,dan Reset.

Di sebelah kanan, ada tombol reset dan pin-header untukpemprograman.

Pada papan Arduino juga dilengkapi lampu indikatordaya dan lampu sebagai output yang terhubung ke port13.

2 KOMUNITAS KAMPUNG ROBOT – VISIOBOT

Page 4: Panduan Perakitan SINAURO Robot PROMISE

Tentang Uno-Shield Kampung Robot

Gambar 2: Uno-Shield Kampung Robot sebagai papan ekspansi untukmemudahkan pemasangan sensor dan aktuator.

Untuk kemudahan pemasangan perangkat lain, sepertisensor dan aktuator, Kampung Robot membuat papanekspansi. Di lingkungan Arduino, papan seperti ini biasadisebut shield. Gambar 2 di atas menunjukkan papanArduino yang sudah dipasangi dengan shield KampungRobot.

Ada perubahan letak port dari format asal Arduino keformat shield ini. Port digital yang semula terletak di sisiatas dipindahkan ke pin-header di sisi kiri dengan urutannomor dari bawah ke atas mulai dari 0 sampai 13. PinGND dan AREF yang semula berada setelah pin 13ditiadakan. Pin AREF diganti dengan resistor variabel(trimpot) yang berada di kanan atas.

Port analog input dipindahkan dari Arduino Uno di sisibawah ke shield pada pin-header di sisi kanan, denganurutan A0 di atas sampai A5 di bawah.

Pin-header untuk port digital dan analog ini terdiri dari 3kolom dan sejumlah baris. Banyaknya baris sebanyaknomor port. Adapun 3 kolom tersebut fungsinya berbeda-beda. Kolom yang berada di sisi luar, yaitu pin-headerpaling kiri pada port digital dan pin-header paling kanan

KOMUNITAS KAMPUNG ROBOT – PROMISE 3

Page 5: Panduan Perakitan SINAURO Robot PROMISE

pada port analog merupakan pin GND. Pin-header dikolom tengah merupakan pin Vcc atau tegangan 5V. Danpin-header di sisi dalam, yaitu yang paling kanan padaport digital dan paling kiri pada port analog merupakanpin sesungguhnya yang terhubung ke port pada ArduinoUno. Dengan kata lain, pin pada sisi dalam inilah yangmerupakan jalur sinyal input atau output.

Tentang Arduino IDE

Arduino telah menyertakan aplikasi untuk menuliskanprogram, yaitu aplikasi Arduino IDE. Berkas sumberArduino IDE dapat diunduh dari website-nyawww.arduino.cc sesuai dengan sistem operasi yangdigunakan.

Gambar 3: Tampilan Arduino IDE versi 1.0.5 yang sedang membukasebuah program bernama progobot_rover.

Panduan penggunaan Arduino IDE langkah demi langkah

4 KOMUNITAS KAMPUNG ROBOT – VISIOBOT

Page 6: Panduan Perakitan SINAURO Robot PROMISE

tersedia di website-nya, berikut contoh-contoh proyekdari yang untuk pemula hingga mahir. Selain dari websiteresmi Arduino, ada banyak website lain yang memuatpanduan dan proyek Arduino.

Bahasa program yang digunakan pada Arduino IDEberasal dari lingkungan pemprograman C++. Daftarperintah beserta penjelasan dan contohnya dapat dilihatpada menu Help – Reference.

Sebuah program pada Arduino terdiri atas 3 bagian, yaitudeklarasi, setup(), dan loop(). Bagian deklarasi berisipenentuan berkas-berkas yang disertakan dan variabel-variabel yang digunakan. Bagian setup() adalah bagianprogram yang berisi perintah untuk dijalankan sekali sajapada awal perangkat dinyalakan, seperti proses bootingpada komputer. Bagian loop() adalah bagian programyang berisi perintah untuk dijalankan terus-menerus atausesuai dengan kondisi yang diinginkan.

Langkah pemasangan Arduino

Sebagaimana disebut di atas bahwa perangkat ArduinoUno yang digunakan oleh Kampung Robot adalahkompatibelnya buatan lokal. Modul perantara USB-serialyang digunakan adalah PL2303. Jika menggunakansistem operasi Windows, berkas driver PL2303 ini perludipasang (install) terlebih dahulu, baru kemudian kabelUSB dipasang pada Arduino Uno dan komputer. (Padasistem operasi keluarga Linux, seperti Ubuntu, PL2303sudah dikenali.)

Sebagai tanda komputer telah mengenali Ardunio, adaport serial dengan nomor tertentu yang dialokasikanuntuk PL2303. Di Windows, yang dialokasikan adalahport serial dengan nomor tertentu, misalnya COM2 atauCOM10. Di Ubuntu, biasanya /dev/ttyUSB0.

Langkah berikutnya membuka aplikasi Arduino IDE.Untuk memastikan perangkat keras Arduino Uno telahtersambung dengan aplikasi Arduino IDE, bukalah menuTools – Serial Ports. Jika menu ini disabled (tidak aktif),maka perangkat belum terhubung. Jika terhubung, maka

KOMUNITAS KAMPUNG ROBOT – PROMISE 5

Page 7: Panduan Perakitan SINAURO Robot PROMISE

menu menampilkan port yang terhubung atau pilihanport yang tersedia. Port yang dicentang adalah yangterhubung.

Yang juga perlu dipastikan adalah macam atau tipeArduino yang digunakan. Ada banyak pilihan tipeArduino yang disediakan pada aplikasi Arduino IDE ini.Pemilihannya melalui menu Tools – Boards. PilihArduino Uno karena yang sedang dipakai adalahkompatibel Arduino Uno.

Untuk belajar bagaimana memprogram, dalam ArduinoIDE juga telah disertakan banyak contoh yang dapatdipilih dari menu File – Examples. Sementara, berkas-berkas yang kita tulis nantinya dapat dibuka kembalimelalui menu File – Sketchbook. Karena itu, sebaiknyaberkas yang kita tulis disimpan di dalam direktorisketchbook supaya dapat ditampilkan sebagai pilihandalam menu tersebut. Lokasi direktori sketchbook dapatdiatur melalui menu File – Preferences.

Memprogram Robot

Sebelum menuliskan program untuk robot, yang perludilakukan terlebih dahulu adalah mengalokasikanperangkat-perangkat, baik perangkat input maupunoutput, ke alamat port pada mikrokontroler. Sebagaicontoh, mari kita membangun kembangkan XLITE yangmerupakan analog line tracer menjadi PROLITE, yaituprogramable line tracer.

Pada buku sebelumnya tentang VISIOBOT sudah dibahastentang modul motor-driver. Pada modul tersebut, ada 4pin-header yang terletak di dekat saklar ON/OFF.Keempat pin-header tersebut untuk sinyal pengendalianmotor DC sebagai lokomotor robot. Dua pin-header yangberada di sisi luar untuk sinyal pengendali arah putaranmotor, dan dua yang diapit di tengah untuk sinyal enableatau ON/OFF motor.

Dalam contoh berikut, keempat pin-header itudisambungkan ke port digital nomor 4, 5, 6, dan 7. Atau,dengan kata lain port digital I/O Arduino Uno

6 KOMUNITAS KAMPUNG ROBOT – VISIOBOT

Page 8: Panduan Perakitan SINAURO Robot PROMISE

dialokasikan untuk kendali motor-driver, denganperincian pada Tabel 1 berikut ini.

Tabel 1: Pengalokasian port untuk motor-driver.

Port Digital I/O Motor-driver

4 arah motor kanan

5 enable motor kanan

6 enable motor kiri

7 arah motor kiri

Gambar 4: Modul motor-driver (penjelasan modul ini sudah dibahaspada buku pertama tentang proyek Visiobot.

Setelah menentukan pengalokasian nomor port, langkahberikutnya adalah memasang kabel 3 jalur dari shield kemotor-driver. Ingat, letak pin GND pada shield berada disisi luar, dan pada motor-driver berada di sisi dekatsaklar. Apabila pin GND pada shield sudah benarterhubung dengan pin GND pada motor-driver, maka pinyang lain sudah pasti benar.

Pasang ujung kabel pada pin-header kelompok portdigital baris ke 5 dari bawah, yaitu pin nomor 4 karenadimulai dari nomor 0. Ujung lainnya dipasang pada pin-

KOMUNITAS KAMPUNG ROBOT – PROMISE 7

Page 9: Panduan Perakitan SINAURO Robot PROMISE

header arah motor kanan motor-driver, yaitu yang beradadi paling kanan. Kemudian berturut-turut pin nomor 5, 6,dan 7 pada shield ke motor-driver yang sebelah kirinyasampai paling kiri.

Gambar 5: Pemasangan kabel 3 pada shield,perhatikan jalur GND ada di sisi luar.

Kode program untuk kendali motor-driver dengansusunan di atas adalah sebagai berikut.

const int mka = 4; // arah motor kananconst int ena = 5; // enable motor kananconst int eni = 6; // enable motor kiriconst int mki = 7; // arah motor kiri

void setup(){

pinMode(mka, OUTPUT); // mka sbg outputpinMode(ena, OUTPUT); // ena sbg outputpinMode(eni, OUTPUT); // eni sbg outputpinMode(mki, OUTPUT); // mki sbg outputdelay(1000); // beri jeda 1 detik

}

void loop(){

digitalWrite(mka, HIGH);digitalWrite(ena, HIGH);digitalWrite(eni, HIGH);digitalWrite(mki, HIGH);

}

8 KOMUNITAS KAMPUNG ROBOT – VISIOBOT

Page 10: Panduan Perakitan SINAURO Robot PROMISE

Untuk melakukan verifikasi penulisan kode program diatas, klik ikon bergambar tanda centang pada toolbarArduino IDE. Apabila ada kesalahan penulisan, di jendelabagian bawah Arduino IDE ditampilkan pesankesalahannya.

Untuk memindahkan kode program yang sudah benar kemikrokontroler, klik ikon upload yang bergambar tandapanah ke kanan. Tidak seperti kebanyakan istilahpemprograman lainnya, di Arduino digunakan istilahupload untuk mengirimkan atau memindahkan kodeprogram dari komputer ke mikrokontroler, sementarayang lainnya menggunakan istilah download.

Begitu kode program berhasil diunggah, robot siapdioperasikan dengan program. Lepas kabel USB darirobot, kemudian tekan saklar ON/OFF untuk menyalakanrobot. Maka, proses yang terjadi – sesuai kode program –adalah sebagai berikut.

Bagian setup() dijalankan pertama kali dan sekali sajabegitu perangkat dinyalakan. Di dalam setup() berisiperintah untuk menentukan bahwa port nomor 4, 5, 6, dan7 yang sudah diberi nama lain sebagai mka, ena, eni, danmki adalah sebagai port output dengan perintahpinMode(). Kemudian, ada perintah delay(1000);untuk memberi jeda atau penundaan waktu selama 1000milidetik atau 1 detik sebelum dilanjutkan ke prosesberikutnya, yaitu perintah di bagian loop().

Di dalam loop() ada perintah digitalWrite(), yaituperintah untuk mengirimkan sinyal melalui nomor portyang disebutkan. Karena menggunakan moda digital,maka sinyalnya hanya ada 2 kondisi, yaitu HIGH atauLOW. Biasanya, HIGH dapat dituliskan dengan bilangan1 dan LOW dengan 0.

digitalWrite(mka, HIGH);digitalWrite(ena, HIGH);digitalWrite(eni, HIGH);digitalWrite(mki, HIGH);

KOMUNITAS KAMPUNG ROBOT – PROMISE 9

Page 11: Panduan Perakitan SINAURO Robot PROMISE

Keempat baris perintah tersebut dikirim ke motor-driveruntuk pengendalian 2 motor DC sebagai lokomotor robotyang terhubung ke motor-driver. Kombinasi dari sinyalHIGH/LOW pada keempat baris tersebut menghasilkanvariasi arah putaran motor atau gerak lokomotor robotsebagaimana ditunjukkan oleh Tabel 2 berikut.

Tabel 2: Pengaturan arah gerakan robot.

mki eni ena mka gerak

1 1 1 1 MAJU

0 1 1 1 PUTAR KIRI

0 0 1 1 BELOK KIRI

0 0 0 1 BERHENTI

0 0 0 0 BERHENTI

1 0 0 0 BERHENTI

1 1 0 0 BELOK KANAN

1 1 1 0 PUTAR KANAN

0 1 1 0 MUNDUR

Ada tiga kondisi yang menghasilkan output sama'berhenti'. Kondisi ini terjadi jika sinyal 0 yang diberikanpada ena dan eni. Tentu saja, karena sinyal 0 berarti untukmeng-OFF-kan motor kanan dan kiri, sehingga sinyalapapun yang diberikan ke mka dan mki tidak ada artinya.

Dari Tabel 2 di atas dapat diketahui bahwa kode programyang baru saja ditulis akan memerintahkan robot bergerakatau berjalan maju. Jika ternyata arah robot tidak maju,maka perhatikan motor yang mana yang arah putarannyamundur kemudian baliklah kabel dari motor DC tersebutke motor-driver seperti penjelasan di panduansebelumnya.

Sekarang sudah diketahui bahwa dibutuhkan 4 barisperintah untuk membuat robot berjalan ke arah tertentu.Jika untuk maju perintahnya adalah seperti di atas, makauntuk mundur seperti di bawah ini sesuai dengan Tabel 2.

digitalWrite(mka, LOW);digitalWrite(ena, HIGH);digitalWrite(eni, HIGH);digitalWrite(mki, LOW);

10 KOMUNITAS KAMPUNG ROBOT – VISIOBOT

Page 12: Panduan Perakitan SINAURO Robot PROMISE

Selanjutnya, perintah-perintah tersebut akan seringdiulang sesuai dengan kebutuhan. Untuk kemudahansupaya tidak mengulang menuliskannya, empat baristersebut dirangkum menjadi sebuah fungsi. Satu gerakanmenjadi satu fungsi. Sebagai contoh fungsi maju() danmundur() sebagai berikut.

void maju(){

digitalWrite(mka, HIGH);digitalWrite(ena, HIGH);digitalWrite(eni, HIGH);digitalWrite(mki, HIGH);

}

void mundur(){

digitalWrite(mka, LOW);digitalWrite(ena, HIGH);digitalWrite(eni, HIGH);digitalWrite(mki, LOW);

}

Penulisan fungis maju() dan mundur() ini, begitu jugafungsi-fungsi lainnya dapat diletakkan sebelum setup()atau sesudahnya.

Cara penggunaannya dengan menuliskan nama fungsinyadi dalam loop().

void loop(){

maju(); // memanggil fungsi majudelay(2000); // jeda 2 detikberhenti(); // memanggil fungsi berhentidelay(2000); // jeda 2 detik

}

Apabila dijalankan dengan kode program di atas, makarobot bergerak maju selama 2 detik kemudian berhentiselama 2 detik, dan kembali ke awal, yaitu maju selama 2detik. Begitu seterusnya.

Langkah berikutnya adalah cara memprogram denganperangkat input, yaitu sensor garis. Ada 3 sensor garisyang tersedia dengan letak di kiri, tengah, dan kanan.Ketiga sensor garis ini dipasang pada port analog ini

KOMUNITAS KAMPUNG ROBOT – PROMISE 11

Page 13: Panduan Perakitan SINAURO Robot PROMISE

nomor A0, A1, dan A3. Maka, kode programnya adalahsebagai berikut.

// ... sambungan dari sebelumnya

const int ski = A0; // sensor kiriconst int ste = A1; // sensor tengahconst int ska = A2; // sensor kanan

int gariskiri, garistengah, gariskanan;int putih = 1023;

void maju(){

// ... seperti sebelumnya}

void bacagaris() // fungsi pembaca garis{

gariskiri = analogRead(ski);garistengah = analogRead(ste);gariskanan = analogRead(ska);

}

void setup(){

// ... sambungan dari sebelumnya// tidak perlu pinMode utk sensor// karena port analog sudah pasti input

analogReference(INTERNAL);}

void loop(){

bacagaris();if (gariskiri == putih && garistengah != putih &&

gariskanan == putih)maju();

elseberhenti();

}

Apabila kode program tersebut dijalankan (tentunyasetelah ditulis lengkap sebagai gabungan dengan yangsebelumnya), maka robot berjalan maju jika sensortengah berada di atas garis hitam sementara sensor kiridan kanan di atas lantai putih, selain kondisi ini robotberhenti.

12 KOMUNITAS KAMPUNG ROBOT – VISIOBOT

Page 14: Panduan Perakitan SINAURO Robot PROMISE

Untuk membuat kondisi yang lain, jika warna putihdikodekan dengan 1 dan hitam dengan 0, maka berikutadalah contoh tabel kombinasinya.

Tabel 3: Kemungkinan kombinasi pembacaan sensor garis.

sensor kiri sensor tengah sensor kanan tindakan

0 0 0 henti()

0 0 1 kiri()

0 1 0 tidak ada

0 1 1 kiri()

1 0 0 kanan()

1 0 1 maju()

1 1 0 kanan()

1 1 1 kanan()

Tabel di atas untuk membuat kemungkinan kombinasipembacaan sensor garis jika lantai berwarna putih dangaris berwarna hitam. Dari berbagai kemungkinanpembacaan sensor garis tersebut, ada satu yang tidak adatindakannya karena kemungkinan kombinasinya tidakakan terjadi, kecuali jika warna lantai dan gariskebalikannya.

Untuk warna lantai dan garis kebalikannya, cukup denganmengganti tindakan dengan lawannya, yaitu kiri dengankanan, dan maju ditiadakan sedangkan yang 'tidak ada'diganti dengan maju.

Dengan konsep yang sama seperti contoh pengendalianmotor-driver sebagai output dan sensor garis sebagaiinput, perangkat-perangkat lainnya dapat ditambahkan,baik aktuator maupun sensor.

Cobalah mencermati contoh program yang disertakanuntuk membuat kode program dengan perangkat tertentu.Ada pula perangkat tertentu yang sudah disertai denganberkas pustaka atau library untuk kemudahan penulisankode program.

Selamat belajar!

KOMUNITAS KAMPUNG ROBOT – PROMISE 13