Lengan robot penulis kata yang dikendalikan oleh aplikasi pada android.

(1)

Teknologi robotika di Indonesia telah berkembang dengan pesat. Perkembangan ini diikuti dengan hadirnya smartphone dengan sistem operasi android. Penelitian ini bertujuan membuat prototipe lengan robot 4 DOF yang dapat menulis kata yang dikendalikan oleh aplikasi pada android melalui bluetooth. Lengan robot dapat bergerak ke segala arah dan dirancang agar mampu mengikuti perintah dari android ke semua sudut dimensi dengan motor servo. Lengan robot dirancang untuk menulis huruf kapital dengan jenis seperti fourteen segment. Hasil dari penelitian ini adalah lengan robot telah dapat menulis kata dengan persentase keberhasilan 62% dan dapat dikendalikan jarah jauh dengan maksimal jarak 15 meter.

Kata kunci — lengan robot, menulis, Android, Bluetooth, 4 DOF


(2)

Robotics technology in Indonesia has grown rapidly. This development was followed by the presence of a Smartphone with android operating system. This study aims to create a prototype robot arm 4 DOF which can write words that are controlled by the application on android via Bluetooth. The robotic arm can move in any direction and designed to be capable to follow the orders from android to all corners of the dimension with servo motors. The robotic arm is designed to write with a capital letter types like fourteen segments. The results from this study is the robot arm has been able to write the words with a success percentage of 62% and can be controlled remotely with a maximum distance of 15 meters.

Keyword — Robot Arm, writing, Android, Bluetooth, 4 DOF


(3)

TUGAS AKHIR

LENGAN ROBOT PENULIS KATA YANG

DIKENDALIKAN OLEH APLIKASI PADA ANDROID

Diajukan untuk memenuhi salah satu syarat

memperoleh gelar Sarjana Teknik pada

Program Studi Teknik Elektro

disusun oleh:

PETRUS CLAVER HENDAR KRISTYANTO

NIM : 125114031

PROGRAM STUDI TEKNIK ELEKTRO

JURUSAN TEKNIK ELEKTRO

FAKULTAS SAINS DAN TEKNOLOGI

UNIVERSITAS SANATA DHARMA

YOGYAKARTA


(4)

FINAL PROJECT

ROBOT ARM WRITER OF WORDS CONTROLLED

BY THE APPLICATION ON ANDROID

In partial fulfilment of the requirements

for the degree of Sarjana Teknik

In Electrical Engineering Study Program

PETRUS CLAVER HENDAR KRISTYANTO

NIM : 125114031

ELECTRICAL ENGINEERING STUDY PROGRAM

ELECTRICAL ENGINEERING DEPARTMENT

FACULTY OF SCIENCE AND TECHNOLOGY

SANATA DHARMA UNIVERSITY


(5)

(6)

(7)

(8)

HALAMAN PERSEMBAHAN DAN MOTTO HIDUP

MOTTO :

“I am not the best, but I try to do my best”

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...


(9)

(10)

INTISARI

Teknologi robotika di Indonesia telah berkembang dengan pesat. Perkembangan ini diikuti dengan hadirnya smartphone dengan sistem operasi android. Penelitian ini bertujuan membuat prototipe lengan robot 4 DOF yang dapat menulis kata yang dikendalikan oleh aplikasi pada android melalui bluetooth. Lengan robot dapat bergerak ke segala arah dan dirancang agar mampu mengikuti perintah dari android ke semua sudut dimensi dengan motor servo. Lengan robot dirancang untuk menulis huruf kapital dengan jenis seperti fourteen segment. Hasil dari penelitian ini adalah lengan robot telah dapat menulis kata dengan persentase keberhasilan 62% dan dapat dikendalikan jarah jauh dengan maksimal jarak 15 meter.

Kata kunci — lengan robot, menulis, Android, Bluetooth, 4 DOF


(11)

ABSTRACT

Robotics technology in Indonesia has grown rapidly. This development was followed by the presence of a Smartphone with android operating system. This study aims to create a prototype robot arm 4 DOF which can write words that are controlled by the application on android via Bluetooth. The robotic arm can move in any direction and designed to be capable to follow the orders from android to all corners of the dimension with servo motors. The robotic arm is designed to write with a capital letter types like fourteen segments. The results from this study is the robot arm has been able to write the words with a success percentage of 62% and can be controlled remotely with a maximum distance of 15 meters.

Keyword — Robot Arm, writing, Android, Bluetooth, 4 DOF


(12)

(13)

DAFTAR ISI

Halaman Sampul (Bahasa Indonesia) ... i

Halaman Sampul (Bahasa Inggris) ... ii

Halaman Persetujuan ... iii

Halaman Pengesahan ... iv

Pernyataan Keaslian Karya ... v

Halaman Persembahan dan Motto Hidup ... vi

Lembar Pernyataan Persetujuan Karya Ilmiah Untuk Kepentingan Akademis ... vii

Intisari ... viii

Abstract ... ix

Kata Pengantar ... x

Daftar Isi ... xi

Daftar Gambar ... xiv

Daftar Tabel ... xvii

Daftar Persamaan ... xviii

Daftar Lampiran ... xix

BAB I:PENDAHULUAN 1.1. Latar Belakang ... 1

1.2. Tujuan dan Manfaat Penelitian ... 2

1.3. Batasan Masalah ... 3

1.4. Metodologi Penelitian ... 3

BAB II:DASAR TEORI 2.1. Mikrokontroler ... 5

2.1.1. Mikrokontroler Arduino Mega 2560 ... 6

2.1.2 . Perangkat Lunak Arduino ... 9

2.2. Motor Servo ... 10

2.3. Adafruit Servo Shield 16 Channel PWM ... 12

2.3.1 Komunikasi I2C ... 14

2.4. Bluetooth ... 16


(14)

2.4.1 Modul Bluetooth HC-05 ... 17

2.4.2 Pengaturan HC-05 dengan AT-COMMAND ... 19

2.5. Pemodelan Kinematika Dalam Sistem Robotik ... 20

2.5.1 Konsep Kinematika ... 21

2.5.2 Penggunaan Persamaan Trigonometri ... 24

BAB III:PERANCANGAN 3.1. Proses Kerja Sistem ... 28

3.2. Perancangan Perangkat Keras (Hardware) ... 29

3.2.1. Desain Lengan Robot ... 29

3.2.2. Perancangan Pengendali Utama ... 39

3.2.3. Perancangan Rangkaian Motor Servo ... 40

3.3. Perancangan PerangkatLunak (Software) ... 41

3.3.1. Diagram Alir Android ... 41

3.3.2. Diagram Alir Robot Menulis Kata ... 42

BAB IV:HASIL DAN PEMBAHASAN 4.1. Hasil Perancangan Perangkat Keras ... 44

4.2. Hasil Pengujian ... 47

4.2.1. Pengujian Koneksi Bluetooth ... 47

4.2.2. Pengujian Kinematika Lengan Robot ... 50

4.2.3. Pengujian repeatabilitas lengan robot ... 60

4.2.4. Pengujian keseluruhan sistem... 61

4.3. Pembahasan Perangkat Lunak ... 65

4.3.1. Inisialisasi ... 65

4.3.2. Program Home ... 66

4.3.3. Program Pemilihan Posisi Karakter ... 66

4.3.4. Pembacaan Data dari Android ... 67

4.3.5. Program Data Huruf ... 68

4.3.6. Program Garis Acuan ... 68


(15)

BAB V:KESIMPULAN DAN SARAN

5.1. Kesimpulan ... 70

5.2. Saran ... 70

DAFTAR PUSTAKA ... 71

LAMPIRAN ... 73


(16)

DAFTAR GAMBAR

Halaman

Gambar 1.1. Blok Diagram Prototipe Lengan Robot Menulis Kata ... 4

Gambar 2.1. Bentuk Fisik Arduino Mega 2560 ... 7

Gambar 2.2. Alokasi Penempatan Pin Arduino Mega 2560 ... 7

Gambar 2.3. Tampilan IDE Arduino ... 9

Gambar 2.4. Bentuk Fisik Motor Servo ... 10

Gambar 2.5. Konstruksi Motor Servo ... 11

Gambar 2.6. Kendali Pulsa Motor Servo ... 12

Gambar 2.7. Adafruit Servo Shield 16 Channel PWM ... 13

Gambar 2.8. Bentuk Fisik Modul Bluetooth Seri HC ... 17

Gambar 2.9. Pengaturan Modul Bluetooth Dengan AT-Command Melalui Arduino ... 19

Gambar 2.10 Diagram Sistem Robotik ... 20

Gambar 2.11. Diagram Sistem Kontrol Robotik ... 21

Gambar 2.12. Transformasi Kinematik Maju dan Kinematik Balik ... 21

Gambar 2.13. Gerakan Holonomic ... 23

Gambar 2.14. Gerakan Nonholonomic ... 23

Gambar 2.15. Gerakan Holonomic dan Nonholonomic ... 23

Gambar 2.16. Konfigurasi Lengan Robot Satu Sendi ... 24

Gambar 2.17. Konfigurasi Lengan Robot Dua Sendi ... 24

Gambar 2.18. Konfigurasi Lengan Robot Tiga Sendi ... 26

Gambar 3.1. Blok Diagram Sistem ... 29

Gambar 3.2. Tampilan Desain Gambar 3D Lengan Robot Menulis Kata ... 29

Gambar 3.3. Bagian Base dan Penggeraknya ... 30

Gambar 3.4. Dimensi Lengan Robot ... 30

Gambar 3.5. a. Desain 3D End-Effector Lengan Robot ... 31

Gambar 3.5. b. Desain 3D Whiteboard ... 31

Gambar 3.6. Desain 3D Keseluruhan Prototipe Lengan Robot ... 34

Gambar 3.7. Desain 3D Keseluruhan Prototipe Lengan Robot Tampak Atas ... 35

Gambar 3.8. Desain 3D Keseluruhan Prototipe Lengan Robot Tampak Samping ... 35


(17)

Gambar 3.9. Desain 2D Sederhana Lengan Robot Tampak Atas ... 36

Gambar 3.10. Desain 3D Sederhana Lengan Robot Tampak Samping ... 37

