PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI TUGAS AKHIR
LENGAN ROBOT BERMAIN KEYBOARD MENGGUNAKAN LIMA JARI DALAM SATU OKTAF NADA MAYOR DENGAN KENDALI KEYPAD
Disusun oleh :
KRISTIAN ADI PERBOWO NIM : 125114030
PROGRAM STUDI TEKNIK ELEKTRO JURUSAN TEKNIK ELEKTRO FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS SANATA DHARMA YOGYAKARTA 2015
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI FINAL PROJECT
FIVE FINGERS KEYBOARD PLAYER ARM ROBOT IN ONE MAJOR OCTAF TONE BY KEYPAD CONTROLLER
KRISTIAN ADI PERBOWO NIM : 125114030
ELECTRICAL ENGINEERING STUDY PROGRAM ELECTRICAL ENGINEERING DEPARTMENT FACULTY OF SCIENCE AND TECHNOLOGY SANATA DHARMA UNIVERSITY YOGYAKARTA 2015
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
Juli
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
HALAMAN PERSEMBAHAN DAN MOTTO HIDUP
MOTTO
Naik lebih susah dari pada turun
Dengan ini kupersembahkan karyaku ini untuk..... Tuhanku Yesus Kristus Pembimbingku yang setia, Keluargaku tercinta, Teman-temanku seperjuangan, Dan semua orang yang mengasihiku Terima Kasih untuk semuanya.......
vi
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
INTISARI Teknologi robot pada masa kini penggunaannya sangat beragam, mulai dari robot yang digunakan dalam pekerjaan berat dan membahayakan manusia hingga robot yang diprogram hanya untuk mengingatkan sebuah kegiatan manusia. Bagian yang cukup penting pada sebuah robot terdapat pada bagian tangan, karena berguna untuk menyentuh dan memegang sebuah obyek. Pada penelitian ini, robot berbentuk lengan akan memainkan dan menekan tuts keyboard. Lengan robot ini berbasis mikrokontroler yang diprogram untuk menggerakkan lengannya untuk mencapai posisi yang telah ditentukan dan menekan tuts keyboard sesuai dengan input tombol yang diaktifkan pada keypad. Lengan robot ini dilengkapi beberapa motor servo untuk menggerakkan bagian dari lengan seperti pangkal putar, bahu, siku dan pergelangan tangan. Lengan robot ini juga dilengkapi dengan motor servo berbentuk lima jari yang berfungsi memainkan lagu dengan tempo yang telah disematkan kedalam programnya. Hasil akhir dari pengujian lengan robot ini menunjukkan bahwa system ini dapat memposisikan lengan dan memainkan nada dengan menekan tuts keyboard menggunakan kelima jarinya sesuai dengan input keypad yang ditekan dan program yang telah dibuat. Kata kunci : Lengan Robot, Keypad, Mikrokontroler, Keyboard.
viii
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
ABSTRACT Nowadays, the use of robot is varied. The robot itself is sometimes used for hard work and for reminding people in their activity. The most important part of robot is its hand since it is benefit for touching and holding an object. In this research, robot in hand form will play and press the keyboard’s keys. This robot’s arm is based on microcontroller in which the robot is already programmed to move its hand. By moving its hand, the robot is supposed to reach the position and press keyboard’s keys by activated button keypad. The robot’s arm is completed by some servo motors to move the part of its arm such as base, shoulder, elbow, and wrist. The arm is also equipped by servo motors in five-fingers-form which is functioned to play a song based on beat in the program. By this research, the robot shows that the system can reach the determined position and play the note by pressing the keyboard’s key using five fingers based on the keypad input and even the program. Keywords: Arm Robot, Keypad, Microcontroller, Keyboard.
ix
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
DAFTAR ISI HALAMAN JUDUL........................................................................................................ i HALAMAN PERSETUJUAN ........................................................................................ iii HALAMAN PENGESAHAN ......................................................................................... iv PERNYATAAN KEASLIAN KARYA......................................................................... v HALAMAN PERSEMBAHAN DAN MOTTO HIDUP .............................................. vi LEMBAR PERNYATAAN PERSETUJAN KARYA ILMIAH UNTUK KEPENTINGAN AKADEMIS ....................................................................... vii INTISARI ......................................................................................................................... viii ABSTRACT....................................................................................................................... ix KATA PENGANTAR ..................................................................................................... x DAFTAR ISI .................................................................................................................... xi DAFTAR GAMBAR ....................................................................................................... xiv DAFTAR TABEL ............................................................................................................ xvii DAFTAR LAMPIRAN.................................................................................................... xviii BAB I PENDAHULUAN 1.1. Latar Belakang.......................................................................................................... 1 1.2. Tujuan Penelitian...................................................................................................... 2 1.3. Batasan Masalah ....................................................................................................... 2 1.4. Pembatasan Masalah................................................................................................. 3 1.5. Rumusan Masalah..................................................................................................... 3 1.6. Metodologi Penelitian............................................................................................... 3 BAB II TINJAUAN PUSTAKA DAN DASAR TEORI 2.1. Mikrokontroler.......................................................................................................... 6 2.1.1 Arduino Mega 2560 R3................................................................................. 6 2.1.2 Perangkat Lunak Arduino ( Software).......................................................... 9 2.2. Motor Servo.............................................................................................................. 10 2.2.1 Pulsa Kontrol Motor Servo............................................................................ 12 2.3. Keypad Matriks 4x3.................................................................................................. 13
xi
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 2.4. Alat Musik Keyboard ............................................................................................... 13 2.5. Servo Controller ....................................................................................................... 15 2.6. Komunikasi Serial……………………..................................................................... 15 2.7. Komunikasi I2C........................................................................................................ 16 2.7.1. Mode Pengoperasian Transfer Data ............................................................... 18 2.8. Kinematika................................................................................................................ 19 BAB III PERANCANGAN SISTEM 3.1. Perancangan Perangkat Keras (Hardware) .............................................................. 25 3.1.1 Perancangan Mekanik Robot......................................................................... 26 3.1.2 Pemodelan Mekanik ................................................................................................. 27 3.1.3 Perancangan Invers Kinematik....................................................................... 32 3.2. Perancangan Rangkaian Pengendali Utama ............................................................. 36 3.2.1. Perancangan Elektrik ...................................................................................... 36 3.2.1.1 Perancangan Keypad Matriks 3x4 ................................................... 37 3.2.1.2 Perancangan Rangkaian Kontroler................................................... 37 3.2.2. Perancangan Rangkaian Motor Servo ............................................................ 38 3.3. Perancangan Perangkat Lunak ( Software ) ............................................................. 39 3.3.1. Perangkat Lunak Program Keseluruhan....................................................... 41 BAB IV HASIL DAN PEMBAHASAN 4.1. Hasil Perancangan Perangkat Keras ......................................................................... 45 4.2. Hasil Pengujian......................................................................................................... 47 4.2.1
Implementasi Komunikasi Keypad dengan Mikrokontrol .......................... 48
4.2.2
Pengujian Pembacaan Keypad...................................................................... 49
4.2.3
Pengujian Gerakan Jari Robot...................................................................... 49
4.2.4
Pengujian Besar Sudut Pada Gerakan Lengan ............................................ 51
4.2.5
Pengujian Lama Waktu Proses Penekanan Tuts Keyboard.......................... 53
4.3. Analisa Perangkat Lunak.......................................................................................... 55 4.3.1. Inisialisasi..................................................................................................... 55 4.3.2. Program Tombol Keypad ............................................................................. 56
xii
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 4.3.3. Program Motor Servo................................................................................... 56 BAB V KESIMPULAN DAN SARAN 5.1. Kesimpulan............................................................................................................... 59 5.2. Saran ......................................................................................................................... 59 DAFTAR PUSTAKA ...................................................................................................... 60 LAMPIRAN ..................................................................................................................... 62
xiii
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI DAFTAR GAMBAR Gambar 1.1. Blok Diagram Lengan Robot Bermain Keyboard dengan Lima Jari.......... 4 Gambar 2.1. Alokasi Penempatan Pin Arduino Mega 2560 R3 ...................................... 7 Gambar 2.2. Tampilan Arduino Software (Arduino IDE)................................................ 9 Gambar 2.3. Motor RC Servo .......................................................................................... 11 Gambar 2.4. Konstruksi Motor Servo.............................................................................. 11 Gambar 2.5. Pulsa Kendali Motor Servo ......................................................................... 12 Gambar 2.6. Gambar Keypad Matriks 3x4...................................................................... 13 Gambar 2.7. Gambar Alat Musik Keyboard .................................................................... 14 Gambar 2.8. Gambar batas penggunaan jari kiri dan kanan tangan pada keyboard ........ 14 Gambar 2.9. Penomoran jari tangan kanan pada pelajaran dasar bermain keyboard ...... 14 Gambar 2.10 Posisi pergerakan jari tangan kanan pada tuts keyboard (fingering) .......... 18 Gambar 2.12. Gambar data transfer drom a master transmitter to a slave receiver ........ 19 Gambar 2.13. Gambar data transfer drom a slave transmitter to a master receiver ........ 19 Gambar 2.14. Kinematika pada Lengan Robot ................................................................. 20 Gambar 2.15. Lengan Robot tampak samping................................................................... 20 Gambar 2.16. Gambar skema lengan robot sederhana ...................................................... 21 Gambar 2.17. Skema posisi lengan robot dari samping .................................................... 21 Gambar3.1. Blok Diagram Perangkat Keras ( Hardware ) ............................................ 26 Gambar3.2. Tampilan Seluruhnya Design Gambar 3D lengan robot ............................. 27 Gambar3.3. Gambar Posisi Pemutar Base yang di Clouple Dengan Motor Servo......... 27 Gambar3.4. Gambar desain tangan robot dengan lima jari ............................................ 29 Gambar3.5. Tampilan seluruhnya desain gambar 3D lengan robot................................ 31 Gambar3.6. Posisi lengan robot dan keyboard saat kondisi awal................................... 32 Gambar3.7. Skema posisi awal lengan sederhana .......................................................... 33 Gambar3.8. Posisi lengan robot pada tuts keyboard dilihat dari atas ............................. 34 Gambar3.9. Posisi lengan robot dari atas sederhana....................................................... 35 Gambar3.10. Rangkaian Komunikasi keypad matriks dengan Arduino Mega 2560 ....... 37 Gambar3.11. Rangkaian Komunikasi I2C ........................................................................ 38 Gambar3.12. a. Gambar Rangkaian Motor Servo Untuk Gripper.................................... 39 xiv
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Gambar3.12. b. Gambar rangkaian motor servo untuk lengan ......................................... 39 Gambar3.13. Diagram alir perancangan perangkat lunak secara umum ........................... 40 Gambar3.14. Diagram alir program perangkat lunak keseluruhan................................... 41 Gambar3.15. a. Diagram Alir Proses data dari input angkat ............................................ 42 Gambar3.15. b. Diagram Alir Program pemrosesan data dari input kode........................ 42 Gambar3.16. Diagram Alir Program pemilihan jari untuk menekan tuts keyboard ......... 43 Gambar3.17. Diagram chart nada yang dimainkan pada kode * ...................................... 44 Gambar3.18. Diagram chart lagu “Ode to Joy” yang dimainkan pada kode # ................. 44 Gambar 4.1. Hasil Perancangan Konstruksi ................................................................... 45 Gambar 4.2. Posisi microcontroller dan servo controller ............................................... 46 Gambar 4.3. Posisi konektor pada microcontroller ......................................................... 47 Gambar 4.4. Pemasangan Keypad pada board Arduino .................................................. 48 Gambar 4.5. Data hasil penekanan tombol pada keypad ................................................. 48 Gambar 4.6. Bentuk jari dan posisi motor servo pada lengan robot................................ 50 Gambar 4.7. Kawat yang menghubungkan antara pangkal jari dan tuas motor servo..... 50 Gambar 4.8. Lengan robot dengan busur derajat ............................................................. 52 Gambar 4.9. Instalasi Program......................................................................................... 55 Gambar 4.10. Program tombol Keypad ............................................................................. 56 Gambar 4.11. Contoh program keypad ketika mengakuisisi gerakan lengan.................... 57 Gambar 4.12. Kode “0” yang diartikan sebagai base pada lengan robot........................... 57 Gambar 4.13. Program akuisisi data pada Adafruit ........................................................... 57 Gambar 4.14. Program untuk menggerakkan jari robot .................................................... 58
xv
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI DAFTAR TABEL Tabel 2.1.
Keterangan pin Arduino Mega 2560 R3 ..........................................................7
Tabel 2.2.
Keterangan tombol pada tampilan Arduino IDE .............................................9
Tabel 3.1.
Tabel perkiraaan berat lengan dan beban yang diangkat lengan pada perancangan lengan robot .....................................................................................................28
Tabel 3.2.
Tabel perencanaan gerakkan lengan robot berdasarkan putaran motor RC servo .........................................................................................................................32
Tabel 4.1.
Keterangan Gambar Keseluruhan Alat........................................................... 46
Tabel 4.2.
Bagian dari perangkat keras elektrik dan fungsi dari rangkaian .....................48
Tabel 4.3.
Pengujian kondisi pembacaan tombol .............................................................49
Tabel 4.4.
Gerakan jari sesuai dengan input keypad ........................................................51
Tabel 4.5.
Data pengukuran sudut lengan robot tanpa beban...........................................52
Tabel 4.6.
Data pengukuran sudut lengan robot dengan beban ........................................52
Tabel 4.7.
Hasil pengukuran waktu penekanan tuts oleh jari ...........................................53
Tabel 4.8.
Data pengujian keberhasilan jari menekan tuts dari do rendah ke do tinggi ...54
Tabel 4.9.
Data pengujian keberhasilan jari menekan tuts pada lagu “Ode to Joy”…….54
xvii
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI DAFTAR PERSAMAAN Persamaan 2.1 ................................................................................................................. 21 Persamaan 2.2 ................................................................................................................. 21 Persamaan 2.3 ................................................................................................................. 21 Persamaan 2.4 ................................................................................................................. 22 Persamaan 2.5 ................................................................................................................. 22 Persamaan 2.6 ................................................................................................................. 22 Persamaan 2.7.................................................................................................................. 22 Persamaan 2.8 ................................................................................................................. 22 Persamaan 2.9 ................................................................................................................. 22 Persamaan 2.10 ............................................................................................................... 22 Persamaan 2.11 ............................................................................................................... 22 Persamaan 2.12 ............................................................................................................... 22 Persamaan 2.13 ............................................................................................................... 22 Persamaan 2.14 ............................................................................................................... 22 Persamaan 2.15 ............................................................................................................... 22 Persamaan 2.16 ............................................................................................................... 22 Persamaan 2.17 ............................................................................................................... 22 Persamaan 2.18 ............................................................................................................... 22 Persamaan 3.1 ................................................................................................................. 35 Persamaan 3.2 ................................................................................................................. 35
xvii
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI DAFTAR LAMPIRAN L1.
Tabel hasil pengujian alat......................................................................................... L1
L4.
Listing program ........................................................................................................ L4
L22. Rangkaian keseluruhan ............................................................................................ L23 L23. Data sheet komponen ............................................................................................... L24
xviii
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
BAB I PENDAHULUAN 1.1. Latar Belakang Perkembangan teknologi yang sangat pesat pada saat ini menyebabkan kemajuan teknologi yang begitu banyak dan cepat, salah satunya adalah teknologi robotika. Pada awalnya robot hanyalah sebuah alat mekanik khusus yang berfungsi untuk membantu meringankan tugas manusia. Sejarah perkembangan robot dimulai ketika manusia mulai mencoba memasukkan kontrol otomatis pada alat mekanik tersebut, nantinya alat tersebut dapat dikendalikan dari jarak jauh atau bahkan dapat berjalan sendiri sesuai dengan perintah atau program yang sudah didefinisikan terlebih dahulu. Penggunaan robot sudah meluas, robot sekarang difungsikan untuk melakukan pekerjaan yang berat, berulang dan bahkan pekerjaan-pekerjaan yang dianggap membahayakan nyawa jika manusia yang melakukannya. Biasanya kebanyakan robot industri digunakan dalam bidang produksi. Penggunaan robot lainnya termasuk untuk pembersihan limbah beracun, penjelajahan bawah air dan luar angkasa, pertambangan, pekerjaan penyelamatan, dll. Robot dengan perkembangan teknologi saat ini mulai memasuki pasaran konsumen di bidang hiburan dan alat pembantu rumah tangga. Penyempurnaan robot pun dilakukan agar robot semakin mirip dengan manusia dan lebih handal dalam mengerjakan tugas-tugas yang diberikan. Beberapa robot juga pernah dibangun untuk bermain alat music keyboard namun robot-robot tersebut menggunakan metode tetap dalam posisi dan menggunakan jari yang sangat banyak untuk menekan tuts, beberapa yang lain menggunakan sebuah rel untuk menggerakkan jari bergerak secara horizontal diatas papan keyboard. Permasalahan tersebut memunculkan keinginan untuk menciptakan sebuah lengan robot yang dapat difungsikan untuk menggerakan jari jemarinya untuk memainkan tuts-tuts keyboard. Dengan menggunakan lengan yang menyerupai gerak tangan manusia dan memiliki 3 sumbu utama yaitu X, Y, dan Z, juga memiliki 4 posisi kebebasan dalam gerakan (Degree Of Freedom) mulai dari pangkal lengan, siku hingga pergelangan tangan.
1
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
2
Lengan robot yang penulis ciptakan menggunakan motor servo sebagai penggeraknya dan juga menggunakan keypad sebagai pemberi input kepada robot untuk melakukan gerakan dalam memilih dan menekan tuts keyboard sesuai dengan angka yang ditekan pada keypad tersebut dalam 1 oktaf tangga nada mayor. Lengan robot yang akan dibuat oleh penulis dapat bergerak horizontal mengikuti arah tuts keyboard. Sinyal input yang diberikan oleh keypad diproses didalam mikrokontroler untuk menentukan posisi tangan dan jari, kemudian juga digunakan untuk menggerakkan jadi dalam menekan tuts nada yang dipilih.
1.2. Tujuan dan Manfaat Penelitian
Dalam penelitian yang dilakukan memiliki tujuan menciptakan alat berupa lengan
robot yang mempunyai dan menggunakan kelima jarinya, bergerak menyerupai gerakan tangan manusia untuk meraih dan menekan tuts keyboard pada 1 oktaf nada mayor. Dan memiliki tujuan khusus adalah menciptakan lengan robot dengan 4 DOF (Degree of Fredom) dan mengetahui cara kerjanya. Manfaat dari penelitian ini adalah menciptakan alat yang dan dapat dikontrol dengan alat keypad dengan kabel sebagai penguhubung mikrokontroler dan dapat digerakkan secara langsung atau realtime.
1.3. Batasan Masalah Agar tugas akhir ini dapat sesuai dengan apa yang menjadi tujuannya dan menghindari terlalu kompleksnya permasalahan yang muncul, maka perlu adanya batasanbatasan masalah yang sesuai dengan judul tugas akhir ini. Adapun batasan masalahnya adalah : a. Menggunakan mikrokontroler arduino sebagai pengolah data sensor dan sebagai penggerak aktuator robot. Mikrokontroller yang digunakan adalah Arduino Mega 2560 R3 . b. Mengunakan motor RC-servo sebagai aktuator c. Robot dapat bergerak pada sumbu X, Y, dan Z d. Robot memiliki 4 DOF (Degree of Fredom) e. Kedua mikrokontroler tersebut menggunakan komunikasi serial.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 1.4.
3
Pembatasan Masalah 1. Pengolahan mikrokontroler hanya terbatas pada putaran motor servo saja 2. Desain gripper disesuaikan dengan kondisi pergerakan mengingat adanya sudut putar dan bentuk tuts keyboard 3. Jarak robot dengan posisi keyboard disesuaikan mengingat adanya sudut putar agar jari tetap dapat mencapainya 4. Dalam pengujian hanya 1 oktaf nada mayor yang digunakan 5. Kecepatan pergerakan robot disesuakan dengan kemampuan mikrokontroler 6. Pada keypad terdapat dua macam jenis tombol yang digunakan, tombol angka sebagai pengendali jari menekan tombol sesuai angka, tombol kode * dan # sebagai demonstrasi otomatis robot dalam bermain piano
1.5.
Rumusan Masalah 1. Bagaimana cara mengendalikan robot berjari dengan sebuah alat pengendali jarak jauh berupa keypad 2. Bagaimana cara mengontrol motor servo dengan menggunakan servo kontrol dan mikrokontroller sehingga dapat digunakan untuk menggerakkan robot. 3. Bagaimana memposisikan sebuah lengan robot berjari agar dapat dengan tepat menekan tuts keyboard
1.6. Metodologi Penelitian Berdasarkan pada tujuan yang ingin dicapai maka metode yang digunakan adalah : a. Studi literatur dan referensi, yaitu mempelajari buku-buku dan makalah-makalah dari pustaka yang berhubungan dengan mikrokontroler khususnya Arduino, motor servo dan juga mengenai kontrol dalam menggunakan keypad. b. Studi kasus terhadap alat yang telah dibuat sebelumnya. Tahap ini dilakukan guna memahami prinsip kerja alat sebelumnya. c. Menguji motor servo. Tahap ini dilakukan guna memahami prinsip kerja motor servo dan bisa mengetahui karakter motor servo. d. Menguji rangkaian kendali dengan mikrokontroler Arduino. Tahap ini guna lebih memahami bahasa yang digunakan mikrokontroler Arduino dan lebih
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
4
memahami cara kerja dengan mencoba membuat rangkaian kendali sederhana terlebih dahulu. e. Perancangan sistem hardware dan software. Tahap ini bertujuan untuk mencari dan menentukan komponen-komponen suatu sistem yang akan dibuat dengan mempertimbangkan faktor-faktor permasalahan dan kebutuhan yang telah ditentukan. f. Pembuatan sistem hardware dan software. Berdasarkan gambar mikrokontroler sebagai kontrol utama. Mikrokontroler yang digunakan adalah Arduino Mega 2560. Data dihasilkan oleh Keypad Matrix 4x3 dan akan diproses oleh Arduino Mega 2560, data tersebut digunakan sebagau penentu data posisi lengan pengguna atau user. Data yang telah diproses oleh Arduino Mega 2560 akan dikomunikasikan dengan Adafruit Servo Controller yang akan mengontrol gerakan motor servo sebagai penggerak atau accuator. Keypad Number 1
Servo 1
Keypad Number 2
Servo 2
Keypad Number 3
Servo 3
Keypad Number 4
Servo 4
Keypad Number 5
Servo 5 Microcontroler Arduino Mega 328
SPC Servo Controller
Keypad Number 6
Servo 6
Keypad Number 7
Servo 7
Keypad Number 8
Servo 8
Keypad Code X
Servo 9
Keypad Code #
Servo 10
Gambar 1.1 Blok Diagram Lengan Robot Bermain Keyboard Dengan Lima Jari g. Proses pengujian dan pengambilan data. Teknik pengambilan data dilakukan dengan cara menguji keseluruhan sistem dengan menggabungkan antara rangkaian kendali dengan rangkaian aktuator dan
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
5
pengendali utama. Pengujian dilakukan dengan menghubungkan Keypad Matrix 4x3 dengan Arduino Mega 2560. Pengambilan data yang dilakukan dengan mengambil data posisi maksimal yang dapat dijangkau oleh lengan dan seberapa besar sudut perubahannya. Data tersebut akan digunakan untuk menggerakkan motor servo yang dikontrol oleh servo controller yang dihubungkan dengan Arduino Mega2560. h. Analisa dan kesimpulan hasil perancangan. Analisa data dilakukan dengan menguji apakah alat sudah bekerja sesuai dengan perancangan awal dan bisa sesuai dengan kondisi yang diinginkan, meliputi kemampuan Arduino Mega 2560 yang dapat mengolah data yang dikeluarkan oleh Keypad Matrix 4x3 saat pengendali tersebut diberi perintah. Dan motor servo dapat bergerak megikuti gerakan tangan pengguna atau user. Penyimpulan hasil perancangan dilakukan dengan meghitung presentasi error yang terjadi.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
6
BAB II TINJAUAN PUSTAKA dan LANDASAN TEORI 2.1.
Mikrokontroler Mikrokontroler adalah salah satu dari bagian dasar dari suatu sistem komputer.
Meskipun mempunyai bentuk yang jauh lebih kecil dari suatu komputer pribadi dan komputer mainframe, mikrokontroler dibangun dari elemen-elemen dasar yang sama. Secara sederhana, komputer akan menghasilkan output spesifik berdasarkan inputan yang diterima dan program yang dikerjakan. Seperti umumnya komputer, mikrokontroler adalah alat yang mengerjakan instruksi-instruksi yang diberikan kepadanya. Artinya, bagian terpenting dan utama dari suatu sistem terkomputerisasi adalah program itu sendiri yang dibuat oleh seorang programmer. Program ini menginstruksikan komputer untuk melakukan jalinan yang panjang dari aksi-aksi sederhana untuk melakukan tugas yang lebih kompleks yang diinginkan oleh programmer [ 2 ]. Pada saat ini perkembangan mikrokontroler sangat pesat. Saat ini jenis-jenis mikrokontroler memiliki berbagai macam jenis, bentuk, fungsi yang beragam. Mikrokontroler dapat diprogram sesuai dengan keinginan pengguna atau user dengan program tertentu yang akan dimasukkan kedalam mikrokontroler tersebut. Bahasa pemrograman untuk mikrokontroler tersebut bermacam-macam yang digunakan, sebagai contohnya bahasa C, C++, basic, dan assembly. Bahasa tersebut digunakan sesuai dengan mikrokontroler yang digunakan. Pada penelitian ini, penulis menggunakan mikrokontroler tertentu yaitu : arduino. Arduino adalah sebuah platform elektronik yang open source. Arduino yang digunakan adalah Arduino Mega 2560 R3. Bahasa pemrograman yang digunakan oleh arduino adalah bahasa C.
2.1.1. Arduino Mega 2560 R3 Arduino Mega 2560 adalah sebuah board mikrokontroler yang berbasis pada IC ATmega 2560. Arduino Mega 2560 memiliki 54 buah pin digital yang dapat digunakan sebagai input ataupun output. Dari 54 buah pin tersebut, 15 pin diantaranya dapat digunakan sebagai output Pulse Width Modulation (PWM), memiliki 16 buah pin analog input, 4 buah pin UART yang berfungsi sebagai port serial hardware, sebuah osilator
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
7
kristal 16 MHz, sebuah jack female untuk koneksi USB, jack female adaptor, dan sebuah tombol reset 3]. IC mikrokontroler yang digunakan pada penelitian ini adalah ATmega 2560. Mikrokontroler ATmega 2560 berbentuk persegi dengan jumlah pin sebanyak 100 buah pin [4]. ATmega 2560 memiliki kemampuan untuk mengeksekusi instruksi program dalam satu siklus clock tunggal, sehingga ATmega 2560 mampu mengoptimalkan konsumsi daya dibandingkan kecepatan pemrosesan program. Gambar 2.1 dan Tabel 2.1 menjelaskan tentang alokasi penempatan pin dan keterangan masing-masing pin.
6
8
7
9
10
11
2
4
1 3
6
5
12
Gambar 2.1. Alokasi Penempatan Pin Arduino Mega 2560 R3 [3]
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
8
Tabel 2.1 Keterangan Pin Arduino Mega 2560 R3 [3] No. 1 2
Parameter ATmega 2560 Jack USB
3
Jack Adaptor
4 5
Tombol Reset Pin Analog
6
Pin Power
7
Light-Emitting Diode (LED)
8
Pin PWM
9
Pin Serial
10
Pin Two Wire Interface (TWI)
11
Pin Digital
12
Pin Serial Peripheral Interface (SPI)
Keterangan IC mikrokontroler yang digunakan pada Arduino Mega 2560. Untuk komunikasi mikrokontroler dengan PC Masukan power eksternal bila Arduino bekerja mandiri (tanpa komunikasi dengan PC melalui kabel serial USB). Tombol reset internal yang digunakan untuk mereset modul Arduino. Menerima input dari perangkat analog lainnya. 1. Vin = Masukan tegangan input bagi Arduino ketika 2. menggunakan sumber daya eksternal. 3. 5 V = Sumber tegangan yang dihasilkan regulator internal board Arduino. 4. 3,3 V = Sumber tegangan yang dihasilkan regulator internal board Arduino. Arus maksimal pada pin ini adalah 50 mA. 5. GND = Pin ground dari regulator tegangan board Arduino. 6. IOREF = Tegangan Referensi. 7. AREF = Tegangan Referensi untuk input analog. Pin digital 13 merupakan pin yang terkoneksi dengan LED internal Arduino. Arduino Mega menyediakan 8 bit output PWM. Gunakan fungsi analogWrite() untuk mengaktifkan pin PWM ini. Digunakan untuk menerima dan mengirimkan data serial TTL (Receiver (Rx), Transmitter (Tx)). Pin 0 dan 1 sudah terhubung kepada pin serial USB to TTL sesuai dengan pin ATmega. Terdiri dari Serial Data Line (SDA) dan Serial Interface Clock (SCL).
Pin yang digunakan untuk menerima input digital dan memberi output berbentuk digital (0 dan 1 atau low dan high) 1. Terdiri dari 4 buah Pin : 2. Master In Slave Out (MISO) 3. Jalur slave untuk mengirimkan data ke Master. 4. Master Out Slave In (MOSI) 5. Jalur master untuk mengirimkan data ke peralatan. 6. Serial Clock (SCK) 7. Clock yang berfungsi untuk memberikan denyut pulsa ketika sedang menyinkronkan transmisi data oleh master 8. Slave Select (SS) 9. Pin untuk memilih jalur slave pada perangkat tertentu.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
9
2.1.2. Perangkat Lunak Arduino (Software) Area pemrograman Arduino dikenal dengan Integrated Development Enviroment (IDE). Area pemrograman Arduino yang open source memungkinkan untuk menulis baris program dan mengunggahnya ke dalam board Arduino. Disaping perangkat lunak ini juga dibuat lebih mudah dan dapat berjalan pada beberapa system operasi seperti Windows, Macintosh, dan Linux. Arduino dapat diprogram pada sistem operasi komputer berbasis Windows, Mac OS X, dan Linux. Bahasa pemrogramannya dapat ditulis di Java, avrgccdan perangakat lunak yang berbasis open source lainnya [9]. IDE Arduino membutuhkan beberapa pengaturan yang digunakan untuk mendeteksi board Arduino yang sudah dihubungkan ke komputer. Beberapa pengaturan tersebut adalah mengatur jenis board yang digunakan sesuai dengan board yang terpasang dan mengatur jalur komunikasi data melalui perintah Serial Port. Kedua pengaturan tersebut dapat ditemukan pada pull down menu Tools.
Gambar 2.2. Tampilan Arduino Software(Arduino IDE)
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
10
Tabel 2.2. Keterangan Tombol Pada Tampilan Arduino IDE No.
Tombol
Nama
Fungsi
1
Verify
Menguji apakah ada kesalahan pada program atau sketch. Apabila sketch sudah benar, maka sketch tersebut akan dikompilasi. Kompilasi adalah proses mengubah kode program ke dalam kode mesin.
2
Upload
Mengirimkan kode mesin hasil kompilasi ke board Arduino
3
New
Membuat sketch yang baru
4
Open
Membuka sketch yang sudah ada
5
Save
Menyimpan sketch
6
Serial Monitor
Menampilkan data yang dikirim dan diterima melalui komunikasi serial.
Tugas dari Arduino Software adalah menghasilkan sebuah file berformat hex yang akan di-download pada papan arduino atau papan sistem mikrokontroler lainnya. Ini mirip dengan Microsoft Visual Studio, Eclipse IDE, atau Netbeans. Lebih mirip lagi adalah IDE semacam Code::Blocks, CodeLite atau Anjuta yang mempermudah untuk menghasilkan file program. Bedanya kesemua IDE tersebut menghasilkan program dari kode bahasa C (dengan GNU GCC) sedangkanArduino Software (Arduino IDE) menghasilkan file hex dari baris kode yang dinamakan sketch[9]. Sketch adalah nama dari program yang ditulis pada Arduino Software, kemudian sketch merupakan kesatuan dari kode program yang akan di-upload dan dijalankan pada papan Arduino. Pada umumnya sketch yang dibuat di Arduino Software di-compile dengan perintah verify / Compile (Ctrl+R) lalu hasilnya di-download ke papan Arduino seperti Arduino Uno R3. Program hasil kompilasi itu lalu dijalankan oleh bootloader. Semua papan Arduino memiliki perangkat lunak yang dinamakan bootloader [9].
2.2.
Motor Servo Motor servo adalah sebuah motor DC yang dilengkapi rangkaian kendali dengan
sistem closed feedback yang terintegrasi dalam motor tersebut. Pada motor servo posisi
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
11
putaran sumbu (axis) dari motor akan diinformasikan kembali ke rangkaian kontrol yang ada di dalam motor servo[8].
Gambar 2.3. Motor RC Servo Motor servo disusun dari sebuah motor DC, gearbox, variabel resistor (VR) atau potensiometer dan rangkaian kontrol. Potensiometer berfungsi untuk menentukan batas maksimum putaran sumbu (axis) motor servo. Sedangkan sudut dari sumbu motor servo diatur berdasarkan lebar pulsa yang pada pin kontrol motor servo. Motor servo adalah motor yang mampu bekerja dua arah (CW dan CCW), arah dan sudut pergerakan rotornya dapat dikendalikan dengan memberikan variasi lebar pulsa (duty cycle) sinyal PWM pada bagian pin kontrolnya. Jenis-jenis Motor Servo: 1. Motor Servo Standar 180° Motor servo jenis ini hanya mampu bergerak dua arah (CW dan CCW) dengan defleksi masing-masing sudut mencapai 90° sehingga total defleksi sudut dari kanan – tengah – kiri adalah 180°. 2. Motor Servo Continuous Motor servo jenis ini mampu bergerak dua arah (CW dan CCW) tanpa batasan defleksi sudut putar (dapat berputar secara kontinyu).
Gambar 2.4. Konstruksi Motor Servo
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
12
2.2.1. Pulsa Kontrol Motor Servo Operasional motor servo dikendalikan oleh sebuah pulsa selebar ± 20 ms, lebar pulsa antara 0.5 ms dan 2 ms menyatakan akhir dari range sudut maksimum. Apabila motor servo diberikan pulsa dengan besar 1.5 ms mencapai gerakan 90°, maka bila kita berikan pulsa kurang dari 1.5 ms maka posisi mendekati 0° dan bila kita berikan pulsa lebih dari 1.5 ms maka posisi mendekati 180°.
Gambar 2.5. Pulsa Kendali Motor Servo Motor Servo akan bekerja secara baik jika pada bagian pin kontrolnya diberikan sinyal PWM dengan frekuensi 50 Hz. Dimana pada saat sinyal dengan frekuensi 50 Hz tersebut dicapai pada kondisi Ton duty cycle 1.5 ms, maka rotor dari motor akan berhenti tepat di tengah-tengah (sudut 0°/ netral). Pada saat Ton duty cycle dari sinyal yang diberikan kurang dari 1.5 ms, maka rotor akan berputar ke berlawanan arah jarum jam (Counter Clock wise, CCW) dengan membentuk sudut yang besarnya linier terhadap besarnya Ton duty cycle, dan akan
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
13
bertahan diposisi tersebut. Dan sebaliknya, jika Ton duty cycle dari sinyal yang diberikan lebih dari 1.5 ms, maka rotor akan berputar searah jarum jam (Clock Wise, CW) dengan membentuk sudut yang linier pula terhadap besarnya Ton duty cycle, dan bertahan diposisi tersebut [ 8 ].
2.3.
Keypad Matriks 3x4 Keypad merupakan barisan dari tombol-tombol yang tersusun membentuk baris
dan kolom. Terdapat 2 buah kabel yang terkoneksi setiap waktu ketika salah satu dari tombol tersebut ditekan. Contoh; jika tombol “1” ditekan, maka pin 1 dan pin 5 terkoneksi. Tidak terdapat koneksi diantara baris dan kolom pada keypad. Ada banyak jenis dari keypad. Beberapa diantaranya digunakan untuk fungsi yang berbeda-beda sesuai dengan kebutuhan pemakaian. Pin pada keypad membutuhkan tegangan pull up dan pull down untuk menghindari konsleting. Tegangan normal yang dibutuhkan adalah 5V dan juga terhubung dengan ground.
Gambar 2.6.
2.4.
Gambar Keypad Matriks 3x4
Alat musik Keyboard Keyboard merupakan alat musik yang dimainkan dengan cara menekan tuts atau
papan berjajar dengan jari, hal ini akan menciptakan bunyi nada yang berbeda-beda pada setiap papannya. Semakin kekanan maka bunyi atau nada yang dihasilkan akan semakin tinggi. Keyboard memiliki berbagai macam bunyi yang dapat diatur sesuai dengan selera pemakai. Dengan kemudahan dapat dipindah-pindahkan maka alat ini memberi alasan lebih efisien untuk digunakan dalam melengkapi tujuan yang telah dijelaskan.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
Gambar 2.7.
14
Gambar Alat Musik Keyboard
Penggunaan alat musik ini memiliki beberapa tatacara dalam prosesnya, selain untuk mempermudah dalam pengoperasian, tatacara ini juga berguna untuk melatih kelincahan jari dan koordinasi otak. Pada umumnya keyboard memiliki 5 oktaf tangga nada, batas penggunaan jari kiri adalah 2 oktaf sebelah kiri dan penggunaan jari kanan adalah 3 oktaf tangga nada sselanjutnya.
Gambar 2.8. Gambar batas penggunaan jari kiri dan kanan tangan pada keyboard Penempatan jari dalam pembelajaran dasar bermain keyboard pada nada mayor adalah menggunakan ibu jari untuk menekan tuts mayor C (do) kemudian diikuti jari telunjuk untuk menekan tuts D (re) dan jari tengah digunakan untuk menekan tuts E (mi). Selanjutnya pada nada F (fa) kembali menggunakan ibu jari tangan kanan diikuti jari-jari yang lain dan diakhiri dengan menekan tuts mayor C (do) pada oktaf berikutnya dengan menggunakan jari kelingking.
Gambar 2.9. Penomoran jari tangan kanan pada pelajaran dasar bermain keyboard
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
15
Tatacara ini hanya berguna dalam melatih dasar dalam bermain keyboard dan tidak berpengaruh ketika bermain musik secara cepat.
Gambar 2.10. posisi pergerakan jari tangan kanan pada tuts keyboard (fingering)
2.5.
Servo Controller Adafruit sevo motor controller merupakan modul pengendali motor servo yang
dapat mengendalikan hingga 16 motor servo secara serentak maupun sekuensial. Modul ini mendukung motor servo standar maupun kontinyu. Adafruit sevo motor controller menyediakan
komunikasi
antarmuka
yaitu
I2C.
Modul
ini
dilengkapi
dengan software untuk mendesain gerakan dengan sekuen atau urutan tertentu dan menyimpan sekuen gerakan sehingga sesuai untuk aplikasi robotik maupun aplikasi lain yang menggunakan motor servo lainnya[14]. Adafruit sevo motor controller
ini dapat
digunakan untuk mengendalikan hingga 16 motor servo secara serentak maupun sekuensial. Pada antarmuka I2C, 8 modul Adafruit sevo motor controller dapat dihubungkan bersama pada satu jalur I2C untuk mengendalikan hingga 8x20 motor RCservo. Range catu daya yang digunakan modul adalah 5 - 6 VDC 2 - 10 A.
Gambar 2.11. Papan Adafruit Servo Motor Controller[8]
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 2.6.
16
Komunikasi Serial Komunikasi serial merupakan komunikasi data dengan pengiriman data secara satu per
satu pada waktu tertentu. Sehingga komunikasi data serial hanya menggunakan dua kabel yaitu kabel data untuk pengiriman yang disebut transmit ( TX ) dan kabel data untuk penerimaan yang disebut receive ( RX ). Kelebihan dari komunikasi serial adalah jarak pengiriman dan penerimaan dapat dilakukan dalam jarak yang cukup jauh dibandingkan dengan komunikasi parallel tetapi kekurangannya kecepatannya lebih lambat dibandingkan komunikasi parallel. Dalam komunikasi serial dikenal ada dua mode komunikasi serial: a. Mode Sinkron Mode sinkron merupakan mode komunikasi yang pengiriman tiap bit data dilakukan dengan menggunakan sinkronisasi clock. Pada saat transmitter hendak mengirimkan data, harus disertai clock untuk sinkronisasi antara transmitter dan receiver.
b. Mode Asinkron Komunikasi asinkron serial merupakan sebuah protocol transmisi asinkronous, dimana komunikasi ini tidak menggunakan clock, tetapi telah memiliki baudrate yang telah disepakati oleh masing-masing sistem yang sedang berkomunikasi. Kerja dari komunikasi ini adalah, signal start dikirimkan pada saat sebelum data dikirimkan dan signal stop dikirimkan setelah setiap data selesai dikirimkan. Signal start digunakan untuk mempersiapkan mekanisme penerimaan untuk menerima dan memproses data yang akan dikirimkan dan signal stop berguna untuk mempersiapkan mekanisme penerimaan data berikutnya [15]. Berikut ini adalah protocol pengiriman data secara serial asinkron : 1. Start bit selalu berlogic LOW. 2. Pengiriman data bit dari 0 sampai 8. 3. Parity bit. 4. Stop bit selalu berlogic HIGH IDLE jika tidak ada pengiriman data selanjutnya.
2.7.
Komunikasi I2C Bus adalah sistem pengantar yang dilengkapi dengan komponen pengendali untuk
melayani pertukaran data antara komponen hardware satu dengan komponen hardware lainnya. Pada sistem mikrokontroler terdapat bus Data, bus Alamat, dan beberapa
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
17
pengantar pengendali. Semakin tinggi frekuensi clock prosesor, maka semakin lebih cermat pengembang untuk memperhatikan timing dari seluruh komponen yang terlibat, agar tidak terjadi kesalahan dalam transaksi data. Bus yang cukup sering digunakan adalah bus bersifat paralel. Transaksi data dilakukan secara paralel sehingga transaksi data lebih cepat. Akan tetapi disisi lain Mahal. Jika sistem relatif tidak membutuhkan transaksi yang cepat, maka penggunaan Serial Bus menjadi pilihan. Salah satu pilihan sistem data bus yang sering digunakan adalah I2C (Inter Integrated Circuit). Sistem Bus I2C pertamakali diperkenalkan oleh Firma Philips pada tahun 1979. a. Karakter I2C : 1. Serial Bus Data dikirim serial secara per-bit. 2. Menggunakan dua Penghantar Koneksi dengan ground bersama I2C terdiri dari dua penghantar: a. SCL (Serial Clock Line) untuk menghantarkan sinyal clock. b. SDA (Serial Data) untuk mentransaksikan data 3. Jumlah Peserta Bus maximal 127 peserta dialamatkan melalui 7-bit-alamat. Alamat ditetapkan kebanyakan secara hardware dan hanya sebagian kecil dapat dirubah. 4. Pengirim dan Penerima setiap transaksi data terjadi antara pengirim (Transmitter) dan penerima (Receiver). Pengirim dan penerima adalah peserta bus. 5. Master and Slave Device yang mengendalikan operasi transfer disebut Master, sementara device yang di kendalikan oleh master di sebut Slave. b. Aturan Komunikasi I2C 1. I2C adalah protokol transfer data serial. Device atau komponen yang mengirim data disebut transmitter, sedangkan device yang menerimanya disebut receiver. 2. Device yang mengendalikan operasi transfer data disebut master, sedangkan device lainnya yang dikendalikan oleh master disebut slave. 3. Master device harus menghasilkan serial clock melalui pin SCL, mengendalikan akses ke BUS serial dan menghasilkan sinyal kendali START dan STOP. Definisi-definisi Kondisi Bus 1. Bus not busy:
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
18
Pada saat ini Bus tidak sibuk, SCL dan SDA dua-duanya dalam keadaan HIGH. 2.
Start data transfer: Ditandai dengan perubahan kondisi SDA dari HIGH ke LOW ketika SCL HIGH.
3.
Stop data transfer: Ditandai dengan perubahan kondisi SDA dari LOW ke HIGH ketika SCL HIGH.
4.
Data valid: Data yang dikirim bit demi bit dianggap valid jika setelah START, kondisi SDA tidak berubah selama SCL HIGH, baik SDA HIGH maupun SDA LOW tergantung dari bit yang ingin ditransfer. Setiap siklus HIGH SCL baru menandakan pengiriman bit baru. Duty cycle untuk SCL tidak mesti 50%, tetapi frekuensi kemunculannya hanya ada 2 macam, yaitu mode standar 100kHz dan fast mode atau mode cepat 400kHz. Setelah SCL mengirimkan sinyal HIGH yang kedelapan, arah transfer SDA berubah, sinyal kesembilan pada SDA ini dianggap sebagai acknowledge dari receiver ke transmitter.
5.
Acknowledge: Setiap receiver wajib mengirimkan sinyal acknowledge atau sinyal balasan setiap selesai pengiriman 1-byte atau 8-bit data. Master harus memberikan ekstra clock pada SCL, yaitu clock kesembilan untuk memberikan kesempatan receiver mengirimkan sinyal acknowledge ke transmitter berupa keadaan LOW pada SDA selama SCL HIGH. Meskipun master berperan sebagai receiver, ia tetap sebagai penentu sinyal STOP. Pada bit-akhir penerimaan byte terakhir, master tidak mengirimkan sinyal acknowledge, SDA dibiarkan HIGH oleh receiver dalam hal ini master, kemudian master mengubah SDA dari LOW menjadi HIGH yang berarti sinyal STOP.
2.7.1. Mode Pengoperasian Transfer Data Tergantung kondisi bit R/W, 2 jenis transfer dimungkinkan, yaitu : 1. Data transfer from a master transmitter to a slave receiver.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
19
Byte pertama yang dikirimkan oleh master adalah alamat slave, setelah itu master mengirimkan sejumlah byte data. Slave atau receiver mengirimkan sinyal acknowledge setiap kali menerima 1-byte data. Pada tiap byte, bit pertama yang dikirim adalah MSB.
Gambar 2.12. Gambar Data transfer from a master transmitter to a slave receiver [18] 2. Data transfer from a slave transmitter to a master receiver. Meskipun master berperan sebagai receiver, byte pertama dikirimkan oleh master berupa alamat slave. Setelah itu slave mengirimkan bit acknowledge, dilanjutkan dengan pengiriman sejumlah byte dari slave ke master. Master mengirimkan bit acknowledge untuk setiap byte yang diterimanya, kecuali byte terakhir. Pada akhir byte, master mengirimkan sinyal ‘not acknowledge’, setelah itu master mengirimkan sinyal STOP. [18]
Gambar 2.13. Gambar Data transfer from a slave transmitter to a master receiver [18]
2.8.
Kinematika Banyak sekali pembahasan tentang kinematika, dalam buku Robotics : Control,
Sensing, Vision, and Intelligence dikatakan bahwa, “ Kinematika adalah ilmu tentang gerak tanpa memperhatikan penyebabnya, salah satunya adalah gaya yang mempengaruhinya, berhubungan dengan geometri dari gerakan. Dalam mengkaji kinematik perlu dilakukan deskripi analisis dari penempatan posisi secara spasial dari lengan robot sebagai sebuah fungsi waktu. Secara garis besar, kinematika ini membahas tentang hubungan antara
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
20
derajat kebebasan masing-masing joint, posisi, serta orientasi dari end effector pada lengan robot.” Terdapat dua topik pembahasan mendasar pada kinematik lengan robot. Yang pertama adalah Direct atau Forward Kinematics. Dan yang kedua adalah Inverse Kinematics atau Arm Solution.
Gambar 2.14. Kinematika pada Lengan Robot Ada dua pandangan mengenai kinematika. Pada Forward Kinematika perhitungan akan lebih ditekankan kepada sudut-sudut pada sendi robot untuk menentukan dimana letak tangan berada. Berbeda dengan masalah menggunakan Invers kinematika yang lebih real, ketika tangan robot sudah berada pada posisi yang diinginkan, maka kita perlu mencari berapa sudut yang harus diberikan pada semua sendi robot. Hal ini mirip dengan kegiatan manusia dalam menggunakan tangannya. Manusia tidak perlu memikirkan sendisendinya ketika mengambil sesuatu, juga tidak perlu memikirkan apa yang seharusnya bahu lakukan, siku lakukan namun hanya perlu bergerak untuk menggapainya, dan akan tercipta sudut-sudut itu sendiri.
Gambar 2.15. Lengan Robot tampak samping
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
21
Gambar 2.16. Gambar skema lengan robot sederhana Gambar 2.14 merupakan skema robot sederhana berbaring pada bidang XY. Robot memiliki satu link I panjang dan satu sendi dengan sudut θ. Posisi tangan robot adalah Xhand. Cara menentukan sudut sendi θ adalah sebagai berikut: Xhand = I cos θ (forward position solution)
(2 - 1)
Cos θ =
(2 - 2)
θ = cos-1
(2 - 3)
Gambar 2.17. Skema posisi lengan robot dari samping Gambar 2.15 merupakan bagian lengan dari sebuah robot yang telah bergerak dalam posisinya. Dengan nilai OA, AB, OC, CB, dan OB telah diketahui, maka dengan aturan segitiga siku-siku:
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI OD = CD = Pz
+
OC = √
+
=
(
+
) +
=
OB = √
+
=
(
+
) +(
+
+
+(
+
)
+
22
+
) =
Berdasarkan gambar 2.15 diatas, maka juga dapat diketahui bahwa: θ3 + sudut OAB = θ3 + γ = 1800
(2 - 4)
θ3 = 1800 – γ
(2 - 5)
Dengan demikian maka : Cos θ3 = cos (1800 – γ) = -cos γ Cos γ =
.
Cos θ3 =
.
= (
.
.
)
(2 - 6)
.
.
(
)
(2 - 7)
(2 - 8)
dan berdasarkan aturan trigonometri, maka: sin θ3 = 1 −
(2 - 9)
θ3 =
(2 - 10)
dengan demikian, maka nilai sudut joint 2 adalah:
solusi untuk sudut joint 2 ( θ2 ) dengan menetapkan nilai sudut joint 2 ( θ2 ) merupakan hasil penjumlahan dari sudut BOD dan sudut EOB maka :
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
23
θ2 = sudut BOD + sudut EOB = (- β1) + (- β2) = - β1 - β2
(2 - 11)
Untuk itu perlu diketahui dahulu besarnya sudut BOD (β1) dan sudut EOB (β2): Sudut BOD (β1) : sin β1 =
=
cos β1 =
=
(
( (
sehingga :
)
) )
β1 =
(2 - 12)
(2 - 13)
(2 - 14)
Sudut DOB (β2) : sin β1 =
=
cos β2 =
=
sehingga :
. .
(
)
(
)
β2 =
(2 - 15)
(2 - 16)
(2 - 17)
Solusi untuk sudut joint 4 ( θ4 ) Pada tahap akhir perhitungan adalah joint 4. Pada gambar 2.15 terlihat seolah – olah terbentuk bidang segi empat dengan panjang rusuk yang tidak sama panjang. Pada ilmu ukur, sudut total pada bidang segiempat adalah 3600. Dengan demikian maka bila θ1 ,θ2 ,dan θ3 telah diketahui sebelumnya maka θ4 dapat dicari, dengan perhitungan: θ4 = 900 – θ2 - θ3
(2 - 18)
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
24
kebanyakan invers kinematika menggunakan cara yang sama dan menggunakan perhitungan trigonometri dan geometri untuk menyelesaikannya.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
25
BAB III PERANCANGAN SISTEM Bab ini menjelaskan mengenai perancangan lengan robot mengikuti gerakan tangan manusia berbasis mikrokontroler. Perancangan sistem yang akan dibahas pada bab ini terdiri dari dua bagian, yaitu perangkat keras (hardware) dan perangkat lunak (software). Perancangan sistem yang dibahas dalam bab ini terbagi dalam dua bagian besar, yaitu: a. Perancangan perangkat keras Perancangan Mekanik. Perancangan Rangkaian Pengendali utama. b. Perancangan perangkat lunak Perangkat lunak pengaturan keypad matrix 3x4. Perangkat lunak pengendali motor RC servo dengan Arduino IDE. Perangkat lunak pengendali motor RC servo dengan SPC Servo Motor Controller.
3.1.
Perancangan Perangkat Keras (Hardware) Perancangan perangkat keras (Hardware) terdiri dari dua bagian utama yaitu
perancangan mekanik lengan robot dan perancangan rangkaian pengendali utama. Penggunaan diagram blok digunakan sebagai perencana konsep keseluruhan dalam pembuatan perangkat keras agar dapat memperlihatkan fungsi dan cara kerja sistem dari perangkat keras tersebut. Dalam perancangan perangkat keras disertakan pula tampilan visual berupa rancangan gambar 3D dari prototype lengan robot, secara sistematis dari pengukuran jangkauan, berat beban dan lengkap secara dimensi panjang lengan dan kemungkinan gerakan melalui sudut-sudut pergerakannya sehingga mampu menjelaskan sesuai dengan aslinya. Perancangan perangkat keras juga meliputi perancangan rangkaian pengendali utama sebagai sistem pengendali gerakan lengan robot dengan cara mengaktifkan motor RC servo yang berfungsi sebagai penggerak sendi pada setiap lengan untuk melakukan gerakan menjangkau atau memposisikan tempat. Bagian pertama diagram blok digunakan untuk menjelaskan fungsi dan cara kerja dari setiap komponen yang menyusun sistem lengan robot. Komponen-komponen
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
26
penyusun dari sistem tersebut meliputi input data dari keypad matrix 3x4, komponen pengendali berupa mikrokontroler Atmega 328 pada papan Arduino Mega R3, pengendali motor RC servo (SPC servo motor controller) dan bagian keluaran (output) yaitu motor RC servo. Bagian kedua dalam perancangan lengan robot adalah pembahasan mengenai rancangan mekanik dan perhitungan kinematika gerakan robot yang menggunakan proses perhitungan secara invers kinematics. Desain mekanik lengan robot secara tampilan gambar dan keterangannya akan menjelaskan secara lengkap komponen penyusun meliputi dimensi dari lengan robot dan motor RC servo yang digunakan.
3.1.1. Perancangan Mekanik Robot. Keypad matirks 3x4 input
Arduino Mega 2560 R3
SPC Servo Motor Controller
controller
Motor RC Servo output
Gambar 3.1. Blok Diagram Perangkat Keras (Hardware) Gambar 3.1 merupakan blok diagram sistem. Pada blok diagram tersebut, perangkat keras yang akan dibuat terdiri dari tiga bagian, yaitu keypad matriks 3x4 yang berfungsi sebagai pemberi data masukan, Arduino Mega 2560 R3 dan SPC (Servo Motor Controller) sebagai pengolah data dan pengontrol, Motor RC Servo sebagai pengeksekusi data. Rangkaian kontroler Arduino Mega 2560 R3, Motor RC Servo. Pada prinsipnya akan menerima data yang dikirimkan dari keypad yang telah dihubungkan pada bagian analog input , bagian tersebut sudah memiliki ADC ( Analog to Digital Converter ). Data yang diterima oleh kontroler Arduino Mega 2560 R3 tersebut kemudian akan diolah. Data-data tersebut berupa posisi gerakan dan sinyal-sinyal kepada SPC Servo Controller untuk mengirim input berupa signal pulsa digital kepada motor RC servo sehingga dapat menggerakkan lengan robot. Besar kecilnya sinyal yang didapat oleh motor RC servo akan mempengaruhi gerakan rotasi pada lengan-lengan robot sehingga memungkinkan robot untuk dapat bergerak pada 3 sumbu axis yaitu X, Y dan Z.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
27
3.1.2. Pemodelan Mekanik Gambar 3.2. merupakan gambar keseluruhan design 3D lengan robot. Lengan robot ini memiliki tiga bagian utama yang digerakkan dengan motor servo. Motor servo yang digunakan sebanyak 5 buah. Motor yang digunakan memiliki tipe yang berbeda, terdapat 3 tipe yang digunakan. 1. Base (bagian dasar)
5
2. Shoulder (bagian bahu)
4 3
10 9
2
8 7
3. Elbow (bagian siku) 4. Pitch (bagian pergelangan) 5. Gripper (bagian jari) 6. Motor Base
1
6
7. Motor Shoulder A 8. Motor shoulder B 9. Motor elbow 10. Motor pitch Gambar 3.2. Tampilan Seluruhnya Design Gambar 3D Lengan Robot Gambar 3.3. merupakan design 3D bagian dasar (base) berbentuk lingkaran yang berdiameter 25cm. Base terhubung dengan sebuah as yang memanjang ke bawah yang memiliki roda gigi dan tersambung dengan roda gigi pada sebuah motor RC servo yang befungsi sebagai penggerak base. Base bergerak secara rotasi dan dapat menyebabkan perubahan posisi secara horizontal pada lengan-lengan penghubung yang lain.
Gambar 3.3. Gambar Posisi Gear Pemutar Base yang di Couple Dengan Motor Servo
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
28
Bagian shoulder memiliki panjang lengan 18cm dan bergerak secara rotasi vertikal dengan 2 buah motor RC servo. Bagian elbow memiliki panjang lengan 12cm dan bergerak secara rotasi vertikal dengan sebuah motor RC servo. Bagian pitch memiliki panjang lengan 5cm dan bergerak secara rotasi vertikal dengan sebuah motor RC servo. Bagian paling ujung adalah gripper digunakan untuk memegang benda dalam hal ini beban berupa jari yang berfungsi untuk menekan tuts keyboard. Gerakkan pada setiap jari dihubungkan dengan sebuah motor RC servo. Panjang gripper sampai pada ujung jari memiliki panjang 15cm. Total keseluruhan panjang lengan robot dari pangkal shoulder sampai pada ujung jari adalah 50cm. Besarnya dimensi berupa panjang yang dimiliki oleh keseluruhan penghubung (link) menentukan kemampuan sebagai jangkauan lengan robot ketika melakukan gerakkan. Bagian yang berperan sebagai penggerak adalah sendi (joint) terhubung langsung dengan motor RC servo. Gerakkan yang terjadi pada joint di setiap bagian pangkal dari link adalah rotasi. Gerakkan secara rotasi menyebabkan adanya perbedaan besarnya sudutsudut yang terjadi pada setiap penghubung (link) dari titik acuan awal yaitu pada bagian pangkal dari bahu (shoulder). Motor RC servo yang digunakan sebanyak 10 buah. Pemilihan motor RC servo yang digunakan pada setiap joint berdasarkan pada kemampuan yang harus dimiliki setiap joint untuk mengangkat beban. Beban dapat berupa lengan (link) dan benda yang diangkat. Kemampuan motor untuk berputar dengan suatu beban merupakan gaya putar yang disebut torsi (torque). Berikut ini perkiraan berat lengan penghubung (link) pada perancangan lengan robot: Tabel 3.1. Tabel perkiraan berat lengan dan beban yang diangkat lengan pada perancangan lengan robot
NO.
Lengan Penghubung (link)
Perkiraan
Beban yang diangkat setiap
Berat setiap
lengan
lengan
1.
Gripper
180gr
180gr
2.
Pitch
120gr
300gr
3.
Elbow
200gr
500gr
4.
Shoulder
500gr
1000gr
5.
Base
200gr
200gr
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
29
Pada tabel 3.1. untuk perkiraan berat setiap lengan merupakan total berat dari material lengan dan motor RC servo yang menempel pada lengan. Sedangkan pada kolom beban yang diangkat setiap lengan merupakan penjumlahan berat dari keseluruhan beban yang harus diangkat oleh setiap lengan. Perancangan mekanik untuk desain lengan robot peniru gerakan tangan manusia menggunakan material aluminium karena ringan dan mudah dikerjakan. Pada tabel 3.1. bagian base diasumsikan memiliki berat yang ringan walaupaun terletak paling dasar karena bagian base tidak terbebani oleh berat keseluruhan dari prototype lengan robot karena seluruh lengan robot sudah ditopang oleh empat buah tiang penyangga.Pada perancangan mekanik motor RC servo yang digunakan hanya untuk memutar bagian base yang memiliki torsi yang tidak terlalu besar yaitu diperkirakan sebesar10 kgf.cm.
Gambar 3.4. Gambar Design Tangan Robot dengan 5 Jari Pada gambar 3.4. menunjukkan bahwa beban yang diangkat pada bagian pitch tidak begitu besar dan cukup ringan sehingga hanya memerlukan motor RC servo yang memiliki torsi kecil. Motor RC servo bagian gripper pada perancangan lengan robot ini dirancang memerlukan torsi kecil yaitu hanya berkisar 2 kgf.cm pada setiap jari. Sehingga motor servo yang digunakan berjumlah 5 buah. Pada bagian pitch beban yang harus diangkat adalah 300 gram karena bagian pitch selain mengangkat lengannya sendiri juga harus mengangkat seluruh bagian gripper. Bagian pitch memiliki panjang 5 cm dan bagian gripper sampai ujung jari memiliki panjang 15 cm, sehingga panjang lengan yang harus diangkat adalah 20 cm. Berikut adalah perhitungan untuk merancang torsi pada bagian pitch : m = 300 gram = 0,3 kg r = 20 cm
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
30
F = m x a = 0,3 kg x 10 m/s2 = 3 N = 3 Kgm/s2 3 N x 0,102 = 0,306 Kg
τ=F×r
= 0,306 Kg × 20 cm = 6,12 Kg.cm
Pada bagian elbow beban yang harus diangkat adalah 500 gram, sedangkan panjang lengan yang harus diangkat motor RC servo adalah 32 cm yang dihitung dari panjang lengan elbow, panjang lengan pitch dan panjang gripper sampai ujung jari. Kebutuhan torsi motor RC servo pada perancangan lengan robot : m = 500gram = 0,5 kg r = 32 cm F = m x a = 0,5 kg x 10 m/s2 = 5 N = 5 Kgm/s2 5 N x 0,102 = 0,51 Kg
τ=F×r
= 0,51 Kg × 32 cm = 16,32 Kg.cm
Pada bagian shoulder beban yang harus diangkat adalah 1000 gram, sedangkan panjang lengan yang harus diangkat motor RC servo adalah 50 cm yang dihitung dari panjang lengan shoulder, panjanglengan elbow, panjang lengan pitch dan panjang gripper sampai ujung jari. Kebutuhan torsi motor RC servo pada perancangan lengan robot : m = 1000 gram = 1,0 kg r = 50 cm F = m x a = 1 kg x 10 m/s2 = 10 N = 10 Kgm/s2 10 N x 0,102 = 1,02 Kg
τ=F×r
= 1,02 Kg × 50 cm = 51 Kg.cm
Berdasarkan perhitungan kebutuhan torsi pada bagian shoulder memang menunjukkan torsi yang dibutuhkan sangat besar. Hal tersebut akan membuat kesulitan tersendiri dalam mencari motor RC servo dengan torsi yang sangat besar. Oleh sebab itu, pada bagian shoulder perancangan menggunakan 2 buah motor RC servo dengan torsi lebih besar dari 25,5 Kg.cm (51 Kg.cm : 2 = 25,5 Kg.cm) yang akan dipasang pada shoulder 1 dan shoulder 2. Gambar 3.2. merupakan seluruh tampilan Design lengan robot. Lengan robot tersebut memiliki 3 buah sumbu koordinat, yaitu X, Y, dan Z. Koordinat tersebut berguna untuk mengetahui posisi dari end point lengan robot tersebut.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
31
Gambar 3.5. Tampilan Seluruhnya Design Gambar 3D Lengan Robot Pada design lengan robot yang dikendalikan oleh motor servo memiliki gerakan yang terbatas. Motor servo yang digunakan memiliki batas putar. Batas putar motor servo yang digunakan adalah 1800 . Tetapi sudut yang digunakan pada lengan robot tidak digunakan pada posisi maksimal. Sudut yang digunakan disesuaikan dengan sudut maksimal pada setiap lengan penghubung robot. Sudut maksimal yang dapat di jangkau oleh lengan robot sebagai berikut : Tabel 3.2. Tabel sudut maksimal jangkauan lengan robot
1.
Gripper / Jari
15cm
Sudut maksimal yang dapat dijangkau 1800
2.
Pitch
5cm
1800
3.
Elbow
12cm
1800
4.
Shoulder
18cm
1800
5.
Base ( berputar pada poros )
0cm
900
NO.
Lengan Penghubung (link)
Panjang lengan
3.1.3. Perancangan Inverse Kinematics Berdasarkan pemodelan mekanik lengan robot yang telah dibahas sebelumnya, maka dapat dibuat pemodelan kinematika pada lengan robot. Perbedaan panjang setiap lengan atau penghubung (link) dan perbedaan besarnya sudut-sudut pada setiap sendi (joint) dimanfaatkan dalam sebuah model perhitungan inverse kinematics untuk menentukan titik koordinat pada ujung end effector yaitu pada ujung setiap jari gripper. Perancangan prototype lengan robot berjari ini menggunakan perhitungan inverse kinematics dengan metode pendekatan geometri. Titik koordinat yang dihasilkan
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
32
merupakan posisi akhir lengan robot untuk menentukan dimana tuts keyboard yang akan ditekan. Tabel 3.2. Tabel perencanaan gerakkan lengan robot berdasarkan putaran motor RC servo. No.
Link (lengan)
Panjang (cm)
Total
Mak.
Min.
1
Base
-
2000
1000
-1000
2
Shoulder
18
900
900
00
3
Elbow
12
1800
900
-900
4
Pitch
5
1800
900
-900
5
Gripper
15
2000
2000
00
Dengan desain posisi awal seperti yang pada gambar 3.3, untuk posisi tersebut dengan menggunakan perhitungan invers kinematics sudut-sudut pada setiap link robot dapat ditentukan.
Gambar 3.6. posisi lengan robot dan keyboard saat kondisi awal
Gambar 3.7. skema posisi awal lengan sederhana
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
33
Dengan diketahui panjang setiap lengan OA, AB, BC dan jarak OD maka: OD = 40 cm CD = 1 (jarak antara jari dan tuts keyboard) Sudut AOY adalah 46,80 maka sudut pada AOX adalah 43.20 OC = √ OB = √
= √40 + 1 = 40,012
+
= 19,63 + 2 = 20,46
+
Dengan aturan cosinus maka sudut-sudut pada segitiga OAB adalah : Cos α =
.
.
=
.
α = 83,45O ( OAB = 83,45O ) Cos β =
.
.
=
β = 60,98O ( ABO = 60,98O ) Cos γ =
.
.
=
γ = 35,7 O ( BOA = 35,7 O )
. ,
.
.
.
,
,
,
.
= 0,114
= 0,485
= 0,812
untuk mencari sudut ABC, digunakan aturan cosinus pada segitiga OBC. Penjumlahan antara sudut ABO dengan sudut OBC tersebut kemudian dikurangi 3600, maka : cos OBC
= 0,966 = 166O
Sudut ABC
= 360O - (sudut ABO + sudut OBC) = 360O – (60,98O + 166O ) = 110,55O
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
34
Ditentukan gerakan inisiasi lengan adalah lurus keatas dengan memberikan pulsa 1,5 ms pada motor servo sehingga membentuk sudut sebesar 90O. Kemudian gerakan lengan untuk menjangkau keyboard dimulai dengan lengan OA membentuk sudut 46,8 O pada sumbu Y dengan memberikan pulsa kurang dari 1,5 ms, kemudian lengan AB membentuk sudut 96,55O terhadap OA, selanjutnya lengan BC membentuk sudut 110,55O terhadap lengan AB. Setting posisi tersebut akan menempatkan gripper kurang lebih 1cm diatas tuts keyboard. Posisi tersebut diatur secara manual dengan memberikan pulsa pada motor servo untuk bergerak dan diukur ketepatannya dengan busur derajat. Karena perpindahan lengan robot dalam bermain keyboard hanya membutuhkan gerakan secara horizontal dan posisi awal yang digunakan adalah oktaf ke 3 atau middle yang merupakan batas oktaf untuk tangan kanan pada gambar 3.4. maka perhitungan pada ibu jari yang nantinya akan berpindah dari posisi awal pada nada C kemudian nada F adalah:
Gambar 3.8. posisi lengan robot pada tuts keyboard dilihat dari atas
41
O
Gambar 3.9. posisi lengan robot dari atas sederhana
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
35
Pada gambar 3.9. posisi A merupakan posisi awal lengan robot dan B merupakan perpidahan ibu jari dari nada C ke nada F, dengan kondisi lengan tidak berubah maka besar sudut pada AOB : Dengan menggunakan aturan Tangensial Mencari sudut OA :
(3 - 1)
tan θ = =
= 0,15
θ = tan-1 0,15 = 8,5O Mencari sudut OB :
(3 – 2)
tan θ = =
= 0,05
θ = tan-1 0,05 = 2,86O Karena sudut AOB adalah sudut penjumlahan antara sudut AOY dan YOB maka : AOB = 8,5O + 2,86O = 11,36O
3.2.
Perancangan Rangkaian pengendali utama Pada rangkaian pengendali utama terdapat dua buah komponen yang digunakan
untuk mengontrol gerakan lengan robot. Pengendali tersebut adalah Arduino Mega 2560 R3 dan Adafruit Servo Controller. Rangkaian kontroler pada Arduino Mega 2560 R3 akan menerima data yang dikirimkan dari keypad yang telah terhubung dengan analog input, bagian tersebut juga telah memiliki ADC( Analog to Digital Converter) Adafruit Servo Controller tersebut dapat menggerakkan 16 servo secara bersamaan atau sekuensial. Servo controller tersebut juga dilengkapi antarmuka dengan PC (Personal Computer) menggunakan RS232. Servo controller tersebut menggunakan sumber tenaga yang terpisah dengan arduino.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
36
3.2.1. Perancangan Elektrik Perancangan elektrik dari sistem lengan robot bermain keyboard menggunakan 5 jari terbagi menjadi tiga bagian penyusun yaitu Perancangan rangkaian keypad (input), perancangan komponen pengendali (controller) yang menggunakan mikrokontroler Arduino mega 2560 dan servo motor controller dan Perancangan sistem keluaran (output) berupa motor-motor RC servo yang terdapat pada setiap sendi. Keypad digunakan sebagai perangkat untuk memberikan sebuah perintah atau data masukan berupa sinyal pulsa yang nantinya akan ditangkap dan diproses oleh Mikrokontrol dan diolah dalam program untuk menghasilkan posisi dan gerakan. Microcontroller Arduino Mega 2560 dan Servo Controller berfungsi sebagai driver untuk mengendalikan motor servo. Servo Controller tersebut digunakan agar gerakan dari motor servo tersebut dapat bergerak dengan baik dan tidak terjadi noise saat motor bekerja. Arduino Mega 2560 R3 dan Servo Controller saling terhubung mengunakan komunikasi I2C, komunikasi tersebut memanfaatkan pin SDA dan SCL pada Arduino Mega 2560 dan juga pada Adafruit Motor Servo Controller.
3.2.1.1. Perancangan Keypad Matriks 3x4
Gambar 3.10. Rangkaian Komunikasi keypad matriks dengan Arduino Mega 2650 Perancangan rangkaian Keypad, menghubungakan keypad dengan pin ADC Mikrokontroler. Pulsa keluaran yang dihasilkan oleh keypad dan akan terbaca oleh
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
37
mikrokontroler sebagai angka jika 2 buah pin terkoneksi. Rangkaian keypad ini membutuhkan tegangan normal 5V dan juga terhubung dengan ground.
3.2.1.2. Perancangan Rangkaian Controller Bagian yang ketiga adalah rangkaian motor servo. Penggerak atau akuator dari lengan robot ini menggunakan motor RC servo. Motor servo tersebut akan digerakkan dengan menggunakan servo controller. Sehingga motor servo tersebut dapat bergerak secara bersamaan maupun secara sekuensial.
Gambar 3.11. Rangkaian Komunikasi I2C
3.2.2. Perancangan Rangkaian Motor Servo Perancangan aktuator yang digunakan adalah motor servo. Motor servo yang digunakan berjumlah 10 buah terdiri dari 5 buah untuk menggerakkan lengan dan 5 buah untuk menggerakkan jari-jari.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
(a)
38
(b)
Gambar 3.12. a.Gambar Rangkaian Motor Servo Untuk Gripper b. Gambar Rangkaian Motor Servo Untuk lengan Motor servo tersebut akan dihubungkan secara langsung ke servo controller tanpa perlu menggunakan rangkaian tambahan sebagai pendukung rangkaian tersebut. Motor servo tersebut digerakkan dengan menggunakan Adafruit Servo Controller yang dihubungkan dengan Arduino Mega 2560 R3. Antara Adafruit Servo Controller dengan Arduino Mega 2560 R3 dihubungkan dengan komunikasi I2C. komunikasi I2C tersebut menggunakan port SDA dan SCL. Port tersebut digunakan untuk transfer data serial antara Servo Controller dengan Arduino. Sehingga pada saat Arduino Mega 2560 memberikan perintah tertentu pada servo controller. Maka servo controller tersebut akan memberikan sinyal-sinyal pulsa yang digunakan untuk menggerakkan motor servo.
3.3.
Perancangan Perangkat Lunak ( Software ) Perancangan perangkat lunak (software) merupakan perancangan pemrosesan data
yang berjalan didalam program. Saat program mulai dinyalakan maka proses yang terjadi adalah pembacaan data dan pemilihan input data yang muncul untuk segera diproses dan dijadikan output gerakan. Pemrosesan data terjadi ketika robot mulai dinyalakan, dan terdapat input yang memerintahkan program untuk segera mengeksekusi data tersebut
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI sehingga akan
39
menghasilkan gerakan lengan yang sesuai dengan data yang telah
dimasukkan maupun input yang keluar dari kendali.
Gambar 3.13. Diagram Alir Perancangan Perangkat Lunak Secara Umum
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 3.3.1. Perangkat Lunak Program Keseluruhan
Gambar 3.14. Diagram Alir Program Perangkat Lunak keseluruhan
40
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
Gambar 3.15a. Diagram alir proses data dari input angka
41
Gambar 3.15b. Diagram Alir Program pemrosesan data dari input kode
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
42
Gambar 3.16. Diagram Alir Program pemilihan jari untuk menekan tuts keyboard Pada gambar 3.16 menjelaskan diagram alir program pemilihan jari dimana ibu jari menjadi pedoman untuk menentukan posisi lengan yaitu posisi A dan posisi B. setelah jari menekan tuts maka jari akan segera kembali keposisi semula. Dalam proses jari menekan tuts lama waktu dalam penekanan akan dievaluasi dari 0,1s hingga 1s. evaluasi ini berguna untuk menciptakan suara pada keyboard agar tidak terlalu panjang dan terlalu singkat waktu tersebut dipilih karena mengingat kemampuan mikrokontroler membaca data, waktu perpindahan posisi, dan juga tempo yang harus didapat dalam memainkan lagu itu sendiri.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
43
Pada gambar 3.14 merupakan diagram alir perangkat lunak berupa program yang dimulai dari pembacaan data awal yang berfungsi sebagai inisiasi dan kalibrasi lengan robot. Data masukan dari keypad akan diproses menjadi dua cara yaitu angka dan kode. Pada gambar diagram alir 3.15a dan gambar 3.15b menjelaskan bahwa data angka akan memberikan respon kepada robot untuk mengatur posisi dan gerakan lengan sesuai dengan program dan angka yang ditekan secara manual dan satu persatu, sedangkan data kode akan memberikan respon kepada lengan robot untuk memainkan secara langsung beberapa nada secara otomatis sesuai dengan kode yang ditekan dan data yang telah dibuat. Pada data kode akan diberikan 2 pilihan yaitu kode * akan memberikan proses lengan memainkan nada dari nada C (do) hingga nada c’(do’) dengan tempo sedang (andante) dengan ketukan 69-76 per menit atau notasi ¼.
Gambar 3.17. Diagram chart nada yang dimaikan pada kode *
Gambar 3.18. Diagram chart lagu “Ode to Joy” yang dimaikan pada kode # Sedangkan pada kode # akan memberikan demonstrasi memainkan satu bait lagu “ode to joy” pada gambar 3.18.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
44
BAB IV HASIL DAN PEMBAHASAN Bab ini menjelaskan dan membahas hasil implementasi alat yang dibagi menjadi dua bagian yaitu hasil perancangan pada perangkat keras dan hasil perancangan pada perangkat lunak.
4.1 Hasil perancangan perangkat keras Hasil perancangan perngkat keras pada bagian konstruksi dari lengan robot bermain keyboard dengan lima jari ini secara keseluruhan sesuai dengan perancangan. Gambar 4.1 merupakan hasil dari perancangan bagian konstruksi alat ini. Keterangan gambar alat ini ditunjukkan pada tabel 4.1 menunjukkan masing- masing komponen seluruh alat yang dibuat. 5 4
2
1
3 6
Gambar 4.1. Hasil perancangan Konstruksi
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
45
Tabel 4.1. Keterangan gambar keseluruhan alat No
Keterangan
1.
Jari Robot
2.
Pitch
3.
Elbow
4.
Shoulders
5.
Base
6.
Rangkaian pengontrol
Pada perancangan perangkat keras pada lengan robot bermain keyboard dengan lima jari ini terdapat pula bagian untuk mengkomunikasikan dan memberikan input kepada motor servo yaitu rangkaian microcontroller dengan servo controller, rangkaian kontroler serta perancangan pada konstruksi alat. Gambar 4.2 merupakan bagian dari microcontroller dan servo controller yang dipasang secara bertumpuk. Gambar 4.3 merupakan posisi konektor yang berfungsi mengkomunikasikan keypad melalui microcontroller serta servo controller dengan motor servo. Keterangan dan fungsi dari masing – masing bagian dapat dilihat pada tabel 4.2.
Gambar 4.2. Posisi microcontroller dan servo controller
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
46
1 2
3
Gambar 4.3. Posisi konektor pada microcontroller Tabel 4.2. Bagian dari Perangkat Keras Elektrik dan Fungsi dari Rangkaian No
Nama Rangkaian
1
Komunikasi pada Keypad
2
Komunikasi Servo controller
3
Komunikasi Microcontroler
Fungsi Untuk
mengaktifkan
perintah
yang
diinginkan Untuk mengontrol gerakan servo sesuai dengan pin out pada board adafruit Untuk mengontrol gerakan servo jari sesuai dengan pin out pada board arduino
Pada gambar 4.1 diperlihatkan saat board servo controller digabungkan dengan Microcontrol ATMega 2560, bagian yang ditandai dengan nomor 2 adalah pin out pada board servo controller yang berfungsi untuk memberikan kondisi setiap lengan robot. Sedangkan bagian yang ditandai dengan nomor 3 merupakan pin out pada board Microcontroller yang berfungsi untuk mengaktifkan pin yang dipilih ketika data input dieksekusi menggunakan keypad.
4.2 Hasil Pengujian Pengujian perangkat keras pada alat ini meliputi beberapa bagian rangkaian yang diuji. Pengujiannya meliputi pembacaan keypad terhadap serial monitor mikrokontroler, besaran sudut pada gerakan lengan dan lama waktu yang dihasilkan dalam proses menekan tuts keyboard oleh jari robot.
4.2.1 Implementasi Komunikasi Keypad dengan Arduino
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
47
Untuk menguji pembacaan keypad digunakan fasilitas serial monitor yang terdapat pada sketch Arduino. Sebelum melakukan uji coba, peru dilakukan pengaturan pada sketch Arduino agar keypad dapat terbaca. Gambar 4.4 merupakan kondisi pemasangan keypad pada board arduino. Pada gambar tersebut komunikasi antara keypad dengan Arduino berada pada pin analog in, yang menghubungkan dan mengakses input data dari keypad melalaui microcontroller.
Gambar 4.4 Pemasangan Keypad pada board Arduino Gambar 4.5 merupakan hasil pembacaan keypad yang tertampil pada serial monitor. Data yang ditampilkan akan digunakan untuk memilih jari yang akan bergerak sesuai dengan nomor pada keypad yang ditekan. Penulis mengambil tiga contoh penekanan pada keypad. Pada penekanan tombol pertama terbaca kode “1”, kode ini merupakan input yang digunakan sebagai syarat untuk menggerakkan lengan pada posisinya.
Gambar 4.5 Data hasil penekanan tombol pada keypad
4.2.2 Pengujian Pembacaan Keypad Pengujian pembacaan Keypad yang ditunjukkan gambar 4.3 , dilakukan dengan cara menekan salah satu tombol keypad dan melihat perubahan pada serial monitor. jika terjadi proses pembacaan, maka data yang tertampil pada serial monitor akan berubah sesuai dengan kondisi tombol yang ditekan. pengujian berjalan sesuai dengan perancangan,
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
48
data yang ditampilkan sesuai dengan kondisi tombol, begitu pula tombol yang tidak digunakan dapat tetap terbaca. Pada tabel 4.3 ditunjukkan kode tombol yang digunakan dan satu tombol yang tidak digunakan dan keterangan kode. Tabel 4.3 Pengujian kondisi pembacaan tombol No. Kode
Keterangan
1.
1A
Terbaca kode sebagai 1 (posisi do)
2.
1B
Terbaca kode sebagai 2 (posisi re)
3.
1C
Terbaca kode sebagai 3 (posisi mi)
4.
2A
Terbaca kode sebagai 4 (posisi fa)
5.
2B
Terbaca kode sebagai 5 (posisi sol)
6.
2C
Terbaca kode sebagai 6 (posisi la)
7.
3A
Terbaca kode sebagai 7 (posisi si)
8.
3B
Terbaca kode sebagai 8 (posisi do tinggi)
9.
3C
Terbaca namun tidak digunakan
10.
4B
Terbaca kode sebagai 0 (posisi awal)
11.
4A
Terbaca kode sebagai * (memainkan lagu)
12.
4B
Terbaca kode sebagai # (memainkan lagu)
4.2.3 Pengujian Gerakan Jari Robot Jari robot adalah salah satu bagian penting pada alat ini, karena bagian ini merupakan salah satu komponen yang akan menjadikan robot ini berfungsi atau tidak. Pada bagian ini material yang digunakan berbeda dan lebih ringan untuk meminimalkan berat beban berlebih yang ditopang oleh setiap motor servo lengan sesuai dengan perhitungan torsi pada bab sebelumnya. Pada bagian ini motor servo dipasang secara terbalik untuk dapat menempatkan jari sesuai dengan perancangan dan digunakan untuk menarik kawat yang terhubung pada pangkal setiap jari dan dihubungkan pada tuas di ujung motor servo yang berguna untuk menggerakkan jari tersebut, seperti yang terlihat pada gambar 4.6 dan gambar 4.7
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
49
Gambar 4.6. Bentuk jari dan posisi motor servo pada lengan robot
Gambar 4.7. Kawat yang menghubungkan antara pangkal jari dan tuas motor servo Pengujian jari robot ini menggunakan dua metode untuk pengujian yaitu menggunakan input program secara langsung tanpa keypad untuk menggerakkan jari dan menggunakan keypad sebagai input. Pada pengujian menggunakan input data tanpa keypad dengan mengaktifkan pin out pada setiap jari, gerakan jari robot sesuai dengan perancangan. Sedangkan pengujian menggunakan input data menggunakan keypad terdapat beberapa masalah yang berupa gerakan motor servo secara acak yang tidak diinginkan sehingga menggerakkan jari secara tidak terkontrol meskipun tombol pada keypad belum ditekan. Hal ini dapat disebabkan oleh kondisi pin out yang digunakan untuk menempatkan dan mengkomunikasikan keypad longgar, sehingga terjadi arus pendek yang menyebabkan kondisi pin menjadi aktif. Berikut adalah tabel 4.4. yang menjelaskan pembacaan input kode pada keypad yang digunakan untuk menggerakkan motor servo pada jari robot.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
50
Tabel 4.4. Gerakan Jari sesuai dengan Input Keypad No. Input Keypad
Jari yang bergerak
1.
1
Ibu Jari
2.
2
Jari Telunjuk
3.
3
Jari Tengah
4.
4
Ibu Jari
5.
5
Jari Telunjuk
6.
6
Jari Tengah
7.
7
Jari Manis
8.
8
Jari Kelingking
9.
0
Semua Jari (dengan pengkondisian)
10.
*
Semua Jari (dengan pengkondisian)
11.
#
Semua Jari (dengan pengkondisian)
Pada tabel tersebut beberapa kode input pada keypad menggunakan jari yang sama hal ini dimaksudkan untuk menyesuaikan perancangan yang telah dibuat. Dan pada kode input keypad “0”,”x” dan “#” diberikan keterangan “dengan pengkondisian”, hal ini dimaksudkan karena tombol tersebut memiliki program yang berbeda dengan program seleksi jari seperti data diatasnya. Pengkondisian tersebut meliputi kondisi awal pada jari pada kode input “0” dan kondisi jari memainkan suatu baris nada pada input “x” dan “#”.
4.2.4 Pengujian Besar Sudut Pada Gerakan Lengan Pengujian sudut pada pergerakan lengan dilakukan dengan memberikan pulsa kepada servo yang akan digerakkan. Pengujian besar sudut pada gerakan lengan ini dilakukan dengan memberikan busur derajat pada setiap sudut lengan yang digerakkan pada posisinya, menyesuaikan dengan data yang diinputkan dan mengujinya dengan melibatkan atau tanpa beban. Gambar 4.8 menunjukkan kondisi lengan robot yang sudah diberi busur derajat sebagai alat ukur.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
51
Gambar 4.8 Lengan robot dengan busur derajat Tabel 4.5 Menunjukkan hasil pengujian dari pengukuran besar sudut pada posisi suatu gerakan lengan sesuai dengan perhitungan data yang telah diperoleh pada bab sebelumya sebagai input untuk memposisikan lengan tanpa menggunakan beban jari. Sedangkan pada tabel 4.6 menunjukkan hasil pengujian dari pengukuran besar sudut pada posisi suatu gerakan lengan dengan menambahkan beban jari yang menyambung pada bagian Pitch lengan. Tabel 4.5 Data Pengukuran Sudut Lengan Robot tanpa beban No. Daerah Lengan Data Input Data Terbaca Busur Derajat
Error
1.
Base
900
900
0%
2.
Shoulder
430
390
9,3%
3.
Elbow
960
730
24%
4.
Pitch
1100
1150
4,5%
Tabel 4.6 Data Pengukuran Sudut Lengan Robot dengan beban No.
Daerah Lengan
Data Input
Data Terbaca Busur Derajat
Error
1.
Base
900
900
0%
2.
Shoulder
430
270
14%
3.
Elbow
960
650
32%
4.
Pitch +Jari
1100
1200
9%
Pada sudut pitch, data yang terbaca lebih besar karena kondisi sudut yang terbentuk adalah sudut tumpul diantara lengan atas dan lengan bawah seperti pada gambar 4.8. Berdasarkan perbandingan tabel diatas, hasil pengukuran masing-masing sudut berbeda
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
52
dengan data yang diinputkan. Hal ini bisa dipengaruhi oleh beberapa faktor yaitu perbandingan gear set, berat dan panjang beban pada setiap motor servo. Dengan perbedaan yang cukup besar, maka input yang diberikan dari mikrokontroler diubah untuk memenuhi syarat sudut yang ditentukan agar posisi lengan sesuai.
4.2.5 Pengujian Lama Waktu Proses Penekanan Tuts Keyboard Pengujian ini menggunakan perangkat tambahan yang berfungsi merekam proses data waktu ketika jari menekan tuts keyboard. Proses perekaman data ini menggunakan ketentuan input data pengukuran yang diberikan dan dibahas pada bab sebelumnya yaitu menggunakan pengukuran data dari 0,1 detik hingga 1 detik, proses ini berguna untuk mencari lama waktu yang tepat dalam robot memainkan nada. Data hasil yang diperoleh dalam proses ini ditunjukkan dalam tabel 4.7. Tabel 4.7. Hasil pengukuran waktu penekanan tuts oleh jari No.
Waktu (dalam detik)
Kode Jari (dalam angka)
0,1
0,2
0,3
0,4
0,5
0,6
0,7
0,8
0,9
1
1.
Ibu Jari ( 1)
0,05
0,13
0,12
0,25
0,31
0,44
0,58
1,03
1,03
1,23
2.
Telunjuk (2)
0,0
0,1
0,1
0,18
0,24
0,38
0,41
1
1
1,04
3.
Tengah (3)
0,0
0,1
0,13
0,22
0,27
0,4
0,5
1
1,04
1,1
4.
Ibu Jari (4)
0,05
0,12
0,13
0,32
0,2
0,32
0,44
0,58
1,05
1,23
5.
Telunjuk (5)
0,0
0,09
0,1
0,2
0,2
0,35
0,44
1
0,5
1,11
6.
Tengah (6)
0,0
0,11
0,13
0,2
0,32
0,38
0,46
1
1
1,03
7.
Manis (7)
0,06
0,09
0,19
0,18
0,39
0,38
0,51
1,04
1,16
1,17
8
Kelingking (8)
0,07
0,08
0,2
0,2
0,4
0,39
0,45
1,1
1,1
1,1
Berdasarkan data hasil pengukuran pada tabel diatas, nilai yang didapatkan bervariasi dan tidak selalu sesuai dengan input waktu yang ditentukan. Hasil nilai tersebut bisa disebabkan oleh proses pembacaaan data pada microcontroller yang cukup banyak sehingga memakan waktu dan kondisi kuat lemahnya motor servo yang terhubung dengan jari yang digunakan untuk menekan tuts. Berdasarkan data tabel diatas dengan hasil yang variatif, maka diberikan pengujian kedua untuk mendapatkan tempo yang sesuai saat robot menekan tuts dan memainkan
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
53
lagu. Cara ini menggunakan pembandingan waktu antara tempo musik dengan lagu yang dimainkan oleh robot. Hasil pertama pada pengujian ini digunakan untuk menemukan notasi yang tepat untuk dijadikan dasar ketukan dengan mengukur seberapa lama waktu yang ditempuh ketika jari robot memainkan nada dari do rendah ke do tinggi dan sebaliknya. Sedangkan hasil kedua pada pengujian akan digunakan untuk mendapatkan tempo sesuai dengan lagu aslinya yaitu “Ode to Joy”. Berdasarkan hasil pengujian, pada hasil pengujian pertama untuk mendapatkan notasi dasar yang biasa digunakan dengan standar ¼ ketuk dengan artian satu ketuk sama dengan satu detik adalah pengujian menggunakan program penekanan tuts selama 0,6 detik. Sedangkan pengujian kedua yang berfungsi untuk mendapatkan tempo yang sesuai dengan lagu maka saat robot memainkan lagu diujikan dengan menggunakan musik dengan tempo 70 (andante). Jika dihitung dengan tempo maka, hasil perhitungan banyaknya not dengan waktu penyelesaian lagu adalah: 60 = 0,85 s 70
Perhitungan diatas adalah mencari lama 1 ketukan dalam detik, didapatkan 0,85 detik pada tempo 70.
32 x 0,85 s = 27 s Perhitungan diatas adalah hasil penyelesaian lagu yang memiliki 32 not dengan tempo 70. Dari hasil perhitungan tersebut, lagu akan terselesaikan dalam waktu 27 detik. Nilai hasil perhitungan mencari ketukan dengan tempo diatas akan digunakan untuk memprogram robot untuk bergerak memainkan lagu. Berikut adalah program yang telah disematkan hasil waktu dari perhitungan diatas. Bagian yang diberi tanda panah adalah proses dimana tiap ketukan akan diberi delay sesuai hasil perhitungan.
Gambar 4.9 Waktu delay sesuai dengan perhitungan
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
54
Gambar 4.10 Waktu delay sesuai dengan perhitungan dalam keseluruhan program Dengan program tersebut diatas pengujian lengan robot dapat memainkan lagu “Ode to Joy” menggunakan iringan musik dengan tempo 70. Pengujian dalam proses penekanan tuts keyboard juga mendapatkan hasil yang kurang sempurna dikarenakan selip yang terjadi pada pergerakan lengan base, sehingga terkadang posisi jari tidak tepat berada pada posisi tuts sesuai dengan program yang sudah dibuat. Berikut adalah data hasil percobaan kegagalan dan keberhasilan jari dalam menekan tuts dalam pengujian memainkan nada dari do rendah hingga do tinggi dan memainkan lagu “Ode to Joy”.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
55
Tabel 4.8 Data pengujian keberhasilan jari menekan tuts dari do rendah ke do tinggi Nomor percobaan
Gagal Berhasil
Error
Percobaan 1
8
8
50%
Percobaan 2
6
10
37,5%
Percobaan 3
7
9
43%
Percobaan 4
4
12
25%
Percobaan 5
0
16
0%
Percobaan 6
6
10
37,5%
Percobaan 7
5
11
31,2%
Percobaan 8
1
15
6,25%
Percobaan 9
6
10
37,2%
Percobaan 10
6
10
37,2%
Tabel 4.9 Data pengujian keberhasilan jari menekan tuts pada lagu “Ode to Joy” Nomor percobaan
Gagal Berhasil
Error
Percobaan 1
7
25
22%
Percobaan 2
4
28
12,5%
Percobaan 3
3
29
9,3%
Percobaan 4
10
22
31,2%
Percobaan 5
1
31
3,1%
Percobaan 6
8
24
25%
Percobaan 7
2
30
6,2%
Percobaan 8
8
24
25%
Percobaan 9
11
21
34,3%
Percobaan 10
9
23
28,1%
4.3 Analisa Perangkat Lunak Hasil dari program yang sudah dibuaat untuk menjalankan sistem ini terdapat beberapa bagian program utama agar sistem dapat berjalan sesuai dengan perancangan. Beberapa program yang akan dibahas adalah inisialisasi baik itu input, output, maupun beberapa data yang dibutuhkan oleh sistem.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
56
4.3.1 Inisialisasi Inisialisasi ini berisi tentang pengertian dari fungsi dan variabel yang digunakan dalam proses pengoperasian program. Seperti yang dijelaskan pada bab perancangan tentang diagram alir program, bagian dari inisialisasi meliputi keypad, input, output.
Gambar 4.11 Inisialisasi Program
Gambar 4.11 merupakan list program inisialisasi sebelum ke program utama. Pada inisialisasi ini penulis hanya menyertakan beberapa contoh saja karena banyaknya inisialisasi yang ada pada program sehingga untuk kelengkapan program dapat dilihat pada lampiran. Inisialisasi pertama menyertakan include KEYPAD adalah library program yang berarti alat ini mampu membaca keypad sebagai input. Include SERVO yang
berarti
membuat
motor
servo
sebagai
output.
Include
WIRE
dan
Adafruit_PWMServoDriver adalah library program yang berfungsi untuk mengaktifkan adafruit sebagai pengontrol gerakan motor servo.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
57
4.3.2 Program Tombol Keypad Listing program tombol keypad dapat dilihat pada gambar 4.10. Tombol keypad ini berfungsi sebagai kode input pada alat untuk menggerakkan dan memposisikan motor servo pada lengan dan servo pada jari yang telah dikondisikan sesuai dengan data yang telah dibuat. Pada pembacaan tombol yang tertekan ini data kode dapat langsung dilihat pada serial monitor, kode tersebut berupa angka yang akan dirubah menjadi gerakan pada lengan robot sesuai data yang telah dibuat. Namun karena proses data yang panjang membuat tampilan yang muncul diserial monitor menjadi agak terlambat.
Gambar 4.12. Program tombol Keypad
4.3.3 Program Motor Servo Pada progam motor Servo ini listing program dibagi menjadi dua bagian, yaitu program yang menggunakan board arduino sebagai pengendali, dan program yang menggunakan board adafruit sebagai pengendali. Kedua program ini memiliki input yang sama yaitu melalui kode angka yang tertampil pada serial monitor keypad. Pada program yang menggunakan board arduino, data input digunakan untuk menggerakkan jari. Sedangkan program yang dimasukkan pada board adafruit, data input digunakan untuk memposisikan lengan secara keseluruhan untuk menjangkau dan memposisikan lengan diatas keyboard. Pada board adafruit lebih ditekankan dan disertakan inisialisasi sudut – sudut untuk memposisikan dan menggerakkan lengan. Gabungan kedua program ini dapat dilihat pada gambar 4.12.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
58
Gambar 4.12. contoh program keypad ketika mengakuisisi gerakan lengan
Pada contoh program diatas ditunjukkan bahwa ketika serial monitor menunjukkan kode angka “3” maka program pada board adafruit mengakuisisi data tersebut dan menggerakkan servo dengan kode “0” seperti pada gambar 4.12 yang berarti adalah base lengan robot untuk diposisikan dengan kode “degreesx1” sesuai dengan inisialisasi program seperti pada gambar 4.13.
Gambar 4.13. kode “0” yang diartikan sebagai base lengan robot
Gambar 4.14. program akuisisi data pada board adafruit
Sedangkan program untuk board arduino ditunjukkan dengan mengaktifkan pin output yang telah dipilih dan memberikan posisi gerakan secara langsung sesuai kemampuan motor servo dengan menggunakan inisialisasi “pos” yang diartikan untuk membaca posisi dalam program. Pada program ini, motor servo diposisikan untuk bergerak dari sudut maksimal menuju sudut minimal motor servo dan kembali lagi menuju
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
59
maksimal motor servo hal ini dikarenakan kondisi motor servo yang dipasang terbalik pada jari robot. Program pada jari robot ini dapat dilihat pada gambar 4.15.
Gambar 4.15. Program untuk menggerakkan jari robot
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
60
BAB V KESIMPULAN DAN SARAN 5.1 Kesimpulan Setelah melakukan perancangan dan pengujian pada lengan robot dengan lima bermain keyboard menggunakan lima jari dalam satu oktaf nada mayor dengan kendali keypad, peneliti dapat menarik kesimpulan sebagai berikut : 1. Telah dapat dibuat sebuah lengan robot dengan yang dapat menggerakkan jari – jarinya. 2. Lengan robot dapat menjangkau tuts keyboard namun pada bagian pitch cukup kaku untuk bergerak sehingga menyebabkan posisi yang cukup sulit untuk menjangkau bagian tuts keyboard yang lain ketika sudut lebih besar dari 90 derajat. 3. Lengan robot ini dapat memainkan sebuah lagu dengan menggerakkan jari dan memindahkan lengannya. 4. Sistem dapat membaca keypad sebagai input. 5. Rata-rata keberhasialan jari menekan keyboard pada lagu pertama mencapai 69% dan pada lagu kedua mencapai 80%, beberapa kegagalan disebabkan adanya error pada motor servo yang menggerakan jari dan selip pada pergerakan lengan bagian base sehingga posisi jari tidak tepat berada pada posisi tuts keyboard yang direncanakan.
5.2 Saran Berdasarkan hasil implementasi yang diperoleh, untuk pengembangan lebih lanjut ada beberapa saran agar alat ini dapat bekerja lebih baik, yaitu : 1. Perlu ditambahkan satu derajat kebebasan untuk ruang gerak pada pitch agar pergelangan robot tidak kaku. Sehingga memudahkan untuk meraih tuts keyboard. 2. Penggunaan keypad dapat lebih dioptimalkan dengan perintah untuk menyimpan data, sehingga gerakan robot yang telah disimpan dapat didemonstrasikan kembali.
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
61
DAFTAR PUSTAKA
[1]
Syafruddin, Raden Muhammad dan Fitri, Nyayu , 2012, Perancangan Sistem Kendali Gerak Lengan Robot Pengikut Gerak Lengan Manusia Berbasis Mikrokontroller, http://eprints.mdp.ac.id/430/1/PERANCANGAN%20SISTEM%20KENDALI%20GER AK%20LENGAN%20ROBOT%20PENGIKUT%20GERAK%20LENGAN%20MANU SIA%20BERBASIS%20MIKROKONTROLLER.pdf , diakses tanggal 18 Maret 2014
[2]
Konsep Mikrokontroler , http://sistemkomputer.fasilkom.narotama.ac.id/?p=194
,
diakses tanggal 18 Maret 2014 [3]
Arduino
Mega
2560,
http://arduino.cc/en/Main/ArduinoBoardMega2560,
diakses
http://arduino.cc/en/Main/ArduinoBoardMega2560,
diakses
tanggal 18 Maret 2014. [4]
Arduino
Mega
2560,
tanggal 18 Maret 2014. [5]
Arduino Introduction, http://arduino.cc/en/Guide/Introduction, diakses 21 maret 2013.
[6]
Arduino Software, http://arduino.cc/en/Main/Software, diakses 21 maret 2013.
[7] Motor Servo , http://elektronika-dasar.web.id/teori-elektronika/motor-servo/ , diakses tanggal 21 Maret 2014 [8]
HS-645 Ultra Torque, https://www.servocity.com/html/hs645mg_ultra_torque.html#.U0zNAvlSioQ diakses 10 April 2014
[9]
GWS S04 BBM Large Servo, http://www.robotsinsearch.com/products/gws-s04-bbmlarge-servo diakses 10 April 2014
[10] Hitec HS-805BB Mega ¼ Scale Servo, https://www.hobbyking.com/hobbyking/store/__9810__Hitec_HS_805BB_Mega_1_4_S cale_servo_19_8kg_152g_0_19sec.html diakses 10 April 2014
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
62
[11] Tower Pro SG90 Micro Servo, http://jogjarobotika.com/motor-aktuator/124-towerprosg90-micro-servo.html diakses 12 April 2014 [12] Analog Input/Output, http://interactive.usc.edu/2010/02/13/class-5-analog-inputoutput/ diakses 12 April 2014 [13] Pengetahuan dasar komunikasi i2c, http://mazanung.blogspot.com/2012/12/pengetahuan-dasar-komunikasi-i2c.html diakses 12 April 2014 [14] Matrik Keypad Heksadesimal Dengan MCS51 , http://e-belajarelektronika.com/matrik-keypad-heksadesimal-dengan-mcs51/ diakses 10 Februari 2015 [15] Lets play piano, http://prettysweetpiano.blogspot.com/p/belajar-teori-dasar-bermainpiano.html di akses 10 Maret 2015
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
LAMPIRAN
60
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Lampiran Tabel Hasil Pengujian Alat Tabel 4.3 Pengujian kondisi pembacaan tombol No. Kode
Keterangan
1.
1A
Terbaca kode sebagai 1 (posisi do)
2.
1B
Terbaca kode sebagai 2 (posisi re)
3.
1C
Terbaca kode sebagai 3 (posisi mi)
4.
2A
Terbaca kode sebagai 4 (posisi fa)
5.
2B
Terbaca kode sebagai 5 (posisi sol)
6.
2C
Terbaca kode sebagai 6 (posisi la)
7.
3A
Terbaca kode sebagai 7 (posisi si)
8.
3B
Terbaca kode sebagai 8 (posisi do tinggi)
9.
3C
Terbaca namun tidak digunakan
10.
4B
Terbaca kode sebagai 0 (posisi awal)
11.
4A
Terbaca kode sebagai * (memainkan lagu)
12.
4B
Terbaca kode sebagai # (memainkan lagu)
Tabel 4.4. Gerakan Jari sesuai dengan Input Keypad No. Input Keypad
Jari yang bergerak
1.
1
Ibu Jari
2.
2
Jari Telunjuk
3.
3
Jari Tengah
4.
4
Ibu Jari
5.
5
Jari Telunjuk
6.
6
Jari Tengah
7.
7
Jari Manis
8.
8
Jari Kelingking
9.
0
Semua Jari (dengan pengkondisian)
10.
*
Semua Jari (dengan pengkondisian)
11.
#
Semua Jari (dengan pengkondisian)
L.1
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
L.2
Tabel 4.5 Data Pengukuran Sudut Lengan Robot tanpa beban No. Daerah Lengan Data Input Data Terbaca Busur Derajat
Error
1.
Base
900
900
0%
2.
Shoulder
430
390
9,3%
3.
Elbow
960
730
24%
4.
Pitch
1100
1150
4,5%
Tabel 4.6 Data Pengukuran Sudut Lengan Robot dengan beban No.
Daerah Lengan
Data Input
Data Terbaca Busur Derajat
Error
1.
Base
900
900
0%
2.
Shoulder
430
270
14%
3.
Elbow
960
650
32%
4.
Pitch +Jari
1100
1200
9%
Tabel 4.7. Hasil pengukuran waktu penekanan tuts oleh jari Waktu (dalam detik)
No
Kode Jari
.
(dalam angka)
0,1
0,2
1.
Ibu Jari ( 1)
0,05
0,13 0,12 0,25 0,31 0,44 0,58 1,03 1,03 1,23
2.
Telunjuk (2)
0,0
0,1
0,1
3.
Tengah (3)
0,0
0,1
0,13 0,22 0,27
4.
Ibu Jari (4)
0,05
0,12 0,13 0,32
0,2
0,32 0,44 0,58 1,05 1,23
5.
Telunjuk (5)
0,0
0,09
0,1
0,2
0,2
0,35 0,44
1
0,5
1,11
6.
Tengah (6)
0,0
0,11 0,13
0,2
0,32 0,38 0,46
1
1
1,03
7.
Manis (7)
0,06
0,09 0,19 0,18 0,39 0,38 0,51 1,04 1,16 1,17
8
Kelingking (8)
0,07
0,08
0,3
0,2
0,4
0,5
0,6
0,7
0,18 0,24 0,38 0,41
0,2
0,4
0,4
0,5
0,39 0,45
0,8
0,9
1
1
1
1,04
1
1,04
1,1
1,1
1,1
1,1
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Tabel 4.8 Data pengujian keberhasilan jari menekan tuts dari do rendah ke do tinggi Nomor percobaan Gagal Berhasil
Error
Percobaan 1
8
8
50%
Percobaan 2
6
10
37,5%
Percobaan 3
7
9
43%
Percobaan 4
4
12
25%
Percobaan 5
0
16
0%
Percobaan 6
6
10
37,5%
Percobaan 7
5
11
31,2%
Percobaan 8
1
15
6,25%
Percobaan 9
6
10
37,2%
Percobaan 10
6
10
37,2%
Tabel 4.9 Data pengujian keberhasilan jari menekan tuts pada lagu “Ode to Joy” Nomor percobaan Gagal Berhasil
Error
Percobaan 1
7
25
22%
Percobaan 2
4
28
12,5%
Percobaan 3
3
29
9,3%
Percobaan 4
10
22
31,2%
Percobaan 5
1
31
3,1%
Percobaan 6
8
24
25%
Percobaan 7
2
30
6,2%
Percobaan 8
8
24
25%
Percobaan 9
11
21
34,3%
Percobaan 10
9
23
28,1%
L.3
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI LISTING PROGRAM
#include
#include <Servo.h> #include <Wire.h> #include Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(); #define SERVOMIN 150 // this is the 'minimum' pulse length count (out of 4096) #define SERVOMAX 600 // this is the 'maximum' pulse length count (out of 4096) uint8_t servonum = 0; int degrees=83; int degreesx1=83; int degreesx2=106; int degrees1=63.2; int degrees2=23.45; int degrees3=140.55; int clock; Servo servo1; Servo servo2; Servo servo3; Servo servo4; Servo servo5; int pos = 0;
const byte ROWS = 4; //four rows const byte COLS = 3; //three columns char keys[ROWS][COLS] = { { '1', '2', '3'} , { '4', '5', '6'} , { '7', '8', '9'} , { '*', '0', '#'} };
L.4
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI byte rowPins[ROWS] = { A11, A10, A9, A8 }; //connect to the row pinouts of the keypad byte colPins[COLS] = { A5, A4, A3};//connect to the column pinouts of the keypad Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup(){ Serial.begin(9600); servo1.attach(11); servo2.attach(9); servo3.attach(7); servo4.attach(5); servo5.attach(3); pinMode(3, OUTPUT); pinMode(5, OUTPUT); pinMode(7, OUTPUT); pinMode(9, OUTPUT); pinMode(11, OUTPUT); // Sets the digital pin as output. keypad.addEventListener(keypadEvent); // Add an event listener for this keypad pwm.begin(); pwm.setPWMFreq(60); } void setServoPulse(uint8_t n, double pulse) { double pulselength; pulselength = 1000000; // 1,000,000 us per second pulselength /= 60; // 60 Hz Serial.print(pulselength); Serial.println(" us per period"); pulselength /= 4096; // 12 bits of resolution Serial.print(pulselength); Serial.println(" us per bit"); pulse *= 1000; pulse /= pulselength; Serial.println(pulse); pwm.setPWM(n, 0, pulse); }
L.5
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI void loop(){ char key = keypad.getKey(); if (key) { Serial.println(key); } if( key != 0) { //jika key tidak 0, } if (key) { Serial.println(key); } }
// Taking care of some special events. void keypadEvent(KeypadEvent key){ switch (keypad.getState()){ case PRESSED: if (key == '0') { clock = map(degrees, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); clock = map(degrees1, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(2, 0, clock); pwm.setPWM(3, 0, clock); clock = map(degrees2, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(6, 0, clock); clock = map(degrees3, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(8, 0, clock); delay(1600); digitalWrite(3,HIGH); digitalWrite(5,HIGH); digitalWrite(7,HIGH); digitalWrite(9,HIGH); digitalWrite(11,HIGH); for(pos = 180; pos >= 0; pos -= 1) { // in steps of 1 degree servo1.write(pos); servo2.write(pos); servo3.write(pos); servo4.write(pos);
L.6
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI servo5.write(pos); // tell servo to go to position in variable 'pos' delay(200); } } else if (key == '1') { clock = map(degreesx1, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); delay(600); digitalWrite(3,HIGH); for(pos = 180; pos >= 0; pos -= 1) { // in steps of 1 degree servo1.write(pos); // tell servo to go to position in variable 'pos' delay(200); } } else if (key == '2') { clock = map(degreesx1, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); delay(600); digitalWrite(5,HIGH); for(pos = 180; pos >= 0; pos -= 1) { // in steps of 1 degree servo2.write(pos); // tell servo to go to position in variable 'pos' delay(200); } } else if (key == '3') { clock = map(degreesx1, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); digitalWrite(7,HIGH); delay(600); for(pos = 180; pos >= 0; pos -= 1) { servo3.write(pos); // tell servo to go to position in variable 'pos' delay(200); } } else if (key == '4') { clock = map(degreesx2, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock);
L.7
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI delay(600); digitalWrite(3,HIGH); for(pos = 180; pos >= 0; pos -= 1) { // in steps of 1 degree servo1.write(pos); // tell servo to go to position in variable 'pos' delay(200); } } else if (key == '5') { clock = map(degreesx2, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); delay(600); digitalWrite(5,HIGH); for(pos = 180; pos >= 0; pos -= 1) { servo2.write(pos); // tell servo to go to position in variable 'pos' delay(200); } } else if (key == '6') { clock = map(degreesx2, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); delay(600); digitalWrite(7,HIGH); for(pos = 180; pos >= 0; pos -= 1) { // in steps of 1 degree servo3.write(pos); // tell servo to go to position in variable 'pos' delay(200); } } else if (key == '7') { clock = map(degreesx2, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); delay(600); digitalWrite(9,HIGH); for(pos = 180; pos >= 0; pos -= 1) { servo4.write(pos); // tell servo to go to position in variable 'pos' delay(200); }
L.8
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI } else if (key == '8') { clock = map(degreesx2, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); delay(600); digitalWrite(11,HIGH); for(pos = 180; pos >= 0; pos -= 1) { servo5.write(pos); // tell servo to go to position in variable 'pos' delay(200); } } else if (key == '*') { digitalWrite(3,HIGH); clock = map(degreesx1, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); delay(600); for(pos = 0; pos <= 180; pos += 1) servo1.write(pos); delay(600); for(pos = 180; pos >= 0; pos -= 1) servo1.write(pos); // in steps of 1 degree // in steps of 1 degree delay(200); digitalWrite(5,HIGH); clock = map(degreesx1, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); for(pos = 0; pos <= 180; pos += 1) servo2.write(pos); delay(600); for(pos = 180; pos >= 0; pos -= 1) servo2.write(pos); // tell servo to go to position in variable 'pos' delay(200); digitalWrite(7,HIGH); clock = map(degreesx1, 0, 180, SERVOMIN, SERVOMAX);
L.9
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI pwm.setPWM(0, 0, clock); for(pos = 0; pos <= 180; pos += 1) servo3.write(pos); delay(600); for(pos = 180; pos >= 0; pos -= 1) servo3.write(pos); // in steps of 1 degree
// in steps of 1 degree
delay(200); digitalWrite(3,HIGH); clock = map(degreesx2, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); delay(600); for(pos = 0; pos <= 180; pos += 1) servo1.write(pos); delay(600); for(pos = 180; pos >= 0; pos -= 1) servo1.write(pos); // tell servo to go to position in variable 'pos' delay(200); digitalWrite(5,HIGH); clock = map(degreesx2, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); for(pos = 0; pos <= 180; pos += 1) servo2.write(pos); delay(600); for(pos = 180; pos >= 0; pos -= 1) servo2.write(pos); // in steps of 1 degree // in steps of 1 degree delay(200); digitalWrite(7,HIGH); clock = map(degreesx2, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); for(pos = 0; pos <= 180; pos += 1) servo3.write(pos);
L.10
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI delay(600); for(pos = 180; pos >= 0; pos -= 1) servo3.write(pos); delay(200); digitalWrite(9,HIGH); clock = map(degreesx2, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); for(pos = 0; pos <= 180; pos += 1) servo4.write(pos); delay(600); for(pos = 180; pos >= 0; pos -= 1) servo4.write(pos delay(200); digitalWrite(11,HIGH); clock = map(degreesx2, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); for(pos = 0; pos <= 180; pos += 1) servo5.write(pos); delay(600); for(pos = 180; pos >= 0; pos -= 1) servo5.write(pos); delay(1000); digitalWrite(11,HIGH); clock = map(degreesx2, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); for(pos = 0; pos <= 180; pos += 1) servo5.write(pos); delay(600); for(pos = 180; pos >= 0; pos -= 1) servo5.write(pos delay(200); digitalWrite(9,HIGH);
L.11
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI clock = map(degreesx2, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); for(pos = 0; pos <= 180; pos += 1) servo4.write(pos); delay(600); for(pos = 180; pos >= 0; pos -= 1) servo4.write(pos); delay(200); digitalWrite(7,HIGH); clock = map(degreesx2, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); for(pos = 0; pos <= 180; pos += 1) servo3.write(pos); delay(600); for(pos = 180; pos >= 0; pos -= 1) servo3.write(pos delay(200); digitalWrite(5,HIGH); clock = map(degreesx2, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); for(pos = 0; pos <= 180; pos += 1) servo2.write(pos); delay(600); for(pos = 180; pos >= 0; pos -= 1) servo2.write(pos); delay(200); digitalWrite(3,HIGH); clock = map(degreesx2, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); for(pos = 0; pos <= 180; pos += 1) servo1.write(pos); delay(600); for(pos = 180; pos >= 0; pos -= 1) servo1.write(pos
L.12
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
L.13
delay(200); digitalWrite(7,HIGH); clock = map(degreesx1, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); delay(600); for(pos = 0; pos <= 180; pos += 1) servo3.write(pos); delay(600); for(pos = 180; pos >= 0; pos -= 1) servo3.write(pos); delay(200); digitalWrite(5,HIGH); clock = map(degreesx1, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); for(pos = 0; pos <= 180; pos += 1) servo2.write(pos); delay(600); for(pos = 180; pos >= 0; pos -= 1) servo2.write(pos delay(200); digitalWrite(3,HIGH); clock = map(degreesx1, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); delay(600); for(pos = 0; pos <= 180; pos += 1) servo1.write(pos); delay(600); for(pos = 180; pos >= 0; pos -= 1) servo1.write(pos); delay(200); } /*=================================================================== ========================*/
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI else if (key == '#') { digitalWrite(7,HIGH); clock = map(degreesx1, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); for(pos = 0; pos <= 180; pos += 1) servo3.write(pos); delay(600); for(pos = 180; pos >= 0; pos -= 1) servo3.write(pos delay(200); digitalWrite(7,HIGH); // mi =========================================================== clock = map(degreesx1, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); for(pos = 0; pos <= 180; pos += 1) servo3.write(pos); delay(600); for(pos = 180; pos >= 0; pos -= 1) servo3.write(pos); delay(200); // fa =========================================================== digitalWrite(3,HIGH); clock = map(degreesx2, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); for(pos = 0; pos <= 180; pos += 1) servo1.write(pos); delay(600); for(pos = 180; pos >= 0; pos -= 1) servo1.write(pos delay(200); //sol =========================================================== digitalWrite(5,HIGH); clock = map(degreesx2, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); for(pos = 0; pos <= 180; pos += 1) servo2.write(pos);
L.14
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
delay(600); for(pos = 180; pos >= 0; pos -= 1) servo2.write(pos); delay(200); digitalWrite(5,HIGH); clock = map(degreesx2, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); for(pos = 0; pos <= 180; pos += 1) servo2.write(pos); delay(600); for(pos = 180; pos >= 0; pos -= 1) servo2.write(pos delay(200); //fa ============================================================ digitalWrite(3,HIGH); clock = map(degreesx2, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); for(pos = 0; pos <= 180; pos += 1) servo1.write(pos); delay(600); for(pos = 180; pos >= 0; pos -= 1) servo1.write(pos); delay(200); //mi ============================================================ digitalWrite(7,HIGH); clock = map(degreesx1, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); for(pos = 0; pos <= 180; pos += 1) servo3.write(pos); delay(600); for(pos = 180; pos >= 0; pos -= 1) servo3.write(pos delay(200);
L.15
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI // re =========================================================== digitalWrite(5,HIGH); clock = map(degreesx1, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); for(pos = 0; pos <= 180; pos += 1) servo2.write(pos); delay(600); for(pos = 180; pos >= 0; pos -= 1) servo2.write(pos); delay(200); // do =========================================================== digitalWrite(3,HIGH); clock = map(degreesx1, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); for(pos = 0; pos <= 180; pos += 1) servo1.write(pos); delay(600); for(pos = 180; pos >= 0; pos -= 1) servo1.write(pos delay(200); digitalWrite(3,HIGH); clock = map(degreesx1, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); for(pos = 0; pos <= 180; pos += 1) servo1.write(pos); delay(600); for(pos = 180; pos >= 0; pos -= 1) servo1.write(pos); delay(200); // re =========================================================== digitalWrite(5,HIGH); clock = map(degreesx1, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); for(pos = 0; pos <= 180; pos += 1)
L.16
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI servo2.write(pos); delay(600); for(pos = 180; pos >= 0; pos -= 1) servo2.write(pos delay(200); // mi =========================================================== digitalWrite(7,HIGH); clock = map(degreesx1, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); for(pos = 0; pos <= 180; pos += 1) servo3.write(pos); delay(600); for(pos = 180; pos >= 0; pos -= 1) servo3.write(pos); delay(200); digitalWrite(7,HIGH); clock = map(degreesx1, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); for(pos = 0; pos <= 180; pos += 1) servo3.write(pos); delay(600); for(pos = 180; pos >= 0; pos -= 1) servo3.write(pos); delay(200); // re =========================================================== digitalWrite(7,HIGH); clock = map(degreesx1, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); for(pos = 0; pos <= 180; pos += 1) servo3.write(pos); delay(600); for(pos = 180; pos >= 0; pos -= 1) servo3.write(pos);
L.17
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI delay(200); digitalWrite(5,HIGH); clock = map(degreesx1, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); for(pos = 0; pos <= 180; pos += 1) servo2.write(pos); delay(600); for(pos = 180; pos >= 0; pos -= 1) servo2.write(pos
//delay ======================================================= delay(600); //delay ======================================================= // mi =========================================================== digitalWrite(7,HIGH); clock = map(degreesx1, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); for(pos = 0; pos <= 180; pos += 1) servo3.write(pos); delay(600); for(pos = 180; pos >= 0; pos -= 1) servo3.write(pos); delay(200); digitalWrite(7,HIGH); clock = map(degreesx1, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); for(pos = 0; pos <= 180; pos += 1) servo3.write(pos); delay(600); for(pos = 180; pos >= 0; pos -= 1) servo3.write(pos); delay(200); // fa =========================================================== digitalWrite(3,HIGH);
L.18
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI clock = map(degreesx2, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); for(pos = 0; pos <= 180; pos += 1) servo1.write(pos); delay(600); for(pos = 180; pos >= 0; pos -= 1) servo1.write(pos); delay(200); //sol =========================================================== digitalWrite(5,HIGH); clock = map(degreesx2, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); for(pos = 0; pos <= 180; pos += 1) servo2.write(pos); delay(600); for(pos = 180; pos >= 0; pos -= 1) servo2.write(pos); delay(200); digitalWrite(5,HIGH); clock = map(degreesx2, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); for(pos = 0; pos <= 180; pos += 1) servo2.write(pos); delay(600); for(pos = 180; pos >= 0; pos -= 1) servo2.write(pos); delay(200); //fa ============================================================ digitalWrite(3,HIGH); clock = map(degreesx2, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); for(pos = 0; pos <= 180; pos += 1) servo1.write(pos); delay(600); for(pos = 180; pos >= 0; pos -= 1) servo1.write(pos);
L.19
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
delay(200); //mi ============================================================ digitalWrite(7,HIGH); clock = map(degreesx1, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); for(pos = 0; pos <= 180; pos += 1) servo3.write(pos); delay(600); for(pos = 180; pos >= 0; pos -= 1) servo3.write(pos); delay(200); // re =========================================================== digitalWrite(7,HIGH); clock = map(degreesx1, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); for(pos = 0; pos <= 180; pos += 1) servo3.write(pos); delay(600); for(pos = 180; pos >= 0; pos -= 1) servo3.write(pos); delay(200); // do =========================================================== digitalWrite(3,HIGH); clock = map(degreesx1, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); for(pos = 0; pos <= 180; pos += 1) servo3.write(pos); delay(600); for(pos = 180; pos >= 0; pos -= 1) servo3.write(pos); delay(200); digitalWrite(3,HIGH); clock = map(degreesx1, 0, 180, SERVOMIN, SERVOMAX);
L.20
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI pwm.setPWM(0, 0, clock); for(pos = 0; pos <= 180; pos += 1) servo1.write(pos); delay(600); for(pos = 180; pos >= 0; pos -= 1) servo1.write(pos); delay(200); // re =========================================================== digitalWrite(5,HIGH); clock = map(degreesx1, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); for(pos = 0; pos <= 180; pos += 1) servo3.write(pos); delay(600); for(pos = 180; pos >= 0; pos -= 1) servo3.write(pos); delay(200); // mi =========================================================== digitalWrite(7,HIGH); clock = map(degreesx1, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); for(pos = 0; pos <= 180; pos += 1) servo3.write(pos); delay(600); for(pos = 180; pos >= 0; pos -= 1) servo3.write(pos); delay(200); // re =========================================================== digitalWrite(5,HIGH); clock = map(degreesx1, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); for(pos = 0; pos <= 180; pos += 1) servo3.write(pos); delay(600);
L.21
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI for(pos = 180; pos >= 0; pos -= 1) servo3.write(pos); delay(200); // do =========================================================== digitalWrite(3,HIGH); clock = map(degreesx1, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); for(pos = 0; pos <= 180; pos += 1) servo2.write(pos); delay(400); for(pos = 180; pos >= 0; pos -= 1) servo2.write(pos); delay(200); digitalWrite(3,HIGH); clock = map(degreesx1, 0, 180, SERVOMIN, SERVOMAX); pwm.setPWM(0, 0, clock); for(pos = 0; pos <= 180; pos += 1) servo1.write(pos); delay(200); for(pos = 180; pos >= 0; pos -= 1) servo1.write(pos); delay(200); } } }
L.22
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
Rangkaian keseluruhan Rangkaian komunikasi keypad dengan mikrokontroler
Rangkaian komunikasi keypad dengan Servo Controller
L.23
PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI
L.24
Data Sheet Komponen Adafruit 16-Channel 12-bit PWM/Servo Driver - I2C interface
DESCRIPTION You want to make a cool robot, maybe a hexapod walker, or maybe just a piece of art with a lot of moving parts. Or maybe you want to drive a lot of LEDs with precise PWM output. Then you realize that your microcontroller has a limited number of PWM outputs! What now? You could give up OR you could just get this handy PWM and Servo driver breakout. When we saw this chip, we quickly realized what an excellent add-on this would be. Using only two pins, control 16 free-running PWM outputs! You can even chain up 62 breakouts to control up to 992 PWM outputs (which we would really like to see since it would be glorious)
It's an i2c-controlled PWM driver with a built in clock. That means that, unlike the TLC5940 family, you do not need to continuously send it signal tying up your microcontroller, its completely free running! It is 5V compliant, which means you can control it from a 3.3V microcontroller and still safely drive up to 6V outputs (this is good for when you want to control white or blue LEDs with 3.4+ forward voltages) 6 address select pins so you can wire up to 62 of these on a single i2c bus, a total of 992 outputs - that's a lot of servos or LEDs Adjustable frequency PWM up to about 1.6 KHz 12-bit resolution for each output - for servos, that means about 4us resolution at 60Hz update rate Configurable push-pull or open-drain output Output enable pin to quickly disable all the outputs
We wrapped up this lovely chip into a breakout board with a couple nice extras
Terminal block for power input (or you can use the 0.1" breakouts on the side) Reverse polarity protection on the terminal block input Green power-good LED 3 pin connectors in groups of 4 so you can plug in 16 servos at once (Servo plugs areslightly wider than 0.1" so you can only stack 4 next to each other on 0.1" header "Chain-able" design A spot to place a big capacitor on the V+ line (in case you need it) 220 ohm series resistors on all the output lines to protect them, and to make driving LEDs trivial Solder jumpers for the 6 address select pins