Robot soccer beroda berbasis raspberry PI 3 sebagai prototype ERSBI 2017

(1)

TUGAS AKHIR

ROBOT SOCCER BERODA BERBASIS RASPBERRY

PI 3 SEBAGAI PROTOTYPE ERSBI 2017

Diajukan Untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Teknik

Program Studi Teknik Elektro

STEVANUS DAMAITYAS FAJAR

NIM : 135114003

JURUSAN TEKNIK ELEKTRO

FAKULTAS SAINS DAN TEKNOLOGI

UNIVERSITAS SANATA DHARMA

YOGYAKARTA


(2)

SMALL SIZE SOCCER ROBOT BASSE ON

RASPBERRY PI 3 AS ERSBI 2017’s PROTOTYPE

Presented as Partial Fulfilment of the Requierment To Obtain the Sarjana Teknik Degree In Electrical Engineering Study Program

STEVANUS DAMAITYAS FAJAR

NIM : 135114003

ELECTRICAL ENGINEERING STUDY PROGRAM

FACULTY OF SCIENCE AND TECHNOLOGY

SANATA DHARMA UNIVERSITY

YOGYAKARTA

2017

ii


(3)

TUGAS AKHIR

ROBOT SOCCER BERODA BERBASIS RASPBERRY

PI 3 SEBAGAI PROTOTYPE ERSBI 2017

Oleh :

STEVANUS DAMAITYAS FAJAR

NIM : 135114003

Telah disetujui oleh :

Pembimbing

Ir. Tjendro M.Kom. Tanggal : 24 Mei 2017


(4)

HALAMAN PENGESAHAN

TUGAS AKHIR

ROBOT SOCCER BERODA BERBASIS RASPBERRY

PI 3 SEBAGAI PROTOTYPE ERSBI 2017

oleh :

STEVANUS DAMAITYAS FAJAR

NIM : 135114003

Telah dipertahankan di depan panitia penguji Pada tanggal 2 Juni 2017

Telah disetujui oleh:

Susunan Panitia Penguji:

Nama Lengkap Tanda Tangan

Ketua Martanto S.T., M.T. ………...

Sekretaris Ir. Tjendro M.T. ………...

Anggota Petrus Setyo Prabowo S.T., M.T. ………...

Yogyakarta,

Fakultas Sains dan Teknologi Universitas Sanata Dharma Dekan,

Sudi Mungkasi, S.Si.,M.Math.Sc.,Ph.D


(5)

PERNYATAAN KEASLIAN KARYA

Saya menyatakan dengan sesungguhnya bahwa tugas akhir ini tidak memuat karya orang lain, kecuali yang saya sebutkan dalam kutpan dan daftar pustaka layaknya sebuah karya ilmiah.

Yogyakarta, 26 Mei 2017

Stevanus Damaityas Fajar


(6)

HALAMAN PERSEMBAHAN DAN MOTTO HIDUP

MOTTO :

Do What You Love and Love What You Do

Skripsi ini saya persembahkan untuk...

Tuhan Yesus Juruslamatku,

Ayah, Ibu, Simbah, dan seluruh keluarga yang tercinta,

Maria Isabella yang tersayang,

dan Teman-teman dari Teknik Elektro dan lainya.


(7)

LEMBAR PERNYATAN PERSETUJUAN PUBLIKASI

KARYA ILMIAH UNTUK KEPENTINGAN

AKADEMIS

Yang bertanda tangan di bawah ini, saya mahasiswa Universitas Sanata Dharma:

Nama : Stevanus Damaityas Fajar

Nomor Kemahasiswaan : 135114003

Demi pengembangan ilmu pengetahuan, saya memberikan kepada perpustakaan Universitas Sanata Dharma karya ulmiah saya berjudul :

ROBOT SOCCER BERODA BERBASIS RASPBERRY

PI 3 SEBAGAI PROTOTYPE ERSBI 2017

Beserta perangkat yang diperlukan ( bila ada ). Dengan demikian saya memberikan kepada Perpustakaan Universitas Sanata Dharma hak untuk menyimpan, mengalihkan dalam bentuk media lain, mengolahnya dalam bentuk pangkalan data, mendistribusikan secara terbatas dan mempublikannya di internet atau media lain untuk kepentingan akademis tampa perlu meminta ijin dari saya maupun memberikan royalty kepada saya selama tetap mencantumkan nama saya sebagai penulis.

Demikian pernyataan ini saya buat dengan sebenarnya.

Yogyakarta, 26 Mey 2017

(Stevanus Damaityas Fajar)


(8)

INTISARI

Perkembangan teknologi robotika di Indonesia tidaklah lepas dari Kontes Robot Indonesia (KRI). Diadakanya KRI bertujuan untuk meningkatkan kreativitas dan kemampuan mahasiswa perguruan tinggi dalam pengembangan teknologi robotika. KRI terdiri dari beberapa cabang atau divisi, salah satunya adalah Ekshibisi Robot Soccer Beroda Indonesia (ERSBI). Penelitian ini bertujuan membuat sebuah prototipe robot ERSBI yang dapat dimanfaatkan oleh Teknik Elektro Universitas Sanata Dharma di dalam KRI.

Penelitian ini menggunakan komputer mini Raspberry Pi 3 sebagai pengendali. Pengambilan keputusan dalam penelitian ini berdasarkan pada data yang diterima dari

coach computer. Penelitian ini berkomunikasi secara nirkabel dengan coach computer

menggunakan modul socket python untuk mengirim dan menerima data yang diperlukan. Dari data yang diterima keputusan akan diambil untuk mencapai sebuah titik tertentu. Penelitian ini didukung oleh motor dc untuk bergerak dan menggiring bola, solenoid untuk menendang bola , dan sensor jarak untuk mendeteksi adanya bola.

Sistem dalam penelitian ini berhasil membuat sebuah prototipe robot ERSBI yang dapat berkomunikasi, dan mengambil keputusan dengan baik. Sistem berhasil mengabil keputusan untuk bergerak menuju tempat atau titik dengan data dari coach computer

dengan rata-rata error posisi akhir x adalah 1,66% dan y adalah 3,13%. Sistem berhasil berkomunikasi dengan sangat baik karena data yang dikrim dan data yang diterima adalah sama.

kata kunci : KRI, Robot Soccer, Raspberry Pi, Python.


(9)

ABSTRACT

The development of robotics technology in Indonesia is not separated from Kontes Robot Indonesia (KRI). KRI held aimed at improving the creativity and ability of college students in the development of robotics technology. KRI consists of several branches or divisions, one of which is the Ekshibishi Robot Soccer Beroda Indonesia (ERSBI). This research aims to create a prototype of ERSBI robot that can be utilized by Electrical Engineering study program of Sanata Dharma University in KRI.

This research uses a Raspberry Pi 3 as a main controller. Decision making in this research is based on data, that received from coach computer. This research communicates with a coach computer using a python socket module to send and receive required data by wireless. From the received data decision will be taken to reach a certain point. This research is supported by dc motors for moving and dribbling ball, solenoid to kick the ball, and proximity sensor to detect the ball.

The system in this research successfully created a ERSBI’ robot prototype that can communicate, and make decisions well. The system succeeds making the decision to move toward a place or point with data received from the coach computer with an average error of x position is 1.66% and y position is 3.13%. The system succeeds communicating very well because the data send and the data received is same.

keywords : KRI, Soccer Robot, Raspberry Pi, Python


(10)

KATA PENGANTAR

Puji dan syukur penulis panjatkan kepada Tuhan Yesus Kristus karena atas segala rahmat-Nya sehingga penulis dapat menyelesaikan laporan tugas akhir ini dengan baik. Laporan tugas ini disusun untuk memenuhi syarat memperoleh gelar sarjana.

Selama pembuatan tugas akhir ini penulis menyadari bahwa begitu banyak pihak yang memberikan bantuan baik berupa ide atau gagasan, dukungan moral, maupun bantuan materi. Oleh karena itu, peneliti ingin mengucapkan terimakasih kepada :

1. Kedua orangtua penulis ayah Agustinus Yulianto dan ibu Lucia Sriwiningsih, dan seluruh keluarga yang telah banyak memberikan dukungan, kasih sayang dan motivasi selama ini.

2. Petrus Setyo Prabowo S.T., M.T. . Ketua Program Studi Teknik Elektro Universitas Sanata Dharma.

3. Ir. Tjendro M.Kom., Dosen pembimbing yang dengan penuh kasih, kesabaran dan pengertian untuk membimbing dalam menyelesaikan Tugas Akhir ini.

Penulis menyadari bahwa dalam penyusunan tugas akhir masih memiliki kekurangan. Oleh karena itu, penulis mengharapkan masukan kritik dan saran yang membangun agar tugas akhir ini menjadi lebih baik. Semoga tugas akhir ini dapat bermanfaat sebagaimana mestinya.

Yogyakarta, 26 Mey 2017 Penulis

Stevanus Damaityas Fajar


(11)

Daftar Isi

TUGAS AKHIR...i

FINAL PROJECT...ii

HALAMAN PERSETUJUAN...iii

HALAMAN PENGESAHAN...iv

PERNYATAAN KEASLIAN KARYA...v

HALAMAN PERSEMBAHAN DAN MOTTO HIDUP...vi

LEMBAR PERNYATAN PERSETUJUAN PUBLIKASI KARYA ILMIAH UNTUK KEPENTINGAN AKADEMIS...vii

INTISARI...viii

ABSTRACT...ix

KATA PENGANTAR...x

Dartar Gambar...xiv

Daftar Tabel...xvi

BAB I PENDAHULUAN...1

1.1 Latar Belakang...1

1.2 Tujuan dan Manfaat Penelitian...2

1.3 Batasan Masalah...2

1.4 Metodologi Penelitian...3

Gambar 1.1. Diagram Blok Perancangan...3

BAB I DASAR TEORI...5

2.1 Raspberry Pi 3...5

2.1.1 Spesifikasi...5

2.1.2 GPIO (General Purpose Input Output)...6

2.2 Python...6

2.3 Module Socket...7

2.4 DT-Proto Arduino Shield...8

2.5 Driver Motor L298...8

2.6 Sensor Jarak...9

2.7 Teorema Pythagoras...10


(12)

2.10 Solenoid...12