Gambar 3.11. Contoh Beberapa Titik Acuan di tiap Huruf Serta Dimensi Huruf... 38

Gambar 3.12. Bentuk Keseluruhan Huruf Beserta Titik Acuannya ... 39

Gambar 3.13. Rangkaian Keseluruhan Sistem ... 40

Gambar 3.14. Gambar Rangkaian Servo Controller ... 40

Gambar 3.15. Diagram Alir Android ... 41

Gambar 3.16. Diagram Alir Program Menulis Kata ... 42

Gambar 4.1. Keseluruhan Bentuk Lengan Robot Menulis Kata ... 44

Gambar 4.2. Motor Servo Sebagai Penggerak Lengan Robot ... 45

Gambar 4.3. Motor Bagian Base yang Dihubungkan dengan Transmisi Gear ... 45

Gambar 4.4. Konektor Motor Servo ... 46

Gambar 4.5. Rangkaian Elektrik Lengan Robot Menulis Kata ... 46

Gambar 4.6. Ilustrasi Pengujian Koneksi Bluetooth ... 47

Gambar 4.7. Listing Program Pengujian Koneksi Bluetooth ... 48

Gambar 4.8. Tampilan Interface Arduino Bluetooth Terminal ... 48

Gambar 4.9. Tampilan Serial Monitor pada IDE Arduino ... 49

Gambar 4.10. Posisi Home Lengan Robot ... 50

Gambar 4.11.Penyederhanaan 2D Lengan Robot Tampak Atas ... 50

Gambar 4.12.Penyederhanaa 2D Lengan Robot Tampak Samping ... 51

Gambar 4.13.Posisi Titik Acuan ... 53

Gambar 4.14.Hasil Implementasi Titik Acuan Pada Whiteboard... 53

Gambar 4.15.Permasalahan Mekanik Lengan Robot ... 58

Gambar 4.16.Bentuk dan Posisi Garis Acuan ... 58

Gambar 4.17.Hasil Implementasi Garis-Garis Acuan ... 59

Gambar 4.18.End-effector Menabrak Papan Tulis ... 59

Gambar 4.19.Konfigurasi Bluetooth pada Smartphone ... 61

Gambar 4.20.Tampilan Awal Aplikasi Arduino Bluetooth Terminal... 61

Gambar 4.21.Tampilan Aplikasi Arduino Bluetooth Terminal ... 62

Gambar 4.22.Bentuk Huruf A pada Posisi Karakter Pertama ... 62

Gambar 4.23.Bentuk Huruf A pada Setiap Posisi Karakter... 62 xv


(18)

Gambar 4.24.Ilustrasi Bentuk Huruf yang Terbaca ... 64

Gambar 4.25.Ilustrasi Bentuk Huruf yang Tidak Terbaca ... 64

Gambar 4.26.Beberapa Huruf yang Membentuk Sebuah Kata ... 64

Gambar 4.27.Listing Program Inisialisasi Lengan Robot Menulis Kata ... 65

Gambar 4.28.Listing Program Home ... 66

Gambar 4.29.Listing Program Pemilihan Posisi Karakter ... 66

Gambar 4.30.Listing Program Pembacaan Data dari Android ... 67

Gambar 4.31.Data yang Diterima oleh Mikrokontroler... 67

Gambar 4.32.Listing Program Data Huruf ... 68

Gambar 4.33.ListingSub Program Garis Acuan ... 69


(19)

DAFTAR TABEL

Halaman

Tabel 2.1. Keterangan Pin Arduino Mega 2560 ... 8

Tabel 2.2. Keterangan Tombol Pada Tampilan IDE Arduino ... 10

Tabel 3.1. Tabel Perkiraan Berat Lengan dan Beban yang Diangkat Lengan ... 32

Tabel 3.2. Tabel Perkiraan Panjang Lengan dan Sudut Maksimal yang Dijangkau ... 34

Tabel 4.1. Pengujian Koneksi Bluetooth ... 49

Tabel 4.2. Data Hasil Perhitungan Kinematika Setiap Titik Acuan ... 54

Tabel 4.3. Perbandingan Hasil Perhitungan dengan Hasil Pengukuran ... 56

Tabel 4.4. Hasil Pengujian Repeatabilitas Lengan Robot ... 60

Tabel 4.5. Hasil Pengujian Keberhasilan Bentuk Huruf ... 63


(20)

DAFTAR PERSAMAAN

Halaman

Persamaan 2.1 ... 24

Persamaan 2.2 ... 25

Persamaan 2.3 ... 25

Persamaan 2.4 ... 25

Persamaan 2.5 ... 25

Persamaan 2.6 ... 25

Persamaan 2.7 ... 25

Persamaan 2.8 ... 25

Persamaan 2.9 ... 25

Persamaan 2.10 ... 25

Persamaan 2.11 ... 25

Persamaan 2.12 ...25

Persamaan 2.13 ...26

Persamaan 2.14 ...26

Persamaan 2.15 ...26

Persamaan 2.16 ...26

Persamaan 2.17 ...26

Persamaan 2.18 ...26

Persamaan 2.19 ...27

Persamaan 2.20 ...27

Persamaan 2.21 ...27


(21)

DAFTAR LAMPIRAN

Halaman

L1. Tabel Pengujian Koneksi Bluetooth ... L1 L2. Tabel Data Hasil Perhitungan Kinematika Setiap Titik Acuan ... L2 L4. Tabel Perbandingan Hasil Perhitungan dengan Hasil Pengukuran ... L4 L6. Tabel Hasil Pengujian Repeatabilitas Lengan Robot ... L6 L7. Hasil Implementasi Keseluruhan Bentuk Huruf ... L7 L10. Listing Program Keseluruhan ... L10


(22)

BAB I

PENDAHULUAN

1.1

Latar Belakang

Dewasa ini teknologi robotika di indonesia berkembang dengan pesat. Perkembangan ini telah meningkatkan kualitas kehidupan manusia. Teknologi robotika telah menggantikan peralatan – peralatan manual menjadi otomatis yaitu dengan penggunaan robot. Salah satu cara meningkatkan tingkat kecerdasan sebuah robot adalah dengan menambah sensor atau aktuator pada robot tersebut. Di negara-negara maju perkembangan robot mengalami peningkatan yang tinggi, saat ini robot telah digunakan sebagai alat bantu dalam pekerjaan manusia. Seiring dengan berkembangnya teknologi, khususnya teknologi elektronik, peran robot menjadi semakin penting tidak saja dibidang sains, tapi juga di berbagai bidang lainnya, seperti di bidang industri manufaktur, kedokteran, pertanian, bahkan militer. Teknologi robotika juga telah menjangkau sisi hiburan dan pendidikan bagi manusia. Secara sadar atau tidak, saat ini robot telah “masuk” dalam kehidupan sehari-hari manusia dalam berbagai bentuk dan jenis. Ada jenis robot sederhana yang dirancang untuk melakukan kegiatan yang sederhana, mudah dan berulang-ulang, ataupun robot yang diciptakan khusus untuk melakukan sesuatu yang rumit, sehingga dapat berperilaku sangat kompleks dan secara otomatis dapat mengontrol dirinya sendiri sampai batas tertentu.

Perkembangan teknologi robotika dan elektronik ini juga diikuti dengan berkembangnya teknologi dalam bidang telekomunikasi. Yakni, dengan hadirnya

Smartphone. Smartphone merupakan telepon genggam yang mempunyai kemampuan tingkat tinggi yang bekerja menggunakan seluruh perangkat lunak sistem operasi yang menyediakan hubungan standar dan mendasar bagi pengembang aplikasi. Salah satu contoh sistem operasi yang ada adalah Android. Saat ini, Smartphone dengan sistem operasi android mudah kita jumpai dalam kehidupan sehari-hari karena android sudah digemari di beberapa negara, khususnya Indonesia.

Berdasarkan paparan diatas maka penulis ingin menciptakan purwarupa lengan robot dengan 4 Degree Of Freedom (DOF). Peneliti yang sudah pernah membuat adalah Syarifah Hamidah, Seno D.Panjaitan, dan Dedi Triyanto dalam penelitian yang berjudul Sistem Pengendali Robot Lengan Menggunakan Pemogramman Visual Basic”. Pada penelitian ini, mikrokontroler yang digunakan adalah Atmega16. Lengan robot yang


(23)

digunakan memiliki 4 Degree Of Freedom (DOF) dan menggunakan Graphical User Interface (GUI) Visual Basic 2010 sebagai antarmuka antara pengguna dengan sistem kendali lengan robot [1].

Purwarupa lengan robot dengan 4 Degree Of Freedom (DOF) yang akan dibuat penulis dapat diaplikasikan untuk menulis kata dengan sistem operasi android sebagai antarmuka antara pengguna dengan sistem kendali lengan robot. Lengan robot tersebut dapat dikendalikan oleh penggunanya dari jarak jauh melalui teknologi Bluetooth. Lengan robot dapat digunakan sebagai alat peraga saat pameran atau model saat perancangan sistem kontrol otomasi.

Dalam pembuatan lengan robot ini memerlukan beberapa motor servo sebagai penggerak lengan robot. Untuk menggerakkan motor servo tersebut memerlukan servo controller yang digunakan untuk mengatur pergerakan lengan robot tersebut sehingga dapat bergerak secara bersamaan. Penelitian ini memaparkan salah satu sudut teknologi robotika dengan lengan robot yang memiliki kemampuan menulis pada whiteboard dengan sebuah ujung yang diberikan spidol. Lengan robot tersebut dirancang agar mampu bergerak secara seimbang dengan menggerakan motor servo pada setiap sendi robot secara bersamaan. Robot ini dikendalikan oleh sebuah mikrokontroler Arduino yang menggunakan sebuah Android sebagai masukannya yang dikirimkan melalui teknologi

Bluetooth sehingga pergerakkan dari robot ini berjalan secara otomatis sesuai dengan program yang dibuat. Lengan robot ini memiliki pergerakan sebanyak 4 DOF ( Degree Of Freedom) mulai dari pangkal sampai end-effector. Lengan robot dapat bergerak ke segala arah dan dirancang agar mampu mengikuti perintah dari android dengan mikrokontroler ke semua sudut dimensi dengan motor servo.

1.2

Tujuan dan Manfaat Penelitian

