TUGAS AKHIR
RANCANG BANGUN ROBOT SHAPE FOLLOWER DENGAN METODE IMAGE PROCESSING
LAPORAN TUGAS AKHIR
Diajukan untuk memenuhi sebagian persyaratan
memperoleh gelar Ahli Madya
Disusun oleh :
RIZKY DWI SEPTANTO NIM : 9123100013
Dosen Pembimbing :
Aditya Kurniawan, S.ST. NIK : 101 01 005
Redi Bintarto, ST., M. Eng. Pract. NIK : 081 01 002
PROGRAM STUDI TEKNIK MEKATRONIKA POLITEKNIK KOTA MALANG
MALANG 2013
Rancang Bangun Robot Shape Follower Dengan Metode
Image Processing
LAPORAN TUGAS AKHIR
Diajukan kepada
Politeknik Kota Malang
untuk memenuhi salah satu persyaratan dalam menyelesaikan program Ahli Madya
Teknik Mekatronika
OLEH
RIZKY DWI SEPTANTO
NIM : 9123100013
PROGRAM STUDI TEKNIK MEKATRONIKA
POLITEKNIK KOTA MALANG
Februari 2013
i
1
LEMBAR PERSETUJUAN PEMBIMBING TUGAS AKHIR
Laporan Tugas Akhir oleh Rizky Dwi Septanto ini telah diperiksa dan disetujui
untuk diuji
Malang, 13 Februari 2013
Pembimbing I
Aditya Kurniawan, S.ST.
NIK. 101 01 005
Malang, 13 Februari 2013
Pembimbing II
Redi Bintarto, ST., M. Eng. Pract.
NIK. 081 01 002
LEMBAR PERSETUJUAN DAN PENGESAHAN TUGAS AKHIR
Laporan Tugas Akhir oleh Rizky Dwi Septanto ini telah disidangkan di depan
dewan penguji pada tanggal 18 Februari 2013
Dewan Penguji :
Penguji 1
Rizki Priya Pratama, ST., MT., MSc.
NIK. 081 02 002
Penguji 2
M. Fahmi Hakim, ST., MT.
NIK. 101 01 006
Mengetahui,
Pembantu Direktur 1 Ketua Program Studi
M. Fahmi Hakim, ST., MT. Aditya Kurniawan, S.ST.
NIK. 101 01 006 NIK. 101 01 005
1
ABSTRAK
Teknologi di bidaang robotika saat ini telah berkembang dengan pesat dan luas, terbukti
dengan sudah diaplikasikannya robot pada berbagai bidang. Robot juga dapat
menggantikan pekerjaan yang tidak dapat dikerjakan oleh manusia. Adanya perkembangan
teknologi tersebut menuntut munculnya suatu inovasi dari robot agar dapat lebih bermanfaat,
salah satunya sebagai sistem kemanan.
Pada proyek akhir ini, telah dibuat robot Shape Follower. Robot tersebut adalah salah satu
kajian dalam bidang robotika yang mampu mengenali objek yang akan
dideteksi dengan menggunakan Visual Basic 6.0 dan OpenCV untuk membandingkan
hasil image processing. Dalam penggunaannya robot dapat mendeteksi objek
menggunakan melalui webcam
yang terpasang sebagai sensor, kemudian melakukan tracking untuk menangkap dan
mengikuti gerak obyek yang terdeteksi.
Pada Proses tersebut didapatkan data mengenai koordinat obyek dan luasan obyek
yang terdeteksi. Aktuator yang digunakan adalah motor servo. Sedangkan otak dari
sistem tersebut menggunakan PC. Robot ini mampu diharapkan untuk aplikasi security system.
Kata kunci : Mikrokontroler, Visual Basic, OpenCV, Robot Vision, Motor Servo.
ABSTRACT
Technology in robotics field today has grown rapidly and spacious, it has been proved by
robots are used in the many sector. Robots also can replace the jobs that can not
be done by humans. The development of technology demand the appearance of an innovation
of robotsto be more beneficial, one of them as a security system.
In this final project, has make Shape Follower Robot. The robot is one of robotics fields
that can recognize the object which will be detected by applying visual basic 6.0 and opencv for
comparing result of image processing. In that applicating robot can detection the
object using webcam that pair as a sensor, then tracking for catch and following the object
detection.
In that case get data about object coordinate and object area that detected. actuator used
servo motor, and that brain of the system using PC. The expectation from this robot
it can for security system application.
Keyword : Microcontroller, Visual Basic, OpenCV, Robot Vision, Servo Motor.
3
KATA PENGANTAR
Puji syukur kehadirat ALLAH SWT atas karunia, rahmat, dan hidayahnya,
sehingga penulis dapat menyelesaikan tugas akhir dengan judul :
Rancang Bangun Robot Shape Follower Dengan Metode Tugas akhir
ini merupakan merupakan salah satu syarat yang harus dipenuhi oleh
setiap mahasiswa D3
Politeknik Kota Malang untuk mendapatkan gelar Ahli Madya (A.md.).
Dalam menyelesaikan tugas akhir ini, penulis berpegang pada teori
yang pernah didapatkan pada saat menempuh perkuliahan di Politeknik Kota
Malang dan bimbingan dari dosen-dosen pembimbing tugas akhir. Juga dari
pihak-pihak lain yang sangat membantu hingga tugas akhir ini dapat
diselesaikan.
Penulis telah berusaha semaksimal mungkin dalam menyelesaikan
tugas akhir ini, walaupun demikian penulis menyadari tugas akhir ini masih
jauh dari sempurna oleh karena itu, saran dan kritik yang membangun
sangat penulis nantikan guna perbaikan selanjutnya, dan semoga
tugas akhir ini
dapat bermanfaat bagi penulis khususnya dan bagi pembaca pada umumya.
Malang, 13 Februari 2013
Penulis
UCAPAN TERIMA KASIH
Penulis menyadari bahwa terlaksananya tugas akhir dan terwujudnya karya
ilmiah ini tidak terlepas dari bantuan, dukungan dan bimbingan dari
berbagai pihak. Oleh karena itu, secara khusus penulis menyampaikan
rasa terima kasih secara tulus kepada :
1. ALLAH SWT yang telah memberikan taufik, rahmat, hidayah, dan kasih
sayangnya.
2. Kedua orang tuaku Bapak dan Ibu yang banyak
memberikan doa, motivasi, kasih sayangnya hingga sampai saat
ini, terima kasih banyak atas semua yang bapak ibu berikan selama ini.
3. Kedua saudaraku Septian dan Wahyu dan juga Luki Megah Putri
yang telah menjadi semangatku dalam belajar.
4. Bapak Bagus Gunawan S.pd., M.Si. selaku Direktur Politeknik Kota
Malang.
5. Bapak Aditya Kurniawan, S.ST selaku pembimbing
pertama yang dengan sabar, tulus dan ikhlas telah
memberikan bimbingan, ilmu, tenaga, waktu, dan motivasi sehingga
penulis dapat menyelesaikan tugas akhir dengan baik.
6. Bapak Redi Bintarto, ST., M.Eng.Pract selaku pembimbing kedua
yang dengan sabar, tulus dan ikhlas telah memberikan
bimbingan, ilmu, tenaga, waktu, dan motivasi sehingga penulis dapat
menyelesaikan tugas akhir dengan baik.
7. Temen-temen TM 2010 dan anak-anak PROBE yang telah
memberikan motivasi, saran, dan masukan yang positif dalam
penyelesaian tugas akhir.
8. Berbagai pihak yang tidak dapat penulis sebutkan satu-persatu, penulis
ucapkan terimakasih atas bantuan dan dukungannya sehingga
penulis
dapat menyelesaikan tugas akhir ini dengan baik.
vii
DAFTAR ISI
Halaman
LEMBAR PERSETUJUAN PEMBIMBING TUGAS AKHIR........................ ii
LEMBAR PERSETUJUAN DAN PENGESAHAN TUGAS AKHIR ............ iii
ABSTRAK ............................................................................................................ iv
ABSTRACT ........................................................................................................... v
KATA PENGANTAR .......................................................................................... vi
UCAPAN TERIMA KASIH .............................................................................. vii
DAFTAR ISI....................................................................................................... viii
DAFTAR TABEL ................................................................................................ xi
DAFTAR GAMBAR ........................................................................................... xii
DAFTAR LAMPIRAN ....................................................................................... xv
BAB I PENDAHULUAN ...................................................................................... 1
1.1 Latar Belakang ......................................................................................... 1
1.2 Rumusan Masalah .................................................................................... 1
1.3 Tujuan Tugas Akhir.................................................................................. 2
1.4 Batasan Masalah ....................................................................................... 2
1.5 Sistematika Penulisan ............................................................................... 2
BAB II TINJAUAN PUSTAKA........................................................................... 4
2.1 Konsep Sistem Object Tracking ............................................................... 4
2.2 Image Processing ..................................................................................... 4
2.2.1 Pengolahan Citra ............................................................................... 4
2.2.2 Color Extraction ................................................................................ 5
2.2.3 Binarisasi Warna ............................................................................... 6
2.2.4 Color Filtering ................................................................................... 7
2.2.5 Sistem Warna RGB ........................................................................... 8
2.3 Metode Gaussian Matrix .......................................................................... 9
2.4 Mikrokontroler ATMEGA8 ................................................................... 10
2.5 Webcam .................................................................................................. 13
2.6 Motor Servo Standart ............................................................................. 14
2.7 Komunikasi Serial PC to Mikrokontroller ............................................. 15
2.8 Visual Basic 6.0...................................................................................... 16
2.8.1 Menu Toolbar.................................................................................. 18
viii
1
2.8.2 Menu Toolbox ................................................................................. 19
2.9 Open CV ................................................................................................. 19
BAB III PERENCANAAN SISTEM ................................................................. 21
3.1 Deskripsi Umum Mengenai Perancangan Sistem .................................. 21
3.1.1 Gambaran Umum Alat .................................................................... 21
3.2 Perancangan Sistem Mekanik................................................................. 21
3.3 Perancangan Sistem Elektrik .................................................................. 23
3.3.1 Analisis Kebutuhan Sistem ............................................................. 23
3.3.2 Perancangan Alat ............................................................................ 24 3.2.2.1 Minimum Sistem ATMEGA8 ................................................. 24
3.3.3.1 Akses Motor Servo .................................................................. 29
3.4 Perancangan Software Image Understanding pada Visual Basic .......... 30
3.4.2 Gaussian Matriks............................................................................. 34
3.4.3 Brightness Enhancement ................................................................. 43
3.4.4 Contrast Enhancement .................................................................... 45
3.4.5 Colour Filtering ............................................................................... 47
3.4.6 Center Detection.............................................................................. 49
BAB IV PENGUJIAN DAN ANALISA ............................................................ 51
4.1 Pengujian Mikrokontroler ...................................................................... 51
4.1.2 Peralatan .......................................................................................... 51
4.1.3 Langkah Pengujian .......................................................................... 51
4.1.4 Hasil dan Analisa ............................................................................ 52
4.1.5 Kesimpulan ..................................................................................... 52 4.2 Pengujian Motor Servo ........................................................................... 53
4.2.1 Tujuan ............................................................................................. 53
4.2.2 Peralatan .......................................................................................... 53
4.2.3 Langkah pengujian .......................................................................... 53
4.2.4 Hasil dan Analisa ............................................................................ 54
4.2.5 Kesimpulan ..................................................................................... 57
4.3 Pengujian komunikasi serial antara PC dengan mikrokontroler ............ 57 4.3.1 Tujuan ............................................................................................. 57
4.3.2 Peralatan .......................................................................................... 58
4.3.3 Langkah Pengujian .......................................................................... 58
4.3.4 Analisa data ..................................................................................... 61
4.3.5 Kesimpulan ..................................................................................... 63
4.4 Pengujian Aplikasi pada Visual Basic................................................... 63
4.4.1 Tujuan ............................................................................................. 63
4.4.2 Peralatan .......................................................................................... 63
4.4.3 Langkah Pengujian .......................................................................... 63
4.4.4 Analisa Data .................................................................................... 63
4.4.5 Kesimpulan ..................................................................................... 64
4.5 Pengujian Aplikasi Image Processing pada OpenCV ............................ 64
4.5.1 Tujuan ............................................................................................. 64
4.5.2 Peralatan .......................................................................................... 65
2
4.5.3 Langkah Pengujian .......................................................................... 65
4.5.4 Analisa Data .................................................................................... 65
4.5.5 Kesimpulan ..................................................................................... 66
4.6 Pengujian sistem secara keseluruhan...................................................... 67
BAB V PENUTUP............................................................................................... 68
5.1 Kesimpulan............................................................................................. 68
5.2 Saran ....................................................................................................... 68
DAFTAR PUSTAKA .......................................................................................... 70
LAMPIRAN......................................................................................................... 71
PERNYATAAN KEASLIAN TULISAN .......................................................... 95
RIWAYAT HIDUP PENULIS........................................................................... 96
1
DAFTAR TABEL
Halaman
Tabel 2.1. Kombinasi Warna Dalam Hexadesimal ................................................. 9
Tabel 3.1 Daftar komponen minimum sistem....................................................... 26
Tabel 3.2 Port Designation.................................................................................... 27
Tabel 4.1 Logika port pada led ............................................................................. 52
Tabel 4.2 data penguuran kondisi motor berdasarkan nilai sinyal PWM ............. 57
Tabel 4.3 Kondisi Image Processing terhadap hardware...................................... 67
1
DAFTAR GAMBAR
Halaman
Gambar 2.1. Contoh binarisasi api pada gambar. ................................................... 6
Gambar 2.2 Contoh Derajat Keabuan ..................................................................... 7
Gambar 2.3. Nilai Warna RGB dalam Hexadesimal .............................................. 8
Gambar 2.4. Komposisi Warna RGB...................................................................... 9
Gambar 2.5. Konfigurasi Pin AT-MEGA8 ........................................................... 11
Gambar 2.6. Kamera Video/Webcam ................................................................... 14
Gambar 2.7. Kendali Motor Servo 180° ............................................................... 15
Gambar 2.8 Dekstop Visual basic 6.0 ................................................................... 17
Gambar 2.9 Menu Bar........................................................................................... 18
Gambar 2.10 Menu Toolbar.................................................................................. 18
Gambar 2.11 Menu Toolbox Standart EXE........................................................... 19
Gambar 3.1 Blok diagram kerja sistem ................................................................. 21
Gambar 3.2 Desain mekanik 3 Dimensi ............................................................... 22
Gambar 3.3 Desain mekanik 2 Dimensi ............................................................... 23
Gambar 3.4 Rangkaian Minimum sistem Robot Shape Follower ........................ 25
Gambar 3.5 Skematik keseluruhan Minimum System robot shape follower ......... 26
Gambar 3.6 Konstruksi motor sumbu X ............................................................... 28
Gambar 3.7 Konstruksi motor sumbu Y ............................................................... 29
Gambar 3.8 Flowchart kerja sistem image understanding pada visual basic........ 31
Gambar 3.9 Proses Colour Extraction................................................................... 32
Gambar 3.10 Contoh gambar yang akan di blur ................................................... 35
Gambar 3.11 Proses colour extraction sebelum melalui gaussian ........................ 37
2
Gambar 3.12 Hasil bluring pada pixel 3x3 ........................................................... 40
Gambar 3.13 Grafik perubahan colour extraction menjadi Gaussian ................... 41
Gambar 3.14 Hasil enhancement ......................................................................... 44
Gambar 3.15 Perbedaan grafik antara Gaussian dan ........................................... 45
Gambar 3.16 Hasil Contrast enhancemet ............................................................. 47
Gambar 3.17 Grafik perubahan antara dan Kontras............................................. 47
Gambar 3.18 Grafik Rk sebelum difilter .............................................................. 48
Gambar 3.19 Grafik Rk setelah di filter................................................................ 48
Gambar 3.20 Proses menentukan titik tengah objek ............................................. 50
Gambar 4.1 Pengaturan Timer 1 pada wizard CodeVision AVR ......................... 53
Gambar 4.2 Sinyal pwm dengan periode 20 ms ................................................... 55
Gambar 4.3 Sinyal pwm sudut terbesar ................................................................ 55
Gambar 4.4 Sudut terbesar pada motor servo X ................................................... 56
Gambar 4.5 Sinyal pwm sudut terkecil ................................................................. 56
Gambar 4.6 sudut terkecil pada motor servo X..................................................... 57
Gambar 4.7 Konfigurasi USART pada CodeWizard AVR .................................. 59
Gambar 4.8 Konfigurasi terminal pada Codevision AVR .................................... 60
Gambar 4.9 Contoh tampilan aplikasi komunikasi PC-Mikrokontroler ............... 60
Gambar 4.8 Contoh program komunikasi serial pada visual basic ....................... 60
Gambar 4.10 Pengiriman angka 1 pada VB.......................................................... 61
Gambar 4.11 Hasil data yang diterima pada percobaan pertama .......................... 61
Gambar 4.12 Pengiriman angka 2 pada VB.......................................................... 62
Gambar 4.13 Hasil data yang diterima pada percobaan kedua ............................. 62
Gambar 4.14 Pengiriman angka 3 pada VB.......................................................... 62
3
Gambar 4.15 Hasil data yang diterima pada percobaan ketiga ............................. 62
Gambar 4.16 Pengujian Image Processing pada Visual Basic 1 .......................... 64
Gambar 4.17 Pengujian Image Processing pada Visual Basic 2 .......................... 64
Gambar 4.18 Pengujian Image Processing pada OpenCV 1 ................................ 65
Gambar 4.19 Pengujian Image Processing pada OpenCV 2 ................................ 66
Gambar 4.20 Aplikasi konsol................................................................................ 66
4
DAFTAR LAMPIRAN
Halaman
Lampiran 1 Foto hasil rancang bangun robot shape follower............................... 72
Lampiran 2 Desain PCB Minimum system robot Shape Follower. ...................... 73
Lampiran 3 Desain aplikasi Image Processing dengan visual basic.................... 74
Keterangan Lampiran 3 ........................................................................................ 75
Lampiran 4 List program aplikasi image processing dengan visual basic............ 76
Lampiran 5 List program aplikasi image processing dengan OpenCV. ............... 82
Lampiran 6 List program kontroler untuk OpenCV. ............................................ 87
Lampiran 7 List program kontroler untuk Visual Basic. ...................................... 91
BAB I
PENDAHULUAN
1.1 Latar Belakang
Robot Shape Follower bisa dipahami sebagai sebuah contoh kasus
yang cukup istimewa dari sekian banyak permasalahan umum yang
dipelajari dalam bidang computer vision. Tingginya perkembangan
kemampuan dari suatu komputer saat ini dan meningkatnya
kebutuhan akan analisis video yang dilakukan secara otomatis telah
banyak menghasilkan sesuatu yang hebat dan menarik dalam algoritma
tracking objek.
Penggunaan Robot Shape Follower merupakan sebuah hal yang
penting bagi sejumlah aplikasi yang menguntungkan dalam penerapannya, seperti
security system, sistem navigasi robot, aplikasi penting lainnya terutama
dalam bidang robotika yaitu mobile robot maupun robotic soccer serta masih
banyak lagi yang bisa diaplikasikan.
Sudah diketahui bahwa vision mampu digunakan sebagai sebuah
sensor robot yang handal dikarenakan kemampuannya untuk nonkontak
dengan media dan penghitungan langsung dari lingkungan dan juga
ketentuan dari beberapa informasi
Pada proyek akhir ini penulis akan membuat sistem yang betujuan dalam
penggunaan sebuah alat untuk melakukan tracking / pelacakan sebuah
sebuah bentuk benda lalu mengikutinya pada jarak yang bisa berubah-ubah.
Setiap prosedur tracking dibagi dalam dua blok utama yang
berperan dalam mencari objek dan mengikutinya. Yang pertama adalah
permasalahan deteksi objek yang bisa diselesaikan melalui pemrosesan
data sensor (kamera). Sedangkan untuk tugas yang kedua adalah mengenai
pengendalian.
1.2 Rumusan Masalah
Berdasarkan latar belakang di atas, maka dapat di ambil rumusan masalah
sebagai berikut :
a. bagaimana cara mengontrol pergerakan Robot Shape Follower
sehingga
target tetap berada dipandangan kamera ?
1
2
b. bagaimana cara menemukan obyek yang dimaksud sebagai
target jika terdapat benda lain di sekitarnya ?
c. bagaimana cara menentukan obyek mana yang harus dideteksi?
d. bagaimana cara mengaplikasikan pembacaan gambar yang ditangkap kamera?
1.3 Tujuan Tugas Akhir
Setelah merumuskan masalah yang didapat. Maka dapat
disimpulkan bahwa tujuan dari Tugas Akhir ini adalah :
a. dapat mengontrol pergerakan Robot Shape Follower sehingga target
tetap berada dipandangan kamera .
b. dapat menemukan obyek yang dimaksud sebagai target jika terdapat
benda lain di sekitarnya.
c. dapat menentukan obyek mana yang harus dideteksi.
d. dapat mengaplikasikan pembacaan gambar yang ditangkap kamera.
1.4 Batasan Masalah
Karena kompleksnya permasalahan yang terdapat dalam sistem ini, maka
perlu adanya batasan-batasan untuk menyederhanakan permasalahan ini, yaitu:
1. sensor yang digunakan untuk menentukan dimana tempat benda
menggunakan kamera
2. sebagai penghasil penggerak kamera digunakan motor servo.
3. kamera telah diseting pada sudut maksimum 0-180°.
4. background menggunakan warna monochrome atau satu warna.
5. iluminasi yang mengenai obyek harus dalam sebaran yang rata.
6. objek benda berwarna dan kontras terhadap background.
1.5 Sistematika Penulisan
Yang digunakan dalam laporan Tugas Akhir ini adalah sebagai berikut:
BAB I PENDAHULUAN
Bab ini berisi latar belakang permasalahan, perumusan masalah, tujuan,
batasan masalah, definisi istilah, dan sistematika penulisan laporan Tugas Akhir.
3
BAB II TINJAUAN PUSTAKA
Pada bab ini akan dijelaskan tentang teori – teori serta penjelasan yang dibutuhkan
dalam pembuatan Robot Shape Follower sebagai modul praktikum sistem kendali.
BAB III METODE PENELITIAN
Bab ini berisi tentang analisa dan perancangan Robot Shape Follower
sebagai modul praktikum sistem kendali.
BAB IV PENGUJIAN ALAT
Bab ini berisi tentang jadwal pelaksanaan tugas akhir.
DAFTAR PUSTAKA
Bab ini berisi tentang literatur sebagai teori pendukung pembahasan pada laporan
Tugas Akhir ini.
BAB II
TINJAUAN PUSTAKA
Tinjauan pustaka dalam bab II ini membahas tentang teori-teori
yang mendukung dalam perencanaan dan pembuatan alat, yang meliputi : Web
Kamera, Mikrokontroller, motor servo, komunikasi serial.
2.1 Konsep Sistem Object Tracking
Tugas dari suatu penangkapan / deteksi obyek didefinisikan
sebagai mengenali suatu obyek tertentu, sedangkan tracking / pelacakan
didefinisikan sebagai mendekati sebuah obyek (juga disebut target) sampai
cocok lokasinya. Kedua tugas tersebut memiliki kegunaan dalam lingkup
yang luas dari suatu aplikasi seperti contohnya sebagai robot sepakbola.
Untuk kasus tracking, terdapat dua kasus yang bisa timbul. Pada
kasus pertama, ketika gerakan target diketahui,
permasalahannya yaitu untuk merencanakan robot bergerak
menuju ke titik tempat yang sesuai. Pada kasus kedua, ketika background
bukan monochrome ataupun objek memiliki lebih dari 1 warna, maka perlu
bergantung pada beberapa jenis estimasi dari posisi dan kecepatan
yang datang dari data sensor.
2.2 Image Processing
2.2.1 Pengolahan Citra
Pengolahan Citra adalah suatu metode yang digunakan
untuk mengolah gambar sehingga menghasilkan gambar yang
sesuai dengan yang keinginkan kita. Pengambilan gambar
bisa dilakukan dengan menggunakan kamera atau alat
lain yang bisa digunakan untuk mentransfer
gambar misalnya scanner atau kamera digital.
Bahasan kali ini berfokus pada pengambilan gambar menggunakan
web kamera. Sehingga gambar yang dihasilkan sudah berbentuk
sinyal
digital dan mudah dikenali atau dibaca komputer.
4
5
2.2.2 Color Extraction
Dalam sebuah image terdiri dari banyak pixel. Pixel
secara konseptual, satu warna, mewakili daerah kecil kecil gambar.
Sebuah pixel warna digital gambar hanya angka mewakili data nilai RGB
(Red, Green, Blue). Sampel warna setiap pixel memiliki tiga komponen
numerik RGB (Red, Green, Blue) untuk mewakili warna wilayah
pixel kecil. Ketiga komponen RGB tiga adalah tiga nomor 8-bit untuk
setiap pixel. Tiga byte
8-bit (satu byte untuk masing-masing RGB) disebut 24 bit warna. Setiap
komponen RGB 8 bit dapat memiliki 256 nilai yang mungkin, mulai dari 0
hingga 255. Sebagai contoh, tiga nilai seperti (250, 165, 0), berarti (Red =
250, Green = 165, Blue = 0) untuk menunjukkan satu pixel
Orange. Program foto Editor memiliki EyeDropper tool untuk
menunjukkan 3 komponen warna RGB untuk setiap pixel gambar.
Dalam sistem biner basis 2, sebuah byte 8 bit dapat berisi salah satu
dari 256 nilai berkisar dari 0 hingga 255, karena 2 pangkat 8 adalah 256,
seperti yang terlihat dalam urutan 2,4,8,16,32,64,128,256.
Kedelapan tersebut adalah 256. Ini adalah konsep yang sama dalam basis
10, bahwa 3 angka desimal dapat menyimpan satu nilai dari 1000,
0 sampai 999. 10 pangkat 3 adalah 1000, ide yang sama seperti 2
pangkat 8 adalah 256.
Tetapi titik hanya di sini adalah bahwa 255 adalah
jumlah maksimum yang mungkin yang dapat disimpan dalam sebuah
byte 8 bit. Angka yang lebih besar memerlukan beberapa byte, misalnya
dua byte (16 bit) dapat menyimpan hingga 256x256 =65536 nilai
yang unik. 24 bit RGB gambar berwarna menggunakan 3 byte,
dan dapat memiliki 256 warna merah, dan 256 warna hijau,
dan 256 warna biru. Ini adalah
256x256x256 = 16,7 juta kemungkinan kombinasi atau warna untuk 24 bit
RGB gambar berwarna. Pixel RGB nilai data menunjukkan
"berapa banyak" Merah, dan Hijau, dan Biru, dan tiga warna dan tingkat
intensitas akan dikombinasikan pada saat itu pixel gambar, di lokasi pixel.
6
Komposit dari tiga nilai RGB menciptakan warna akhir
untuk satuarea pixel. Dalam sistem RGB, kita tahu Red dan
Green membuat Kuning. Jadi, (255, 255, 0) berarti Merah dan
Hijau, masing-masing sepenuhnya jenuh (255 adalah seterang 8 bit
dapat), dengan tidak ada Biru (nol), dengan warna yang dihasilkan menjadi
kuning.
Hitam adalah nilai RGB (0, 0, 0) dan putih adalah (255, 255, 255).
Gray menarik juga, karena memiliki sifat yang memiliki nilai RGB yang
sama. Jadi (220, 220, 220) adalah abu-abu terang (mendekati putih), dan
(40,40,40) adalah abu-abu gelap (mendekati hitam). Gray tidak
memiliki cetakan warna yang tidak seimbang.
Karena abu-abu memiliki nilai sama di RGB, Black &
White gambar grayscale hanya menggunakan satu byte dari 8 bit data
per pixel bukannya tiga.. Byte masih memegang nilai-nilai 0
hingga 255, untuk mewakili 256 warna abu-abu.
Baris piksel seni diwakili oleh satu bit biner dengan nilai 0 atau 1,
yang digunakan untuk menunjukkan Hitam atau Putih (2 warna,
bukan abu-abu). Baris data seni disimpan dikemas 8 bit menjadi satu 8-bit
byte.
2.2.3 Binarisasi Warna
Binarisasi merupakan proses untuk memisahkan obyek yang
kita ambil dengan latar belakang menggunakan teknik Color
Filtering pada warna-warna yang mendekati warna obyek yang
kita tentukan pada
Gambar 2.1.
Gambar 2.1. Contoh binarisasi api pada gambar.
7
2.2.4 Color Filtering
Color Filtering adalah metode yang berguna untuk
menemukan sebuah warna yang terdapat pada sebuah gambar.
Dengan ditemukannya warna yang kita cari pada sebuah gambar, kita
dapat menentukan proses apa yang selanjutnya harus dilakukan.
Pada dasarnya pencarian ini menggunakan kombinasi dari
komponen Red, Green, dan Blue yang terdapat pada gambar.
Nilai dari masing-masing komponen ini didapat dari hasil beberapa kali
eksperimen. Hasil dari eksperimen ini adalah sebuah kombinasi dari
komponen warna Red, Green, dan Blue. Kombinasi warna ini yang
kemudian dijadikan filter yang merupakan penentu sebuah warna
diloloskan atau tidak.
Keluaran dari metode ini langsung akan menghasilkan
sebuah gambar biner. Gambar biner sendiri adalah sebuah gambar
yang hanya memiliki 2 derajat keabuan yaitu hitam dan putih seperti pada
Gambar 2.2. Warna putih pada gambar adalah merupakan representasi dari
sebuah pixel yang warnanya
diloloskan. Sedangkan warna hitam pada
gambar merupakan representasi dari pixel yang
warnanya tidak diloloskan.
Sehingga dari proses di atas, kita dapat menyimpulkan
bahwa warna putih pada gambar adalah objek yang sedang kita
cari. Karena warna putih pada gambar merupakan warna pada pixel yang
sesuai dengan
filter yang kita dapat dari hasil eksperimen pada Gambar 2.2.
Gambar 2.2 Contoh Derajat Keabuan
8
2.2.5 Sistem Warna RGB
Dalam pengolahan citra warna dipresentasikan dengan
nilai hexadesimal dari 0x00000000 sampai 0x00ffffff. Warna hitam
adalah
0x00000000 dan warna putih adalah 0x00ffffff. Definisi nilai warna di atas
seperti Gambar 2.3 di bawah, variabel 0x00 menyatakan
angka di belakangnya adalah hexadesimal.
Terlihat pada Gambar bahwa setiap warna memiliki range nilai 00
(angka desimalnya adalah 0) dan ff (angka desimalnya adalah 256), atau
mempunyai nilai derajat keabuan 256 = 28. Dengan demikian range warna
yang digunakan adalah (28)(28)(28) = 224, 2 (atau yang dikenal
dengan istilah True Colour pada Windows). Nilai warna yang
digunakan di atas merupakan gabungan warna cahaya merah, warna
hijau dan warna biru seperti yang terlihat pada gambar di bawah.
Sehingga untuk menentukan nilai dari suatu warna yang bukan warna
dasar digunakan gabungan skala kecerahan dari setiap warnanya.
Dari definisi Gambar 2.3 di bawah untuk menyajikan
warna tertentu dapat dengan mudah dilakukan, yaitu dengan
mencampurkan ketiga warna dasar RGB. Berikut merupakan
contoh-contoh kombinasi warna yang bisa digunakan dapat dilihat
pada Gambar 2.4 dan
dapat
menentukan kombinasi warna dengan melihat Tabel 2.1.
Gambar 2.3. Nilai Warna RGB dalam Hexadesimal
9
Gambar 2.4 Komposisi Warna RGB
Tabel 2.1. Kombinasi Warna Dalam Hexadesimal
2.3 Metode Gaussian Matrix
Sebuah blur Gaussian (juga dikenal sebagai Gaussian
smoothing) adalah hasil dari mengaburkan gambar dengan fungsi
Gaussian. Ini adalah efek banyak digunakan dalam perangkat
lunak grafis, biasanya untuk mengurangi noise gambar dan
mengurangi detail. Efek visual teknik blurring adalah blur halus
menyerupai gambar yang dilihat melalui layar transparan, jelas berbeda
dari bokeh efek yang dihasilkan oleh lensa out-
of-focus atau bayangan obyek di bawah pencahayaan yang biasa. Gaussian
smoothing juga digunakan sebagai tahap pra-pengolahan di
computer vision algoritma dalam rangka meningkatkan struktur citra
pada skala yang berbeda-lihat representasi ruang skala dan skala
implementasi ruang .
Secara matematis, menerapkan Gaussian blur untuk gambar adalah
sama dengan convolving gambar dengan fungsi Gaussian , ini juga dikenal
10
2
1
sebagai two-dimensional Weierstrass transform. Sebaliknya,
convolving oleh lingkaran (yaitu, circular box blur ) akan lebih akurat
mereproduksi bokeh efek. Sejak Transformasi Fourier dari
Gaussian Gaussian lain, menerapkan blur Gaussian memiliki efek
mengurangi komponen gambar dengan frekuensi tinggi,
dengan demikian sebuah blur Gaussian
merupakan low pass filter.
1
2 1
2 1
4
2
1
atau 0
1 0
1 0
4
1 0
Matriks 3×3
Gaussian blur memilki nilai matriks seperti yang di atas.
Dalam penerapannya matriks yang digunakan hanya salah satu dari kedua
matriks tersebut. Pemilihan matriks digunakan sesuai dengan
kebutuhan yang diinginkan. Sedangkan rumus umum dari Gaussian
adalah sebagai berikut
:
Matriks Umum Gaussian
Ket : = nilai matriks dengan bobot paling ringan
= nilai matriks dengan bobot sedang
= nilai matriks dengan bobot paling berat
2.4 Mikrokontroler ATMEGA8
AVR merupakan salah satu jenis mikrokontroler yang di dalamnya
terdapat berbagai macam fungsi. Perbedaannya pada mikrokontroler MCS51 dengan
AVR adalah, jika AVR tidak perlu menggunakan oscillator eksternal karena
di dalamnya sudah terdapat internal oscillator. Selain itu kelebihan dari AVR
adalah memiliki Power-On Reset, yaitu tidak perlu ada tombol reset dari luar karena
cukup hanya dengan mematikan supply, maka secara otomatis AVR akan
11
melakukan reset. Untuk beberapa jenis AVR
12
terdapat beberapa fungsi khusus seperti ADC, EEPROM sekitar 128 byte sampai dengan
512 byte. AVR AT-MEGA8 adalah mikrokontroler CMOS 8-bit berarsitektur AVR RISC
yang memiliki 8K byte in-System Programmable Flash. Mikrokontroler dengan konsumsi
daya rendah ini mampu mengeksekusi instruksi dengan kecepatan maksimum 16 MIPS
pada frekuensi 16 MHz. Jika dibandingkan dengan AT-MEGA8L perbedaannya
hanya terletak pada besarnya tegangan yang diperlukan untuk bekerja. Untuk AT-
MEGA8 tipe
L, mikrokontroler ini dapat bekerja dengan tegangan antara 2,7 - 5,5 V sedangkan untuk
AT-MEGA8 hanya dapat bekerja pada tegangan antara 4,5 – 5,5 V.
Konfigurasi Pin AT-MEGA8 dapat dilihat pada Gambar 2.5.
Gambar 2.5. Konfigurasi Pin AT-MEGA8
AT-MEGA8 memiliki 28 Pin, yang masing-masing pin nya memiliki
fungsi yang berbeda-beda baik sebagai port maupun fungsi yang lainnya.
Berikut akan dijelaskan fungsi dari masing-masing kaki AT-MEGA8.
1. VCC
Merupakan supply tegangan digital.
13
2. GND
Merupakan ground untuk semua komponen yang
membutuhkan
grounding.
3. Port B (PB7...PB0)
Di dalam Port B terdapat XTAL1, XTAL2, TOSC1, TOSC2.
Jumlah Port B adalah 8 buah pin, mulai dari Pin B.0 sampai dengan Pin
B.7. Tiap pin dapat digunakan sebagai input maupun output. Port B
merupakan sebuah
8-bit bi-directional I/O dengan internal pull-up resistor. Sebagai input, pin-
pin yang terdapat pada port B yang secara eksternal diturunkan, maka akan
mengeluarkan arus jika pull-up resistor diaktifkan. Khusus PB6
dapat digunakan sebagai input Kristal (inverting oscillator amplifier) dan
input ke rangkaian clock internal, bergantung pada pengaturan
Fuse bit yang digunakan untuk memilih sumber clock.
Sedangkan untuk PB7 dapat digunakan sebagai output Kristal
(output oscillator amplifier) bergantung pada pengaturan Fuse bit yang
digunakan untuk memilih sumber clock. Jika sumber clock yang dipilih
dari oscillator internal, PB7 dan PB6 dapat digunakan sebagai I/O
atau jika menggunakan Asyncronous Timer/Counter2 maka PB6 dan PB7
(TOSC2 dan TOSC1) digunakan untuk saluran input timer.
4. Port C (PC5…PC0)
Port C merupakan sebuah 7-bit bi-directional I/O port yang di dalam
masing-masing pin terdapat pull-up resistor. Jumlah pin nya hanya 7
buah mulai dari pin C.0 sampai dengan pin C.6. Sebagai
keluaran/output port C memiliki karakteristik yang sama dalam hal
menyerap arus (sink) ataupun mengeluarkan arus (source).
5. RESET / PC6
Jika RSTDISBL Fuse diprogram, maka PC6 akan berfungsi
sebagai pin I/O. Pin ini memiliki karakteristik yang berbeda dengan
pin-pin yang terdapat pada port C lainnya. Namun jika RSTDISBL Fuse
tidak diprogram, maka pin ini akan berfungsi sebagai input reset.
Jika level tegangan yang masuk ke pin ini rendah dan pulsa
yang ada lebih pendek dari pulsa minimum, maka akan
menghasilkan suatu kondisi reset meskipun clock-nya tidak bekerja.
6. Port D (PD7…PD0)
14
Port D merupakan 8-bit bi-directional I/O dengan internal
pull-up resistor. Fungsi dari port ini sama dengan port-port yang
lain. Hanya saja pada port ini tidak terdapat kegunaan-kegunaan
yang lain. Pada port ini hanya berfungsi sebagai masukan dan keluaran
saja atau biasa disebut dengan I/O.
7. AVCC
Pin ini berfungsi sebagai supply tegangan untuk ADC. Untuk pin ini
harus dihubungkan secara terpisah dengan VCC karena pin ini
digunakan untuk analog saja. Bahkan jika ADC pada AVR tidak
digunakan tetap saja disarankan untuk menghubungkannya secara
terpisah dengan VCC. Jika ADC digunakan, maka AVCC harus
dihubungkan ke VCC melalui low pass filter.
8. AREF
Merupakan pin referensi jika menggunakan ADC.
2.5 Webcam
Webcam (singkatan dari web camera) adalah sebutan bagi kamera
real- time ataun online (bermakna keadaan pada saat ini juga) yang
gambarnya bisa diakses atau dilihat melalui internet, PC, atau aplikasi video
call. Istilah webcam merujuk pada teknologi secara umumnya, sehingga
kata web kadang-kadang diganti dengan kata lain yang mendeskripsikan
pemandangan yang ditampilkan di kamera, misalnya StreetCam yang
memperlihatkan pemandangan jalan. Ada juga Metrocam yang
memperlihatkan pemandangan panorama kota dan pedesaan, TraffiCam
yang digunakan untuk memonitor keadaan jalan raya, cuaca dengan
Weather Cam, bahkan keadaan gunung berapi dengan VolcanoCam. Webcam atau
web camera adalah sebuah kamera video digital kecil yang
dihubungkan ke komputer melalui (biasanya) port USB ataupun port
COM. Pada gambar 2.6.
merupakan contoh bentuk fisik dari webcam.
15
Gambar 2.6. Kamera Video/Webcam
2.6 Motor Servo Standart
Motor servo standart 180° merupakan motor servo
standart yang hanya mampu berputar 180°. Motor ini sering digunakan
dalam pengendalian lengan atau kaki robot. Motor 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°. Operasional motor servo dikendalikan oleh lebar pulsa sebesar ± 20
ms, dimana lebar pulsa antara 1 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 medekati 0° dan bila
kita berikan pulsa lebih dari
1.5 ms maka posisi mendekati 180°. Untuk lebih jelasnya dapat dilihat
dari
Gambar 2.7 pulsa kendali motor servo standart 180°.
16
Gambar 2.7. Kendali Motor Servo 180°
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 kurang dari pada kondisi
Duty Cycle 1.5 ms, maka rotor akan berputar ke kiri dengan membentuk
sudut yang besarnya linier terhadap besarnya duty cycle, dan akan
bertahan di posisi tersebut. Dan sebaliknya, jika duty cycle dari sinyal
yang diberikan lebih dari 1.5 ms, maka rotor akan berputar ke arah kanan dengan
membentuk sudut yang linier pula terhadap besarnya duty cycle, dan bertahan di
posisi tersebut.
2.7 Komunikasi Serial PC to Mikrokontroller
Komunikasi serial merupakan komunikasi data dengan pengiriman secara
satu persatu dengan menggunakan satu jalur kabel data. Sehingga
komunikasi
17
serial hanya menggunakan 2 kabel data yaitu kabel data untuk pengiriman
yang disebut transmit (Tx) dan kabel data untuk penerimaan disebut receive.
Kelebihan dari komunikasi serial adalah jarak pengiriman dan penerimaan
dapat dilakukan dalam jarak yang cukup jauh dibandingkan komunikasi
parallel tetapi
kekurangannya adalah kecepatannya lebih lambat daripada komunikasi
parallel, untuk saat ini sedang dikembangkan teknologi baru yang
dinamakan USB (Universal Serial Bus) yang memiliki kecepatan pengiriman
dan penerimaan data lebih cepat disbanding serial biasa.
2.8 Visual Basic 6.0
Visual basic adalah salah satu bahasa pemrograman computer.
Bahasa pemrograman adalah perintah-perintah yang dimengerti oleh
computer untuk melakukan tugas-tugas tertentu. Bahasa pemrograman
Visual basic, yang dikembangkan oleh Microsoft sejak tahun 1991,
merupakan pengembangan dari pendahulunya yaitu bahasa
pemrograman BASIC (Beginner’s All-purpose
Symbolic Instruction Code) yang dikembangkan ada era 1950-an. Visual
basic merupakan salah satu Development Tool yaitu alat bantu untuk membuat
berbagai macam program computer, khususnya yang menggunakan
sistem operasi Windows. Visual basic merupakan salah satu bahasa
pemrograman computer yang mendukung object (Object Oriented Programming =
OOP)
Microsoft visual basic 6.0 yang lebih sering disebut VB Merupakan sebuah
bahasa pemrograman yang bersifat event driven dan menawarkan
Integrated Development Environment (IDE) visual untuk membuat program
aplikasi berbasis sistem operasi microsoft windows dengan menggunakan
model pemrograman Common Object Model (COM). Visual basic merupakan
turunan bahasa basic dan menawarkan pengembangan aplikasi computer
berbasis grafik dengan cepat, akses ke basis data menggunakan Data
Access Object (DAO), Remote Data Object (RDO), atau ActiveX Data
Object (ADO), serta menawarkan pembuatan control ActiveX dan objek
ActiveX.
Dalam pemrograman berbasis object (OOP), kita perlu memahami
istilah
object, property, method dan event sebagai berikut :
18
Object : komponen di dalam sebuah program
19
Property : karakteristik yang dimiliki object
Method : aksi yang dapat dilakukan oleh object
Event : kejadian yang dapat dialami oleh object
Secara keseluruhan penampilan desktop Visual basic adalah seperti yang pada
Gambar 2.5 yang terdiri atas bagian bagian sebagai berikut :
Toolbar, shortcut yang dipergunakan untuk membuat perintah
Menu Bar, menu untuk perintah Visual basic
Tool Box, komponen yang dipergunakan untuk membuat form
Form, bidang yang akan ditampilkan sebagai visual
Editor Code, bidang tempat menulis program
Property, daftar setting untuk setiap komponen
Form Layout, penampakan pada layer
Project Explorer
Gambar 2.8 Dekstop Visual basic 6.0
Menu bar terdiri dari menu File, Edit, View, Project,
Format, Debug, Run,Query, Diagram, Tools,Add-Ins, Window dan Help.
20
10
Gambar 2.9 Menu Bar
2.8.1 Menu Toolbar
Menu Toolbar merupakan menu berbentuk icon yang berisi
perintah. Setiap menu toolbar terdapat juga pada menu
utama Visual basic.
Gambar 2.10 Menu Toolbar
21
2.8.2 Menu Toolbox
Setiap pembuatan project baru dan pilihan project
adalah Standard EXE maka akan muncul menu toolbox
standard seperti pada Gambar 2.12 berikut
Gambar 2.11 Menu Toolbox Standart EXE
Pada pembuatan program aplikasi instrumentasi dan control
kita tidak mempergunakan menu toolbox standard karena
kita masih memerlukan komponen lain untuk keperluan mengakses
port juga mengolah serta menyimpan.
Meskipun kita juga masih dapat menambahkan
komponen baru sesuai kebutuhan proses control dengan cara
menambahkan komponen yang tersedia dalam Visual
Component Library dan komponen control OCX, tetapi
sebenarnya kita tidak perlu repot dengan hal tersebut
melainkan dengan cara membuat project baru menggunakan
wizard yang tersedia.
2.9 Open CV
Open CV adalah singakatan dari Open Computer Vision, yaitu
library- library opensource yang dikhususkan untuk melakukan
Image Processing. Tujuannya adalah agar komputer mempunyai kemampuan
yang mirip dengan cara pengolahan visual pada manusia. Library ini dibuat
untuk bahasa C/C++ sebagai optimasi realtime aplikasi, API(Aplication
Programming Interface) untuk High level maupun low level, terdapat
fungsi-fungsi yang siap pakai untuk loading , saving, akuisisi gambar dan
video.
Pada library OpenCV ini mempunyai fitur sebagai berikut :
Manipulasi data gambar (alokasi memori, melepaskan memori,
kopi gambar, seting, serta konversi gambar).
22
Image/Video I/O (bisa menggunakan kamera yang sidah didukung oleh
library ini).
Manipulasi matrix dan vektor serta terdapat juga routines linear algebra
(products, solvers, eigenvalues, SVD)
Image Processing dasar (filtering, edge detection,
sampling dan interpolasi, konversi warna operasi morfologi,
histogram, image pyramid)
Analisis struktural
Kalibrasi kamera
Pendeteksian gerak
Pengenalan objek
Basic GUI (display gambar/video, mouse/keyboard kontrol, scroll bar)
Image labelling (line, conic, polygon, text drawing)
BAB III
PERENCANAAN SISTEM
3.1 Deskripsi Umum Mengenai Perancangan Sistem
Dalam perancangan ini, robot shape follower ini nantinya akan
dijadikan sebagai media pembelajaran perkuliahan Image Processing dan sistem
kendali.
3.1.1 Gambaran Umum Alat
Gambar 3.1 Blok diagram kerja sistem
Cara kerja dari masing-masing blok diagram di atas adalah sebagai berikut :
1. Webcam : alat berupa kamera untuk PC yang biasa
digunakan untuk mengambil gambar digital.
2. PC : alat yang berfungsi untuk memprogram sekaligus
menerima dan mengirim data.
3. Mikrokontroler : sebuah device yang berfungsi sebagai
pemroses data input atau output.
4. Motor servo : sebagai aktuator penggerak kamera
3.2 Perancangan Sistem Mekanik
Rangka utama pada robot ini menggunakan akrilik 3mm. Pada robot
ini dapat bergerak sejajar sumbu X dan Y dengan menggunakan motor servo.
Berikut
ini dijelaskan tentang penggunaan bahan, bentuk dan ukuran yang
digunakan dalam tugas akhir ini :
1. Papan dasar menggunakan bahan triplek dengan ukuran 225 x 225 mm
sebagai penopang rangkaian elektronik serta mekanik.
21
22
2. Papan landasan menggunakan bahan akrilik dengan ukuran 200mm x
200mm dengan tebal 3mm sebagai penopang motor sumbu X.
3. Rangka mekanik dinamis sumbu X menggunakan bahan akrilik
dengan ukuran 165 x 150 x 65 mm dengan model huruf U
dengan penopang miring sebagai penyangga..
4. Kemudian rangka dinamis sumbu Y menggunakan bahan akrilik
dengan ukuran 135 x 130 x 65 mm dengan model huruf U
sebagai penopang kamera.
5. Kamera diletakkan tepat Ditengah rangka mekanik sumbu Y agar dapat
bergerak sesuai gerakan motor.
6. Untuk mengubah gerakan rangka digunakan motor servo standar.
1. Desain rancangan robot shape follower (3Dimensi)
Kamera
Motor servo Y
Rangka sumbu X
Rangka Motor Y
Landasan mekanik Motor servo X
Papan triplek
Gambar 3.2 Desain mekanik 3 Dimensi
23
2. Desain Rancangan Mekanik (2 dimensi)
Gambar 3.3 Desain mekanik 2 Dimensi
3.3 Perancangan Sistem Elektrik
Desain perancangan robot ini terdiri dari
beberapa sistem, yaitu menggerakkan
kamera sejajar sumbu X dan sumbu Y menggunakan motor servo, robot ini juga
menggunakan kamera sebagai sensor agar dapat melihat objek atau yang sering
disebut dengan robot vision. Kemudian untuk menggerakkan kedua motor
servo tersebut dibutuhkan mikrokontroler ATmega8. Mikrokontroler
ATmega8 tersebut bertugas sebagai otak dari robot ini
3.3.1 Analisis Kebutuhan Sistem
Pembuatan keseluruhan sistem robot shape follower ini
perlu diperinci semua kebutuhan sistem mekanik maupun elektrik yang
dibuat, antara lain :
24
1. mikrokontroler sebagai pemroses dan pengendali motor.
2. pengendali putaran motor servo menggunakan timer mikrokontroler.
3. sensor menggunakan kamera webcam.
4. rangka robot menggunakan bahan akrilik dengan tebal 3mm.
5. komunikasi serial antar PC dan Mikrokontroler
menggunakan
Max232.
6. sumber tegangan DC +5V digunakan untuk men-suplay
minimum system dan motor servo.
3.3.2 Perancangan Alat
3.2.2.1 Minimum Sistem ATMEGA8
Proses kerja dari sistem otomasi mutlak memerlukan
sistem kontrol baik menggunakan sebuah sistem mekanik,
sistem elektrik ataupun menggunakan PC (Personal Computer).
Apabila suatu sistem otomasi dikatakan layaknya semua organ
tubuh manusia seutuhnya maka sistem kontrol merupakan bagian
otak / pikiran, yang mengatur dari keseluruhan gerak tubuh.
Sebagai sistem kontrol pada robot shape follower
digunakan Mikrokontroler ATMega8. Desain dari minimum
system rangkaian Mikrokontroler ATMega8 dapat dilihat pada
Gambar 3.1. Untuk memanfaatkan clock exsternal dalam
perancangan harus menambahkan beberapa komponen
pendukung yaitu dua buah kapasitor (C1, C2) dan crystal
maksimal 16 MHZ (X-TAL), dan Push Button (PB1) untuk tombol
reset microcontroller ATMega8. Dengan rangkaian ini program
yang sudah dibuat dapat dimasukkan ke dalam Microcontroller
ATMega8, yang nantinya akan menjadi sistem kontrol
pergerakan dari robot tersebut.
25
Rangkaian komunikasi
serial
ATmega8
Gambar 3.4 Rangkaian Minimum sistem Robot Shape Follower
Pada gambar di atas, ditunjukkan kesesuaian antara
rancangan minimum sistem yang telah berbentuk blok diagram
pada gambar 3.1 dengan rangkaian yang telah direalisasikan.
Pada gambar 3.4 di atas, terdapat beberapa bagian dengan tugas-tugas
tersendiri diantaranya :
A. Komunikasi Serial Max232
Rangkaian ini berfungsi sebagai pengubah sinyal digital
level tegangan TTL yaitu 0V untuk logika low dan 5V untuk
logika high menjadi sinyal untuk komunikasi serial RS232
yaitu –12V untuk logika high dan 12V untuk logika low ataupun
sebaliknya. Rangkaian ini dibutuhkan karena output dari
microcontroller adalah sinyal level tegangan TTL yang mana untuk
komunikasi serial dibutuhkan sinyal dengan level RS232 sehingga
dibutuhkan rangkaian pengubah dari level TTL menjadi RS232
ataupun sebaliknya data dari komunikasi serial RS232 berupa
sinyal level RS232 harus dirubah dahulu ke sinyal TTL agar
bisa dibaca oleh microcontroller.
26
B. Kontroler ATMEGA8
Kontroler ATMEGA8 Disini berfungsi sebagai
koordinator dari rangkaian yang terpasang pada
masing-masing portnya. Mikrokontroler ini memiliki
wewenang untuk mengendalikan motor dan menerima perintah dari
PC melalui komunikasi serial.
Gambar 3.5 Skematik keseluruhan Minimum System robot shape follower
Untuk dapat bekerja secara maksimum, mikrokontroler ini
membutuhkan rangkaian clock yang terdiri dari sebuah crystal serta
sebuah rangkaian power supply. Rangkaian clock Disini
berfungsi sebagai jantung untuk menghasilkan detak atau clock.
Dalam merancang sebuah minimum system ATMega8 yang
menggunakan komunikasi serial antara PC dengan
mikrokontroler memerlukan beberapa komponen pendukung
seperti device IC Max232, konektor DB9 female dan
lain-lain. Minimum system tersebut menggunakan komponen
seperti yang terlihat pada tabel
3.1.
Tabel 3.1 Daftar komponen minimum sistem
No Inisialisasi Tipe Komponen
1 R1 10KΩ ¼
W
2 R2,R3 330Ω ¼
W
27
No Inisialisasi Tipe Komponen
3 D1,D2 Led 3mm
4 D3 1N4001
5 C1 10uF/16V
6 C2 1000uF/16V
7 C3,C4 22pF
8 C5, C6, C7, C8 0.1uF/16V
9 J1 Header 6 Pin
10 J2 Connector DB9 Female
11 U1 ATMega8
12 U2 7805
13 U3 MAX232
Mikrokontroler ATMega8 memiliki 28-pin dengan 3 PORT input
dan output. Setiap pin mikrokontroler ATmega8 yang
digunakan pada robot shape follower memiliki fungsi dan
kegunaan yang berbeda, fungsi dari setiap pin tersebut dapat
dilihat pada Tabel 3.2.
Tabel 3.2 Port Designation
PORT Fungsi PORT Fungsi
PORTB.0 NC (not connected) PORTD.0 Tx
PORTB.1 Sinyal kabel Servo X PORTD.1 Rx
PORTB.2 Sinyal kabel Servo Y PORTD.2 NC (not connected)
PORTB.3 ISP/Mosi PORTD.3 NC (not connected)
PORTB.4 ISP/Miso PORTD.4 XTAL1
PORTB.5 ISP/SCK PORTD.5 XTAL2
PORTD.6 NC (not connected)
PORTC.0 NC (not connected) PORTD.7 NC (not connected)
PORTC.1 NC (not connected)
PORTC.2 NC (not connected)
PORTC.3 NC (not connected)
28
PORT Fungsi PORT Fungsi
PORTC.4 NC (not connected)
PORTC.5 NC (not connected)
PORTC.6 Reset Button
3.3.3 Motor Servo Standar
Alat yang digunakan sebagai penggerak kamera
menggunakan motor servo standar 180 derajat, menggunakan motor
tersebut karena robot didesain menyerupai kepala manusia yang
hanya dapat melihat kekanan
dan kekiri maupun ke atas dan ke bawah.
Gambar 3.6 Konstruksi motor sumbu X
29
Gambar 3.7 Konstruksi motor sumbu Y
3.3.3.1 Akses Motor Servo
Untuk mengakses motor servo tidak seperti mengakses motor
DC pada umumnya. Motor servo diakses atau digerakkan
dengan memasukkan sinyal PWM melalui kabel kontrol yang ada
pada motor servo. Berikut akan dijelaskan tentang cara
mengakses motor servo menggunakan sinyal PWM dengan
memanfaatkan crystal external sebesar 11.0592MHz, crystal
tersebut digunakan untuk menghitung periode sekitar 20ms
untuk menggerakkan motor servo dan untuk mengetahui sudut
terbesar dan terkecil.
30
Karena nilai periode 20ms adalah 27662 maka digunakkan
timer1 16 bit karena timer tersebut mampu menampung data
hingga
65535. Untuk menghasilkan sinyal PWM pada
mikrokontroler dibutuhkan OCR dan menggunakan TOP ICR sebagai
batas atas nilai PWM. Dan untuk menggerakkan motor servo
hanya dibutuhkan
periode antara 1 – 2ms dari 20 ms atau sekitar 5 – 10%.
3.4 Perancangan Software Image Understanding pada Visual Basic
Pada tahap ini akan dijelaskan secara terperinci tentang bagian utama dari
tugas akhir ini.
31
Start
Colour Extraction
Gaussian Matrix
Brightness
Enhancement
Contrast
Enhancement
Colour Filtering
Center Detection
Finish
Gambar 3.8 Flowchart kerja sistem image understanding pada visual basic
3.4.1 Colour Extraction
Colour extraction merupakan sebuah langkah atau tahap
untuk memisahkan warna dasar Red, Green, dan, Blue dari data mentah yang
ada
di setiap pixel. Dengan R untuk varian nilai warna merah, G untuk varian
nilai warna hijau, dan B untuk varian nilai warna biru. Pixel
sendiri merupakan bagian terkecil dari sebuah gambar (picture
element) yang membentuk/membangun citra secara keseluruhan.
Proses colour extraction yaitu proses dimana sebuah nilai
varian dari sebuah warna, dipisahkan berdasarkan 3 komposisi warna yaitu
(R, G, B). dengan menggunakan rumus sebagai berikut:
R Merah =
G Hijau =
32
B Biru =
Dari keterangan di atas maka didapat rumus umum untuk colour
extraction.
Ket : V = Varian Value.
R(x,y) = Varian nilai warna merah pada kolom x, baris y
G(x,y) = Varian nilai warna hijau pada kolom x, baris y
B(x,y) = Varian nilai warnabiru pada kolom x, baris y
P(x,y) = Varian nilai warnaper pixel pada kolom x, baris y
Int = Pembulatan suatu bilangan
R(1,1)
G(1,1)
B(1,1)
R(1,2)
G(1,2)
B(1,2)
R(2,1)
G(2,1)
a b B(2,1)
c R(2,2)
d G(2,2)
B(2,2)
Gambar 3.9 Proses Colour Extraction
Dari rumus di atas jika kita terapkan pada sebuah
gambar berukuran 2x2 pixel dengan warna yang berbeda maka hasilnya
adalah :
P(a) = 2366445
R Merah = (2366445 Mod (216
)) Mod(28) = 237
G Hijau = Int((2366445 Mod (216
))/(28)) = 27
33
B Biru = Int(2366445)/ (2
16)) = 36
Nilai P(a) adalah nilai yang terdapat pada pixel a :
1. Untuk R adalah nilai warna merah, nilai P(a) dimodulus dengan 216
setelah itu dimodulus kembali dengan 28
maka nilai R=237.
2. Untuk nilai G adalah nilai warna Hijau, P(a) dimodulus
dengan 216
setelah itu dibagi dengan 28
kemudian agar nilainya
berbentuk desimal maka di Int kan maka diperoleh nilai 27.
3. Kemudian untuk nilai B adalah nilai warna biru, nilai P(a)
dibagi dengan 216
, agar nilainya tidak ber-koma maka hasilnya di Int
kan maka diperoleh nilai 36.
P(b) = 5091619
R Merah = (5091619 Mod (216
)) Mod(28) = 35
G Hijau = Int((5091619 Mod (216
))/(28)) = 177
B Biru = Int(5091619)/ (216
)) = 77
Nilai P(b) adalah nilai yang terdapat pada pixel b.
1. Untuk R adalah nilai warna merah, nilai P(b) dimodulus dengan
216
setelah itu dimodulus kembali dengan 28
maka nilai R=35.
2. Untuk nilai G adalah nilai warna Hijau, P(b) dimodulus
dengan 216
setelah itu dibagi dengan 28
kemudian agar nilainya
berbentuk desimal maka di Int kan maka diperoleh nilai 177.
3. Kemudian untuk nilai B adalah nilai warna biru, nilai P(b)
dibagi dengan 216
, agar nilainya tidak ber-koma maka hasilnya
di Int kan maka diperoleh nilai 77.
P(c) = 15246080
R Merah = (15246080 Mod (216
)) Mod(28) = 0
G Hijau = Int((15246080 Mod (216
))/(28)) = 163
B Biru = Int(15246080)/ (216
)) = 232
Nilai P(c) adalah nilai yang terdapat pada pixel c.
1. untuk R adalah nilai warna merah, nilai P(c) dimodulus dengan
216
setelah itu dimodulus kembali dengan 28
maka nilai R=0.
34
2. untuk nilai G adalah nilai warna Hijau, P(c) dimodulus
dengan 216
setelah itu dibagi dengan 28
kemudian agar nilainya
berbentuk desimal maka di Int kan maka diperoleh nilai 163.
3. kemudian untuk nilai B adalah nilai warna biru, nilai
P(c) dibagi dengan 216
, agar nilainya tidak ber-koma maka
hasilnya di Int kan maka diperoleh nilai 232.
P(d) = 16777216
R Merah = (16777215 Mod (216
)) Mod(28) = 256
G Hijau = Int((16777215 Mod (216
))/(28)) = 256
B Biru = Int(16777215)/ (216
)) = 256
Nilai P(d) adalah nilai yang terdapat pada pixel d.
1. untuk R adalah nilai warna merah, nilai P(d) dimodulus dengan
216
setelah itu dimodulus kembali dengan 28
maka nilai R=255.
2. untuk nilai G adalah nilai warna Hijau, P(d) dimodulus
dengan 216
setelah itu dibagi dengan 28
kemudian agar nilainya
berbentuk desimal maka di Int kan maka diperoleh nilai 255.
3. kemudian untuk nilai B adalah nilai warna biru, nilai
P(d) dibagi dengan 216
, agar nilainya tidak ber-koma maka
hasilnya di Int kan maka diperoleh nilai 255.
3.4.2 Gaussian Matriks
Setelah Color Extraction proses selanjutnya adalah
Gaussian Matriks. Proses ini digunakan untuk
memperbaiki citra dengan menghilangkan efek noise
yang ada pada citra sehingga citra yang dihasilkan akan lebih
mudah dibaca oleh PC. Walaupun secara kasat mata gambar terlihat blur,
tetapi oleh PC citra tersebut dapat dibaca secara jelas karena tidak ada
titik-titik kecil(noise) pada citra.
Proses Gaussian Matriks adalah proses menghilangkan warna RGB
pada suatu pixel menggunakan warna RGB pada pixel-pixel yang ada pada
tetangganya(neighborhood). Dalam proses ini sama saja dengan
35
2
menghilangkan jatidirinya dan mengisi dirinya dengan yang
ada di sekitarnya. Pada proses ini menggunakan matriks 3X.
Matriks Umum Gaussian
Ket : = nilai matriks dengan bobot paling ringan
= nilai matriks dengan bobot paling berat
= nilai matriks dengan bobot sedang
Nilai yang paling mempengaruhi pixel yang akan di gaussian
adalah pixel yang terdapat pada matriks yang bertanda , nilai
yang mempengaruhi pixel yang akan di Gaussian tetapi
tidak terlalu
mempengaruhi adalah pixel yang terdapat pada matriks yang bertanda
, sedangkan nilai yang tidak mempengaruhi samasekali pixel yang
akan di Gaussian adalah pixel yang terdapat pada matriks
yang
bertanda seperti yang ada pada matriks di atas.
1
Mgauss 2
1
2 1
4
2 1
Matriks yang akan digunakan dalam pengoperasian ini adalah
matriks 3×3 yang ada di atas menggunakan format 1, 2, 1 dst.
Gambar 3.10 Contoh gambar yang akan di blur
Untuk mendapatkan hasil bluring pengoperasian dimulai
dari pixel a (pixel pada baris ke-1, kolom ke-1) sampai pixel yang
terakhir,
36
R
G
1
1
dalam contoh kali ini sampai P(i) (pixel pada baris ke-3, kolom ke-3).
Dengan mengalikan R, G, B pada masing-masing pixel
dengan matriks Gaussian 3×3 :
1. Rgauss merupakan hasil perkalian R pada pixel di
baris x, kolom y dengan matriks
Gaussian 3×3 seperti pada pengoperasian
di bawah ini, sehingga didapatkan suatu nilai R
baru untuk pixel (x, y).
n n
R Mgauss
Rgauss
x 1 y 1
( x , y )
( x , y ) 1 2 1 2 4 2 1 2 1
n n
1
2
1
R( x , y ) 2 4 2
x 1 y 1
1 2 1
Rgauss ( x , y )
16
R (x , y)
1 n n
R (x 1, y)
2 R (x 2, y)
1
R (x , y 1) 2 R (x 1, y 1)
4 R (x 2, y 1) 2
Rgauss
( x , y )
x 1 y 1
(x , y 2)
R (x 1, y 2)
2
16
R (x 2, y 2) 1
2. Ggauss merupakan hasil perkalian G pada pixel di baris x,
kolom y dengan matriks Gaussian 3×3, seperti pada
pengoperasian di bawah ini, sehingga didapatkan suatu nilai G
baru untuk pixel (x, y).
n n
G Mgauss
Ggauss
x 1 y 1
( x , y )
( x , y ) 1 2 1 2 4 2 1 2 1
n n
1
2
1
G( x , y ) 2 4 2
x 1 y 1
1 2 1
Ggauss( x , y )
16
G (x , y)
1 n n
G(x 1, y)
2 G(x 2, y)
1
G (x , y 1) 2 G(x 1, y 1)
4 G (x 2, y 1) 2
Ggauss( x , y )
x 1 y 1
(x , y 2)
G(x 1, y 2)
2
16
G(x 2, y 2)
1
3. Bgauss merupakan hasil perkalian B pada pixel di baris x,
kolom y dengan matriks Gaussian 3×3, seperti pada
37
pengoperasian di bawah ini, sehingga didapatkan suatu nilai B
baru untuk pixel (x, y).
38
B
1
n n
B Mgauss
Bgauss
x 1 y 1
( x , y )
( x , y ) 1 2 1 2 4 2 1 2 1
n n
1 2
1
B( x , y ) 2 4 2
x 1 y 1
1 2
1
Bgauss ( x , y )
16
B (x , y)
1 n n
B (x 1, y) 2 B(x 2, y)
1
B (x , y 1) 2 B (x 1, y 1) 4 B (x 2, y 1) 2
Bgauss
( x , y )
x 1 y 1
(x , y 2)
B (x 1, y 2) 2
16
B (x 2, y 2) 1
Contoh proses Gaussian matriks pada suatu citra dengan
menggunakan matriks 3×3:
P(2,1) = (R(2,1), G(2,1), B(2,1))
P(1,1) = (R(1,1), G(1,1), B(1,1)) P(3,1) = (R(3,1), G(3,1), B(3,1))
P(1,3) = (R(1,3), G(1,3), B(1,3)) P(3,3) = (R(3,3), G(3,3), B(3,3))
Gambar 3.11 Proses colour extraction sebelum melalui gaussian
39
(1 ,1)
R 2
R
(1 ,1)
G 2
G
R
1
G
1
Berikut adalah contoh Gaussian matriks pada P(a) :
Rgauss
n 3 n 3
x 1 y 1
( x , y ) Mgauss
( x , y ) 1 2 1 2 4 2 1 2 1
R 1 n 3 n 3
R (1 , 2) 2
R ( 2, 1) 2
R ( 2, 2) 4
R (3, 1) 1
(3, 2)
Rgauss x 1 y 1
(1 , 3)
R (2 , 3) 2 R (3 , 3) 1
Rgauss
(1,1)
(1,1)
36 1
n 3 n 3
38 2 x 1 y 1
178
1
16
184 2
0 4
0 2
16
213 1
31 2
15 1
Rgauss
36 n 3 n 3
76 x 1 y
1 178
368
0
0
213
62
15
Rgauss
Rgauss
(1,1)
(1,1)
(1,1)
16
36 368 213 76 0 62 178 0 15
16
886 16
Rgauss (1,1) 53,375Integer 53
Ggauss
n 3 n 3
x 1 y 1
( x , y ) Mgauss
( x , y ) 1 2 1 2 4 2 1 2 1
G 1 n 3 n 3
G (1 , 2)
2
G ( 2, 1)
2
G ( 2, 2)
4
G (3, 1) 1
(3, 2)
Ggauss x 1 y 1
(1 , 3)
G
(2 , 3) 2 G
(3 , 3) 1
Ggauss
(1,1)
(1,1)
211
n 3 n 3
149 2 x 1 y 1
178 1
16
24 2
102 4
0 2
16
96 1
175 2
811
Ggauss
(1,1)
21 n 3 n 3
298 x 1 y 1
178
16
48
416
0
96
350
81
Ggauss
Ggauss
(1,1)
(1,1)
21 + 48 + 96 + 298 + 416 + 350 + 178 + 0 + 81
16
1392
16
Ggauss(1,1)
87
40
(1 ,1)
B 2
B
B
1
Bgauss
n 3 n 3
x 1 y 1
( x , y )
Mgauss
( x , y ) 1 2 1 2 4 2 1 2 1
B 1 n 3 n 3
B (1 , 2) 2
B ( 2, 1) 2
B ( 2, 2) 4
B (3, 1)
1
(3, 2)
Bgauss x 1 y 1
(1 , 3)
B (2 , 3) 2 B (3 , 3)
1
(1,1)
147 1 n 3 n 3
19 2
16
150 2
255 4
250 1
179 2
Bgauss (1,1)
x 1 y 1 44 1 102 2
16
189 1
147 n 3 n 3
38
300
1020
250
358
Bgauss (1,1)
x 1 y 1 44 204
16
189
Bgauss
Bgauss
(1,1)
(1,1)
147 + 300 + 250 + 38 + 1020 + 358 + 44 + 204 + 189
16
2550 16
Bgauss(1,1) 159,375Integer 159
Untuk gaussian pada pixel b (P(b))sampai dengan pixel i, proses
Gaussian nya sama dengan contoh di atas. Hasilnya adalah :
P(b) = P(1,2) = (R(1,2), G(1,2), B(1,2)) = (22, 54, 99)
P(c) = P(1,3) = (R(1,3), G(1,3), B(1,3)) = (12, 97, 27)
P(d) = P(2,1) = (R(2,1), G(2,1), B(2,1)) = (47, 80, 147)
P(e) = P(2,2) = (R(2,2), G(2,2), B(2,2)) = (8, 98, 48)
P(f) = P(2,3) = (R(2,3), G(2,3), B(2,3)) = (2, 10, 30)
P(g) = P(3,1) = (R(3,1), G(3,1), B(3,1)) = (18, 33, 50)
P(h) = P(3,2) = (R(3,2), G(3,2), B(3,2)) = (3, 21, 35)
P(i) = P(3,3) = (R(3,3), G(3,3), B(3,3)) = (0, 5, 12)
41
Dari contoh di atas dapat dilihat bahwa semakin pojok
pixel, semakin rendah nilai RGBnya. Jika Gaussian matriks ini
dilakukan berulang pada pixel yang sudah dieksekusi, maka semakin
lama citra yang dihasilkan akan semakin berwarna gelap pada pojok-
pojok citra.
Dan berikut ini adalah contoh gambar yang telah di gaussian :
P(2,1) = (Rgauss (2,1), Ggauss (2,1), Bgauss(2,1)
P(1,1) = (Rgauss (1,1), Ggauss (1,1), Bgauss(1,1) P(3,1) = (Rgauss (3,1), Ggauss (3,1), Bgauss(3,1)
P(1,3) = (Rgauss (1,3), Ggauss (1,3), Bgauss(1,3) P(3,3) = (Rgauss (3,3), Ggauss (3,3), Bgauss(3,3)
Gambar 3.12 Hasil bluring pada pixel 3x3
42
R Rg
G Gg
B Bg
Gambar 3.13 Grafik perubahan colour extraction menjadi Gaussian
Dari contoh di atas maka didapat rumus umum sebagai berikut :
n n
P( x , y ) M OD(216
) M OD(28 ) 1 P(x 1, y)
M OD(216
) M OD(28 ) 2 P(x 2, y ) M OD(2
16 ) M OD(2
8 ) 1
P
M OD(2 ) M OD(2 ) 2
P
M OD(2 ) M OD(2 ) 4
P
M OD(2 ) M OD(2 ) 2
x 1 y 1 16
(x , y 1)
16
8 16
(x 1, y
1)
8 16
8 16
(x 2, y 1)
8 16
8
8
Rgauss( x , y )
P(x , y 2) M OD(2 ) M OD(2 )
1
P(x 1, y 2 ) M OD(2 ) M OD(2 )
2
16
P(x 2, y 2) M OD(2 ) M OD(2 ) 1
Ket : Rgauss(x, y) = Nilai warna merah gaussian pada kolom x, baris y
P = Value Image pada pixel (Raw data)
MOD = Modulus
43
P M OD(2 ) P M OD(2
) P M OD(2 )
Int
n n
P( x , y )
P
M OD(21 6
) 1
(28 )
M OD(216
)
Int P
(x 1, y)
P
M OD(216
) 2
(28 )
M OD(21 6
)
Int P
(x 2 , y)
P
M OD(216
)
(28 )
M OD(21 6
)
1
Int (x , y 1)
8
2 Int
(x 1, y 1)
8
4 Int
(x 2 , y 1)
8 2
1 1
(2
) (2 )
(2 )
x y
Int
16
(x , y 2)
8
1 Int
16
(x 1, y 2)
8
2 Int
16
(x 2 , y 2)
8
1
(2 )
Ggauss( x , y )
(2 )
16
(2 )
Ket : Ggauss(x, y) = Nilai warna hijau gaussian pada kolom x, baris y
P = Value Image pada pixel (Raw data)
MOD = Modulus
n n
Int
P( x , y )
1 (2
16 )
P
Int P(x 1, y)
2 (2
16 )
P
Int P
(x 2, y)
(216
)
P
1
Int (x , y 1)
2
Int (x 1, y 1)
4
Int (x 2, y 1) 2
x 1 y 1
(2
16 ) (2
16 ) (2
16 )
Int
P(x , y 2)
1 Int
P(x 1, y 2)
2 Int
P(x 2, y 2)
1
Bgauss( x , y )
(216
) (216
)
16
(216
)
Ket : Bgauss(x, y) = Nilai warna biru gaussian pada kolom x, baris y
P = Value Image pada pixel (Raw data)
MOD = Modulus
44
3.4.3 Brightness Enhancement
Brightness enhancement merupakan proses untuk
memperbaiki gambar dengan cara mencerahkan atau mempergelap
gambar jika suatu gambar terdapat noise. Proses ini dapat dilakukan
dengan cara menambah atau mengurangi nilai varian warna yang telah
dibaca sehingga tiap warna akan menghasilkan kecerahan sesuai dengan
nilai Kb. Pada proses ini jika terdapat gambar seperti gambar 3.3 maka
dengan melakukan proses akan
menghasilkan gambar seperti gambar 3.4 dengan rumus sebagai berikut :
Merah Rb =
Rg+Kb Hijau Gb
= Gg+Kb Biru Bb
= Bg+Kb
Dari keterangan di atas, maka didapatkan rumus untuk
brightness enhancement sebagai berikut :
Ket : Rb = nilai warna merah
Gb = nilai warna
hijau Bb = nilai
warna biru Kb =
konstanta
Rgaus = nilai warna merah yang telah di gaussian
Ggaus = nilai warna hijau yang telah di gaussian
Bgaus = nilai warna merah yang telah di gaussian
(x,y) = pixel pada kolom x dan baris y
Range adalah -255 hingga 255
Jika Kb <0 maka iluminasi warna cenderung gelap, begitu
juga senaliknya.
Sebagai contoh jika nilai koefisien adalah 60 maka
nilai varian warna dari tiap pixel akan bertambah 60.
45
P(1 ,1) Rb (1 ,1)
, Gb (1 ,1)
, Bb (1 ,1)
P(1 ,1) Rgauss
(1 ,1)
Kb, Ggauss (1 ,1)
Kb, Bgauss (1 ,1) Kb
P(1 ,1)
53 60, 87 60, 159 60
P(1 ,1)
113, 147, 219
Cara tersebut dapat diterapkan pada pixel selanjutnya dengan
menggunakan koefisien yang sama.
P(1,1)=(Rb(1,1),Gb(1,1),Bb(1,1)) P(1,3)=(Rb(1,3),Gb(1,3),Bb(1,3))
P(3,1)=(Rb(3,1),Gb(3,1),Bb(3,1)) P(3,3)=(Rb(3,3),Gb(3,3),Bb(3,3))
Gambar 3.14 Hasil brightness enhancement
46
Gambar 3.15 Perbedaan grafik antara Gaussian dan brightness
Pada gambar di atas terlihat jelas bahwa pada proses ini
sebuah gambar menjadi cerah jika mendapat perlakuan brightness
enhacement.
3.4.4 Contrast Enhancement
Contrast enhancement adalah proses memperbaiki gambar dengan
caramempertajam nilalai-nilai varian warna yang telah di sehingga
warna yang telah diproses akan semakin terlihat jelas
perbedaan warnanya. Proses ini dapat dilakukan dengan cara
mengalikan warna dengan range nilai 0.9 – 1.9 dengan menggunakan
cara sebagai berikut :
Merah Rk = Rb x
Kk Hijau Gk = Gb
x Kk Biru Bb =
Bb x Kk
Dari keterangan di atas maka didapatkan rumus umum
untuk
47
contrast enhancement sebagai berikut :
48
Rk ( x, y )
, Gk( x, y )
, Bk ( x, y )
(Rb( x, y )
Kk, Gb( x , y )
Kk, Bb( x, y )
Kk )
Ket : Rk = nilai contrast warna merah
Gk = nilai contrast warna hijau
Bk = nilai contrast warna biru
Kk = konstanta contrast
(x,y) = pixel pada kolom x dan baris y
Lebar batas nilai contrast yang dapat digunakan adalah 0
hingga
1,9
Contoh jika nilai Kk diisi dengan 0.5 maka nilai varian warna dari
tiap pixel akan dikalikan dengan nilai konstanta kontras tersebut. Berikut di
bawah ini adalah contoh proses image enhancement contrast
setelah di bringhtness pada pixel 3×3 :
Image enhancement contrast pada P(a) dengan Koefisien Kontras (Kk) = 0,5
P(1 ,1) Rk (1 ,1)
, Gk (1 ,1)
, Bk (1 ,1)
P(1 ,1) Rb (1 ,1) .Kk, Gb
(1 ,1) .Kk, Bb
(1 ,1) .Kk
P(1 ,1)
Int113.0,5, 147.0,5,
P(1 ,1)
57, 74, 110
219.0,5
Pixel pada kolom 1 baris 1 samadengan Rb (R) dikalikan dengan
koefisien kontras, Gb (G) dikalikan dengan koefisien kontrast ,
Bb (B) dikalikan dengan koefisien kontras. Jika hasil perkalian
tersebut bukan bilangan bulat maka bilangan tersebut harus dibulatkan,
karena nilai R, G,
B bukan merupakan bilangan decimal.
Cara tersebut dapat diterapkan pada pixel selanjutnya dengan
menggunakan koefisien kontras (Kk) yang sama.
49
P(1,1)=(Rk(1,1),Gk(1,1),Bk(1,1)) P(1,3)=(Rk(1,3),Gk(1,3),Bk(1,3))
P(3,1)=(Rk(3,1),Gk(3,1),Bk(3,1)) P(3,3)=(Rk(3,3),Gk(3,3),Bk(3,3))
Gambar 3.16 Hasil Contrast enhancemet
Gambar 3.17 Grafik perubahan antara dan Kontras
3.4.5 Colour Filtering
Color filtering merupakan proses mengambil suatu komposisi
warna, dan membuang komposisi warna yang tidak diinginkan. Dengan
cara memberikan ambang batas(Threshold) atas dan bawah pada setiap
varian nilai warna :
Batas bawah R → merah ≥ (RTh - bandwith)
50
Batas atas R → merah < (RTh + bandwidth)
Batas bawah G → hijau ≥ (GTh - bandwidth)
Batas atas G → hijau < (GTh + bandwidth)
Batas bawah B → biru ≥ (BTh - bandwidth)
Batas atas B → biru < (BTh + bandwidth)
kemudian menampilkan warna yang diinginkan : RGB ( merah,
hijau, biru)
Berikut ini adalah sebuah contoh grafik colour filtering untuk Rk :
Gambar 3.18 Grafik Rk sebelum difilter
Gambar di atas merupakan grafik Rk sebelum sebelum
melalui filter. Selanjutnya nilai Rk diberi threshold antara batas
atas dan batas bawah seperti yang terlihat di bawah ini :
Gambar 3.19 Grafik Rk setelah di filter
51
Dengan adanya bandwidth maka titik filter dapat melebar
sesuai besar bandwidth. Seperti yang terlihat pada gambar di atas
warna yang
diloloskan adalah yang terdapat dalam range batas atas dan batas bawah.
Rc
(x , y)
N : Rth Bandwidth Rc (x , y)
Rth Bandwidth
Rf (x , y)
, Gf (x , y)
, Bf (x , y)
Gc
Bc
(x , y)
N : Gth
N : B Bandwidth Gc
Bandwidth Bc
(x , y)
Gth
B Bandwidth
Bandwidth
(x , y) th (x , y) th
Ket : Rf(x, y) = Warna merah yang telah di filter
Gf(x, y) = Warna hijau yang telah di filter
Bf(x, y) = Warna biru yang telah di filter
Rth = Ambang batas (threshold) nilai warna
merah Gth = Ambang batas (threshold) nilai
warna hijau Bth = Ambang batas (threshold) nilai
warna biru
Bandwidth = Area varian nilai warna yang diinginkan
3.4.6 Center Detection
Center detection adalah proses untuk menentukan titik
tengah objek yang telah dipilih. Untuk mengetahui titik tengah sebuah
objek yang harus dilakukan adalah men-scan tiap pixel x dan y
mulai dari titik 0 hingga akhir pixel.
52
ULx
URx
ULy
BLy
x
(0,0) (160,0)
y
(0,160) (160,160)
Gambar 3.20 Proses menentukan titik tengah objek
Pada Gambar di atas cara untuk menentukan titik tengah x dengan
contoh gambar seperti tersebut adalah apabila pada pixel x terdapat warna
hitam setelah membaca putih maka buatlah garis pada titik tersebut dan
beri nama ULx kemudian apabila menemukan putih setelah hitam maka
buatlah garis lagi dan beri nama URx, dengan teori tersebut maka
didapatkan cara sebagai berikut:
Cara tersebut dapat digunakan untuk menetukan titik tengah pada
pixel y dengan cara :
BAB IV
PENGUJIAN DAN ANALISA
Pada bab ini akan dijelaskan tentang pengujian dan analisa
sistem berdasarkan bab yag menjelaskan tentang perencanaan dan
pembuatan sistem. Pengujian dan analinsa yang akan dilaksanakan meliputi :
1. Pengujian Mikrontroler
2. Pengujian motor servo
3. Pengujian rangkaian komunikasi serial
4. Pengujian Aplikasi image processing pada Visual Basic
5. Pengujian Aplikasi image processing pada OpenCV
6. Pengujian keseluruhan sistem
4.1 Pengujian Mikrokontroler
4.1.1 Tujuan
Pengujian ini bertujuan agar untuk mengetahui kegunaan unit input
dan output dengan menggunakan lampu led sebagai output.
Pengujian ini dilakukan dengan menggunakan 2 port yaitu PORTD.0 dan
PORTD.1.
4.1.2 Peralatan
Untuk memenuhi kebutuhan yang digunakan dalam pengujian ini,
maka dibutuhkan peralatan sebagai berikut :
1. Adaptor/Power Supply 12 Volt
2. Lampu led
3. Multimeter
4. Downloader
4.1.3 Langkah Pengujian
Pada pengujian berikut ini perlu diadakan langkah-langkah sebagai
berikut ;
1. Gunakan IC 7805 agar tegangan masukan yang dihasilkan
menjadi 5 Volt.
51
52
2. Ukur tegangan masukan pada mikrokontroler.
3. Hubungkan salah satu pin output dengan led.
4. Masukkan program dengan memberi logika nyala dan mati
pada pin output.
4.1.4 Hasil dan Analisa
Pengujian dengan pemberian program pada mikrokontroler
untuk menentukan salah satu pin output sangat diperlukan untuk
mengetahui apakah pada pin tersebut dapat bekerja dengan baik atau tidak.
Data Pengukuran
Tabel 4.1 Logika port pada led
PORT Logika Kondisi Led
PORTD.0 1 Nyala
PORTD.0 0 Mati
PORTD.1 1 Nyala
PORTD.1 0 Mati
Pada tabel 4.1 terdapat perbedaan hasil nyala dan mati. Hal ini
disebabkan karena pada port diberi logika 1 dan 0.
4.1.5 Kesimpulan
Dari pengujian yang telah dilakukan untuk dapat menyalakan
dan mematikan led adalah dengan memberikan logika 1 dan 0
pada port. Sehingga dapat disimpulkan bahwa mikrokontroler yang
digunakan dapat bekerja dengan baik.
53
4.2 Pengujian Motor Servo
4.2.1 Tujuan
Pengujian ini bertujuan untuk mengetahui sudut
tebesar dan terkecil, serta menentukan batas nilai OCR yang
dibutuhkan untuk membangkitkan sinyal PWM.
4.2.2 Peralatan
Untuk memenuhi kebutuhan yang digunakan dalam pengujian ini,
maka dibutuhkan peralatan sebagai berikut :
1. Osciloscope
2. Motor Servo Standar
3. Rangkaian minimum sistem
4. Power Supply
4.2.3 Langkah pengujian
Pada pengujian berikut ini perlu diadakan langkah-langkah sebagai
berikut ;
1. Tancapkan kabel motor servo pada pin output pwm yang tersedia
pada rangkaian.
2. Buatlah program untuk menghasilkan sinyal PWM
dengan menggunakan wizard yang ada pada CodeVision AVR
seperti di bawah ini :
Gambar 4.1 Pengaturan Timer 1 pada wizard CodeVision AVR
54
3. Setelah melakukan pengaturan pada wizard, generate
program tersebut dengan menambahkan beberapa program
seperti di bawah ini :
#include <mega8.h>
#include <delay.h>
#define sx OCR1A
#define sy OCR1B
void main(void)
PORTB=0x00;
DDRB=0x06;
TCCR1A=0xA2;
TCCR1B=0x1A;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1=27648;
TIMSK=0x00;
while (1)
sx=3317;
sy=2142;
4. Lihat sinyal yang dihasilkan dengan menggunakan osciloscope.
5. Lakukan langkah no 3 dengan memberikan sinyal pwm
yang berbeda-beda.
4.2.4 Hasil dan Analisa
Berdasarkan pengujian yang dilakukan maka didapatkan data hasil
pengukuran sebagai berikut :
1. Diketahui bahwa periode sinyal PWM yang dihaslikan
adalah
2,5ms x 8 = 20 ms dengan frekuensi sebesar 50 Hz.
55
Gambar 4.2 Sinyal pwm dengan periode 20 ms
2. Sudut terbesar yang dihasilkan adalah dengan sinyal OCR1A =
967, sehingga sinyal PWM yang dihasilkan adalah
sinyal dengan periode terkecil yaitu : 700us x 1000 =
0,7ms sesuai
yang terlihat pada gambar berikut :
Gambar 4.3 Sinyal pwm sudut terbesar
56
Gambar 4.4 Sudut terbesar pada motor servo X
3. Sudut terbesar yang dihasilkan adalah dengan sinyal OCR1A =
3317, sehingga sinyal PWM yang dihasilkan adalah
sinyal dengan periode terkecil yaitu : 2.32ms sesuai yang terlihat
pada
gambar berikut :
Gambar 4.5 Sinyal pwm sudut terkecil
57
Gambar 4.6 sudut terkecil pada motor servo X
Data Pengukuran
Tabel 4.2 Data penguuran kondisi motor berdasarkan nilai sinyal PWM
No Nilai OCR Periode (ms) Kondisi Servo X Kondisi Servo Y
1. 967 0.7 Terbesar Terbesar
2. 2142 1.52 Tengah Tengah
3. 3317 2.32 Terkecil Terkecil
Pada Tabel 4.2 jika nilai OCR dirubah maka kondisi motor servo
berubah sesuai besar nilai OCR tersebut.
4.2.5 Kesimpulan
Dari pengujian yang telah dilakukan, dapat diperoleh
kesimpulan bahwa untuk mengendalikan motor servo X dan
motor servo Y dapat dilakukan dengan memberikan nilai OCR
yang sama seperti yang terlihat pada Tabel 4.2.
4.3 Pengujian komunikasi serial antara PC dengan mikrokontroler
4.3.1 Tujuan
Tujuan dari pengujian ini adalah untuk mengetahui kinerja
rangkaian komunikasi serial.
58
4.3.2 Peralatan
Peralatan yang dibutuhkan dalam pengujian berikut ini antara lain
adalah :
1. rangkaian minimum sistem yang telah terintegrasi rangkaian
MAX232;
2. kabel RS232 USB to Serial converter.
3. PC yang telah terinstal driver kabel RS232, Visual Basic dan
CodeVision AVR;
4. power Supply
5. downloader
4.3.3 Langkah Pengujian
Langkah-langkah yang harus dilakuan dalam melakukan pengujian
ini adalah :
1. hubungkan rangkaian minimum sistem dengan power
supply yang telah tersedia, kemudian tancapkan soket DB9
male pada soket DB9 female pada rangkaian.
2. buat program sederhana dengan memanfaatkan code wizard yang
ada pada CodeVision AVR seperti pada gambar berikut :
59
Gambar 4.7 Konfigurasi USART pada CodeWizard AVR
3. masukkan potongan program sederhana berikut ini ke
dalam while(1) :
putchar(rx_buffer[0]);
4. compile program di atas kemudian download program
tersebut ke dalam mikrokontroler.
5. lakukan Seting konfigurasi terminal pada CodeVision
AVR
seperti gambar di bawah ini :
60
Gambar 4.8 Konfigurasi terminal pada Codevision AVR
6. buat aplikasi sederhana pada visual basic untuk mengirim
data pada mikrokontroler seperti gambar berikut :
Gambar 4.9 Contoh tampilan aplikasi komunikasi PC-Mikrokontroler
buat program sederhana untuk mengirim data seperti
gambar berikut :
Gambar 4.8 Contoh program komunikasi serial pada visual basic
61
7. tampilkan jendela terminal pada CodeVision AVR kemudian
klik “connect” kemudian klik “HEX”, secara otomatis akan
merubah angka menjadi hexadesimal.
8. jalanan program pada visual basic, kemudian isi nilai
pada textbox sesuai keinginan dan klik “Kirim”.
9. lihat hasil pada jendela terminal pada CodeVision AVR.
10. berikan nilai yang berbeda pada textbox yang terdapat
pada aplikasi di visual basic, kemudian amati perbedaan tersebut.
4.3.4 Analisa data
Setelah melakukan langkah pengujian di atas maka didaptkan hasil
sebagai berikut :
1. Pengiriman pertama :
Gambar 4.10 Pengiriman angka 1 pada VB
Gambar 4.11 Hasil data yang diterima pada percobaan pertama
62
2. Pengiriman kedua :
Gambar 4.12 Pengiriman angka 2 pada VB
Gambar 4.13 Hasil data yang diterima pada percobaan kedua
3. Pengiriman ketiga :
Gambar 4.14 Pengiriman angka 3 pada VB
Gambar 4.15 Hasil data yang diterima pada percobaan ketiga
63
4.3.5 Kesimpulan
Dari analisa data yang telah dilakukan pada langkah
pengujian di atas dapat disimpulkan bahwa data yang dikirimkan
melalui visual basic tidak mengalami perubahan sedikitpun.
4.4 Pengujian Aplikasi pada Visual Basic
4.4.1 Tujuan
Tujuan dari pengujian ini adalah untu mengetahui kondisi
webcam apakah dapat berfungsi secara normal, kemudian untuk
mengetahui cara kerja Image Processing pada visual basic yang
diaplikasikan pada alat ini.
4.4.2 Peralatan
Peralatan yang dibutuhkan dalam pengujian berikut ini antara lain
adalah :
Peralatan yang dibutuhkan untuk pengujian ini antara lain :
1. Webcam
2. Laptop/PC yang telah terinstal Visual Basic.
3. Objek berwarna.
4.4.3 Langkah Pengujian
Langkah-langkah yang harus dilakuan dalam melakukan pengujian
ini adalah :
Langah-langkah yang harus dilakukan dalam pengujian ini adalah :
1. Hungungkan webcam pada laptop melalui soket USB yang
tersedia.
2. Play/jalankan program Image Processing pada visual basic
4.4.4 Analisa Data
Berikut adalah screen shot pengujian deteksi benda :
64
Gambar 4.16 Pengujian Image Processing pada Visual Basic 1
Gambar 4.17 Pengujian Image Processing pada Visual Basic 2
4.4.5 Kesimpulan
Dari analisa data yang telah dilakukan pada langkah pengujian
di atas dapat disimpulkan bahwa dari hasil pengujian 1 di atas,
program berhasil mendeteksi objek yang diinginkan. Dari hasil pengujian
2 di atas, program berhasil memprioritaskan satu objek yang diinginkan
saja sebagai target. Pada pengujian di atas juga terdapat informasi tentang
posisi target terhadap titik pusat kamera.
4.5 Pengujian Aplikasi Image Processing pada OpenCV
4.5.1 Tujuan
Tujuan dari pengujian ini adalah untu mengetahui kondisi webcam
apakah dapat berfungsi secara normal, kemudian untuk mengetahui
cara kerja Image Processing pada OpenCV yang diaplikasikan pada alat
ini.
65
4.5.2 Peralatan
Peralatan yang dibutuhkan untuk pengujian ini antara lain :
1. Webcam
2. Bola berwarna hitam
3. Laptop / PC yang sudah terinstal program Cygwin, OpenCV-
2.0.0a-win32_1, CV-AVR dan software “Virtual Serial Port
Driver”
4.5.3 Langkah Pengujian
Langah-langkah yang harus dilakukan dalam pengujian ini adalah :
1. Hungungkan webcam pada laptop melalui soket USB yang
tersedia.
2. Play/jalankan program Image Processing pada OpenCV yang
telah dibuat.
4.5.4 Analisa Data
Berikut adalah screen shot pengujian deteksi benda :
Gambar 4.18 Pengujian Image Processing pada OpenCV 1
66
Gambar 4.19 Pengujian Image Processing pada OpenCV 2
Gambar 4.20 Aplikasi konsol
4.5.5 Kesimpulan
Dari analisa data yang telah dilakukan pada langkah pengujian
di atas dapat disimpulkan bahwa dari hasil pengujian 1, program
berhasil mendeteksi objek yang diinginkan. Dari hasil
pengujian 2, program berhasil memprioritaskan satu objek yang
diinginkan saja sebagai target. Pada pengujian di atas juga
terdapat aplikasi konsol yang menjelaskan kondisi objek yang
terdeteksi, koordinat pusat objek yang terdeteksi.
67
4.6 Pengujian sistem secara keseluruhan
Setelah melakukan beberapa pengujian terhadap minimum sistem
hingga aplikasi Image Processing maka selanjutnya adalah menguji
sistem meliputi program pada PC dan kontroler serta komunikasi di antaranya.
Tabel 4.3 Kondisi Image Processing terhadap hardware
No
Posisi Target
Respon
pada
OpenCV
Respon
Pada VB
Hasil Citra
Pada
OpenCV
Hasil Citra
Pada VB
1. Kanan, Atas Cepat Lambat Biasa Bagus
2. Kanan, Tengah Cepat Diam Biasa Bagus
3. Kanan, Bawah Cepat Lambat Biasa Bagus
4. Kiri, Atas Cepat Lambat Biasa Bagus
5. Kiri, Tengah Cepat Diam Biasa Bagus
6. Kiri, Bawah Cepat Lambat Biasa Bagus
7. Tengah, Atas Cepat Diam Biasa Bagus
8. Tengah, Tengah Diam Diam Biasa Bagus
9. Tengah, Bawah Cepat Diam Biasa Bagus
Dari percobaan di atas, program berjalan sesuai dengan apa yang
diinginkan. Pada saat objek berada pada posisi yang jauh dari pusat frame maka
motor akan bergerak menuju pusat frame dan ketika menemui titik pusat
frame motor akan mempertahankan posisinya.
BAB V
PENUTUP
Pada bab ini akan dibahas mengenai hasil, kelebihan dan kelemahan tiap
metode yang dipakai oleh penulis. Setelah melakukan
perencanaan dan pembuatan serta implementasi sistem robot ini,
kemudian dilakukan pengujian dan analisa maka dapat dimabil kesimpulan dan
saran-saran sebagai berikut:
5.1 Kesimpulan
Setelah melakukan berbagai tahapan dalam pengerjaan dan
pengujian tugas akhir ini, maka penulis memiliki beberapa
kesimpulan sebagai berikut:
1) Cara kerja sistem dalam tracking target adalah dengan
membandingkan titik pusat target dengan titik pusat gambar
yang diperoleh kamera, kemudian memperkecil selisih error secara
terus menerus sampai didapatkan nilai yang sama.
2) Kecepatan tracking menggunakan visual basic kurang
responsif sehingga proses menuju target seringkali terlewati,
namun hasil pemrosesan citra cukup bagus.
3) Kecepatan tracking menggunakan OpenCV cukup responsif,
namun citra yang dihasilkan kurang maksimal sehingga
seringkali objek tidak terdeteksi.
4) Iluminasi sangat berpengaruh dalam penggunaan alat ini.
5.2 Saran
Untuk peningkatan kemampuan alat ini maka ada beberapa hal yang harus
diperhatikan :
1. Untuk mengimbangi kecepatan program Image Processing diperlukan
webcam dengan frame per second (fps) yang tinggi pula, agar gambar
yang diperoleh ketika objek bergerak tetap jelas.
68
69
2. Program perlu diperbaiki lagi sehingga antara proses pengolahan citra
dengan respon motor seimbang.
3. Bahan kontruksi rangka dibuat dengan bahan dasar logam,
sehingga robot dapat bergerak lebih stabil.
4. Harapan kedepan alat ini dapat dikembangkan dengan menggunakan
kamera inframerah untuk deteksi pada malam hari.
70
DAFTAR PUSTAKA
Arihutomo, Muhas. 2010. Rancang Bangun Sistem Penjejakan Objek
Menggunakan Metode Viola Jones Untuk Aplikasi Eyebot. Jurusan Teknik
Telekomunikasi Politeknik Elektronika Negeri Surabaya Institut Teknologi
Sepuluh Nopember, Surabaya.
Kustiawan, Dedi. 2009. Kendali Raket Pada Game Serangga Nakal
Menggunakan Kamera. Jurusan Teknologi Informasi Politeknik Elektronika
Negeri Surabaya Institut Teknologi Sepuluh Nopember, Surabaya.
Kurniawan, Aditya. 2009. Aplikasi Computer Vision Dengan Metode Fuzzy
Pada Text Reader. Jurusan Teknik Elektronika Politeknik
Elektronika Negeri Surabaya Institut Teknologi Sepuluh Nopember,
Surabaya.
“openCVsources”, (http://sourceforge.net/projects/opencvlibrary.)
“openCV”, (http://osc.ugm.ac.id/site/index.php/2008/06/opencv/.)
Rusiana, Endang. 2011 ”Simple Color Tracking Menggunakan Webcam Dengan
Library AForge.NET” Ciamis.
Rusmadi, Dedi. 2006. Teknik Interfacing Port Serial dan Paralel.
Yogyakarta: Graha Ilmu.
LAMPIRAN
71
72
Lampiran 1:
Foto hasil rancang bangun robot shape follower.
73
Lampiran 2:
Desain PCB Minimum system robot Shape Follower.
74
Lampiran 3:
Desain aplikasi Image Processing dengan visual basic.
2 4 5 3
1
6
7 8
9 20
10
11 19
12
13 14 15 16 17 18
75
Keterangan Lampiran 3 :
1. display pembacaan kamera.
2. display Image Processing.
3. display colour filtering dan center detection.
4. informasi ekstraksi warna pada pada display .
5. informasi threshold pada display .
6. informasi koordinat pada display colour filtering.
7. informasi posisi horizontal (sumbu X).
8. informasi posisi vertical (sumbu Y).
9. tombol start untuk menjalankan aplikasi.
10. tombol stop untuk menghentikan aplikasi.
11. tombol untuk menghubungkan koneksi antara kabel serial dengan aplikasi.
12. tombol untuk memutuskan koneksi antara kabel serial dengan aplikasi.
13. horizontal scroll sebagai pengubah nilai .
14. horizontal scroll sebagai pengubah nilai kontras.
15. daftar comm. port yang disediakan.
16. nilai bandwidth untuk colour filtering.
17. daftar driver yang terinstal.
18. daftar format resolusi yang tersedia.
19. komponen timer untuk proses .
20. komponen Microsoft common control sebagai media penghubung
komunikasi serial.
76
Lampiran 4:
List program aplikasi image processing dengan visual basic.
Dim red, green, blue As Integer
Dim R(200, 200), G(200, 200), B(200, 200) As Integer
Dim Rb(200, 200), Gb(200, 200), Bb(200, 200) As Integer
Dim Rc(200, 200), Gc(200, 200), Bc(200, 200) As Integer
Dim koefB, koefC As Double
Dim rcf(200, 200), gcf(200, 200), bcf(200, 200) As Integer
Dim rth, gth, bth As Integer
Dim xglob, yglob As Single
Dim GM(3, 3), Rgauss(200, 200), Ggauss(200, 200), Bgauss(200, 200)
As Integer
Dim H(500), V(500) As Integer
Dim P(500, 500) As Integer
Dim Hpast, Vpast As Integer
Dim ULx, URx, BLx, BRx As Integer
Dim ULy, URy, BLy, BRy As Integer
Dim CenterPointX As Integer
Dim CenterPointY As Integer
Private Type mRGB
R As Long
G As Long
B As Long
End Type
Private Function GetRGBFromRef(ByVal MyColor As Long) As mRGB
Dim CurrColor As Long
Dim RedShade As Long
Dim GreenShade As Long
Dim BlueShade As Long
Dim ret As mRGB
CurrColor = MyColor
RedShade = (CurrColor Mod (2 ^ 16)) Mod (2 ^ 8)
GreenShade = (CurrColor Mod (2 ^ 16)) / (2 ^ 8)
BlueShade = (CurrColor / (2 ^ 16))
ret.R = RedShade
ret.G = GreenShade
ret.B = BlueShade
GetRGBFromRef = ret
End Function
Sub load()
For Each Device In VideoCap1.Devices
cbodrivervid.AddItem Device.Name
Next
cbodrivervid.ListIndex = 0
For Each VideoFormat In VideoCap1.VideoFormats
cboformatvid.AddItem VideoFormat.Name
Next
cboformatvid.ListIndex = 6
LblSelDrv = cbodrivervid.ListIndex
End Sub
Sub ambil()
77
VideoCap1.Device = cbodrivervid.ListIndex
VideoCap1.VideoFormat = cboformatvid.ListIndex
VideoCap1.SampleBufferMode = 3
VideoCap1.UseOverlay = False
VideoCap1.FrameRate = 1500
VideoCap1.ShowDateTime = False
VideoCap1.Start
End Sub
Private Sub cbodrivervid_Click()
ambil
End Sub
Private Sub cboformatvid_Click()
ambil
End Sub
Private Sub cmdstart_Click()
TmrExecute.Enabled = True
cmdstart.Enabled = False
CmdDisconnect.Enabled = False
cmdstop.Enabled = True
CmdConnect.Enabled = False
End Sub
Private Sub cmdstop_Click()
TmrExecute.Enabled = False
cmdstart.Enabled = False
CmdDisconnect.Enabled = True
cmdstop.Enabled = False
CmdConnect.Enabled = False
End Sub
Private Sub CmdConnect_Click()
MSComm1.CommPort = CboCom.Text
MSComm1.PortOpen = True
CmdConnect.Enabled = False
CmdDisconnect.Enabled = True
cmdstart.Enabled = True
End Sub
Private Sub CmdDisconnect_Click()
MSComm1.PortOpen = False
cmdstart.Enabled = False
cmdstop.Enabled = False
CmdDisconnect.Enabled = False
CmdConnect.Enabled = True
End Sub
Private Sub Form_Load()
MSComm1.Settings = "9600,n,8,1"
CboCom.AddItem (1)
CboCom.AddItem (2)
CboCom.AddItem (3)
CboCom.AddItem (4)
cmdstart.Enabled = False
cmdstop.Enabled = False
CmdDisconnect.Enabled = False
load
78
ambil
End Sub
Private Sub MnuAbout_Click()
FrmAbout.Show
End Sub
Private Sub PicOutRk_Click()
rth = Rc(xglob, yglob)
gth = Gc(xglob, yglob)
bth = Bc(xglob, yglob)
Label9 = rth & " , " & gth & " , " & bth
End Sub
Private Sub PicOutRk_MouseMove(Button As Integer, Shift As
Integer, X As Single, Y As Single)
xglob = X
yglob = Y
LblColExt = Rc(X, Y) & " , " & Gc(X, Y) & " , " & Bc(X, Y)
End Sub
Private Sub TmrExecute_Timer()
PicOutRk.Cls
Dim ImageArray As Variant
Dim MyRGB As mRGB
Dim i As Long
Dim j As Long
Dim iWidth As Long
Dim iHeight As Long
ImageArray = VideoCap1.GetSampleBufferRGB(iWidth, iHeight)
For i = 0 To iWidth - 1
For j = 0 To iHeight - 1
MyRGB = GetRGBFromRef(ImageArray(i, j))
With MyRGB
R(iWidth - i, j) = .R G(iWidth - i, j) = .G B(iWidth - i, j) = .B End With Next j
Next i
'gaussian
GM(1, 1) = 1
GM(1, 2) = 2
GM(1, 3) = 1
GM(2, 1) = 2
GM(2, 2) = 4
GM(1, 3) = 2
GM(3, 1) = 1
GM(3, 2) = 2
GM(3, 3) = 1
For k = 1 To 1
For i = 0 To iWidth
For j = 0 To iHeight
R(i, j) = ((R(i, j) * GM(1, 1)) + (R(i + 1, j) * GM(2, 1)) +
(R(i + 2, j) * GM(3, 1)) + (R(i, j + 1) * GM(1, 2)) + (R(i + 1, j
79
+ 1) * GM(2, 2)) + (R(i + 2, j + 1) * GM(3, 2)) + (R(i, j + 2) *
GM(1, 3)) + (R(i + 1, j + 2) * GM(2, 3)) + (R(i + 2, j + 2) *
GM(3, 3))) / 16
G(i, j) = ((G(i, j) * GM(1, 1)) + (G(i + 1, j) * GM(2, 1)) +
(G(i + 2, j) * GM(3, 1)) + (G(i, j + 1) * GM(1, 2)) + (G(i + 1, j
+ 1) * GM(2, 2)) + (G(i + 2, j + 1) * GM(3, 2)) + (G(i, j + 2) *
GM(1, 3)) + (G(i + 1, j + 2) * GM(2, 3)) + (G(i + 2, j + 2) *
GM(3, 3))) / 16
B(i, j) = ((B(i, j) * GM(1, 1)) + (B(i + 1, j) * GM(2, 1)) +
(B(i + 2, j) * GM(3, 1)) + (B(i, j + 1) * GM(1, 2)) + (B(i + 1, j
+ 1) * GM(2, 2)) + (B(i + 2, j + 1) * GM(3, 2)) + (B(i, j + 2) *
GM(1, 3)) + (B(i + 1, j + 2) * GM(2, 3)) + (B(i + 2, j + 2) *
GM(3, 3))) / 16
Next j
Next i
Next k
'
koefB = HSBBVal.Value
Label10 = HSBBVal.Value
For i = 0 To iWidth
For j = 0 To iHeight
Rb(i, j) = (R(i, j) + koefB)
Gb(i, j) = (G(i, j) + koefB)
Bb(i, j) = (B(i, j) + koefB)
If Rb(i, j) < 0 Then Rb(i, j) = 0
If Gb(i, j) < 0 Then Gb(i, j) = 0
If Bb(i, j) < 0 Then Bb(i, j) = 0
Next j
Next i
'contrast
koefC = (HSBCVal.Value / 10)
Label11 = HSBCVal.Value
For i = 0 To iWidth
For j = 0 To iHeight
Rc(i, j) = Int(Rb(i, j) * koefC)
Gc(i, j) = Int(Gb(i, j) * koefC)
Bc(i, j) = Int(Bb(i, j) * koefC)
If Rc(i, j) < 0 Then Rc(i, j) = 0
If Gc(i, j) < 0 Then Gc(i, j) = 0
If Bc(i, j) < 0 Then Bc(i, j) = 0
If Rc(i, j) > 255 Then Rc(i, j) = 255
If Gc(i, j) > 255 Then Gc(i, j) = 255
If Bc(i, j) > 255 Then Bc(i, j) = 255
Next j
Next i
For i = 0 To iWidth
For j = 0 To iHeight
PicOutRk.PSet (i, j), RGB(Rc(i, j), Gc(i, j), Bc(i, j))
Next j
Next i
'filter
bw = Val(TxtBW)
For i = 0 To iWidth
80
For j = 0 To iHeight
If Rc(i, j) > (rth - bw) And Gc(i, j) > (gth - bw) And Bc(i, j) >
(bth - bw) And Rc(i, j) < (rth + bw) And Gc(i, j) < (gth + bw) And
Bc(i, j) < (bth + bw) Then rcf(i, j) = 0 gcf(i, j) = 0 bcf(i, j) = 0 Else rcf(i, j) = 255 gcf(i, j) = 255 bcf(i, j) = 255 End If Next j Next i
For i = 0 To iWidth
For j = 0 To iHeight
PicFilter.PSet (i, j), RGB(rcf(i, j), gcf(i, j), bcf(i, j))
Next j
Next i
'center
PicFilter.Cls
For i = 0 To PicFilter.ScaleWidth
For j = 0 To PicFilter.ScaleHeight
If rcf(i, j) = 0 Then P(i, j) = 0
If rcf(i, j) = 255 Then P(i, j) = 1
Next j
Next i
For i = 0 To PicFilter.ScaleWidth
H(i) = 1
Next i
For j = 0 To PicFilter.ScaleHeight
V(j) = 1
Next j
For i = 0 To PicFilter.ScaleWidth
For j = 0 To PicFilter.ScaleHeight
PicFilter.PSet (i, j), RGB(rcf(i, j), gcf(i, j), bcf(i, j))
Next j
Next i
For i = 1 To PicFilter.ScaleWidth
Hpast = H(i - 1)
For j = 1 To PicFilter.ScaleHeight
H(i) = H(i) * P(i, j)
Next j
If H(i) = 0 And Hpast = 1 Then
PicFilter.Line (i, 0)-(i, 120), vbRed
ULx = i
BLx = i
ElseIf H(i) = 1 And Hpast = 0 Then
PicFilter.Line (i, 0)-(i, 120), vbRed
URx = i
BRx = i
Else
End If
Next i
For j = 1 To PicFilter.ScaleHeight
Vpast = V(j - 1)
For i = 1 To PicFilter.ScaleWidth
81
V(j) = V(j) * P(i, j)
Next i
If V(j) = 0 And Vpast = 1 Then
PicFilter.Line (0, j)-(160, j), vbBlue
ULy = j
URy = j
ElseIf V(j) = 1 And Vpast = 0 Then
PicFilter.Line (0, j)-(160, j), vbBlue
BLy = j
BRy = j
Else
End If
Next j
CenterPointX = ((URx - ULx) / 2) + ULx
CenterPointY = ((BLy - ULy) / 2) + ULy
PicFilter.Line (CenterPointX - 5, CenterPointY)-(CenterPointX + 5,
CenterPointY), vbGreen
PicFilter.Line (CenterPointX, CenterPointY - 5)-(CenterPointX,
CenterPointY + 5), vbGreen
PicOutRk.Line (CenterPointX - 5, CenterPointY)-(CenterPointX + 5,
CenterPointY), vbGreen
PicOutRk.Line (CenterPointX, CenterPointY - 5)-(CenterPointX,
CenterPointY + 5), vbGreen
LblKoor = CenterPointX & " , " & CenterPointY
'position
If CenterPointX < 70 Then
LblCtrX = "Berada di Kiri,"
MSComm1.Output = "3"
End If
If CenterPointX > 90 Then
LblCtrX = "Berada di Kanan,"
MSComm1.Output = "1"
End If
If CenterPointX < (80 + 10) And CenterPointX > (80 - 10) Then
LblCtrX = "Berada di Tengah,"
MSComm1.Output = "2"
End If
If CenterPointY < 50 Then
LblCtrY = "Atas"
MSComm1.Output = "1"
End If
If CenterPointY > 70 Then
LblCtrY = "Bawah"
MSComm1.Output = "3"
End If
If CenterPointY < (60 + 10) And CenterPointY > (60 - 10) Then
LblCtrY = "Tengah"
MSComm1.Output = "2"
End If
End Sub
82
Lampiran 5:
List program aplikasi image processing dengan OpenCV.
#include "cv.h"
#include "highgui.h"
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <termios.h>
#include <string.h>
#include "serial.h"
#define umax 3217
#define umin 1000
int rPos,gPos,bPos,rentang=80,rThreshold=200,gThreshold=,bThreshold
=;
int rx,ry,oca,ocb,spx=320,spy=,kp =3,ki= 2,kd= 0;
unsigned char oc1ah,oc1al,oc1bh,oc1bl, tracking=0;
// PID
double xerr_old, xerr, xP_err, xI_err, xD_err;
double yerr_old, yerr, yP_err, yI_err, yD_err;
float kp2,ki2,kd2;
int radius = 60;
CvScalar blue = CV_RGB(0,0,); CvScalar blk = CV_RGB(1,,);
int connectivity = 8;
int thickness = 2;
// Text variables
double hscale = 0.7;
double vscale = 0.4;
double shear = 0.2;
int thickness2 = 2;
int line_type = 8;
IplImage *frame = 0, *filter=;
char* WindowName = "Jendela color filtering";
const char* text = "Objek tidak terdeteksi...";
/******************************************************/
void mouseHandler( int event, int xm, int ym, int flags, void
*param )
/* user clicked the image, save subimage as template */
if( event == CV_EVENT_LBUTTONDOWN )
uchar *data = ( uchar* )frame->imageData;
83
uchar* ptr=(uchar*)(frame->imageData+ym*frame-
>widthStep);
bPos = ptr[3*xm];
gPos = ptr[*xm+];
rPos = ptr[3*xm+];
cvSetTrackbarPos("RED","control panel",rPos );
cvSetTrackbarPos("GREEN","control panel",gPos );
cvSetTrackbarPos("BLUE","control panel",bPos );
/* template is available, start tracking! */
fprintf( stdout, " warna yang difilter >> R=%d
;G=%d ;B=%d \n",rPos,gPos,bPos );
tracking=0;
spx=spx;
spy=spy;
fprintf( stdout, " setting point >> x=%i ;y=%i
\n",spx,spy );
if( event == CV_EVENT_LBUTTONUP )
tracking=1;
/******************************************************/
//XPID
double XPID(double spx, double maxLocx)
double xu;
xerr_old = xerr;
xerr = spx - maxLocx;
xP_err = xerr;
xI_err +=xerr_old;
xD_err = xerr - xerr_old;
xu = (kp2) * xP_err + (ki2)* xI_err + (kd2) * xD_err;
xu = 2150-xu;
if (xu > umax) xu = umax;
if (xu < umin) xu = umin;
if (xI_err > 2000) xI_err = 2000;
if (xI_err < -) xI_err = -;
return xu;
/******************************************************/
//YPID
double YPID(double spy, double maxLocy)
double yu;
yerr_old = yerr;
yerr = maxLocy - spy;
yP_err = yerr;
yI_err +=yerr_old;
yD_err = yerr - yerr_old;
84
yu = (kp2) * yP_err + (ki2) * yI_err + (kd2) * yD_err;
yu = yu+2050;
if (yu > umax) yu = umax;
if (yu < umin) yu = umin;
if (yI_err > 2000) yI_err = 2000;
if (yI_err < -) yI_err = -;
return yu;
/***********************************************/
int main( int argc, char **argv )
CvCapture *capture = 0;
int key = 0;
int x,y,r,g,b,dr,dg,db;
fd = open_port();
init_port(fd);
/* initialize camera */
capture = cvCaptureFromCAM( 1 );
CvScalar blue = CV_RGB(0,,0);
CvFont font1;
cvInitFont(&font1,
CV_FONT_HERSHEY_SIMPLEX,hscale,vscale,shear,thickness2,line_type);
/* always check */
if ( !capture )
fprintf( stderr, "Cam\n" );
return 1;
/* create a window for the video */
cvNamedWindow( "normal cam", CV_WINDOW_AUTOSIZE );
cvNamedWindow( "control panel", CV_WINDOW_AUTOSIZE );
cvResizeWindow( "control panel", 420,);
cvSetMouseCallback( "normal cam", mouseHandler, NULL );
cvNamedWindow(WindowName, CV_WINDOW_AUTOSIZE);
cvResizeWindow( WindowName, 640,);
filter=cvCreateImage(cvSize(640,480), 8, 1);
cvCreateTrackbar("KP","control panel",&kp,,);
cvCreateTrackbar("KI","control panel",&ki,,);
cvCreateTrackbar("KD","control panel",&kd,,);
cvCreateTrackbar("RED","control panel",&rThreshold,5,);
cvCreateTrackbar("GREEN","control panel",&gThreshold,255,);
cvCreateTrackbar("BLUE","control panel",&bThreshold,5,);
cvCreateTrackbar("BANDWIDTH","control panel",&rentang,200,);
while( key != 'q' )
//Create Controls & Windows
/* get a frame */
frame = cvQueryFrame( capture );
85
cvSmooth(frame,frame,CV_GAUSSIAN,3,);
uchar *filterData = (uchar *)filter->imageData;
for(y=; y<; y++)
>widthStep);
uchar* ptr=(uchar*)(frame->imageData+y*frame-
for(x=; x<; x++)
b=ptr[*x];
g=ptr[*x+1];
r=ptr[*x+2];
dr=rThreshold-r;
dg=gThreshold-g;
db=bThreshold-b;
int delta=rentang/2;
if(dr<=delta && dg<=delta && db<=delta &&
dr>=~delta && dg>=~delta && db>=~delta)
filterData[y*filter-
>widthStep+x*filter->nChannels]=;
else
filterData[y*filter-
>widthStep+x*filter->nChannels]=5;
cvSmooth(filter,filter,CV_GAUSSIAN,3,);
cvErode(filter,filter,0,);
cvDilate(filter,filter,0,);
double minVal,maxVal;
CvPoint minLoc,maxLoc;
cvMinMaxLoc(filter,&minVal,&maxVal,&minLoc,&maxLoc,0);
char buffer[33];
sprintf(buffer, "X=%i Y=%i", minLoc.x,minLoc.y);
kp2=kp*0.10;ki2=ki*.10;kd2=kd*.10;
if (minLoc.x< || minLoc.y<3 || tracking != 1)
cvRectangle(frame,cvPoint(320,),cvPoint(,),cvScalar
(,,,),1,,);
cvPutText(frame,text,cvPoint(220,),&font1,blue);
else
86
cvRectangle(frame,cvPoint(minLoc.x,minLoc.y),cvPoint(minLoc.
x+,minLoc.y+50),cvScalar(,,0,),,,);
cvPutText(frame,buffer,cvPoint(minLoc.x,minLoc.y),&font1,blu
e);
cvCircle(frame,cvPoint(spx,spy),radius,blue,thickness,connec
tivity);
oca=XPID(spx,minLoc.x);
ocb=YPID(spy,minLoc.y+40);
//oc1ah,oc1al,oc1bh,oc1bl;
oc1bh=ocb>>8;
oc1bl=ocb&0xFF;
oc1ah=oca>>8;
oc1al=oca&0xFF;
write(fd,&oc1ah ,1);
write(fd,&oc1al ,1);
write(fd,&oc1bh ,1);
write(fd,&oc1bl ,1);
printf(("x=%4i ; y=%4i ; sx=%5i ; sy=%5i
\n"),minLoc.x,minLoc.y,ocb,oca);
cvShowImage(WindowName,filter);
cvShowImage("normal cam",frame);
//char *filterDataOrigin;
/* always check
/* exit if user press 'q' */
key = cvWaitKey( 1 );
close(fd);
/* free memory */
cvReleaseCapture( &capture );
cvReleaseImage( &frame );
cvReleaseImage( &filter );
cvDestroyWindow( "normal cam" );
cvDestroyWindow( "WindowName" );
return 0;
87
Lampiran 6:
List program kontroler untuk OpenCV.
#include <mega8.h>
#ifndef RXB8
#define RXB8 1
#endif
#ifndef TXB8
#define TXB8 0
#endif
#ifndef UPE
#define UPE 2
#endif
#ifndef DOR
#define DOR 3
#endif
#ifndef FE
#define FE 4
#endif
#ifndef UDRE
#define UDRE 5
#endif
#ifndef RXC
#define RXC 7
#endif
#define FRAMING_ERROR (1<<FE)
#define PARITY_ERROR (1<<UPE)
#define DATA_OVERRUN (1<<DOR)
#define DATA_REGISTER_EMPTY (1<<UDRE)
#define RX_COMPLETE (1<<RXC)
// USART Receiver buffer
#define RX_BUFFER_SIZE 4
char rx_buffer[RX_BUFFER_SIZE];
#if RX_BUFFER_SIZE <= 256
unsigned char rx_wr_index,rx_rd_index,rx_counter;
#else
unsigned int rx_wr_index,rx_rd_index,rx_counter;
#endif
// This flag is set on USART Receiver buffer overflow
bit rx_buffer_overflow;
// USART Receiver interrupt service routine
interrupt [USART_RXC] void usart_rx_isr(void)
char status,data;
88
status=UCSRA;
data=UDR; if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
rx_buffer[rx_wr_index++]=data;
#if RX_BUFFER_SIZE == 256
// special case for receiver buffer size=256
if (++rx_counter == 0)
#else
if (rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;
if (++rx_counter == RX_BUFFER_SIZE)
rx_counter=0;
#endif
rx_buffer_overflow=1;
#ifndef _DEBUG_TERMINAL_IO_
// Get a character from the USART Receiver buffer
#define _ALTERNATE_GETCHAR_
#pragma used+ char getchar(void)
char data; while (rx_counter==0);
data=rx_buffer[rx_rd_index++];
#if RX_BUFFER_SIZE != 256
if (rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0;
#endif
#asm("cli")
--rx_counter;
#asm("sei")
return data;
#pragma used-
#endif
// Standard Input/Output functions
#include <stdio.h>
#include <delay.h>
#define periode 27647
#define tmax 3200
#define tmin 1100
#define delta 2100
#define mx PORTB.1
#define my PORTB.2
unsigned int s1,s2,s3,s4;
// Timer1 overflow interrupt service routine
interrupt [TIM1_OVF] void timer1_ovf_isr(void)
// Place your code here
mx=1; my=1;
89
if (rx_buffer[0]>12 || rx_buffer[0]<3.5 || rx_buffer[2]>12 ||
rx_buffer[2]<3.5)
OCR1A=2142;
OCR1B=2142;
else
OCR1AH=s1;//rx_buffer[0];
OCR1AL=s2;//rx_buffer[1];
OCR1BH=s3;//rx_buffer[2];
OCR1BL=s4;//rx_buffer[3];
//delay_ms(5);
// Timer1 output compare A interrupt service routine
interrupt [TIM1_COMPA] void timer1_compa_isr(void)
// Place your code here
mx=0;
// Timer1 output compare B interrupt service routine
interrupt [TIM1_COMPB] void timer1_compb_isr(void)
// Place your code here
my=0;
void main(void)
PORTB=0x00;
DDRB=0x06;
PORTC=0x00;
DDRC=0x3F;
PORTD=0x00;
DDRD=0x00;
TCCR1A=0x02;
TCCR1B=0x1A;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1=periode;
OCR1A=2142;
OCR1B=2142;
TIMSK=0x1C;
UCSRA=0x00;
UCSRB=0x98;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x47;
ACSR=0x80;
SFIOR=0x00;
#asm("sei")
while (1)
s1=rx_buffer[0];
s2=rx_buffer[1];
90
s3=rx_buffer[2];
s4=rx_buffer[3];
91
Lampiran 7:
List program kontroler untuk Visual Basic.
#include <mega8.h>
#define tmax 3217
#define tmin 1000
#ifndef RXB8
#define RXB8 1
#endif
#ifndef TXB8
#define TXB8 0
#endif
#ifndef UPE
#define UPE 2
#endif
#ifndef DOR
#define DOR 3
#endif
#ifndef FE
#define FE 4
#endif
#ifndef UDRE
#define UDRE 5
#endif
#ifndef RXC
#define RXC 7
#endif
#define FRAMING_ERROR (1<<FE)
#define PARITY_ERROR (1<<UPE)
#define DATA_OVERRUN (1<<DOR)
#define DATA_REGISTER_EMPTY (1<<UDRE)
#define RX_COMPLETE (1<<RXC)
// USART Receiver buffer
#define RX_BUFFER_SIZE 2 char rx_buffer[RX_BUFFER_SIZE];
#if RX_BUFFER_SIZE <= 256
unsigned char rx_wr_index,rx_rd_index,rx_counter;
#else
unsigned int rx_wr_index,rx_rd_index,rx_counter;
#endif
// This flag is set on USART Receiver buffer overflow
bit rx_buffer_overflow;
// USART Receiver interrupt service routine
interrupt [USART_RXC] void usart_rx_isr(void)
92
char status,data;
status=UCSRA;
data=UDR;
if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
rx_buffer[rx_wr_index++]=data;
#if RX_BUFFER_SIZE == 256
// special case for receiver buffer size=256
if (++rx_counter == 0)
#else
if (rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;
if (++rx_counter == RX_BUFFER_SIZE)
rx_counter=0;
#endif
rx_buffer_overflow=1;
#ifndef _DEBUG_TERMINAL_IO_
// Get a character from the USART Receiver buffer
#define _ALTERNATE_GETCHAR_
#pragma used+
char getchar(void)
char data;
while (rx_counter==0);
data=rx_buffer[rx_rd_index++];
#if RX_BUFFER_SIZE != 256 if (rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0;
#endif
#asm("cli")
--rx_counter;
#asm("sei") return data;
#pragma used-
#endif
// Standard Input/Output functions
#include <stdio.h>
#include <delay.h>
#define sx OCR1A
#define sy OCR1B
unsigned char t;
void main(void)
PORTB=x00;
DDRB=x06;
PORTC=x00;
DDRC=x3F;
PORTD=x00;
DDRD=x00;
TCCR1A=xA2;
93
TCCR1B=x1A;
TCNT1H=x00;
TCNT1L=x00;
ICR1=;
OCR1AH=x00;
OCR1AL=x00;
OCR1BH=x00;
OCR1BL=x00;
TIMSK=x1C;
UCSRA=x00;
UCSRB=x98;
UCSRC=x86;
UBRRH=x00;
UBRRL=x47;
ACSR=x80;
SFIOR=x00;
#asm("sei")
t=;
sx=; sy=2;
delay_ms();
while (1)
if( rx_buffer[0]==x31 && rx_buffer[1]==x31)
if (sx>=tmin)sx--;
if (sy>=tmin)sy--;
delay_ms(t);
else if( rx_buffer[0]==0x33 && rx_buffer[1]==0x33)
if (sx<=tmax)sx++; if (sy<=tmax)sy++;
delay_ms(t);
else if( rx_buffer[0]==0x31 && rx_buffer[1]==0x33)
if (sx>=tmin)sx--;
if (sy<=tmax)sy++;
delay_ms(t);
else if( rx_buffer[0]==0x33 && rx_buffer[1]==0x31)
if (sy<=tmax)sx++;
if (sx>=tmin)sy--;
delay_ms(t);
else if( rx_buffer[0]==0x31 && rx_buffer[1]==0x32)
if (sx>=tmin)sx--;
delay_ms(t);
else if( rx_buffer[0]==0x33 && rx_buffer[1]==0x32)
if (sx<=tmax)sx++;
delay_ms(t);
else if( rx_buffer[0]==0x32 && rx_buffer[1]==0x31)
94
if (sy>=tmin)sy--;
delay_ms(t);
else if( rx_buffer[0]==0x32 && rx_buffer[1]==0x33)
if (sy<=tmax)sy++;
delay_ms(t);
else ;
putchar(rx_buffer[0]);
putchar(rx_buffer[1]);
putchar(OCR1AL);
putchar(OCR1BL);
95
PERNYATAAN KEASLIAN TULISAN
Saya yang bertanda tangan di bawah ini:
Nama : Rizky Dwi Septanto
NIM : 9123100013
Program Studi : Teknik Mekatronika
Menyatakan dengan sebenarnya bahwa laporan tugas akhir ini
benar-benar merupakan hasil karya saya sendiri, bukan merupakan
pengambilalihan tulisan atau pikiran orang lain yang saya akui sebagai
hasil tulisan atau pikiran saya sendiri.
Apabila di kemudian hari terbukti atau dapat dibuktikan tugas akhir ini
hasil jiplakan, maka saya bersedia menerima sanksi atas perbuatan tersebut.
Malang, 13 Februari 2013
Yang Membuat pernyataan,
Rizky Dwi Septanto
96
RIWAYAT HIDUP PENULIS
Rizky Dwi Septanto dilahirkan di Mojokerto tanggal 12
September 1992, putra kedua dari tiga
bersaudara dari pasangan Bapak Irianto dan Ibu
Sugiarti. Setelah menempuh pendidikan formal di SDN
Balongsari 2 dan lulus tahun 2004, SMP Negeri 8 dan
lulus tahun 2007 dan SMK Tamansiswa Mojokerto lulus
tahun 2010 penulis melanjutkan pendidikan
Diploma 3 di POLITEKNIK KOTA MALANG pada tahun 2010 dan dilanjutkan
dengan mengerjakan tugas akhir dengan judul Rancang Bangun Robot
Shape Follower dengan Metode .
Pada saat menempuh pendidikan mulai dari SD penulis sangat menyukai
musik, pada duduk di bangku SMP hingga SMK penulis aktif dalam
kegiatan ektrakurikuler musik. Dilanjutkan masuk perguruan tinggi penulis juga
aktif dan ikut serta dalam organisasi kemahasiswan UKM Robotika dan penulis
dipercaya sebagai wakil ketua UKM Robotika (2012-2013). Semoga
ilmu yang penulis dapatkan dari bangku SD hingga Perguruan Tinggi
dapat menjadi bekal untuk mengarungi kehidupan selanjutnya. Dan ilmu yang
didapatkan menjadi ilmu yang bermanfaat, dan barokah, Amin.
Dengan ketekunan dan motivasi untuk terus belajar, berusaha
dan dukungan dari semuanya, penulis telah berhasil menyelesaikan pengerjaan
tugas akhir ini. Semoga dengan penulisan tugas akhir ini dapat
bermanfaat bagi
semuanya.
Data Riwayat Penulis
Nama : Rizky Dwi Septanto
Email : [email protected]