BAB III RANCANGAN PENELITIAN...13

3.1 Perancangan Perangkat Keras (Hardware)...13

3.1.1 Perancangan Mekanik...14

3.1.2 Perancangan Elektrik Sistem pengendali...16

3.1.2.1 Rangkaian Raspberry Pi dengan DT-Proto Arduino Pi-Shield...16

3.1.2.2 Rangakaian DT-Proto Arduino Pi-Shield dengan Modul Driver Motor L298 dan Sensor Bola...17

3.2 Perancangan Perangkat Lunak (Software)...18

3.2.1 Perancangan Perangkat Lunak Secara Umum...18

3.2.2 Perancangan Perangkat Lunak Komunikasi...24

BAB IV HASIL DAN PEMBAHASAN...25

4.1 Implementasi Penelitian...25

4.1.1 Bentuk Fisik Robot...25

4.1.2 Sistem KelistrikanRobot...27

4.1.3 Software Robot...28

4.1.3.1 Program Komunikasi...29

4.1.3.2 Fungsi kode_data...30

4.1.3.3 Penentuan Error Sudut...30

4.1.3.4 Fungsi PID...32

4.2 Perubahan Perancangan...33

4.2.1 Perubahan Bentuk Robot...33

4.2.2 Perubahan Warna Pengenal Robot...34

4.2.3 Perubahan Penggunaan Level Shifter...34

4.2.4 Perubahan Kode dan Format Pengiriman...35

4.3 Pengujian Robot...36

4.3.1 Pengujian Komunikasi...36

4.3.2 Pengujian Response Robot...37

BAB V KESIMPULAN DAN SARAN...42

5.1 Kesimpulan...42

5.2 Saran...42


(13)

(14)

Dartar Gambar

Gambar 1.1. Diagram Blok Perancangan...3

Gambar 2.1. Raspberry Pi...5

Gambar 2.2. General Purpose Input Output[3]...6

Gambar 2.3. DT-Proto Arduino PiShield...8

Gambar 2.4. Selektor Tegangan...8

Gambar 2.5. Modul Driver Motor l298...9

Gambar 2.6. Obstacle Avoidance Sensor Module...9

Gambar 2.7. Segitiga Siku-siku...10

Gambar 2.8. Motor DC...11

Gambar 2.9. Arah Arus dan Medan Magnet...11

Gambar 2.10 Solenoid...12

Gambar 2.11 Medan Magnet...12

Gambar 3.1. Blok Diagram Sistem...13

Gambar 3.2. Rancangan Robot...14

Gambar 3.3. Rancngan Robot Tampak Belakang...14

Gambar 3.4. Rancangan Robot Tampak Depan...15

Gambar 3.5. Rancangan Robot Tampak Samping...15

Gambar 3.6.Rancangan Robot...15

Gambar 3.7. Solenoid Penendang...16

Gambar 3.8. Rangkaian Raspberry Pi dengan DT-Proto Arduino Pi-Shield[16]...16

Gambar 3.9. Rangkaian Level Shifter ke Driver Motor l298...17

Gambar 3.10. DT-Proto Arduino Pi Shield ke Sensor bola...18

Gambar 3.11. Diagram Alir Perancangan Perangkat Lunak...19

Gambar 3.12. Flowchart Fungsi Eksekusi...20

Gambar 3.13. Flowchart Fungsi Menuju Target...20

Gambar 3.14. Flowchart Fungsi Rebut Bola...21

Gambar 3.15. Flowchart Fungsi Menuju Gawang...22

Gambar 3.16. Flowchart Fungsi Menghindar...22

Gambar 3.17. Flowchart Fungsi OlahData....23 xiv


(15)

Gambar 4.1 Fisik Robot...25

Gambar 4.2 Tampak Atas...26

Gambar 4.3 Tampak Depan...26

Gambar 4.4 Tampak Belakang...26

Gambar 4.5 Tampak Kiri...26

Gambar 4.6 Tanpak Kanan...27

Gambar 4.7 Tampak Bawah...27

Gambar 4.8 Pembagian Daya...27

Gambar 4.9 Keseluruhan Sistem...28

Gambar 4.10 Pengkabelan...28

Gambar 4.11 Denah Sudut Diterima...31

Gambar 4.12 Log...34

Gambar 4.13. Grafik response PID KP = 4 ; KI = 0 ; KD = 0...38

Gambar 3.14. Grafik response PID KP = 5 ; KI = 0 ; KD = 0...38

Gambar 4.15. Grafik respon PID KP = 5 ; KI = 0 ; KD = 2,5...39

Gambar 4.16. Grafik respon PID KP = 5 ; KI = 0 ; KD = 2...39


(16)

Daftar Tabel

Tabel 3.1.Kode dan Format Pengiriman...24

Tabel 4.1 Daftar Contoh Error...31

Tabel 4.2 Format Penerimaan Data...35

Tabel 4.3 Data Komunikasi dari Coach Computer ke Robot...36

Tabel 4.4 data komunikasi dari robot ke coach compute...37

Tabel 4.5 Pengujian Response Robot...40

Tabel 4.6 Data Diterima saat Robot di Luar Jangkauan Kamera...41


(17)

BAB I

PENDAHULUAN

1.1

Latar Belakang

Sepakbola adalah salah satu cabang olah raga yang populer bagi masyarakat di Indonesia maupun dunia. FIFA merupakan organisasi sepak bola ditingkat dunia yang beranggotakan organisasi sepakbola dari seluruh negara di dunia. Indonesia memiliki sebuah organisasi sepak bola yaitu Persatuan Sepak Bola Seluruh Indonesia (PSSI). Ketenaran sepak bola membuat banyak atlet sepak bola yang berpenghasilan sangat Tinggi. Perkembangan teknologi saat ini sangat pesat salah satunya teknologi robotika. Saat ini robot memiliki peran yang penting bagi kehidupan manusia, mulai dari bidang kesehatan, kedokteran, pertanian, sampai bidang teknologi manufaktur. Saat ini robot sudah masuk di kehidupan rumah tangga, mulai dari mainan anak-anak hingga alat bantu pekerjaan sehari-hari.

Di Indonesia kemajuan robotika dapat dilihat dari Kontes Robot Indonesia (KRI). Kontes Robot Indonesia (KRI) adalah sebuah wadah bagi setiap mahasiswa untuk menyalurkan, menumbuh kembangkan, dan mengukur kemampuan mereka dalam bidang robotika. Kontes Robot Indonesia ini sebuah tempat pembuktian eksistensi sebuah perguruan tinggi ditingkat nasional.

Keberadaan sepakbola sebagai hiburan telah mengarah ke dunia robotika. Terbukti saat ini bidang sepakbola telah masuk dalam agenda Kontes Robot Indonesia (KRI), dalam Kontes Robot Sepak Bola Indonesia (KRSBI). Saat itu KRSBI hanya memiliki divisi robot humanoid, oleh karena itu mahasiswa dari perguruan tinggi negeri maupun swasta berlomba untuk menciptakan dan mengembangkan robot pemain sepak bola dengan kecerdasan buatan.

Diadakannya Ekshibisi Sepakbola Robot Beroda Indonesia (ESRBI) 2016 di Politeknik Negeri Surabaya, menunjukan bahwa perkembangan robotika di Indonesia semakin baik. Peraturan ESRBI dijabarkan dalam Panduan Ekshibisi Sepakbola Robot Beroda Indonesia (ESRBI) 2016 [1]. Terdiri dari peraturan pertandingan, dimensi lapangan


(18)

pertandingan dan Spesifikasi robot. Universitas Sanata Dharma belum ikut berpartisipasi dalam ESRBI 2016 ini.

Dari permasalahan di atas maka penelitian ini akan memberikan kontribusi kepada Universitas Sanata Dharma dengan pembuatan prototype robot sepakbola yang memenuhi persyaratan ESRBI 2016. Prototype ini dibuat dapat bergerak ke segala arah, menendang dan dapat berkomunikasi secara nirkabel dengan coach computer. Robot bergerak berdasarkan data dari coach computer.

Penelitian ini akan menggunakan Raspberry Pi komputer mini yang akan menjadi pengendali utama dalam robot ESRBI. Raspberry Pi akan mengendalikan motor DC, sistem tendangan, sensor bola, dan juga komunikasi nirkabel dengan coach computer.

1.2

Tujuan dan Manfaat Penelitian

Tujuan dari penelitian yang dilakukan ini adalah Terciptanya suatu prototype robot yang memenuhi persyaratan Ekshibisi Sepakbola Robot Beroda Indonesia (ERSBI)..

Manfaat yang diharapkan dari penelitian ini adalah :

1. Memberikan sebuah kontribusi sebagai bahan acuan untuk sepakbola robot di Indonesia khususnya tim robotika Universitas Sanata Dharma dalam Ekshibisi Sepakbola Robot Indonesia 2017.

2. Memberikan solusi kontrol nirkabel berbasis linux.

1.3 Batasan Masalah

Agar tugas akhir ini dapat sesuai dengan apa yang menjadi tujuan dan menghinddari terlalu kompleksnya permasalahan yang akan muncul, maka perlu adanya batasan masalah. Batasan masalah yang sesuai dengan judul tugas akhir ini dan Panduan Ekshibisi Sepakbola Robot Beroda Indonesia (ESRBI) 2016. Adapun batasan masalahnya adalah[1]:

1. Robot dapat melakukan komunikasi secara nirkabel dengan Coach Computer. 2. Lapangan pertandingan berukuran 6m x 4m.

3. Bola yang digunakan adalah bola tenis berwarna orange.


(19)

5. Dimensi maksimal robot, diameter 40cm dan tinggi 30cm.

6. Menggunakan mini komputer Raspberry Pi sebagai penerima data dan pengendali aktuator robot.

7. Menggunakan motor DC sebagai aktuator. 8. Menggunakan Solenoid sebagai aktuator. 9. Robot dapat bergerak ke segala arah.

1.4

Metodologi Penelitian

Berdasarkan Pada tujuan yang ingin dicapai maka metode-metode yang digunakan adalah sebagai berikut:

1. Studi literatur dan referensi, yaitu mempelajari buku-buku dan makalah-makalah dari pustaka yang berhubungan dengan Raspberry Pi, Motor DC, solenoid, dan juga komunikasi nirkabel.

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