Tujuan dari penelitian ini adalah membuat purwarupa lengan robot dengan 4 DOF

yang dapat menulis kata berbasis Arduino yang dapat dikendalikan jarah jauh dengan aplikasi pada Android. Manfaat yang diharapkan dari penelitian ini adalah untuk digunakan sebagai dasar penelitian robot humanoid di masa yang akan datang dan dapat menambah pemahaman tentang robot terutama lengan robot dengan 4 DOF.


(24)

1.3

Batasan Masalah

Agar penelitian ini dapat sesuai dengan apa yang menjadi tujuannya dan menghindari terlalu kompleksnya permasalahan yang muncul, maka perlu adanya batasan-batasan masalah yang sesuai dengan judul penelitian ini. Adapun batasan-batasan masalahnya adalah :

a. Pembuatan lengan robot ini menggunakan 4 derajat kebebasan (DOF).

b. Penelitian akan dibatasi pada lengan robot menulis dengan maksimal enam huruf.

c. Penulisan huruf menggunakan huruf kapital dengan jenis huruf seperti fourteen segment.

d. Robot akan dikendalikan dengan sebuah mikrokontroler yakni Arduino yang akan dihubungkan dengan sebuah Android sebagai masukannya melalui teknologi Bluetooth.

e. Menggunakan motor RC-servo sebagai aktuator. f. Robot dapat bergerak pada sumbu X, Y, dan Z. g. Menggunakan modul Bluetooth HC-05.

h. Menggunakan aplikasi Arduino Bluetooth Terminal pada android yang digunakan untuk mengirim data masukan pada arduino.

i. Mengirim data huruf per satu karakter secara bergantian.

1.4

Metodologi Penelitian

Berdasarkan pada tujuan yang ingin dicapai maka metode yang digunakan adalah : 1. Studi literatur dan referensi, yaitu dengan cara mendapatkan data dari membaca

buku-buku dan jurnal-jurnal yang terkait dengan mikrokontroler khususnya Arduino dan juga mengenai modul Bluetooth HC-05.

2. Studi kasus terhadap alat yang telah dibuat sebelumnya. Tahap ini dilakukan guna memahami prinsip kerja alat sebelumnya.

3. Menguji modul Bluetooth HC-05. Tahap ini dilakukan guna memahami prinsip kerja dan karakter modul Bluetooth HC-05.

4. Menguji motor servo. Tahap ini dilakukan guna memahami prinsip kerja motor servo dan bisa mengetahui karakter motor servo.


(25)

5. Menguji Servo Controller. Tahap ini dilakukan guna memahami prinsip kerja

Servo Controller baik secara sekuensial maupun bersamaan dan mengetahui cara menggunakan antarmuka pada Servo Controller.

6. Menguji rangkaian kendali dengan mikrokontroler Arduino. Tahap ini guna lebih memahami bahasa yang digunakan mikrokontroler Arduino dan lebih memahami cara kerja dengan mencoba membuat rangkaian kendali sederhana terlebih dahulu.

7. 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.

8. Pembuatan sistem hardware dan software. Berdasarkan gambar 1.1, mikrokontroler sebagai kontrol utama pada purwarupa lengan robot ini. Mikrokontroler akan memproses masukan dari Android yang dikirim melalui modul Bluetooth sebagai masukan untuk motor bekerja yang akan membuat lengan robot bergerak membentuk huruf.

Gambar 1.1. Blok Diagram Prototipe Lengan Robot Menulis Kata

9. Proses pengujian dan pengambilan data. Teknik pengambilan data dilakukan dengan cara menguji keseluruhan sistem dengan menggabungkan antara rangkaian kendali dengan rangkaian aktuator. Pengujian dilakukan dengan mengkomunikasikan Android dengan Arduino.

10. Analisa dan kesimpulan hasil perancangan. Analisa data dilakukan dengan mengecek apakah alat sudah bekerja sesuai dengan perancangan awal dan bisa sesuai dengan kondisi yang diinginkan, meliputi kemampuan Arduino mampu menerimadan mengidentifikasi data dari Android. Berdasarkan hasil analisa data akan diperoleh kesimpulan.


(26)

BAB II

DASAR TEORI

2.1. Mikrokontroler

Mikrokontroler adalah suatu alat elektronika digital yang mempunyai masukan dan keluaran serta kendali dengan program yang bisa ditulis dan dihapus dengan cara khusus. Sederhananya, cara kerja mikrokontroler sebenarnya hanya membaca dan menulis data. Sekedar contoh, bayangkan diri anda saat mulai belajar membaca dan menulis, ketika Anda sudah bisa melakukan hal itu anda mulai bisa membaca tulisan apapun baik itu tulisan buku, cerpen, artikel dan sebagainya, dan anda pun mulai bisa menulis hal-hal sebaliknya. Begitu pula jika anda sudah mahir membaca dan menulis data pada mikrokontroler maka anda dapat membuat program untuk membuat suatu sistem pengaturan menggunakan mikrokontroler sesuai dengan keinginan anda. Mikrokontroler merupakan komputer didalam chip yang digunakan untuk mengontrol peralatan elektronik, yang menekankan efisiensi dan efektifitas biaya. Secara harfiahnya bisa disebut "pengendali kecil" dimana sebuah sistem elektronik yang sebelumnya banyak memerlukan komponen-komponen pendukung seperti IC TTL dan CMOS dapat direduksi/diperkecil dan akhirnya terpusat serta dikendalikan oleh mikrokontroler ini. Dengan penggunaan mikrokontroler ini maka :

1. Sistem elektronik akan menjadi lebih ringkas

2. Rancang bangun sistem elektronik akan lebih cepat karena sebagian besar dari sistem adalah perangkat lunak yang mudah dimodifikasi

3. Pencarian gangguan lebih mudah ditelusuri karena sistemnya yang kompak

Namun demikian tidak sepenuhnya mikrokontroler bisa mereduksi komponen IC TTL dan CMOS yang seringkali masih diperlukan untuk aplikasi kecepatan tinggi atau sekedar menambah jumlah saluran masukan dan keluaran (I/O). Dengan kata lain, mikrokontroler adalah versi mini atau mikro dari sebuah komputer karena mikrokontroler sudah mengandung beberapa periferal yang langsung bisa dimanfaatkan, misalnya port

paralel, port serial, komparator, konversi digital ke analog (DAC), konversi analog ke digital dan sebagainya hanya menggunakan sistem minimum yang tidak rumit atau kompleks [2].


(27)

2.1.1. Mikrokontroler Arduino Mega 2560

Arduino adalah sebuah platform elektronik yang open source. Nama Arduino tidak hanya digunakan untuk menamai board rangkaiannya saja, tetapi juga untuk menamai bahasa dan software pemrogramannya, serta lingkungan pemrogramannya atau yang dikenal dengan sebutan Integrated Development Environment (IDE). Arduino memiliki beberapa keunggulan dibandingkan dengan platform elektronik lainnya [3]. Beberapa keunggulan tersebut antara lain:

1. Modul Arduino adalah sebuah platform elektronik yang open source yang berbasis pada kemudahan dan fleksibilitas penggunaan hardware dan software. Artinya pembaca dapat mengunduh software dan gambar rangkaian Arduino tanpa harus membayar kepada pembuat Arduino.

2. IDE Arduino merupakan multiplatform yang dapat dijalankan di berbagai sistem operasi seperti Windows, Macintosh, dan Linux.

3. Modul Arduino mudah digunakan sebagai sebuah platform komputasi fisik yang sederhana serta menerapkan bahasa pemrograman processing.

4. Modul Arduino merupakan platform interaktif karena dapat mengambil masukan dari berbagai tombol atau sensor, mampu mengendalikan berbagai lampu, motor, dan output fisik lainnya.

5. Modul Arduino dapat berdiri sendiri, atau dapat melakukan komunikasi dengan

software yang berjalan di komputer seperti Flash, Processing, dan MaxMSP.

6. Pemrograman Arduino menggunakan kabel yang terhubung dengan port Universal Serial Bus (USB), bukan port serial. Fitur ini sangat berguna karena banyak komputer sekarang ini tidak memiliki port serial.

7. Biaya yang dibutuhkan untuk membeli modul Arduino cukup murah, sehingga tidak terlalu menakutkan untuk membuat kesalahan.

8. Proyek Arduino ini dikembangkan dalam dunia pendidikan, sehingga bagi pemula akan lebih cepat dan mudah untuk mempelajarinya.

9. Memiliki begitu banyak pengguna dan komunitas di internet yang dapat membantu setiap kesulitan yang dihadapi.


(28)

Arduino sudah memproduksi begitu banyak minimum sistem. Beberapa diantaranya adalah Arduino Uno, Arduino Leonardo, Arduino Due, Arduino Mega 2560, Arduino Mega ADK, Arduino Mikro, Arduino Duemilanove, Arduino Nano. Dalam penelitian yang dikerjakan oleh penulis, akan digunakan salah satu produk Arduino yang dikenal dengan nama Arduino Mega 2560. Gambar 2.1. merupakan tampilan Arduino Mega 2560.

Gambar 2.1. Bentuk fisik Arduino Mega 2560 [4]

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 kristal 16 MHz, sebuah jack female untuk koneksi USB, jack female adaptor, dan sebuah tombol reset [4].


(29)

Tabel 2.1. Keterangan Pin Arduino Mega 2560 [4]

No. Parameter Keterangan

1 ATmega 2560 IC mikrokontroler yang digunakan pada Arduino Mega 2560. 2 Jack USB Untuk komunikasi mikrokontroler dengan PC

3 Jack Adaptor Masukan power eksternal bila Arduino bekerja mandiri (tanpa komunikasi dengan PC melalui kabel serial USB).

4 Tombol Reset Tombol reset internal yang digunakan untuk mereset modul

Arduino.

5 Pin Analog Menerima input dari perangkat analog lainnya.

6 Pin Power

• Vin = Masukan tegangan input bagi Arduino ketika menggunakan dumber daya eksternal.

• 5 V = Sumber tegangan yang dihasilkan regulator internal

boardArduino.

• 3,3 V = Sumber tegangan yang dihasilkan regulator internal

board Arduino. Arus maksimal pada pin ini adalah 50 mA.

• GND = Pin ground dari regulator tegangan board Arduino.

• IOREF = Tegangan Referensi.

• AREF = Tegangan Referensi untuk input analog. 7 Light-Emitting

Diode (LED)

Pin digital 13 merupakan pin yang terkoneksi dengan LED internal Arduino.

8 Pin PWM Arduino Mega menyediakan 8 bit output PWM. Gunakan fungsi analogWrite() untuk mengaktifkan pin PWM ini.

9 Pin Serial

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.

10 Pin Two Wire

Interface (TWI)

Terdiri dari Serial Data Line (SDA) dan Serial Interface Clock

(SCL).

11 Pin Digital Pin yang digunakan untuk menerima input digital dan memberi


(30)

Tabel 2.1. (Lanjutan) Keterangan Pin Arduino Mega 2560 [4]

12

Pin Serial Peripheral Interface (SPI)

Terdiri dari 4 buah Pin :

1. Master In Slave Out (MISO)

Jalur slave untuk mengirimkan data ke Master.

2. Master Out Slave In (MOSI)

Jalur master untuk mengirimkan data ke peralatan. 3. Serial Clock (SCK)

Clock yang berfungsi untuk memberikan denyut pulsa ketika sedang menyinkronkan transmisi data oleh master

4. Slave Select (SS)

Pin untuk memilih jalur slave pada perangkat tertentu.

2.1.2. Perangkat Lunak Arduino

Area pemrograman Arduino dikenal dengan Integrated Development Environment

(IDE) [5]. Area pemrograman yang digunakan untuk menulis baris program dan mengunggahnya ke dalam board Arduino . disamping itu juga dibuat lebih mudah dan dapat berjalan pada beberapa sistem operasi seperti Windows, Macintosh, dan Linux [6]. Gambar 2.3. dan Tabel 2.2. merupakan area pemrograman Arduino dan keterangan beberapa tombol utama.


(31)

Tabel 2.2. Keterangan Tombol Pada Tampilan IDE Arduino

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.

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.

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 putaran sumbu (axis) dari motor akan diinformasikan kembali ke rangkaian kontrol yang ada di dalam motor servo. Gambar 2.4 merupakan bentuk fisik dari motor servo.


(32)

Gambar 2.5 merupakan konstruksi dari motor servo yang disusun oleh 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.

Gambar 2.5. Konstruksi Motor Servo [7]

Motor servo adalah motor yang mampu bekerja dua arah (CW dan CCW) dimana 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

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).

Pulsa Kontrol Motor Servo

Operasional motor servo dikendalikan oleh sebuah pulsa dengan jarak ± 20 ms, dimana 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° seperti yang ditunjukkan pada gambar 2.6.


(33)

Gambar 2.6. Kendali Pulsa Motor Servo [7]

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 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 [7].

2.3

. Adafruit Servo Shield 16 Channel PWM

Adafruit ServoShield 16 Channel PWM merupakan sebuah pengendali servo atau servo controller yang mampu digunakan untuk mengendalikan 16 buah motor servo secara serentak maupun sekuensial dengan output PWM. Modul ini dilengkapi dengan jalur komunikasi I2C. Modul ini juga memiliki jalur I2C yang dapat berbagi dengan perangkat


(34)

I2C lainnya serta sensor untuk pin SDA dan SCL selama alamat mereka tidak konflik. Gambar 2.7. merupakan bentuk fisik dari Adafruit ServoShield 16 Channel PWM[8].

Gambar 2.7. Adafruit ServoShield 16 Channel PWM [8]

Spesifikasi dari Adafruit ServoShield 16 Channel PWM :

1. Dapat digunakan untuk mengendalikan hingga 16 motor servo secara serentak maupun sekuensial.

2. Mendukung motor servo tipe standar dan kontinus.

3. Dilengkapi kemampuan untuk membaca pulsa kontrol (posisi) servo, Enable dan

Disable servo, kemampuan menyimpan dan menjalankan hingga 32 sekuen gerakan, serta kemampuan menyimpan dan kembali ke posisi home (default). 4. Menggunakan komunikasi I2C, hanya dengan menggunakan 2 pin papan PWM

controller akan mengendalikan semua 16 channel atau pin sekaligus tanpa tambahan pengeluaran untuk menambahkan arduino.

5. Dapat menumpuk hingga 62 Adafruit Servo Shield 16 Channel PWM dalam 1 arduino sehingga dapat mengendalikan hingga 992 motor servo hanya dengan 2 pin(SDA/SCL).

6. Pengaturan alamat I2C secara hardware melalui pin A5 untuk SCL dan pin A4 untuk SDA pada arduino.

7. Dilengkapi dengan library yang bisa di download untuk dimasukkan ke dalam arduino.

8. Menggunakan 2 catudaya. Catudaya modul terpisah dengan catudaya motor servo dan dilengkapi dengan LED indikator catudaya.

9. Catudaya modul menggunakan catudaya dari arduino yaitu sebesar 5V yang digunakan untuk daya chip PWM, menentukan level logic I2C, dan level logic sinyal PWM.


(35)

10. Hampir semua servo di desain untuk bekerja aktif kira-kira di tegangan 5V atau 6V. Logikanya jika ingin mengendalikan banyak servo maka dibutuhkan arus yang tidak sedikit agar semua servo dapat bekerja secara serentak sehingga terdapat beberapa pilihan power dibawah ini yang direkomendasikan untuk catudaya motor servo:

a. 5v 2A switching power supply (dapat mengendalikan hingga 4 motor servo).

b. 5V 10A switching power supply (dapat mengendalikan hingga 16 motor servo)

c. Jika menggunakan battery dapat menggunakan 4x AA battery dengan tegangan 6v atau 4,8v (6v dengan cell battery Alkaline dan 4,8v dengan cell battery yang dapat dicas).

2.3.1.

Komunikasi I

2

C

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 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.

Karakter I2C :

1. Serial Bus Data dikirim serial secara per-bit.

2. Menggunakan dua Penghantar Koneksi dengan ground bersama I2C terdiri dari dua penghantar:


(36)

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 SlaveDevice yang mengendalikan operasi transfer disebut Master, sementara device yang di kendalikan oleh master di sebut Slave.

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.

4. I2C adalah protokol transfer data serial. Device atau komponen yang mengirim data disebut transmitter, sedangkan device yang menerimanya disebut receiver.

5. Device yang mengendalikan operasi transfer data disebut master, sedangkan device

lainnya yang dikendalikan oleh master disebut slave.

6. 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:

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


(37)

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.4.

Bluetooth

Bluetooth adalah spesifikasi industri untuk jaringan kawasan pribadi (personal area networks atau PAN) tanpa kabel. Bluetooth menghubungkan dan dapat dipakai untuk melakukan tukar-menukar informasi di antara peralatan-peralatan. Spesifiksi dari peralatan Bluetooth ini dikembangkan dan didistribusikan oleh kelompok Bluetooth Special Interest Group.

Awal mula dari Bluetooth adalah sebagai teknologi komunikasi wireless (tanpa kabel) yang beroperasi dalam pita frekuensi 2,4 GHz unlicensed ISM (Industrial, Scientific and Medical) dengan menggunakan sebuah frequency hopping tranceiver yang mampu menyediakan layanan komunikasi data dan suara secara real-time antara host-host Bluetooth dengan jarak jangkauan layanan yang terbatas (sekitar 10 meter). Bluetooth

berupa card yang menggunakan frekuensi radio standar IEEE 802.11 dengan jarak layanan yang terbatas dan kemampuan data transfer lebih rendah dari card untuk Wireless Local Area Network (WLAN).

Protokol Bluetooth menggunakan sebuah kombinasi antara circuit switching dan

packet switching. Bluetooth dapat mendukung sebuah kanal data asinkron, tiga kanal suara sinkron simultan atau sebuah kanal dimana secara bersamaan mendukung layanan data


(38)

asinkron dan suara sinkron. Setiap kanal suara mendukung sebuah kanal suara sinkron 64 kb/s. Kanal asinkron dapat mendukung kecepatan maksimal 723,2 kb/s asimetris, dimana untuk arah sebaliknya dapat mendukung sampai dengan kecepatan 57,6 kb/s. Sedangkan untuk mode simetris dapat mendukung sampai dengan kecepatan 433,9 kb/s. Sebuah perangkat yang memiliki teknologi Wireless Bluetooth akan mempunyai kemampuan untuk melakukan pertukaran informasi dengan jarak jangkauan sampai dengan 10 meter (~30 feet). Sistem Bluetooth menyediakan layanan komunikasi point to point maupun komunikasi point to multipoint.

Produk Bluetooth dapat berupa PC card atau USB adapter yang dimasukkan ke dalam perangkat. Perangkat-perangkat yang dapat diintegerasikan dengan teknologi

Bluetooth antara lain : mobile PC, mobile phone, PDA (Personal Digital Assistant), headset, kamera, printer, router dan sebagainya. Aplikasi-aplikasi yang dapat disediakan oleh layanan Bluetooth ini antara lain : PC to PC file transfer, PC to PC file synch ( notebook to desktop), PC to mobile phone, PC to PDA, wireless headset, LAN connection via ethernet access point dan sebagainya[9].

2.4.1. Modul Bluetooth HC-05

Modul Bluetooth seri HC memiliki banyak jenis atau varian, yang secara garis besar terbagi menjadi dua yaitu jenis industrial series yaitu HC-03 dan HC-04 serta civil series yaitu HC-05 dan HC-06. Modul Bluetooth serial, yang selanjutnya disebut dengan modul BT saja digunakan untuk mengirimkan data serial TTL via Bluetooth. Modul BT ini terdiri dari dua jenis yaitu Master dan Slave.

Gambar 2.8. Bentuk Fisik Modul Bluetooth Seri HC-05 [10]

Seri modul BT HC bisa dikenali dari nomor serinya, jika nomer serinya genap maka modul BT tersebut sudah diset oleh pabrik, bekerja sebagai slave atau master dan


(39)

tidak dapat diubah mode kerjanya, contoh adalah HC-06-S. Modul BT ini akan bekerja sebagai BT Slave dan tidak bisa diubah menjadi Master, demikian juga sebaliknya misalnya HC-04M. Default mode kerja untuk modul BT HC dengan seri genap adalah sebagai Slave.