3. Perancangan Sistem software dan hardware. Tahap ini bertujuan untuk mencari dan menentukan komponen-komponen suatu sistem yang akan dibuat dengan mempertimbangkan faktor-faktor permasalahan dan kebutuhan yang telah ditentukan.

Gambar 1.1. Diagram Blok Perancangan. Robot Coach

Computer

.

RaspBerry PI

.

Motor DC

Motor DC

Motor DC

Kom wireless


(20)

1. Pembuatan sistem hardware dan software. Berdasarkan gambar mikrokomputer sebagai kontrol utama. Mikrokomputer yang digunakan adalah Raspberry Pi. Data yang dikirim oleh coach computer akan diterima oleh Raspberry Pi, data tersebut akan diproses oleh Raspberry Pi untuk mengendalikan sistem aktuator robot.

2. Proses pengujian dan pengambilan data. Teknik pengambilan data dilakukan dengan cara menguji keseluruhan sistem dengan menggabungkan antara rangkaian kendali dengan rangkaian aktuator dan coach computer. Pengambilan data yang dilakukan dengan menerima perintah dari coach computer dan melakukan perintah dari coach computer.

3. Analisa dan kesimpulan hasil perancangan. Analisa data dilakukan dengan memeriksa apakah alat suah bekerja sesuai dengan perancangan awal dan bisa sesuai dengan kondisi yang diinginkan, meliputi kemampuan komunikasi nirkabel


(21)

BAB II

DASAR TEORI

2.1 Raspberry Pi 3

Gambar 2.1. Raspberry Pi.

Raspberry Pi 3 merupakan sebuah mikrokomputer yang memiliki ukuran sebesar kartu tanda pengenal yang dimiliki oleh banyak orang. Raspberry Pi3 adalah generasi ketiga Raspberry Pi [2] dan merupakan tipe dangan spesifikasi yang paling tinggi dibandingkan dengan tipe-tipe Raspberry Pi yang lainnya. Raspberry Pi 3 dilengkapi dengan penambahan beberapa fitur konektivitas yang ada yaitu penambahan adapter

wireless LAN dan juga bluetooth.

2.1.1 Spesifikasi

Spesfikasi dari Raspberry Pi 3 adalah sebagai berikut [2]:

• CPU A 1.2 GHz 64 - bit quad-core ARMv8

• RAM 1 GB RAM

• 40 GPIO pin

• 802.11n Wireless LAN


(22)

2.1.2 GPIO (

General Purpose Input Output

)

Gambar 2.2. General Purpose Input Output[3].

GPIO atau General Purpose Input Output merupakan port atau pin penghubung dengan alat elektronik lain sebagai input atau output. Pin GPIO dapat digunakan untuk segala macam keperluan. GPIO dapat digunakan dengan baik sebagai input ataupun

output[15]. Tujuan adanya GPIO adalah untuk memenuhi sistem integrator dalam memperluas dan membangun sistem lengkap yang membutuhkan pin tambahan dari chip berupa sinyal kontrol ataupun data.

GPIO disediakan untuk ekspansi disambungkan ke modul atau komponen lainnya. Papan sirkuit embedded seperti Arduino, dan lainnya. GPIO digunakan untuk membaca data atau sinyal dari berbagai sensor lingkungan seperti IR (Infra Red), video, suhu, orientasi 3 dimensi, percepatan dan sebagainya. disamping untuk menulis atau mengirim data melalui output ke motor DC (melalui modul Pulse Width Modulation), audio, display

LCD, atau LED.

2.2

Python

Python adalah sebuah bahasa pemrogramman tingkat tinggi yang berfokus pada tingkat keterbacaan kode dan program mudah di pelajari karena sintak yang jelas dan elegan, dikombinasikan dengan penggunaan module-module siap pakai dan struktur data tingkat tinggi yang efisien. Sintak python yang elegan dan typing dinamika, dan sifatnya


(23)

yang interaktif, object oriented. Menjadikan python bahasa yang ideal untuk pemrogramman scripting dan rapid application development dalam berbagai bidang dan hampir semua platfrom seperti UNIX, Mac, Windows dan LINUX[5].

2.3

Module Socket

Merupakan seebuah module yang dimiliki oleh python untuk pemrogaman jaringan. Module ini dapat di-load atau di-import seperti module-module yang lain di python[7].

Dalam pemrograman jaringan terdapat beberapa istilah seperti[6]:

Host adalah suatu node, perangkat yang berada dalam suatu jaringan. Contoh biasanya adalah sebuah komputer.

Client adalah sebuah host yang meminta layanan ke server.

Server adalah host yang memberikan layanan kepada client.

• Dll.

contoh program penggunaan socket :

#!/usr/bin/env python

importsocket

# menentukan alamat server

server_address = ('localhost', 5000)

# ukuran buffer ketika menerima pesan

SIZE = 1024

# membuat objek socket (proses pertama)

s =socket.socket(socket.AF_INET,socket.SOCK_STREAM)

# koneksi ke server (proses kedua)

s.connect(server_address)

# mengirim pesan ke server (proses ketiga)

s.send("Hi server ... ")

# menerima pesan dari server

message = s.recv(SIZE)

# mencetak pesan dari server

print message

# menutup socket


(24)

2.4

DT-Proto Arduino Shield

Gambar 2.3. DT-Proto Arduino PiShield.

DT-Proto PiShileld merupakan sebuah modul tambahan Raspberry Pi . Modul ini juga merupakan modul adapter atau pengubah level tegangan menjadi 5 volt atau 3,3 volt sesuai dengan jumper selektor I/O[8]. Selain mengubah tegangan modul ini juga mengubah

interface GPIO menjadi interface Arduino. Dengan demikian mempermudah jika akan menggunakan berbagai shield yang dimiliki atau dibuat untuk Arduino.

Untuk dipermudah pemakaian shield ini disediakan library wiringpi dengan demikian penggunaan shield ini menggunakan beberapa sintax yang ada di Arduino, seperti digitalwrite(alamat, data), digitalread(alamat).

Gambar 2.4. Selektor Tegangan.

2.5

Driver Motor L298

Driver motor L298 merupakan sebuah modul yang dapat digunakan untuk mengendalikan motor DC dengan arus maksimum mencapai empat amper. Dengan level


(25)

logika lima volt sebagai logika high. Rangkaian ini voltase suplay IC (integrated Circuit)

sebesar lima volt. Dan menggunakan tegangan suplay motor external maksimal 46 Volt[9].

Gambar 2.5. Modul Driver Motor l298.

2.6

Sensor Jarak

Gambar 2.6. Obstacle Avoidance Sensor Module.

Obstacle Avoidance Sensor Module merupakan sebuah device elektronik yang dapat mendeteksi jarak menggunakan Infra Red dan Photodioda sebagai sensor. Modul ini memiliki tiga port yaitu vcc, gnd dan out. Out di modul ini menggunakan data digital yaitu


(26)

logika low dan high. Modul ini dapat dikalibrasi dengan cara mengatur variable resistor

yang ada untuk menentukan jarak yang diinginkan[10].

2.7

Teorema Pythagoras

Teorema Pythagoras adalah suatu persamaan segitiga siku-siku yang digunakan untuk mencari sisi yang belum diketahui nilainya.

Gambar 2.7. Segitiga Siku-siku.

tan(B)=b

a (2.1)

B=arctan(b

a) (2.2)

c2=a2+b2 (2.3)

Untuk mencari besar sudut dari B pada gambar . Dengan menggunakan persamaan 2.2 maka akan didapatkan bersaran sudut B. Persamaan 2.2 merupakan penjabaran dari persamaan 2.1.

2.8

Motor DC

Motor listrik merupakan perangkat aktuator yang mengubah energi listrik menjadi energi mekanik. Energi mekanik ini akan digunakan untuk memutar roda robot. Motor dc merupakan motor yang menggunakan sumber arus searah. Motor akan menghasilkan energi mekanik yang bergerak berputar. Arah putaran bergantung pada arah arus listrik. Untuk mengubah arah putaran motor dengan cara merubah arah arus listrik atau mengubah polaritas motor dc tersebut.


(27)

Gambar 2.8. Motor DC.

Gambar 2.9. Arah Arus dan Medan Magnet.

Jika arus lewat pada suatu konduktor, timbul medan magnet di sekitar konduktor. Arah medan magnet ditentukan oleh arah aliran arus pada konduktor. Medan magnet yang membawa arus mengelilingi konduktor . Aturan genggaman tangan kanan bisa dipakai untuk menentukan arah garis fluks di sekitar konduktor. Genggam konduktor dengan tangan kanan dengan jempol mengarah pada arah aliran arus, maka jari-jari anda akan menunjukkan arah garis fluks[11][12].


(28)

2.10 Solenoid

Gambar 2.10 Solenoid.

Solenoid merupakan kumparan yang dililitkan secara rapat dan diamsusikan bahwa panjangnya lebih besar daripada diameternya. Dalam kasus solenoid Ideal, panjang kumparan adalah tak hingga dan dibangun dengan kawat yang saling berhimpit dalam lilitanya, dan medan magnet didalamnya adalah seragan dan pararel terhadap sumbu solenoid. kuat medan magnet akan menggerakkan batang besi ke arah medan magnet. Di pasaran terdapat berbagai jenis solenoid dengan tegangan kerja yang berbeda-beda.

Gambar 2.11 Medan Magnet Kuat medan magnet untuk solenoid ideal adalah:

B=η0i n (2.3)

di mana:

• B adalah kuat medan magnet.

• η0 adalah permaebilitas ruang kosong.

• i adalah kuat arus yang mengalir.


(29)

BAB III

RANCANGAN PENELITIAN

Bab ini menjelaskan mengenai perancangan perangkat keras dan lunak bagian penerima dalam robot ERSBI. Perancangan sistem yang akan dibahas pada bab ini terdiri dari dua bagian besar, yaitu:

1. Perancangan perangakat keras (hardware)

• Perancangan mekanik.

• Perancangan rangkaian elektrik sistem pengendali. 2. Perancangan perangkat lunak (software)

• Perancangan Perangkat lunak secara umum.

• Perancangan Perangkat lunak Komunikasi.

3.1

Perancangan Perangkat Keras (

Hardware

)