Sedangkan modul BT HC dengan nomer seri ganjil, misalkan HC-05, kondisi default biasanya diset sebagai Slave mode, tetapi pengguna bisa mengubahnya menjadi mode Master dengan AT Command tertentu. Penggunaan utama dari modul BT ini adalah menggantikan komunikasi serial via kabel, sebagai contoh:

1. Jika akan menghubungkan dua sistem mikrokontroler agar bisa berkomunikasi via serial port maka dipasang sebuah modul BT Master pada satu sistem dan modul BT

Slave pada sistem lainnya. Komunikasi dapat langsung dilakukan setelah kedua modul melakukan pairing. Koneksi via Bluetooth ini menyerupai komunikasi serial biasa, yaitu adanya pin TXD dan RXD.

2. Jika sistem mikrokontroler dipasangi modul BT Slave maka ia dapat berkomunikasi dengan perangkat lain semisal PC yang dilengkapi adapter BT ataupun dengan perangkat ponsel, Smartphone dan lain-lain

3. Saat ini banyak perangkat seperti printer, GPS modul dan lain-lain yang bekerja menggunakan media Bluetooth, tentunya sistem mikrokontroler yang dilengkapi dengan BT Master dapat bekerja mengakses device-device tersebut

Pemakaian module BT pada sistem komunikasi baik antar dua sistem mikrokontrol maupun antara suatu sistem ke device lain tidak perlu menggunakan driver, tetapi komunikasi dapat terjadi dengan dua syarat yaitu :

1. Komunikasi terjadi antara modul BT Master dan BT Slave, komunikasi tidak akan pernah terjadi jika kedua modul sama-sama Master atau sama-sama Slave, karena tidak akan pernah pairing diantara keduanya

2. Password yang dimasukkan cocok

Modul BT yang banyak beredar di sini adalah modul HC-06 atau sejenisnya dan modul HC-05 dan sejenisnya. Perbedaan utama adalah modul HC-06 tidak bisa mengganti mode karena sudah diset oleh pabrik, selain itu tidak banyak AT Command dan fungsi yang bisa dilakukan pada modul tersebut. Diantaranya hanya bisa mengganti nama, baud


(40)

rate dan password saja. Sedangkan untuk modul HC-05 memiliki kemampuan lebih yaitu bisa diubah mode kerjanya menjadi Master atau Slave serta diakses dengan lebih banyak AT Command, modul ini sangat direkomendasikan, terutama dengan flexibilitasnya dalam pemilihan mode kerjanya. Dalam penelitian ini penulis akan menggunakan modul

Bluetooth seri HC-05[10].

2.4.2. Pengaturan HC-05 dengan AT-COMMAND

Pengaturan modul Bluetooth HC-05 dapat dilakukan dengan pengiriman AT-Command. AT-Command adalah antarmuka perangkat lunak utama untuk modul nirkabel. AT-Command menyediakan antarmuka untuk berinteraksi dengan modul untuk melakukan berbagai tugas seperti mendapatkan informasi tentang modul Bluetooth, Menganti nama devais modul, menganti kecepatan transmisi data dll Beberapa AT-Command yang ditetapkan dalam spesifikasi adalah opsional. Dalam hal ini, pengiriman AT-Command dilakukan melalui Arduino Uno. Untuk melakukan pengiriman AT-Command mode kerja modul Bluetooth HC-05 perlu diubah dari mode transmisi data menjadi mode konfigurasi dengan cara memberikan masukan high pada pin KEY pada modul Bluetooth HC-05. Selain itu juga diperlukan beberapa wiring dan sedikit program pada Arduino Uno melalui Arduino IDE. Pengiriman AT-Command dilakukan melalui serial monitor pada Arduino IDE seperti yang terlihat pada Gambar 2.9.


(41)

2.5. Pemodelan Kinematika Dalam Sistem Robotik

Kinematika robot adalah studi analitis pergerakan lengan robot terhadap sistem kerangka koordinat acuan yang diam/bergerak tanpa memperhatikan gaya yang menyebabkan pergerakan tersebut. Model kinematika merepresentasikan hubungan end-effector dalam ruang tiga dimensi dengan variabel sendi dalam ruang sendi. Persamaan kinematika maju mendeskripsikan posisi dan orientasi end-effector yang dinyatakan dalam posisi sendi. Sedangkan persamaan kinematika balik mendeskripsikan konfigurasi posisi sendi untuk menghasilkan posisi dan orientasi end-effector tertentu.

Secara garis besar sistem robotik terdiri dari sistem kontroler, elektronik dan mekanik. Dalam bentuk diagram blok dapat dinyatakan seperti dalam Gambar 2.10 berikut ini.

Gambar 2.10. Diagram Sistem Robotik [11]

G(s) adalah fungsi alih pengendali, sedangkan H(s) adalah fungsi alih elemen umpan balik untuk sistem robot secara fisik termasuk aktuator dan sistem elektroniknya. Komponen ri adalah masukan acuan yang dalam penerapannya dapat berupa posisi, kecepatan, dan percepatan. Dalam fungsi waktu, nilai masukan ini dapat bervariasi dan kontinyu yang membentuk suatu konfigurasi trayektori. Komponen e adalah nilai galat antara keluaran dan masukan acuan, sedangkan u adalah keluaran dari pengendali dan y

adalah fungsi gerak robot yang diharapkan selalu sama dengan acuan yang didefinisikan pada masukan ri.

Jika masukan merupakan fungsi dari suatu koordinat vektor posisi dan orientasi

P(x,y,z) dan keluarannya adalah θ(θ1, θ2,…, θn) dimana n adalah jumlah sendi atau DOF, maka Gambar 2.10 dapat digambar ulang seperti yang terlihat pada Gambar 2.11 berikut ini.


(42)

Gambar 2.11. Diagram Sistem Kontrol Robotik [11]

Dalam Gambar 2.11 di atas, keluaran yang diukur dari gerakan robot adalah dalam domain sudut dari sendi-sendi, baik sendi pada sistem tangan/kaki atau sudut dari perputaran roda jika robot tersebut adalah mobile robot. Sedangkan yang diperlukan oleh pengguna dalam pemrograman atau dalam pemetaan ruang kerja robot adalah posisi (ujung tangan atau titik tertentu pada bagian robot) yang dinyatakan sebagai koordinat 2D (kartesian) atau 3D. Dengan demikian perlu dilakukan transformasi koordinat antara ruang kartesian dengan ruang sendi/sudut ini. Pada Gambar 2.12 dinyatakan sebagai kinematika balik dan kinematika maju. Kombinasi antara transformasi koordinat P ke θ dengan pengendali G(s) disebut sebagai pengendali kinematika. Masukannya berupa sinyal galat

P, ep, sedangkan keluarannya adalah sinyal kemudi u untuk aktuator. Dalam konteks praktis, u adalah sinyal sinyal analog dari DAC untuk seluruh aktuator robot.

2.5.1. Konsep Kinematika

Dari Gambar 2.11, pengendali dinyatakan sebagai pengendali kinematik karena mengandung komponen transformasi ruang kartesian ke ruang sendi. Dengan demikian diperoleh keluaran pengendali u yang bekerja dalam ruang sendi, u(θ1, θ2,…, θn). Sebaliknya, pengendali memerlukan umpan balik dalam bentuk koordinat karena acuan diberikan dalam bentuk koordinat. Penjelasan ini dapat diilustrasikan dalam Gambar 2.12 berikut ini.


(43)

Dari Gambar 2.12 dapat diperoleh dua pernyataan mendasar, yaitu:

• Jika jari-jari r danθ dari suatu struktur robot n-DOF diketahui, maka posisi P(x,y,z) dapat dihitung. Jika θ merupakan sebuah fungsi berdasarkan waktu θ(t), maka posisi dan orientasi P(t) dapat dihitung juga secara pasti. Transformasi koordinat ini dikenal sebagai kinematika maju.

• Jika posisi dan orientasi P(t) diketahui maka, θ(t) tidak langsung dapat dihitung tanpa mendefinisikan berapa DOF struktur robot itu. Jumlah sendi n dari n-DOF yang dapat dibuat untuk melaksanakan tugas sesuai dengan posisi dan orientasi P(t) itu dapat bernilai n=(m,m+1, m+2,…,m+p) dimana m adalah jumlah sendi minimum dan p adalah jumlah sendi yang dapat ditambahkan. Robot berstruktur m-DOF disebut dengan robot nonredundant, sedang bila (m+p)-DOF maka disebut sebagai robot redundant. Transformasi ini dikenal sebagai kinematika balik (Invers Kinematics).

Dari pernyataan di atas nampak bahwa analisis kinematika maju adalah relatif sederhana dan mudah diimplementasikan. Di sisi lain, karena variabel-variabel bebas pada robot yang diperlukan dalam akusisi kendali adalah berupa variabel-variabel sendi (aktuator), sedang tugas yang didefinisikan hampir selalu dalam acuan koordinat kartesian, maka analisis kinematika balik lebih sering digunakan dan dikaji secara mendalam dalam dunia robotik. Jadi, kinematik dalam robotik adalah suatu bentuk pernyataan yang berisi tentang deskripsi matematik geometri dari suatu struktur robot. Dari persamaan kinematik dapat diperoleh hubungan antara konsep geometri ruang sendi pada robot dengan konsep koordinat yang biasa dipakai untuk menentukan kedudukan dari suatu obyek.

Model kinematik robot dapat dibedakan dalam dua kelompok model pergerakan, yaitu : 1. Holonomic

2. Nonholonomic

Gerakan holonomic dapat diumpamakan seperti sedang menulis dengan menggunakan pensil atau pulpen (ballpoint) di atas kertas. Ujung pensil atau pulpen dapat bergerak kesegala arah dipermukaan kertas sesuai keinginan. Gerak ujung pensil atau pulpen tersebut disebut sebagai gerak holonomic. Dalam robotik dapat diambil contoh misalnya robot manipulator.


(44)

Gambar 2.13. Gerakan Holonomic [11]

Berbeda dengan gerak nonholonomic. Ujung atau suatu titik yang memiliki sifat nonholonomic mempunyai keterbatasan dalam arah gerakan. Gerak nonholonomic dapat diilustrasikan seperti menggoreskan ujung pisau atau cutter ke atas permukaan kayu. Arah gerak nonholonomic ini dibatasi oleh efek sentuhan ujung pipih yang menempel pada permukaan kayu, sehingga tidak dapat bergerak dengan bebas ke kiri atau ke kanan tanpa mengikuti arah sisi yang tajam. Jika diinginkan gerakan melengkung ataupun sudut tajam terlebih dahulu harus mengarahkan sisi pisau yang tajam ke arah yang segaris dengan arah gerak yang diinginkan. Contoh klasik kinematik dalam robotik yang memiliki sifat nonholonomic adalah sistem penggerak dua roda kanan kiri pada mobile robot dengan satu atau lebih roda bebas ( castor ) untuk menjaga keseimbangan.

Gambar 2.14. Gerakan Nonholonomic [11]


(45)

2.5.2. Penggunaan Persamaan Trigonometri

Analisis persamaan kinematik dapat diselesaikan dengan cara paling dasar yaitu menggunakan persamaan trigonometri. Setiap komponen dalam koordinat (x, y, z) dinyatakan sebagai transformasi dari tiap-tiap komponen ruang sendi(r, θ). Jari-jari r dalam persamaan sering dituliskan sebagai panjang lengan atau link l. Untuk koordinat 2D komponen z tidak dapat dituliskan. Pada robot manipulator dapat dianalisis mulai dari satu sendi hingga tiga sendi.

Analisis kinematik lengan robot dengan satu sendi, yaitu

Gambar 2.16. Konfigurasi Lengan Robot Satu Sendi [11]

Kedudukan ujung lengan �(�,�) dapat diperoleh dengan cara kinematik balik atau

invers kinematics sebagai berikut,

= tan

−1

(

y

x

)

(2.1)

Analisis kinematik lengan robot dengan dua sendi, yaitu


(46)

Kedudukan ujung lengan dinyatakan sebagai �(�,�) sebagai berikut,

�(�,�) = �( 1,�2 ) ( 2.2 )

Jika P diasumsikan sebagai vektor penjumlahan yang terdiri dari vektor r1 lengan-1 dan r2 lengan r2, yaitu :

�1= [�1cos�1 , �1sin�1] ( 2.3 )

�2= [�2cos(�1+�2) ,�2sin(�1+�2)] ( 2.4 ) Maka,

�= �1cos�1+�2 cos⁡(�1+�2) ( 2.5 ) � =�1sin�1 +�2 sin⁡(�1+�2) ( 2.6 ) Kinematika balik lengan robot dapat dijabarkan sebagai berikut. Dengan menggunakan hukum identitas trigonometri,

cos (�+�) = cos(�) cos(�)−sin(�) sin⁡(�) (2.7)

sin (�+�) = sin(�) cos(�) + sin(�) cos⁡(�) (2.8)

Persamaan (2.5) dan (2.6) dapat ditulis kembali,

�= �1cos�1+�2cos�1cos�2− �2sin�1sin�2 (2.9) �= �1����1+�2sin�1cos�2+�2cos�1sin�2 (2.10) Dari dua persamaan terakhir ini kita dapat mencari

2 terlebih dahulu dengan mengeluarkan cos

2 dari kedua persamaan. Dengan operasi pangkat dua pada kedua nya, dan dikombinasikan diperoleh,

��� �

2

=

2+2−� 1 2−�

22 2�1�2

(2.11)

Sehingga,

2

= arccos

(

�2+2−� 1 2−�

22 2�1�2

)

(2.12)


(47)

tan

=

�2 sin�2

�2cos�2+�1

dan (2.13)

tan

=

� (2.14)

Sedangkan,

1

=

� − �

(2.15) Dengan menggunakan hukum identitas trigonometri,

tan(

� − �

) =

tan (�)− tan⁡(�)

1+tan (�) tan (�) (2.16)

Didapat

tan

1

=

(

y(�1+�2cos θ2) – x .�2sinθ2

x(�1+�2cosθ2) + y .�2sinθ2

)

(2.17)

Sehingga �1 dapat dihitung,

1

= arctan

(

y(�1+�2cos θ2) – x .�2sin θ2 x(�1+�2cos θ2) + y .�2sin θ2

)

(2.18)

Alhasil, Persamaan (2.12) dan (2.18) adalah persamaan kinematika balik bagi lengan robot dua sendi.

Analisis kinematik lengan robot dengan tiga sendi, yaitu


(48)

Dengan cara analisis kinematik balik yang sama seperti pada persamaan (2.3) hingga (2.8) koordinat �(� ,�) dapat diperoleh,

�� = �1cos�1+�2cos(�1+�2) +�3 cos⁡(�1+�2+�3) (2.19) �� = �1sin�1+�2sin(�1+�2) +�3 sin⁡(�1+�2+�3) (2.20) Dengan

�= (�1+�2 +�3) (2.21) Dimana, �adalah sudut arah hadap lengan-3 terhadap sumbu X. Sehingga, jika

(� ,�) dan (�,�) diketahui maka �2 dan �1 dapat dicari dengan menggunakan Persamaan (2.12) dan (2.18). Dari (� ,�) dan (�,�), � juga dapat dicari, sehingga �3


(49)

BAB III

PERANCANGAN SISTEM

Bab ini menjelaskan mengenai perancangan purwarupa lengan robot dengan 4 Degree Of Freedom (DOF) yang dikontrol dari Android berbasis Arduino. 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 tiga bagian besar, yaitu:

a. Proses Kerja Sistem.

b. Perancangan perangkat keras - Perancangan lengan robot.

- Rangkaian pengendali utama dan motor servo. c. Perancangan perangkat lunak

- Diagram Alir Utama.

- Perangkat lunak pengendali utama dengan Arduino IDE. - Perangkat lunak antarmuka dengan Android.

3.1. Proses Kerja Sistem

Gambar 3.1. merupakan blok diagram sistem. Pada blok diagram tersebut, perangkat keras yang akan dibuat terdiri dari lima bagian, yaitu sistem dari sistem operasi Android, Modul Bluetooth HC-05, Arduino Mega 2560, Servo Controller, dan Motor RC Servo. Rangkaian kontroler Arduino Mega 2560pada prinsipnya akan menerima data yang dikirimkan dari sistem operasi Android melalui Bluetooth yang akan diolah oleh modul

Bluetooth HC-05 yang terhubung secara serial dengan Arduino Mega 2560.

Data yang diterima oleh kontroler Arduino Mega 2560 tersebut akan diolah. Selanjutnya rangkaian kontroler Arduino Mega 2560 memberikan instruksi pada Motor RC Servo yang dikendalikan oleh Servo Controller.


(50)

Modul Bluetooth

HC-05

Arduino Mega 2560

RC-Servo (Sendi 1)

RC-Servo (Sendi 2)

RC-Servo (Sendi 3)

RC-Servo (Sendi 4) SO Android

BT

Servo Controller

Gambar 3.1. Blok Diagram Sistem

3.2. Perancangan Perangkat Keras ( Hardware )

3.2.1. Desain Lengan Robot

Gambar 3.2. merupakan gambar keseluruhan design 3D lengan robot menulis kata berbasis mikrokontroler arduino. Lengan robot ini disusun dengan 5 bagian utama sebagai aktuator yang akan digerakkan dengan motor RC servo. Kelima bagian utama ini disebut sebagai penghubung atau link, yang meliputi :

1. Base (bagian dasar) 2. Shoulder (bagian bahu) 3. Elbow (bagian siku) 4. Pitch (bagian pergelangan)

5. End-Effector (bagian ujung yang diberi spidol)

Sedangkan bagian yang berperan sebagai penggerak (sendi) berdasarkan gerakkan motor RC servo disebut sebagai joint.


(51)

Gambar 3.3. merupakan design 3D bagian dasar (base) yang berbentuk lingkaran berdiameter 25cm. Bagian ini terhubung dengan sebuah as yang memanjang ke bawah dan mempunyai roda gigi. Roda gigi pada as berhubungan dengan roda gigi pada sebuah motor RC servo yang digunakan sebagai penggerak. Base bergerak secara rotasi dan dapat menyebabkan perubahan posisi pada lengan-lengan penghubung yang lain.

Gambar 3.3. Bagian Base dan Penggeraknya

Gambar 3.4. merupakan dimensi dari lengan robot dimana bagian shoulder

memiliki panjang lengan 18cm dan bergerak secara rotasi dengan 2 buah motor RC servo. Bagian elbow memiliki panjang lengan 12cm dan bergerak secara rotasi dengan sebuah motor RC servo. Bagian pitch memiliki panjang lengan 5cm dan bergerak secara rotasi dengan sebuah motor RC servo. Bagian end-effector adalah bagian yang digunakan untuk mencekam spidol. Panjang end-effector sampai pada ujung spidol memiliki panjang 10cm. Total keseluruhan panjang lengan robot dari pangkal shoulder sampai pada ujung spidol adalah 45cm. Besarnya dimensi berupa panjang yang dimiliki oleh keseluruhan penghubung (link) menentukan kemampuan sebagai jangkauan lengan robot ketika melakukan gerakkan.


(52)

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 sudut-sudut yang terjadi pada setiap penghubung (link) dari titik acuan awal yaitu pada bagian pangkal dari bahu (shoulder).

(a) (b)

Gambar 3.5. (a) Desain 3D End-Effector Lengan Robot. (b) Desain 3D Whiteboard

Gambar 3.5.a adalah desain 3D end-effector dari prototipe lengan robot yang akan dibuat. Berfungsi sebagai tempat menaruh spidol yang akan digunakan untuk menulis. Bagian ini akan ditempelkan pada bagian ujung dari lengan 3 pada lengan robot dengan bantuan 2 buah baut untuk mengunci end-effector dengan lengan 3. Gambar 3.5.b adalah desain dari whiteboard yang akan digabung dengan meja.

Lengan robot menulis kata ini menggunakan motor RC servo sebanyak 5 buah. Pemilihan motor RC servo yang digunakan pada setiap joint berdasarkan pada kemampuan yang harus dimiliki setiap joint untuk mengangkat beban. Beban dapat berupa berat lengan (link). 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:


(53)

Tabel 3.1. Tabel Perkiraan Berat Lengan dan Beban yang Diangkat Lengan