Perancangan perangkat keras terbagi menjadi perancangan blok diagram sistem, perancangan mekanik, dan driver motor dc serta rangkaian pengendali utama. Perancangan Perangkat keras, terlebih dahulu dilakukan perancangan blok diagram dari keseluruhan sistem dan rancangan robot yang akan dibuat.

Gambar 3.1. Blok Diagram Sistem.

13

Bagian Robot Coach

Computer

Raspberry Pi 3 Module Wireless Driver L298 General Purpose Input Output (GPIO) Sensor Bola solenoid Motor DC Level Shifter 3.3 V To 5 V

.

Kom wireless


(30)

Gambar 3.1. merupakan blok diagram sistem. Pada penelitian ini perangkat keras yang akan dibuat terdiri dari dua hal, yaitu bagian user dan robot. Pada bagian user hanya akan ada coach computer sedangkan pada bagian robot terdapat Raspberry PI, Level Shifter Driver Motor DC, Solenoid dan Sensor Bola, Motor DC dan SOlenoid. Komunikasi yang digunakan adalah komunikasi wirelessRaspberry Pi.

Pada penelitian ini hanya akan membuat bagian robot, yaitu Raspberry Pi sebagai pengendali utama dan juga terminal komunikasi nirkabel, driver motor DC, dan juga bentuk robot yang memenuhi peraturan Ekshibisi Sepakbola Robot Beroda Indonesia 2016[1].

3.1.1 Perancangan Mekanik

Gambar 3.2. Rancangan Robot.


(31)

Gambar 3.4. Rancangan Robot Tampak Depan.

Gambar 3.5. Rancangan Robot Tampak Samping.

Gambar 3.6.Rancangan Robot.

Gambar 3.2. sampai dengan gambar 3.6. merupakan gambar keseluruhan design 3D robot sepakbola beroda. Robot terdiri dari tiga buah aktuator yang akan membuat robot dapat bergerak dan menendang bola. Tubuh robot akan dibangun meenggunakan akrilik, dua buah motor DC untuk menentukan gerakan maju, kiri, kanan dan mundur. Sebuah solenoid untuk menendang bola.

Gambar 3.7. merupakan rancangan dari solenoid sebagai aktuator penendang. Tendangan memanfaatkan gerakan dari solenoid jiga dialiri arus listrik, dan kembali jika


(32)

tidak dialiri arus listrik. Bagian inti bergerak solenoid ditambah panjangnya supaya sampai ke bagian depan robot dimana bola akan digiring dan ditendang.

Gambar 3.7. Solenoid Penendang.

3.1.2 Perancangan Elektrik Sistem pengendali

Pada bagian ini terdiri bagian rancangan elektrik pada robot dibagi menjadi: 1. Rangakaian Raspberry Pi dengan DT-Proto Arduino Pi-Shield

2. Rangakaian DT-Proto Arduino Pi-Shield dengan Modul Driver Motor L298 dan Sensor Bola

3.

Rangkaian Modul Driver Motor L298 dengan Motor DC

3.1.2.1

Rangkaian Raspberry Pi dengan DT-Proto Arduino Pi-Shield

Penghubungan GPIO Raspberry Pi dengan DT-Proto Arduino Pi-Shield dengan menghubungkan langsung conector yang ada pada DT-Proto Arduino Pi-Shield ke GPIO. Kemudian penamaan port GPIO pada program python akan berubah ke aturan penamaan

Pi-Shield dengan menggunakan library WiringPi2.


(33)

Penggunaan dari DT-Proto Arduino Pi-Shield adalah untuk mengubah level logika tegangan pada GPIO Raspberry Pi menjadi level logika tegangan lima volt. Dikarenakan untuk mempermudah hubungan dengan komponen yang berlogika lima volt, seperti modul driver motor l298 dan lain-lain.

Gambar 3.8. dan gambar 3.9. adalah gambar hubungan GPIO ke driver motor l298 melalui rangkaian pull up atau level shifter 3,3 Volt ke 5 Volt. Karena level logika tinggi Raspberry Pi adalah 3,3 Volt semaentara L298 menggunakan level logika 5 Volt. Raspberry Pi akan dipasangi dengan DT-Proto Arduino Pi Shield yang mengubah pin map raspberry menjadi pinmap arduino. Kelebihan dari DT-Proto Arduino Pi Shield ini adalah fungsi level shifter yang dimilikinya merubah level tegangan 3,3 volt ke 5 volt.

3.1.2.2

Rangakaian DT-Proto Arduino Pi-Shield dengan Modul Driver

Motor L298 dan Sensor Bola

Gambar 3.9. Rangkaian Level Shifter ke Driver Motor l298.

Dalam penelitian ini sensor jarak akan digunakan sebagai sensor bola. Shield ini akan dipasang dibagian depan robot. Sensor akan mendeteksi apakah ada bola dalam jarak jangkauan sensor yang nantinya dapat di kalibrasi secara manual dengan cara memutar variable resistor yang ada. Rangkaian sensor bola diinputkan ke pin 8 dt-proto arduino pi-shield. Sersor akan bernilai LOW jika tidak menerima bola dan sensor akan bernilai


(34)

HIGH atau lima Volt jika mendeteksi. Kemudian dt-proto arduino pi-Shield akan mengubah level tegangan sehingga dapat diolah oleh Raspberry pi 3.

Gambar 3.10. DT-Proto Arduino Pi Shield ke Sensor bola.

3.2

Perancangan Perangkat Lunak (

Software

)

3.2.1 Perancangan Perangkat Lunak Secara Umum

Dalam perancangan software ini akan dijelaskan bagaimana flowchart atau diagram alir dari keseluruhan program pengendali yang akan dibuat. Robot akan melakukan inisialisasi untuk malakukan komunikasi dengan coach computer lewat jaringan wireless, menerima serta mengolah data yang diterima, dan pengambilan keputusan berdasarkan data yang diterima.

Gambar 3.11 merupakan gambar dari flow chart software keseluruhan robot pada penelitian ini. Robot akan melakukan inisialisasi saat pertama kali dihidupkan. Kemudian robot akan menunggu koneksi dari coach computer. Setelah mendapatkan koneksi robot akan menerima data yang dikirim oleh coach computer berdasarkan kode protokol yang dibuat. Eksekusi data untuk menentukan keputusan dari segala kondisi data uyang diterima.


(35)

Gambar 3.11. Diagram Alir Perancangan Perangkat Lunak.

Gambar 3.12 merupakan Flowchart merupakan dari fungsi eksekusi. Robot akan memeriksa mode yang dikirim dan mengeksekusi menurut mode yang diterima. Jika robot berada dala, mode bersedia maka robot akan menuju target yang ditunjuk oleh coach

computer. Jika robot dalam mode lainnya maka robot akan memeriksa apakah robot membawa bola atau tidak dan akan memilih berdasarkan keadaan bola.

START

Inisialisasi

Terhubung?

STOP Selesai Eksekusi Data

Ya Ya

Tidak

Tidak


(36)

Gambar 3.12. Flowchart Fungsi Eksekusi.

Gambar 3.13. Flowchart Fungsi Menuju Target. Eksekusi Membawa Bola? Rebut Bola Menuju gawang Pos. Bersedia? Menuju Target Return Tidak Tidak Ya Ya Menuju Target Olah Data Xrobot > Xtarget PWMKiri < PWMKanan PWMKiri > PWMKanan Tidak Ya Return PWMKiri = PWMKanan = 0 PWMKiri= PWMKanan

= > 0 Sampai?

A

A

Tidak


(37)

Gambar 3.13. merupakan flowchart yang menjelaskan fungsi menuju target. Dalam fungsi ini robot akan memanggil fungsi olah data untuk mendapatkan dan memeriksa nilai posisi x robot dan posisi x target dengan cara membandingkannya. Jika posisi x robot lebih besar dari posisi x target berarti target berada diposisi yang lebih kanan dibanding robot. Maka robot akan bergerak kekanan dengan cara membuat PWMkanan lebih besar dibanding PWMkiri. Begitu juga sebaliknya. Robot akan memeriksa apakah telah sampai dengan tujuan yang ditetapkan. Jika belum maka robot akan memberikan nilai pwm kanan sama dengan pwm kiri dengan kata lain robot akan bergerak lurus. Dan jika telah sampai maka robot akan berhenti dengan cara menghentikan kedua motor penggeraknya.

Gambar 3.14. Flowchart Fungsi Rebut Bola.

Gambar 3.14. merupakan gambar flowchart dari fungsi rebut bola. Dalam fungsi ini robot akan memanggil fungsi olah data untuk mendapatkan dan memeriksa nilai posisi x robot dan posisi x bola dengan cara membandingkannya. Jika posisi x robot lebih besar dari posisi x bola berarti bola berada diposisi yang lebih kanan dibanding robot. Maka robot akan bergerak kekanan dengan cara membuat PWMkanan lebih besar dibanding PWMkiri. Begitu juga sebaliknya. Robot akan memeriksa apakah telah sampai dengan tujuan yang ditetapkan. Jika belum maka robot akan memberikan nilai pwm kanan sama dengan pwm kiri dengan kata lain robot akan bergerak lurus. Dan jika telah sampai maka robot akan berhenti dengan cara menghentikan kedua motor penggeraknya.

Rebut Bola Olah Data Xrobot > Xbola PWMKiri < PWMKanan PWMKiri > PWMKanan Tidak Ya A Return PWMKiri = PWMKanan = 0 PWMKiri= PWMKanan

= > 0 Sampai?

A

Tidak


(38)

Gambar 3.15. Flowchart Fungsi Menuju Gawang.

Gambar 3.16. Flowchart Fungsi Menghindar.

Gambar 3.15. merupakan gambar flowchart dari fungsi menuju gawang. Data akan diolahh untuk mendapatkan data selisih sudut danjarak terhadap gawang. Robot akan memeriksa nilai posisi x robot dan posisi x target dengan cara membandingkannya. Jika posisi x robot lebih besar dari posisi x target berarti target berada diposisi yang lebih kanan dibanding robot. Maka robot akan bergerak kekanan dengan cara membuat PWMkanan lebih besar dibanding PWMkiri. Begitu juga sebaliknya. Robot akan memeriksa apakah