NO. Lengan Penghubung (link) Perkiraan Berat setiap lengan

Beban yang diangkat setiap

lengan

1. End-Effector 200gr 200gr

2. Pitch 120gr 320gr

3. Elbow 200gr 520gr

4. Shoulder 500gr 1020gr

5. Base 200gr 200gr

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 menulis kata menggunakan material aluminium karena ringan dan mudah dikerjakan. Pada tabel 3.1. bagian base diasumsikan memiliki berat yang ringan walaupun 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 sebesar 10 kgf.cm.

Pada bagian pitch beban yang harus diangkat adalah 320gram karena bagian pitch

selain mengangkat lengannya sendiri juga harus mengangkat seluruh bagian end-effector. Bagian pitch memiliki panjang 5 cm dan bagian end-effector sampai ujung spidol memiliki panjang 10 cm, sehingga panjang lengan yang harus diangkat adalah 15 cm. Berikut adalah perhitungan untuk merancang torsi pada bagian pitch :

m = 320gram = 0,32 kg

r = 15 cm

F = m x a = 0,32 kg x 10 m/s2 = 3,2 N = 3,2 Kg m/s2


(54)

τ

=

F

×

r

= 0,3264 Kg × 15 cm = 4,896 Kg.cm

Pada bagian elbow beban yang harus diangkat adalah 520 gram, sedangkan panjang lengan yang harus diangkat motor RC servo adalah 27 cm yang dihitung dari panjang lengan elbow, panjang lengan pitch dan panjang end-effector. Kebutuhan torsi motor RC

servo pada perancangan lengan robot :

m = 520gram = 0,52 kg

r = 27 cm

F = m x a = 0,52 kg x 10 m/s2 = 5,2 N = 5,2 Kg m/s2

5,2 N x 0,102 = 0,5304 Kg

τ

=

F

×

r

= 0,5304 Kg × 27 cm = 14,3208 Kg.cm

Pada bagian shoulder beban yang harus diangkat adalah 1020 gram, sedangkan panjang lengan yang harus diangkat motor RC servo adalah 45 cm yang dihitung dari panjang lengan shoulder, panjang lengan elbow, panjang lengan pitch dan panjang end-effector. Kebutuhan torsi motor RC servo pada perancangan lengan robot :

m = 1020 gram = 1,020 kg

r = 45 cm

F = m x a = 1,020 kg x 10 m/s2 = 10,20 N = 10,20 Kg m/s2

10,20 N x 0,102 = 1,0404 Kg

τ

=

F

×

r

= 1,0404 Kg × 45 cm = 46,818 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 23,409 Kg.cm (46,818 Kg.cm : 2 = 23,409 Kg.cm) yang akan dipasang pada shoulder 1 dan shoulder 2.


(55)

Gambar 3.6. Desain 3D Keseluruhan Prototipe Lengan Robot

Pada gambar 3.6. merupakan tampilan desain 3D 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.

Desain lengan robot ini dikendalikan oleh motor servo yang memiliki gerakan yang terbatas. Motor servo yang digunakan memiliki batas putar. Batas putar motor servo tersebut adalah 1800 . Tetapi sudut yang digunakan pada lengan robot tidak digunakan pada posisi maksimal. Sudut yang digunakan disesuaikan dengan sudut maksimal pada lengan robot. Sudut maksimal yang dapat di jangkau oleh lengan robot sebagai berikut :

Tabel 3.2. Tabel Perkiraan Panjang Lengan dan Sudut Maksimal yang Dapat Dijangkau

NO. Lengan Penghubung (link) Panjang lengan Sudut maksimal yang dapat dijangkau

1. Gripper + benda 10cm 1800

2. Pitch 5cm 1800

3. Elbow 12cm 1800

4. Shoulder 18cm 1800

5. Base ( berputar pada poros ) 0cm 900

Pada analisis kinematika lengan robot ( robot manipulator ) secara geometri akan menggunakan pendekatan trigonometri dan pitagoras segitiga, tetapi hal tersebut hanya

z x y


(56)

dapat dilakukan pada bidang 2D. Kinematika lengan robot tersebut dapat dianalisis secara 2D tetapi dilakukan dengan cara melakukan analisis tersebut dari 2 pandangan yang berbeda. Pandangan yang digunakan adalah pandangan atas dan pandangan samping. Dari pandangan atas dapat dianalisis koordianat X dan Y. Pada pandangan samping dapat dianalisis koordianat X dan Z.

Gambar 3.7. Desain 3D Keseluruhan Prototipe Lengan Robot Tampak Atas

Gambar 3.8. Desain 3D Keseluruhan Prototipe Lengan Robot Tampak Samping Berdasarkan Gambar 3.7. dan Gambar 3.8. diatas, dapat dilakukan pencarian nilai dari sudut joint (�1,�2,�3,����4) satu per satu. Langkah pertama yang akan dilakukan adalah mencari nilai sudut �1. Untuk mempermudah perhitungan, maka lengan robot digambarkan sumbu X, Y, dan Z. Berdasarkan wilayah pergerakannya, sudut �1 bergerak di wilayah horisontal atau berada pada sumbu X dan Y, sedangkan sumbu Z tidak

Y

X

Z


(57)

berpengaruh pada pergerakan sudut �1. Hal ini dikarenakan rotasi sudut �1 searah dengan sumbu Z. Maka dari itu, saat lengan robot tersebut dipandang dari atas, dapat dianalogikan seperti lengan robot satu sendi, sehingga nilai sudut �1 dapat dicari dengan persamaan 2.2. Apabila dilihat dengan sudut pandang 2D, maka:

Gambar 3.9. Desain 2D Sederhana Lengan Robot Tampak Atas

Dari Gambar 3.9. diperoleh nilai Px dan Py. Dari kedua nilai tersebut dapat diperoleh nilai sudut �1 dengan menerapkan persamaan 2.2. Berdasarkan persamaan 2.2 maka nilai sudut �1 sebagai berikut :

Diketahui :

Px = 30 cm

Py = 15 cm

Berdasarkan persamaan 2.2 maka diperoleh sudut �1 sebagai berikut :

1

= arctan

(

30 15

)

�1 = 63,43°

Setelah mendapatkan nilai sudut �1, maka langkah selanjutnya adalah mencari nilai sudut �2, nilai sudut �3, serta nilai sudut �4. Berdasarkan Gambar 3.10. sudut �2, sudut �3, serta sudut �4 berada di wilayah pergerakan yang sama, yaitu wilayah vertical. Sehingga ketiga sudut tersebut akan saling mempengaruhi. Hal ini mengakibatkan pentingnya menentukan nilai sudut mana yang akan dihitung terlebih dahulu. Pada awal perancangan sudah ditetapkan bahwa lengan 3 dan end-effector akan selalu tegak lurus terhadap bidang horisontal atau XY. Oleh karena itu, untuk mempermudah perhitungan maka nilai sudut �4

�1


(58)

akan ditetapkan sebelumnya dan untuk mencari nilai sudut yang lainnya akan dimulai dari sudut yang berada lebih dekat dengan end-effector. Yakni, sudut �3 kemudian sudut �2.

Gambar 3.10. Desain 2D Sederhana Lengan Robot Tampak Samping

Dari Gambar 3.10. diperoleh nilai x dan z serta panjang lengan 1, lengan 2, dan lengan 3 yang sebelumnya telah ditentukan. Dari komponen-komponen tersebut dapat diperoleh nilai sudut �3, serta sudut �2 dengan menerapkan persamaan 2.13 dan persamaan 2.19. Berdasarkan persamaan 2.13 maka nilai sudut �3 sebagai berikut :

Diketahui : x = 20 cm z = 6 cm

�1 = 18 cm �2 = 12 cm

Mencari nilai sudut �3 berdasarkan persamaan 2.13 maka diperoleh sebagai berikut:

3

= arccos

(

202+62−182−122 2�18�12

)

�3 = 94,24°

Dikarenakan posisi lengan 2 berada dibawah garis perpanjangan lengan 1 yang berada pada sudut 0°, maka nilai sudut dari �3 menjadi negatif.sehingga nilai sudut �3 menjadi -94,240.

Berdasarkan persamaan 2.19 maka nilai sudut �2 sebagai berikut : Diketahui :

x = 20 cm z = 6 cm


(59)

�2 = 12 cm

Mencari nilai sudut �2 berdasarkan persamaan 2.19 maka diperoleh sebagai berikut:

2

= arctan

(

6(18+12 cosθ3) – 20 x 12 sinθ3 20(18+12 cos θ3) + 6 x 12 sinθ3

)

�2 = 51,66°

Berdasarkan persamaan 2.22 maka nilai sudut �4 sebagai berikut : Diketahui :

�2 = 51,66° �3 = −94,24° �= 180°

Mencari nilai sudut �4 berdasarkan persamaan 2.22 maka diperoleh sebagai berikut:

�4 =−94,24°−51,66°+ 180° �4 = 34,1°

Sebuah kata terdiri dari beberapa huruf, maka dari itu dalam menulis sebuah kata lengan robot akan menulis satu per satu huruf. Dalam penelitian ini huruf yang digunakan adalah huruf kapital dengan jenis huruf seperti fourteen-segment. Dimana dalam setiap huruf tersebut terdiri dari beberapa titik acuan. Gambar 3.11. merupakan contoh beberapa titik acuan di tiap huruf dan ukuran huruf dalam menulis kata dengan jarak spasi 1cm. Gambar 3.12. merupakan bentuk keseluruhan huruf beserta titik acuannya. Titik acuan ini yang akan dituju oleh end-effector dari lengan robot tersebut dan antar titik acuan akan saling terhubung dengan bantuan spidol yang berada pada end-effector dan menempel di

whiteboard yang sekaligus akan membentuk garis antar titik acuan. Kemudian, kumpulan garis-garis antar titik acuan ini akan membentuk sebuah huruf. Dalam mencapai satu titik acuan dibutuhkan nilai-nilai sudut dari setiap sendi pada lengan robot tersebut. Maka dari itu, dalam mencari nilai-nilai sudut tersebut dapat dilakukan dengan cara seperti diatas yang berdasarkan persamaan-persamaan analisa kinematika balik sebelumnya.


(60)