Menuju Gawang Olah Data Xrobot > Xgawang PWMKiri < PWMKanan PWMKiri > PWMKanan Return Tabrak musuh? Tidak Ya Menghindar Tidak Ya Sampai titik tembak? Tidak Ya Tendang On A B Tendang Off PWMKiri = PWMKanan = 0 PWMKiri= PWMKanan

= > 0 Sampai? A Tidak Ya B Menghindar Xrobot > Xmusuh PWMKiri < PWMKanan PWMKiri > PWMKanan Return Tidak Ya


(39)

telah mencapai titik tembak, yaitu 30 cm dari gawang lawan maka robot akan mengaktifkan mekanisme tendangan.

Gambar 3.16. fungsi menghindar dalam fungsi ini akan memeriksa data posisi xrobot dan xmusuh yang akan mempresentasikan apakah musuh berada di kiri atau di kanan dari robot. Data tersebut akan digunakan untuk membuat keputusan kemana robot harus menghindar.

Gambar 3.17. Flowchart Fungsi Olah Data.

Gambar 3.17 adalah fungsi olah data. Fungsi ini merupakan fungsi dimana data yang diterima akan diolah dan diubah menjadi error sudut dan juga jarak robot dan target. Pengubahan menggunakan teorema pythagoras dan persamaan trigonometri yaitu pada persaman (2.1), (2.2) dan (2.3) untuk mendapatkan nilai r yaitu jarak antara robot dan gawang lawan.

c2=a2+b2 (2.3)

r2=x2+y2

r=

x2+y2 Olah Data

Return r dan Es

X1-x=x Y1-x=y

r2=x2+y2 r = ?


(40)

3.2.2 Perancangan Perangkat Lunak Komunikasi

Komunikasi robot dan coach computer akan dilakukan dengan hubungan wireless

menggunakan modul wireless yang telahdisediakan oleh Raspberry Pi 3. Robot akan menerima data dari coach computer, maka dibutuhkan sebuah format. Format ini berfungsi sebagai pengaturan pengiriman dan penerimaan yang tetap supaya tidak terjadi kesalahan dalam pembacaan komunikasi oleh robot.

Dalam penilitian ini akan menggunakan module socket yang dimiliki oleh python. Data yang diterima robot merupakan data string. Dari string akan dipisah kan antara data dan kode. Sebagai berikut:

Kode Data

0-7 A B C D E F

Gambar 3.18. Format Data Diterima.

Gambar 3.18. merupakan bentuk atau format data yang akan diterima. Data yang akan diterima adalah tujuh buah digit desimal. Setiap digitnya memiliki arti yang dijelaskan pada tabel 3.1.

Tabel 3.1. Kode dan Format Pengiriman. Kode

Keterangan Data

0-7 A B C D E F

1 Posisi Robot (x,y) X Y

2 Posisi Bola (x,y) X Y

3 Posisi Lawan (x,y) X Y

4 Posisi Gawang (x,y) X Y

5 Posisi Kiper lawan (x,y) X Y

6 Koreksi sudut +/- Sudut +/- Sudut

7 Posisi tertentu X Y

0 Berhenti X Y

Jadi robot akan menerima data seperti diatas. Contoh data yang dikirim adalah posisi robot nilai x= 100, dan nilai y =98. Maka yang akan diterima oleh robot adalah “1100098”. Data ini akan diterima dan dimasukan dalam sebuah variable string dat. Data dat[0] akan periksa sebagai kode data kemudian dat[1], dat[2], dan dat[3] merupakan data x dari robot. Dan dat[4], dat[5], dan dat[6] marupakan data y.


(41)

BAB IV

HASIL DAN PEMBAHASAN

Pada bab ini akan dibahas mengenai implementasi dari perancangan pada bab 3, perubahan perancangan, dan analisis dari hasil pengujian yang dilakukan. Pengujian sistem diperlukan agar dapat mengetahui kinerja dari keseluruhan sistem yang telah dirancang. Data-data dari hasil pengujian akan dianalisa untuk dapat mengetahui kinerja sistem yang ada. Dari analisa tersebut dimungkinkan adanya revisi atau pengembangan agar sistem dapat bekerja lebih baik.

4.1

Implementasi Penelitian

4.1.1 Bentuk Fisik Robot

Gambar 4.1 Fisik Robot.

Gambar 4.1 sampai 4.7 merupakan gambar fisik dari robot yang dibuat menggunakan bahan akrilik dengan tebal 3mm. Robot berdiameter 25 cm, berwarna hitam dan tinggi 11,6


(42)

cm. Terdiri dari tiga level akrilik. Kontroler, baterai, dan modul-modul elektronik berada pada level ke dua. Sementara level ketiga atau yang teratas adalah tempat pengenal robot untuk coach computer yaitu lingkaran ungu sebagai depan dan lingkaran biru sebagai belakang.

Gambar 4.2 Tampak Atas.

Gambar 4.3 Tampak Depan.

Gambar 4.4 Tampak Belakang.


(43)

Gambar 4.6 Tanpak Kanan.

Gambar 4.7 Tampak Bawah.

4.1.2 Sistem KelistrikanRobot

Penelitian ini menggunakan sebuah baterai pack li-ion 3 sel 11.1 Volt, dan di konversi oleh tiga buah regulator yaitu; pertama regulator buck lima volt untuk mensuplay raspberry pi 3, kedua regulator buck 5 volt untuk mensuplay modul-modul elektronik lain, dan yang ketiga merupakan regulator boost 12 volt untuk mensuplay motor dc.

Gambar 4.8 Pembagian Daya. Battery

Pack Li-Ion 3 cell 11,1V

Regulator buck 5V

Regulator buck 5V Regulator boost 12V


(44)

Gambar 4.9 merupakan keselurahan sistem penelitian. Dengan penambahan driver tip 31 untuk mendrive motor. Gambar 4. 10 merupakan gambar fisik dari sistem.

Gambar 4.9 Keseluruhan Sistem.

Gambar 4.10 Pengkabelan.

4.1.3 Software Robot

Program yang dibuat menggunakan beberapa modul python yang telah ada. Modul-modul yang di-load bertujuan membantu pengendalian penelitian ini.

import RPi.GPIO as gpio import os

import time from socket import

penelitian ini membutuhkan beberapa inisialisasi untuk menatuh port-port GPIO, inisialisasi untuk komunikasi dan juga inisalisasi variabel-variabel yang digunakan.

Raspberry Pi LLC Driver

Motor L298n

Motor Kiri Motor Kanan

Sensor Bola

Driver tip31

Driver tip31

Solenoid

Motor Penggiring


(45)

ls_error = 0 s_error = 0 lj_error = 0 j_error = 0 error = 0 data = 0000000 pv_sudut = 000000000 sp_sudut = 000000000 dkiriml = "0"

enab = 0 tendang = 0 kon = "A"

# Setup GPIO ############################################################ gpio.setmode(gpio.BOARD) gpio.setwarnings(False) gpio.setup(7, gpio.OUT) gpio.setup(11, gpio.OUT) gpio.setup(12, gpio.OUT) gpio.setup(13, gpio.OUT) gpio.setup(15, gpio.OUT) gpio.setup(16, gpio.OUT) gpio.setup(22, gpio.OUT) gpio.setup(19, gpio.OUT) gpio.setup(18, gpio.IN) ki = gpio.PWM(16, 200) ka = gpio.PWM(7, 200) ki.start(0)

ka.start(0)

# Setup Komunikasi ##################################################### host = ""

host1 = "192.168.1.41" #ip addres penerima

port = 13000 #port yang digunakan adalah 13000, harus sama port1 = 14000

buf = 1024 #jumlah maksimal karakter yang diterima addr = (host, port)

addr1 = (host1, port1)

UDPSock = socket(AF_INET, SOCK_DGRAM) UDPSock.bind(addr)

4.1.3.1

Program Komunikasi

Program ini bertujuan untuk membuat sebuah jalan komunikasi antara robot dan

coach computer supaya dapat bertukar data yang saling dibutuhkan. Komunikasi yang akan dilakukan adalah komunikasi dua arah antar coach computer dan Penelitian ini. Bagi penelitian ini data yang dikirim oleh coach computer sangatlah penting karena data inilah yang akan menentukan apa yang harus dilakukan oleh penelitian ini. Program ini


(46)

menggunakan modul socket sama seperti perancangan dengan menggunakan port 13000 untuk menerima dan port 14000 untuk mengirim data.

(data, addr) = UDPSock.recvfrom(buf) print "data diterima \t: " + str(data)

(data, addr) = UDPSock.recvfrom(buf) merupakan perintah untuk menerima data yang di kirim oleh coach computer.

4.1.3.2 Fungsi kode_data

Fungsin kode_data merupakan fungsi untuk memilah data diterima menjadi data variabel sesuai dengan tabel format penerimaan data. Program ini meneteksi array alamat ke nol menjadi patokan data apa yang diterima. Berikut listing dari fungsi kode_data

def kode_data(data):

global kon, j_error, pv_sudut, sp_sudut, tendang, enab if data[0] == '5': enab = int(data[1])

elif data[0] == '6': tendang = int(data[1]) elif data[0] == '7': #print "koreksi sudut"

pv_sudut = int(data[1]+data[2]+data[3]+data[4]) sp_sudut = int(data[5]+data[6]+data[7]+data[8])

elif data[0] == '8': j_error = int(data[1]+data[2]+data[3]) #print "jarak" elif data[0] == '9': kon = str(data[1]) #print "kondisi"

4.1.3.3 Penentuan Error Sudut

Penentuan error sudut tidak lepas dari penentuan letak sudut. Gambar 4.2 merupakan gambar Letak sudut ditentukan oleh coach computer, maka robot harus menentukan error sudut berdasarkan gambar 4.2. Penentuan error dilakukan untuk mengetahui seberapa menyimpang robot dengan tujuan dan menentukan gerakan robot. Jika pv_sudut adalah -45 dan sp_sudut adalah +45 maka error adalah +90, dan sebaliknyab pv_sudut adalah -135 dan sp_sudut adalah +135 maka error sudut harus sama dengan -90.

Penentuan error sudut pada robot dilakukan oleh fungsi olah_data. Dengan menentukan variabel ‘batas’. Batas adalah sudut yang membentuk garis lurus melewati


(47)

pusat sudut. s_error akan bernilai -180 sampai dengan +180 maka untuk mengperkecil nilai error sudut yang ada maka s_error dibagi dengan 9.5. dengan demikian range error adalah -18,95 sampai 18,95. Tabel 4.1 merupakan contoh-contoh nilai error sudut. kemudian diubah menjadi -10 sampai 10.

Gambar 4.11 Denah Sudut Diterima.

Tabel 4.1 Daftar Contoh Error

pv_sudut sp_sudut s_error

-45 -180 -135

-45 -135 -90

-45 -90 -45

-45 -45 0

-45 0 +45

-45 +45 +90

-45 +90 +135

-45 +135 +180

-45 +170 -145

-45 +180 -135

def olah_data():

global error, pv_sudut, sp_sudut batas = 0

s_error = 0 if sp_sudut > 0:


(48)

batas = -180 + sp_sudut if sp_sudut < 0:

batas = 180 + sp_sudut if sp_sudut >= 0:

if pv_sudut >= sp_sudut:

for i in range(sp_sudut, pv_sudut, 1): s_error = s_error - 1 if pv_sudut < sp_sudut:

if pv_sudut >= batas:

for i in range(pv_sudut, sp_sudut, 1): s_error = s_error + 1 if pv_sudut < batas:

for i in range(pv_sudut, sp_sudut, 1): s_error = s_error - 1 if sp_sudut < 0:

if pv_sudut < sp_sudut:

for i in range(pv_sudut, sp_sudut, 1): s_error = s_error + 1 if pv_sudut >= sp_sudut:

if pv_sudut >= batas:

for i in range(sp_sudut, pv_sudut, 1): s_error = s_error + 1 if pv_sudut < batas:

for i in range(sp_sudut, pv_sudut, 1): s_error = s_error - 1 error = s_error / 9.5 #untuk 10 derajat = 1 error

if 3 > s_error > -3: error = 0 if error > 10:

error = 10 elif error < -10:

error = -10

4.1.3.4

Fungsi PID

Dalam fungsi ini dihitung nilai pid dan juga pembatasan nilai pid. Nilai pid digunakan untuk menentukan kecepatan motor kiri dan kana. Penentuan nilai parameter proporsional, integratif, dan derivatif menggunakan metode “heuristik” atau”try and error” itu mencoba. Pembatasan hasil perhitungan s_pid dilakukan agas tidak melebihi nilai dutycycle yang ada.

def pid():


(49)

s_pid = long((3.5 * error) + ((1/0.0006) * (error - ls_error)) + ((1*0.0006) * (error + ls_error)))

if s_pid > 70: s_pid = 70 elif s_pid < -70: s_pid = -70 if j_error > 20:

piki = 35 + s_pid#j_error + s_pid pika = 35 - s_pid#j_error - s_pid elif j_error <= 20:

piki = 0 #+ (s_pid / 2) pika = 0 #- (s_pid / 2) if -0.5 < error < 0.5 and j_error != 0:

piki = 80 pika = 80 if piki <= 15: piki = 0 elif piki >= 99: piki = 99 if pika <= 15: pika = 0 elif pika >= 99: pika = 99 if kon == "A":

pii = piki pia = pika elif kon == "B":

pii = pika pia = piki ls_error = error

ki.ChangeDutyCycle(int(pii)) ka.ChangeDutyCycle(int(pia))

4.2

Perubahan Perancangan

Pada penelitian iini terjadi perubahan perancangan pada Bentuk Robot, penggunaan level shifter, perubahan kode dan format komunikasi.

4.2.1 Perubahan Bentuk Robot

Bentuk robot berubah dari gambar 3.2 sampai gambar 3.6 menjadi bentuk lingkaran seperti pada gambar 4.1 sampai dengan gambar 4.7 . Perubahan bentuk ini dimaksutkan


(50)

supaya jika robot ini menabrak maka akan lebih mudah untuk lolos jika berbentuk lingkaran.

4.2.2 Perubahan Warna Pengenal Robot

Warna pengenal robot pada bab peranacangan adalah merah sebagai depan dan biru sebagai belakang robot berubah menjadi ungu sebagai depan dan biru sebagai belakang. Perubahan ini dikarenakan menurut coach computer warna merah terlalu dekat dengan warna bola yang berwarna orange.

4.2.3 Perubahan Penggunaan

Level Shifter

Gambar 4.12 Log.

Pada perancangan BAB III gambar 3.8 yaitu penggunaan DT-Proto Arduino Pi-Shield digantikan Logic Level Conferter 4 channel. Dengan alasan pada penelitian ini penggunaan level shifter hanya dibutuhkan untuk tiga port GPIO yaitu untuk masukan sensor pendeteksi bola, keluaran driver Solenoid, dan keluaran motor penggiring bola. Sedangkan untuk driver motor L298 dapat dihubungkan langsung ke GPIO raspberry pi, karena logika tinggi pada ic L298 adalah 2,3 sampai dengan 5 VDC[18] sehingga level tegangan GPIO dapat mengontrol IC tersebut.


(51)

4.2.4 Perubahan Kode dan Format Pengiriman

Pada perancangan Kode dan Format Pengiriman di tunjukan oleh tabel 3.1. Pada Penelitian ini Kode dan Format Pengiriman antara Coach Computer dengan robot berubah. Menjadi seperti ditunjukan oleh tabe 4.2. Perubahan ini karena data yang lain tidak perlu dikomunikasikan. Data telah diolah oleh coach computer jadi penelitian ini menjadi lebih efisien karena tiak mrengirim data yang kurang perlu.

Tabel 4.2 Format Penerimaan Data

Kode variabel Format Data

9 Arah Serang A / B

8 Radius 0 - 9 0 – 9 0 - 9

7 Sudut + / - 0 -1 0 – 9 0 – 9 + / - 0 - 9 0 – 9 0 - 9

6 Tendang 0 / 1

5 Kirim 0 / 1

Berhenti ‘exit’

Arah serang data akan diterima dengan format ‘9A’ atau ‘9B’ data A menandakan arah serang kanan dan B arah serang kiri. Variabel radius diterima dengan ‘8 + tiga digit bilangan’ yang menandakan jarak robot dengan target. Variabel sudut diterima dengan format ‘7’ + ‘+/-’ + ‘tiga digit pv_sudut’ + ‘+/-’ + ‘ tiga digit sp sudut’ terjadi perubahan dari perancangan yaitu dalam perancangan data pv dan sp sudut hanya diterima dengan dua digit, perubahan ini karena penelitian ini mengirim lebih dari dua digit sudut. Variabel tendang adalah tanda saat robot harus melakukan tendangan atau tidak. Diterima dengan format ‘91’ untuk menendang dan ‘90’ untuk tidak menendang. Dan variabel kirim merupaka perintah untuk memerintah robot mengirrimkan kondisi bola. Data diterima ‘51’ merupakan perintah untuk robot mengirimkan kondisi bola dan ‘50’ untuk tidak mengirimkan kondisi bola. Pada saat robot menerima perintah dari coach computer untuk mengirimkan data kondisi bola maka data ‘1’ akan dikirim jika bola telah terdeteksi oleh sensor bola pada robot dan ‘0’ jika bola tidak terdeteksi oleh robot.

Arah serang data akan diterima dengan format ‘9A’ atau ‘9B’ data A menandakan arah serang kanan dan B arah serang kiri. Variabel radius diterima dengan ‘8 + tiga digit bilangan’ yang menandakan jarak robot dengan target. Variabel sudut diterima dengan format ‘7’ + ‘+/-’ + ‘tiga digit pv_sudut’ + ‘+/-’ + ‘ tiga digit sp sudut’ terjadi perubahan


(52)

dari perancangan yaitu dalam perancangan data pv dan sp sudut hanya diterima dengan dua digit, perubahan ini karena penelitian ini mengirim lebih dari dua digit sudut. Variabel tendang adalah tanda saat robot harus melakukan tendangan atau tidak. Diterima dengan format ‘91’ untuk menendang dan ‘90’ untuk tidak menendang. Dan variabel kirim merupaka perintah untuk memerintah robot mengirrimkan kondisi bola. Data diterima ‘51’ merupakan perintah untuk robot mengirimkan kondisi bola dan ‘50’ untuk tidak mengirimkan kondisi bola. Pada saat robot menerima perintah dari coach computer untuk mengirimkan data kondisi bola maka data ‘1’ akan dikirim jika bola telah terdeteksi oleh sensor bola pada robot dan ‘0’ jika bola tidak terdeteksi oleh robot.

4.3

Pengujian Robot

Pengujian ini bertujuan untuk menguji robot dalam penelitian ini apakah sesuai dengan tujuan dari penelitian ini dan melihat kemungkinan pengembangan pada robot ini.

4.3.1 Pengujian Komunikasi

Tabel 4.3 Data Komunikasi dari Coach Computer ke Robot No

Data dikirim (coach computer)

Data diterima

(robot) Error (%)

1 1 1 0

2 2 2 0

3 3 3 0

4 4 4 0

5 5 5 0

6 6 6 0

7 7 7 0

8 8 8 0

9 9 9 0

Karena robot penelitian ini ssangat bergantung dengan dari coach computer maka proses komunikasi sangat lah penting dalam penelitian ini. Komunikasi ini dibangung


(53)

dengan module socket yang ada pada python. Alamat yang digunakan dalam komunikasi ini adalah alamat ip komputer.

Dari tabel 4.3 dan tabel 4.4 diketahui data yang dikirim sama dengan data yang diterima. Maka error untuk komunikasi adalah sebesar 0 % karena Error diukur dengan

persamaan sebagai berikut error=data dikirimdata diterima

100

Tabel 4.4 data komunikasi dari robot ke coach computer

No Data dikirim (robot)

Data diterima (coach computer)

Error (%)

1 0 0 0

2 1 1 0

3 2 2 0

4 3 3 0

5 4 4 0

6 5 5 0

7 6 6 0

8 7 7 0

9 8 8 0

4.3.2 Pengujian

Response

Robot

Robot bekerja dengan cara menuju titik dimana Coach Computer tunjukkan. Sehingga data yang dibahas adalah data dimana robot menuju titik tertentu. Pengujian