Gambar 3.12. Bentuk Keseluruhan Huruf Beserta Titik Acuannya.

3.2.2.

Perancangan Pengendali Utama

Rangkaian pengendali utama berfungsi untuk mengontrol gerakan lengan robot. Pengendali tersebut terdiri dari Arduino Mega 2560, Modul Bluetooth HC-05 dan Servo Controller. Seperti Gambar 3.13. Arduino Mega 2560 dan modul Bluetooth HC-05 dihubungkan dengan cara komunikasi serial. Pin Tx pada modul Bluetooth HC-05 dihubungkan pada pin nomor 10 pada Arduino Mega 2560, kemudian pin Rx pada modul

Bluetooth HC-05 dihubungan pada pin nomor 11 di Arduino Mega 2560 dimana pin nomor 10 dan 11 pada Arduino sudah diatur sebagai komunikasi serial pada software. Selain itu Arduino Mega 2560 dikomunikasikan dengan Servo Controller. Komunikasi tersebut menggunakan komunikasi I2C, komunikasi tersebut memanfaatkan pin SDA dan SCL pada Arduino Mega 2560 dan pada Servo Controller. Komunikasi I2C dipilih agar pengiriman data lebih cepat.

Servo Controller tersebut dapat menggerakkan 16 servo secara bersamaan atau sekuensial. Servo controller tersebut menggunakan sumber tegangan yang terpisah dengan Arduino.


(1)

pwm.setPWM(12, 0, i); delay (20);}}

sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //Elbow if(sudut3 > sudut13){

for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{

for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i);

delay (20);}}

sudut121 = map(90,0, 180, SERVOMIN2,SERVOMAX2); //Shoulder 1 dan 2 if(sudut12 > sudut121){

for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i);//shoulder1 pwm.setPWM(4, 0, i);//shoulder1 delay (20);}}

else{

for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i);//shoulder1 pwm.setPWM(4, 0, i);//shoulder2 delay (20);}}

delay(1000);

sudut21 = map(107,0, 180, SERVOMIN1,SERVOMAX1); //Base bergeser if(sudut11 > sudut21){

for(int i=sudut11; i>=sudut21; i--){ pwm.setPWM(0, 0, i);

delay (20);}} else{

for(int i=sudut11; i<=sudut21; i++){ pwm.setPWM(0, 0, i);

delay (20);}} }

void garis55() {

sudut11 = map(130,0, 180, SERVOMIN1,SERVOMAX1); //BASE if(sudut1 > sudut11){

for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{

for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i);

delay (20);}}

sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){

for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{

for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i);

pwm.setPWM(4, 0, i); delay (20);}}

sudut14 = map(52,120,0, SERVOMIN4,SERVOMAX4); //PITCH if(sudut4 > sudut14){

for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{

for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}}

sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //ELBOW if(sudut3 > sudut13){

for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{

for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i);

delay (20);}}


(2)

if(sudut12 > sudut121){

for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i);

pwm.setPWM(4, 0, i); delay (20);}} else{

for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i);

pwm.setPWM(4, 0, i); delay (20);}} delay(1000);

sudut24 = map(60,120,0, SERVOMIN4,SERVOMAX4); //PITCH turun if(sudut14 > sudut24){

for(int i=sudut14; i>=sudut24; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{

for(int i=sudut14; i<=sudut24; i++){ pwm.setPWM(12, 0, i);

delay (20);}} }

void garis56() {

sudut11 = map(130,0, 180, SERVOMIN1,SERVOMAX1); //BASE if(sudut1 > sudut11){

for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{

for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i);

delay (20);}}

sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){

for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{

for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i);

pwm.setPWM(4, 0, i); delay (20);}}

sudut14 = map(43,120,0, SERVOMIN4,SERVOMAX4); //PITCH if(sudut4 > sudut14){

for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{

for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i);

sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //ELBOW if(sudut3 > sudut13){

for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{

for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i);

delay (20);}}

sudut121 = map(92,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut12 > sudut121){

for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i);

pwm.setPWM(4, 0, i); delay (20);}} else{

for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i);

pwm.setPWM(4, 0, i); delay (20);}}

delay(1000);

sudut24 = map(53,120,0, SERVOMIN4,SERVOMAX4); //PITCH turun if(sudut14 > sudut24){


(3)

for(int i=sudut14; i>=sudut24; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{

for(int i=sudut14; i<=sudut24; i++){ pwm.setPWM(12, 0, i);

delay (20);}} }

void garis57() {

sudut11 = map(134,0, 180, SERVOMIN1,SERVOMAX1); //BASE if(sudut1 > sudut11){

for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{

for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i);

delay (20);}}

sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){

for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{

for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i);

pwm.setPWM(4, 0, i); delay (20);}}

sudut14 = map(42,120,0, SERVOMIN4,SERVOMAX4); //PITCH if(sudut4 > sudut14){

for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{

for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}}

sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //ELBOW if(sudut3 > sudut13){

for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{

for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i);

delay (20);}}

sudut121 = map(91,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut12 > sudut121){

for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i);

pwm.setPWM(4, 0, i); delay (20);}} else{

for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i);

pwm.setPWM(4, 0, i); delay (20);}} delay(1000);

sudut24 = map(51,120,0, SERVOMIN4,SERVOMAX4); //PITCH turun if(sudut14 > sudut24){

for(int i=sudut14; i>=sudut24; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{

for(int i=sudut14; i<=sudut24; i++){ pwm.setPWM(12, 0, i);

delay (20);}} }

void garis58() {

sudut11 = map(140,0, 180, SERVOMIN1,SERVOMAX1); //Base if(sudut1 > sudut11){


(4)

pwm.setPWM(0, 0, i); delay (20);}} else{

for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i);

delay (20);}}

sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){

for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{

for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i);

pwm.setPWM(4, 0, i); delay (20);}}

sudut14 = map(48,120,0, SERVOMIN4,SERVOMAX4); //Pitch if(sudut4 > sudut14){

for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{

for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}}

sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //Elbow if(sudut3 > sudut13){

for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{

for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i);

delay (20);}}

sudut121 = map(90,0, 180, SERVOMIN2,SERVOMAX2); //Shoulder 1 dan 2 if(sudut12 > sudut121){

for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i);

pwm.setPWM(4, 0, i); delay (20);}} else{

for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i);

pwm.setPWM(4, 0, i); delay (20);}}

delay(1000);

sudut21 = map(115,0, 180, SERVOMIN1,SERVOMAX1); //Base bergeser if(sudut11 > sudut21){

for(int i=sudut11; i>=sudut21; i--){ pwm.setPWM(0, 0, i);

delay (20);}} else{

for(int i=sudut11; i<=sudut21; i++){ pwm.setPWM(0, 0, i);

delay (20);}} }

void garis59() {

sudut11 = map(134,0, 180, SERVOMIN1,SERVOMAX1); //BASE if(sudut1 > sudut11){

for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{

for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i);

delay (20);}}

sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){

for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}}


(5)

else{

for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i);

pwm.setPWM(4, 0, i); delay (20);}}

sudut14 = map(50,120,0, SERVOMIN4,SERVOMAX4); //PITCH if(sudut4 > sudut14){

for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{

for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i); delay (20);}}

sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //ELBOW if(sudut3 > sudut13){

for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{

for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i);

delay (20);}}

sudut121 = map(91,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut12 > sudut121){

for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i);

pwm.setPWM(4, 0, i); delay (20);}} else{

for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i);

pwm.setPWM(4, 0, i); delay (20);}} delay(1000);

sudut24 = map(59,120,0, SERVOMIN4,SERVOMAX4); //PITCH turun if(sudut14 > sudut24){

for(int i=sudut14; i>=sudut24; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{

for(int i=sudut14; i<=sudut24; i++){ pwm.setPWM(12, 0, i);

delay (20);}} }

void garis510() { // karakter 5 garis 10

sudut11 = map(135,0, 180, SERVOMIN1,SERVOMAX1); //Base if(sudut1 > sudut11){

for(int i=sudut1; i>=sudut11; i--){ pwm.setPWM(0, 0, i); delay (20);}} else{

for(int i=sudut1; i<=sudut11; i++){ pwm.setPWM(0, 0, i);

delay (20);}}

sudut12 = map(110,0, 180, SERVOMIN2,SERVOMAX2); //SHOULDER 1 DAN 2 if(sudut2 > sudut12){

for(int i=sudut2; i>=sudut12; i--){ pwm.setPWM(2, 0, i); pwm.setPWM(4, 0, i); delay (20);}} else{

for(int i=sudut2; i<=sudut12; i++){ pwm.setPWM(2, 0, i);

pwm.setPWM(4, 0, i); delay (20);}}

sudut14 = map(50,120,0, SERVOMIN4,SERVOMAX4); //Pitch if(sudut4 > sudut14){

for(int i=sudut4; i>=sudut14; i--){ pwm.setPWM(12, 0, i); delay (20);}} else{

for(int i=sudut4; i<=sudut14; i++){ pwm.setPWM(12, 0, i);


(6)

delay (20);}}

sudut13 = map(40,180,0, SERVOMIN3,SERVOMAX3); //Elbow if(sudut3 > sudut13){

for(int i=sudut3; i>=sudut13; i--){ pwm.setPWM(6, 0, i); delay (20);}} else{

for(int i=sudut3; i<=sudut13; i++){ pwm.setPWM(6, 0, i);

delay (20);}}

sudut121 = map(91,0, 180, SERVOMIN2,SERVOMAX2); //Shoulder 1 dan 2 if(sudut12 > sudut121){

for(int i=sudut12; i>=sudut121; i--){ pwm.setPWM(2, 0, i);

pwm.setPWM(4, 0, i); delay (20);}} else{

for(int i=sudut12; i<=sudut121; i++){ pwm.setPWM(2, 0, i);

pwm.setPWM(4, 0, i); delay (20);}}

delay(1000);

sudut21 = map(108,0, 180, SERVOMIN1,SERVOMAX1); //Base bergeser if(sudut11 > sudut21){

for(int i=sudut11; i>=sudut21; i--){ pwm.setPWM(0, 0, i);

delay (20);}} else{

for(int i=sudut11; i<=sudut21; i++){ pwm.setPWM(0, 0, i);

delay (20);}} }