response robot ini dilakukan untuk mengetahui response robot terhadap data yang diterima dari coach computer. Variabel yang diterima adalah jarak (radius), sp_sudut (sudut tujuan), dan pv_sudut (sudut robot). Untuk menentukan koefisien kp, kd dan ki pada kontroler PID yang digunakan.

Gambar 4.13 sampai dengan 4.16 merupakan gambar grafik respon PID dengan beberapa kombinasi nilai KP, KI, dan KD. Dalam penelitian ini Cycle Time atau Ts sebesar 0,7 mili detik. Sehingga diambil nilai KP 5, KI 0, dan KD 2,5 karena memiliki waktu yang


(54)

lebih cepat untuk mencapai kondisi error nol dari pada kombinasi yang lain seperti pada gambar 4.15.

Gambar 4.13. Grafik response PID KP = 4 ; KI = 0 ; KD = 0.


(55)

Gambar 4.15. Grafik respon PID KP = 5 ; KI = 0 ; KD = 2,5.

Gambar 4.16. Grafik respon PID KP = 5 ; KI = 0 ; KD = 2.

Data titik pada tabel 4.5 diambil dari coach computer dikarenakan robot tidak menerima data titik tersebut. Data yang diambil adalah titik awal robot, posisi tujuan, dan posisi akhir robot setelah proses. Pada tebel error dihitung dengan persamaan

Error=(Posisi TujuanPosisi Awal max )


(56)

Dengan nilai max untuk X adalah 640 dan y adalah 480. Data ini diambil untuk mengetahui respon robot untuk mencapai tritik tertentu. Dari tabel 4.5 dapat dilihat bahwa penelitian ini dapat mengarahkan robot untuk mencapai titik tertentu dengan rata-rata error x dan y adalah 1,66% dan 3,13%. Sehingga robot mampu menuju titik tertentu dengan selisih yang lebih kecil antara titik tujuan dan titik akhir.

Tabel 4.5 Pengujian Response robot

No Posisi Awal (x;y) Posisi Tujuan (x;y) Posisi akhir (x;y) Error (x;y) % 1 58;77 465;408 449;398 2,50;2,08 2 494;302 034;079 036;075 0,31;0,83 3 85;187 240;255 228;231 1,88;5,00 4 258;84 300;255 318;236 2,81;3,96 5 318;236 55;334 57;354 0,31;4,17 6 119;435 64;113 58;96 0,94,;0,54 7 115;58 92;315 98;298 0,94;3,54 8 383;065 91;316 80;292 1,72;5,00 9 513;296 49;69 68;87 2,97;3,75 10 494;303 45;73 36;75 1,41;0,42 11 58;77 449;398 465;408 2,50;2,08

Dalam pengujian bermain robot mampu mengambil bola sebanyak tujuh kali dalam sepuluh percobaan. Sehingga tidak semua percoaan robot mampu mengambil bola. Ini dikarenakan robot tidak sepenuhnya tepat dalam menuju titik dimana bola berada. Sehinggga robot tidak selalu mendapatkan bola tepat didepan robot.Saat robot telah mendapatkan bola robot dapat menendang bola. Tendangan mengakibatkan bola meluncur menjauhi sisi depan robot.

Dan jika robot keluar dari jangkauan kamera, robot tidak mampu membedakan apakah robot masih berada dalam jangkauan kamera atau tidak. Karena saat robot keluar dari jangkauan kamera robot tetap menerima data tabel 4.6 seolah berada dalam jangkauan kamera. Karena kemampuan untuk melihat keberadaan robot dan benda-benda lain dalam penelitian ini sepenuhnya dimiliki oleh coach computer.

Untuk memaksimalkan penelitian ini maka diperlukan beberapa perbaikan untuk pengembangannya seperti, perubahan bentuk depan robot yaitu bagian penerima bola supaya lebih maksimal dalam penerimaan dan penguasaan bola. Penambahan torsi pada


(57)

motor supaya robot bisa lebih stabil dan cepat menuju titik yang ditentukan. Dan juga penggantian sistem penendang supaya dapat menendabng lebih keras dan akurat.

Tabel 4.6 Data Diterima saat Robot di Luar Jangkauan Kamera

sp_sudut pv_sudut radius

12 170 117

13 170 117

13 170 118

12 169 118

12 169 118

12 167 118

12 167 118

12 167 118

12 167 118

12 167 118

12 167 118

12 67 118

12 167 118


(58)

BAB V

KESIMPULAN DAN SARAN

5.1

Kesimpulan

Dari hasil pengujian dari robot soccer beroda berbasis raspberry pi 3 sebagai prototipe ERSBI 2017, dapat diambil kesimpulan:

1. Sistem mampu merespon perintah atau data yang diterima untuk bergerak menuju titik tertentu dengan rata-rata error 1,66% untuk nilai x, dan 3,13% untuk nilai y.

2. Sistem mampu medapatkan bola dengan kemungkinan berhasil tujuh dari sepuluh percobaan.

3. Sistem mampu menendang bola.

4. Sistem mampu berkomunikasi dengan baik menggunakan modul socket Python.

5.2

Saran

Saran untuk pengembangan selanjutnya antara lain:

1. Perubahan desain robot supaya lebih maksimal dalam penerimaan bola denaga cara memperlebar area penerimaan bola pada robot.

2. Menggunkan solenoid dengan gaya lebih besar supaya robot mampu menendang bola dengan gaya yang lebih besar.

3. Menggunkan motor yang dengan torsi atau rpm yang lebih besar sehingga robot mampu menopang beban robot dan bergerak lebih cepat.


(59)

DAFTAR PUSTAKA

[1] ---,2016,Panduan Ekshibisi Robot Sepakbola Beroda Indonesia (ERSB),

KRI2016

[2] ---, ---, Raspberry Pi 3Model B,

https://www.raspberrypi.org/products/raspberry-pi-3-model-b/, diakses pada tanggal 20 oktober 2016

[3] ---, ---, GPIO : MODELS A+, B+, RASPBERRY PI 2B AND RASPBERRY PI 3 B, https://www.raspberrypi.org/documentation/usage/gpio-plus-and-raspi2/, diakses pada 20 oktober 2016

[4] ---, ---, Raspberry Pi 3 to I2C LCD, http://raspberry-lp2maray.blogspot.co.id/2016/10/raspberry-pi-3-to-i2c-lcd.html, diakses pada 2 november 2016

[5] ---, ---, General Python FAQ, https://docs.python.org/3/faq/general.html#what-is-python-good-for, diakses pada 21 november 2016

[6] ---, 2011, Terminologi Dasar dalam Pemograman Jaringan,

http://studiawan.com/terminologi-dasar-dalam-pemrograman-jaringan/, diakses pada 21 november 2016

[7] ---, 2011, Pemrograman Jaringann Sederhana di Python,

http://studiawan.com/pemrograman-jaringan-sederhana-di-python/, diakses pada 21 november 2016

[8] [email protected], 2014, Manual DT-Proto Arduino PiShield,

indonesia version.

[9] STMicroelectronics, 2000, L298 Dual Full-Brigde Driver, STMicroelectronics, Italy.

[10] –---, 2008, IR Obstacle Sensor, http://researchdesignlab.com/index.php/sensors/ir-obstacle-sensor.html, diakses pada 21 november 2016

[11] Zuhal, Dasar Teknik Tenaga Listrik dan Elektronika Daya. Jakarta: Gramedia, 1988 [12] Sumanto, Mesin Arus Searah. Jogjakarta: Penerbit ANDI OFFSET, 1994

[13] Halliday, 2001 Halliday, David; Resnick, Robert; Walker, Jearl. Fundamentals of Physics (6th ed.). John Wiley & Sons, Inc.


(60)

[14] Siswono, Tatang Yuli Eko; Netty Lastiningsih ,2007. Matematika 2 SMP dan MTs untuk Kelas VIII. Jakarta: Esis/Erlangga

[15] ---, ---, GPIO : RASPBERRY MODELS A AND B,

https://www.raspberrypi.org/documentation/usage/gpio/, diakses pada 21 november 2016

[16] ----, ---- , gambar rpi ke dt-proto shield,

http://www.innovativeelectronics.com/images/img_prod/prod_66/th_dt_proto_Ard uino-pishield_2.jpg, diakses pada 21 november 2016


(61)

(62)

# Data

Posisi awal Posisi Tujuan Posisi Akhir error max

x y x y x y x y x y

58 77 465 408 449 398 2.50% 2.08%

640 480

494 302 34 79 36 75 0.31% 0.83%

85 187 240 255 228 231 1.88% 5.00%

258 84 300 255 318 236 2.81% 3.96%

318 236 55 334 57 354 0.31% 4.17%

119 435 64 113 58 96 0.94% 3.54%

115 58 92 315 98 298 0.94% 3.54%

383 65 91 316 80 292 1.72% 5.00%

513 296 49 69 68 87 2.97% 3.75%

494 303 45 73 36 75 1.41% 0.42%

58 77 449 398 465 408 2.50% 2.08%

Rata-rata 1.66% 3.13%

max 2.97% 5.00%

min 0.31% 0.42%


(63)

# Program

import RPi.GPIO as gpio import os

import time

from socket import * ls_error = 0

s_error = 0 lj_error = 0 j_error = 0 error = 0 data = 0000000 pv_sudut = 000000000 sp_sudut = 000000000 dkiriml = "0"

enab = 0 tendang = 0 kon = "A" # Setup GPIO


(64)

#################################################################### gpio.setmode(gpio.BOARD) gpio.setwarnings(False) gpio.setup(7, gpio.OUT) gpio.setup(11, gpio.OUT) gpio.setup(12, gpio.OUT) gpio.setup(13, gpio.OUT) gpio.setup(15, gpio.OUT) gpio.setup(16, gpio.OUT) gpio.setup(19, gpio.OUT) gpio.setup(22, gpio.OUT) gpio.setup(18, gpio.IN) ki = gpio.PWM(16, 200) ka = gpio.PWM(7, 200) ki.start(0)

ka.start(0)

# Setup Komunikasi

##################################################### host = ""

host1 = "192.168.1.43" #host1 = "192.168.43.195" #host1 = "172.23.14.155" #host1 = "192.168.43.244" #host1 = "192.168.12.142"

port = 13000 #port yang digunakan adalah 13000, harus sama port1 = 14000

buf = 1024 #jumlah maksimal karakter yang diterima addr = (host, port)

addr1 = (host1, port1)

UDPSock = socket(AF_INET, SOCK_DGRAM) UDPSock.bind(addr)

gpio.output(19, False) print "Online" t1=0

def kode_data(data):

global kon, j_error, pv_sudut, sp_sudut, tendang, enab if data[0] == '5':

enab = int(data[1]) elif data[0] == '6':

tendang = int(data[1]) print tendang

elif data[0] == '7':

#print "koreksi sudut"

pv_sudut = int(data[1]+data[2]+data[3]+data[4]) sp_sudut = int(data[5]+data[6]+data[7]+data[8]) elif data[0] == '8':

#print "jarak"

j_error = int(data[1]+data[2]+data[3]) elif data[0] == '9':

#print "kondisi" kon = str(data[1]) elif data[0] == '0':


(65)

def olah_data():

global error, pv_sudut, sp_sudut batas = 0

s_error = 0 if sp_sudut > 0:

batas = -180 + sp_sudut if sp_sudut < 0:

batas = 180 + sp_sudut if sp_sudut >= 0:

if pv_sudut >= sp_sudut:

for i in range(sp_sudut, pv_sudut, 1): s_error = s_error - 1

if pv_sudut < sp_sudut: if pv_sudut >= batas:

for i in range(pv_sudut, sp_sudut, 1): s_error = s_error + 1 if pv_sudut < batas:

for i in range(pv_sudut, sp_sudut, 1): s_error = s_error - 1

if sp_sudut < 0:

if pv_sudut < sp_sudut:

for i in range(pv_sudut, sp_sudut, 1): s_error = s_error + 1 if pv_sudut >= sp_sudut:

if pv_sudut >= batas:

for i in range(sp_sudut, pv_sudut, 1): s_error = s_error + 1 if pv_sudut < batas:

for i in range(sp_sudut, pv_sudut, 1): s_error = s_error - 1

error = s_error / 9.5 #untuk 10 derajat = 1 error #error = s_error / 4.5 # /5 derajat

if 3 > s_error > -3: error = 0 if error > 10:

error = 10 elif error < -10:

error = -10 gpio.output(11, True) gpio.output(12, False) gpio.output(13, True) gpio.output(15, False) #if 130 > s_error > -130:

#gpio.output(11, True) #gpio.output(12, False) #gpio.output(13, True)


(66)

#gpio.output(15, False) #elif s_error >= 130:

#gpio.output(11, False) #gpio.output(12, True) #gpio.output(13, True) #gpio.output(15, False) #elif s_error <= -130:

#gpio.output(11, True) #gpio.output(12, False) #gpio.output(13, False) #gpio.output(15, True) def tampilan():

print 'radius\t\t: {}\nsudut robot\t: {}\nsudut tujuan\t: {}'.format(j_error, pv_sudut, sp_sudut)

def pid():

global ls_error, error, j_error, kon

#s_pid = long((100 * error) + ((1/0.0006) * (error - ls_error)) + ((1*0.0006) * (error + ls_error)))

s_pid = long((3 * error) + ((1 / 0.0007) * (error - ls_error)) + ((0 * 0.0007) * (error + ls_error)))

#s_pid = long((2 * error) + (1.5 * (error - ls_error)) + (0.000001 * (error + ls_error)))

if s_pid > 90: s_pid = 90 elif s_pid < -90:

s_pid = -90

#if s_error < -130 or s_error > 130: #piki = 70

#pika = 70 if j_error > 20:

piki = 30 + s_pid pika = 30 - s_pid elif j_error <= 20:

piki = 0 #+ (s_pid / 2) pika = 0 #- (s_pid / 2) if -0.5 < error < 0.5 and j_error != 0:

piki = 60 pika = 60 if piki <= 10:

piki = 0 elif piki >= 99:

piki = 99 if pika <= 10:

pika = 0 elif pika >= 99:

pika = 99 if kon == "A":


(67)

pii = piki pia = pika elif kon == "B":

pii = pika pia = piki

print 'Error\t\t: {} \nLs Error\t: {} \nJarak\t\t: {} \nPID\t\t: {} \n\t{} Kiri\tkanan {}'.format(error, ls_error, j_error, s_pid, pii, pia)

ls_error = error

ki.ChangeDutyCycle(int(pii)) ka.ChangeDutyCycle(int(pia)) print 'kondisi\t : {}'.format(kon) if __name__ == '__main__':

while True: try:

if gpio.input(18) == False: dkirim = "2"

gpio.output(19, True) elif gpio.input(18) == True:

dkirim = "1"

gpio.output(19, False) print 'enab {}'.format(enab) if enab == 1: #k

UDPSock.sendto(dkirim, addr1) print 'kirim {}'.format(dkirim) enab = 0

t2 = time.time() - t1 print '\t\t\t\t\t{}'.format(t2)

(data, addr) = UDPSock.recvfrom(buf) t1 = time.time()

print "data diterima \t: " + str(data) kode_data(data)

print 'tendang {}'.format(tendang) print(tendang)

if tendang == 1:

gpio.output(22, True) time.sleep(0.1) gpio.output(22, False) time.sleep(0.1) gpio.output(22, True) time.sleep(0.1) gpio.output(22, False) tendang = 0;

olah_data() tampilan() pid()

if data == "exit":#program berhenti jika menerima pesan exit


(68)

ki.ChangeDutyCycle(0) ka.ChangeDutyCycle(0) #ki.stop()

#ka.stop() #gpio.cleanup() #break

except KeyboardInterrupt: gpio.cleanup() UDPSock.close() os._exit(0)


(69)

(70)

(1)

def olah_data():

global error, pv_sudut, sp_sudut batas = 0

s_error = 0 if sp_sudut > 0:

batas = -180 + sp_sudut if sp_sudut < 0:

batas = 180 + sp_sudut if sp_sudut >= 0:

if pv_sudut >= sp_sudut:

for i in range(sp_sudut, pv_sudut, 1): s_error = s_error - 1

if pv_sudut < sp_sudut: if pv_sudut >= batas:

for i in range(pv_sudut, sp_sudut, 1): s_error = s_error + 1 if pv_sudut < batas:

for i in range(pv_sudut, sp_sudut, 1): s_error = s_error - 1

if sp_sudut < 0:

if pv_sudut < sp_sudut:

for i in range(pv_sudut, sp_sudut, 1): s_error = s_error + 1 if pv_sudut >= sp_sudut:

if pv_sudut >= batas:

for i in range(sp_sudut, pv_sudut, 1): s_error = s_error + 1 if pv_sudut < batas:

for i in range(sp_sudut, pv_sudut, 1): s_error = s_error - 1

error = s_error / 9.5 #untuk 10 derajat = 1 error #error = s_error / 4.5 # /5 derajat

if 3 > s_error > -3: error = 0 if error > 10:

error = 10 elif error < -10:

error = -10 gpio.output(11, True) gpio.output(12, False) gpio.output(13, True) gpio.output(15, False) #if 130 > s_error > -130:

#gpio.output(11, True) #gpio.output(12, False) #gpio.output(13, True)


(2)

#gpio.output(15, False) #elif s_error >= 130:

#gpio.output(11, False) #gpio.output(12, True) #gpio.output(13, True) #gpio.output(15, False) #elif s_error <= -130:

#gpio.output(11, True) #gpio.output(12, False) #gpio.output(13, False) #gpio.output(15, True) def tampilan():

print 'radius\t\t: {}\nsudut robot\t: {}\nsudut tujuan\t: {}'.format(j_error, pv_sudut, sp_sudut)

def pid():

global ls_error, error, j_error, kon

#s_pid = long((100 * error) + ((1/0.0006) * (error - ls_error)) + ((1*0.0006) * (error + ls_error)))

s_pid = long((3 * error) + ((1 / 0.0007) * (error - ls_error)) + ((0 * 0.0007) * (error + ls_error)))

#s_pid = long((2 * error) + (1.5 * (error - ls_error)) + (0.000001 * (error + ls_error)))

if s_pid > 90: s_pid = 90 elif s_pid < -90:

s_pid = -90

#if s_error < -130 or s_error > 130: #piki = 70

#pika = 70 if j_error > 20:

piki = 30 + s_pid pika = 30 - s_pid elif j_error <= 20:

piki = 0 #+ (s_pid / 2) pika = 0 #- (s_pid / 2) if -0.5 < error < 0.5 and j_error != 0:

piki = 60 pika = 60 if piki <= 10:

piki = 0 elif piki >= 99:

piki = 99 if pika <= 10:

pika = 0 elif pika >= 99:

pika = 99 if kon == "A":


(3)

pii = piki pia = pika elif kon == "B":

pii = pika pia = piki

print 'Error\t\t: {} \nLs Error\t: {} \nJarak\t\t: {} \nPID\t\t: {} \n\t{} Kiri\tkanan {}'.format(error, ls_error, j_error, s_pid, pii, pia)

ls_error = error

ki.ChangeDutyCycle(int(pii)) ka.ChangeDutyCycle(int(pia)) print 'kondisi\t : {}'.format(kon) if __name__ == '__main__':

while True: try:

if gpio.input(18) == False: dkirim = "2"

gpio.output(19, True) elif gpio.input(18) == True:

dkirim = "1"

gpio.output(19, False) print 'enab {}'.format(enab) if enab == 1: #k

UDPSock.sendto(dkirim, addr1) print 'kirim {}'.format(dkirim) enab = 0

t2 = time.time() - t1 print '\t\t\t\t\t{}'.format(t2)

(data, addr) = UDPSock.recvfrom(buf) t1 = time.time()

print "data diterima \t: " + str(data) kode_data(data)

print 'tendang {}'.format(tendang) print(tendang)

if tendang == 1:

gpio.output(22, True) time.sleep(0.1) gpio.output(22, False) time.sleep(0.1) gpio.output(22, True) time.sleep(0.1) gpio.output(22, False) tendang = 0;

olah_data() tampilan() pid()

if data == "exit":#program berhenti jika menerima pesan exit


(4)

ki.ChangeDutyCycle(0) ka.ChangeDutyCycle(0) #ki.stop()

#ka.stop() #gpio.cleanup() #break

except KeyboardInterrupt: gpio.cleanup() UDPSock.close() os._exit(0)


(5)

(6)