Rizky dwi septanto tugas akhir rancang bangun robot shape fo

Page 1

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


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

1


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. NIK. 101 01 006

Aditya Kurniawan, S.ST. NIK. 101 01 005


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.

1


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.


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 tugas

penulis nantikan

guna

perbaikan

selanjutnya,

dan

akhir

semoga ini

dapat bermanfaat bagi penulis khususnya dan bagi pembaca pada umumya.

Malang, 13 Februari 2013

Penulis

3


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

memberikan

tuaku

Bapak

dan

Ibu

yang

banyak

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

pertama

Kurniawan,

yang dengan

sabar,

S.ST tulus

selaku dan

pembimbing 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 1.2 1.3 1.4 1.5

Latar Belakang ......................................................................................... 1 Rumusan Masalah .................................................................................... 1 Tujuan Tugas Akhir.................................................................................. 2 Batasan Masalah ....................................................................................... 2 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



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

1


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 5.2

Kesimpulan............................................................................................. 68 Saran ....................................................................................................... 68

DAFTAR PUSTAKA .......................................................................................... 70 LAMPIRAN......................................................................................................... 71 PERNYATAAN KEASLIAN TULISAN .......................................................... 95 RIWAYAT HIDUP PENULIS........................................................................... 96

2


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

1


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

2


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

3


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

4



BAB I PENDAHULUAN

1.1

Latar Belakang Robot Shape Follower bisa dipahami sebagai sebuah contoh kasus

yang cukup dipelajari

istimewa

dalam bidang

kemampuan kebutuhan banyak

dari

dari akan

sekian

banyak

permasalahan

computer

vision.

Tingginya

perkembangan

ini

meningkatnya

suatu komputer analisis

menghasilkan

video

sesuatu

saat

umum

dan

yang dilakukan secara otomatis

yang

hebat

yang

telah

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 target

cara

menemukan

obyek

yang

dimaksud

sebagai

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

permasalahannya yaitu

diketahui,

untuk merencanakan

robot

bergerak

menuju ke titik tempat yang sesuai. Pada kasus kedua, ketika background bukan monochrome ataupun objek memiliki lebih dari 1 warna, bergantung

pada

beberapa

jenis

estimasi

dari

posisi

maka perlu dan kecepatan

yang datang dari data sensor.

2.2 Image Processing 2.2.1 Pengolahan Citra Pengolahan untuk mengolah sesuai bisa

Citra gambar

dengan yang dilakukan lain

adalah

suatu

sehingga

keinginkan

metode

menghasilkan

yang

kita.

gambar

Pengambilan

dengan menggunakan kamera yang bisa digunakan

digunakan

untuk

atau

yang gambar alat

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 untuk satuarea

dari pixel.

tiga

nilai

Dalam

RGB menciptakan

sistem

RGB,

kita

warna

tahu

akhir

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

Filtering pada warna-warna kita

tentukan

belakang yang

menggunakan

mendekati

warna

pada

Gambar 2.1.

Gambar 2.1. Contoh binarisasi api pada gambar.

teknik obyek

Color yang


7

2.2.4 Color Filtering Color

Filtering

menemukan sebuah

adalah

warna

metode

yang

berguna

pada

sebuah

yang terdapat

untuk 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

diloloskan. gambar

warnanya

Sedangkan

merupakan

warna

representasi

hitam dari

pixel

pada 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 angka

Gambar

2.3

di

bawah,

variabel

0x00

menyatakan

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

warna tertentu

dapat

mencampurkan ketiga

Gambar dengan warna

2.3

di

mudah dasar

bawah

untuk

dilakukan, RGB.

menyajikan

yaitu

Berikut

dengan

merupakan

contoh-contoh kombinasi warna yang bisa digunakan dapat dilihat pada

Gambar

dapat menentukan kombinasi warna dengan melihat Tabel 2.1.

Gambar 2.3. Nilai Warna RGB dalam Hexadesimal

2.4

dan


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 lunak

grafis,

mengurangi

biasanya

detail.

Efek

banyak

digunakan

untuk mengurangi visual

dalam

noise

perangkat

gambar

dan

teknik blurring adalah blur halus

menyerupai gambar yang dilihat melalui layar transparan, jelas berbeda dari bokeh efek yang dihasilkan oleh lensa outof-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

sebagai

two-dimensional

Weierstrass

transform.

Sebaliknya,

convolving oleh lingkaran (yaitu, circular box blur ) akan lebih akurat mereproduksi bokeh

efek.

Gaussian

lain, menerapkan blur Gaussian memiliki efek

Gaussian

Sejak

Transformasi

mengurangi komponen gambar dengan dengan

demikian

Fourier

frekuensi

sebuah

blur

dari

tinggi,

Gaussian

merupakan low pass filter. 1 2  1 

2 1 

4 2   2 1 

0 1

0 

 0 1

 0 

atau  1 4 1 

Matriks 3×3

Gaussian blur memilki nilai matriks seperti yang di atas. Dalam penerapannya matriks yang digunakan hanya salah satu dari kedua matriks tersebut. kebutuhan

Pemilihan

matriks

digunakan

sesuai

dengan

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


melakukan reset. Untuk beberapa jenis AVR

11


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 ATMEGA8 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 membutuhkan

untuk

semua

komponen

yang

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, pinpin 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 Fuse

bit

Sedangkan

clock

internal,

yang digunakan untuk

PB7

untuk

bergantung

pada

memilih

dapat digunakan

pengaturan

sumber

sebagai

output

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

ada

lebih

pendek

ke dari

pin

ini

rendah

dan

pulsa minimum, maka akan

menghasilkan suatu kondisi reset meskipun clock-nya tidak bekerja. 6.

Port D (PD7…PD0)

pulsa


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 terpisah

tetap

saja disarankan

dengan

VCC.

untuk

menghubungkannya

secara

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 kata

web

kadang-kadang diganti dengan kata lain yang mendeskripsikan

pemandangan

yang

ditampilkan

memperlihatkan

pemandangan

memperlihatkan

pemandangan

yang

secara umumnya, sehingga

digunakan

untuk

di

kamera,

jalan.

Ada

panorama

misalnya juga

kota

memonitor keadaan

dan jalan

StreetCam

yang

Metrocam

yang

pedesaan, TraffiCam raya,

cuaca

dengan

Weather Cam, bahkan keadaan gunung berapi dengan VolcanoCam. Webcam atau web

camera

dihubungkan

adalah

sebuah

ke komputer

melalui

kamera

video

(biasanya)

COM. Pada gambar merupakan contoh bentuk fisik dari webcam.

port

digital

kecil

yang

USB

ataupun

port 2.6.


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 2

lebar pulsa antara 1 ms

dan

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 bertahan

di

posisi

tersebut.

besarnya

duty

cycle,

dan

akan

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 kekurangannya

adalah

parallel, untuk

saat

dinamakan

kecepatannya ini

sedang

lebih

tetapi

lambat

dikembangkan

daripada

komunikasi

teknologi

baru

yang

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

Bahasa pemrograman

adalah

computer untuk melakukan Visual

basic,

salah satu bahasa perintah-perintah tugas-tugas

pemrograman yang

tertentu.

computer.

dimengerti

Bahasa

oleh

pemrograman

yang dikembangkan oleh Microsoft sejak tahun 1991,

merupakan pengembangan dari pendahulunya yaitu pemrograman BASIC

bahasa

(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 sistem

program

computer,

khususnya

yang

menggunakan

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 berbasis

pengembangan

aplikasi

computer

grafik

dengan

cepat, akses ke basis data menggunakan Data

Access

Object

(DAO),

Remote

Object

(ADO), serta menawarkan

Data Object (RDO), atau ActiveX Data 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

utama Visual basic.

Gambar 2.10 Menu Toolbar

juga

pada

menu


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 Component

Library

sebenarnya

kita

yang

tersedia

dan komponen

tidak

perlu

dalam

control

OCX,

Visual tetapi

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,

library- library Image

opensource

yang

dikhususkan

untuk

yaitu

melakukan

Processing. Tujuannya adalah agar komputer mempunyai kemampuan

yang mirip dengan cara pengolahan visual pada manusia. Library ini dibuat untuk bahasa C/C++ sebagai optimasi Programming

Interface)

untuk

realtime

aplikasi,

API(Aplication

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

sampling

dan interpolasi,

histogram,

dasar

(filtering,

konversi

warna

edge

detection,

operasi

morfologi,

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.

3.2

Motor servo

: sebagai aktuator penggerak kamera

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 Motor Y Rangka sumbu X

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 beberapa

ini

terdiri

sistem,

yaitu

dari 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 menggunakan

serial

antar

PC

dan

Mikrokontroler

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 sistem

baik

menggunakan

sebuah

sistem

mekanik,

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 digunakan

kontrol pada robot shape

Mikrokontroler

ATMega8.

Desain

follower

dari

minimum

system rangkaian Mikrokontroler ATMega8 dapat dilihat pada Gambar 3.1. Untuk perancangan pendukung

memanfaatkan

harus menambahkan yaitu

dua

clock

exsternal

beberapa

dalam

komponen

buah kapasitor (C1, C2) dan crystal

maksimal 16 MHZ (X-TAL), dan Push Button (PB1) untuk tombol reset microcontroller ATMega8. Dengan rangkaian yang sudah dibuat dapat dimasukkan ATMega8,

yang

nantinya

pergerakan dari robot tersebut.

akan

ini program

ke dalam Microcontroller menjadi

sistem kontrol


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 level tegangan TTL yaitu 0V untuk logika low dan logika high menjadi

sinyal

untuk

komunikasi

digital

5V untuk

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

koordinator dari rangkaian masing-masing

Disini

berfungsi

sebagai

yang terpasang

portnya. Mikrokontroler

pada 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

mikrokontroler memerlukan seperti

device

lain-lain.

serial beberapa

IC Max232,

Minimum

antara

PC

komponen

konektor

DB9

dengan pendukung

female

system tersebut menggunakan komponen

seperti yang terlihat pada tabel 3.1. Tabel 3.1 Daftar komponen minimum sistem

No

dan

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)

PORTD.7

NC (not connected)

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

hanya dapat melihat kekanan dan kekiri maupun ke atas dan ke bawah.

Gambar 3.6 Konstruksi motor sumbu X

manusia

yang


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

motor

memanfaatkan tersebut

Berikut

dijelaskan

servo menggunakan

crystal

digunakan

akan

external sebesar

untuk

sinyal

tentang

cara

PWM

dengan

11.0592MHz,

crystal

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

Dan

untuk

menggerakkan

motor

servo

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 colour

di

atas

maka

didapat

rumus

umum

untuk

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)

b a

R(1,2) G(1,2) B(1,2)

c

d

R(2,1) G(2,1) B(2,1) R(2,2) 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)/ (216)) = 36 Nilai P(a) adalah nilai yang terdapat pada pixel a : 1.

Untuk R adalah nilai warna merah, nilai P(a) dimodulus dengan 2 16 setelah itu dimodulus kembali dengan 28 maka nilai R=237.

2.

Untuk dengan

nilai 2

16

G

adalah

nilai

warna

setelah itu dibagi dengan 2

Hijau, 8

P(a)

dimodulus

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 2 16 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

2 16 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

Gaussian Matriks. Proses

ini

memperbaiki citra yang

ada

pada

citra

proses

selanjutnya

digunakan

dengan menghilangkan

sehingga

citra

adalah

untuk efek

noise

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

menghilangkan ada

jatidirinya

dan

mengisi

dirinya

dengan

yang

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 tidak

pixel

yang

akan

di

Gaussian

tetapi

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 2 1   Mgauss  2 4 2 1 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

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 baris x, kolom Gaussian

di

y

dengan

matriks

3×3

seperti

pada pengoperasian

di bawah ini, sehingga didapatkan suatu nilai R baru untuk pixel (x, y). n n

Rgauss ( x , y ) 

Rgauss ( x , y )

Rgauss ( x , y ) 

 R x 1 y 1

( x, y )

 Mgauss 

1 2  1 2  4  2  1 2  1 1   1 n n   2 x1y 1 R( x, y )  2 4 2 1 1   2       16 R (x 1, y)  2  R (x , y) R (x  2, y) 1   1 n n  x1y 1R (x , y1)  2 R (x 1, y 1)  4 R (x  2, y 1)  2    R(x , y 2) 1 R (x 1, y  2)  2 R (x  2, y 2) 1   16

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

( x, y )

Ggauss ( x, y ) 

Ggauss( x, y )

Ggauss( x, y )

 Mgauss



x 1 y 1

1 2 1 2  4  2 1 2 1  1  1 n n   2 x1y 1 G( x, y )  2 4 2  1 1  2       16  G (x , y) G (x 1, y)  2 G (x  2, y) 1    1  n n  x1y 1G (x, y1)  2 G (x 1, y 1)  4 G (x  2, y 1)  2   G(x, y 2) 1 G (x 1, y  2)  2 G (x  2, y  2) 1   16

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

n n

Bgauss ( x , y ) 

Bgauss ( x , y )

Bgauss ( x , y )  

 B x 1

y 1

( x, y )

 Mgauss 

1 2 1 2  4  2 1 2 1  1 2 1   n n    B  2 4 2     ( x, y )    x 1 y 1 1 2 1        16  B (x , y)  B (x  2, y)  1  B (x 1, y)  2  1  n n  x 1y 1B (x, y1 )  2 B (x 1, y1)  4 B (x  2, y1 )  2  B B (x 1, y  2)  2 B (x  2, y  2)  1 (x , y  2)  1    16

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 (1,3) = (R(1,3), G(1,3), B (1,3))

P (3,1) = (R(3,1), G(3,1), B (3,1))

P (3,3) = (R(3,3), G(3,3), B(3,3))

Gambar 3.11 Proses colour extraction sebelum melalui gaussian


39

Berikut adalah contoh Gaussian matriks pada P(a) : n 3 n 3

 R

Rgauss ( x, y )

    

Rgauss (1,1)

 Rgauss (1,1)   

x 1

y 1

 36     76

x 1

 

(1,1)

Rgauss (1,1) Rgauss (1,1) Rgauss (1,1)



1

y

178

368 0 0

( x, y)

   

Ggauss (1,1) 

  

 G x 1

Ggauss (1,1) Ggauss (1,1) Ggauss(1,1)

 Mgauss 

y 1



16 96 1   211 24  2 n 3 n 3 149  2 102  4 175  2     x 1 y 1 178 0 2 811  1 16

48 96   21 298 416 350   x 1 y 1 178 0 81   16 21 + 48 + 96 + 298 + 416 + 350 + 178 + 0 + 81  16 1392  16  87 n 3 n 3

Ggauss (1,1)

( x, y)

1 2 1 2  4  2 1 2 1  G (1 ,1) 1 G ( 2, 1)  2 G (3, 1) 1  n 3 n 3   x 1y 1G (1 , 2)  2 G ( 2, 2)  4 G (3, 2)  2    G (1 , 3) 1 G (2 , 3)  2 G (3 , 3) 1 

 Ggauss (1,1)

213  62  15 

16 36  368  213  76  0  62  178  0  15  16 886  16  53,375Integer  53 n 3 n 3

Ggauss



1 2 1 2  4  2 1 2 1  R (1 ,1) 1 R ( 2, 1)  2 R ( 3, 1) 1  n 3 n 3   x 1y 1R (1 , 2 )  2 R ( 2, 2)  4 R (3, 2)  2    R (1 , 3) 1 R (2 , 3)  2 R (3 , 3) 1   16 184  2 213 1 36 1  n 3 n 3  04 38  2 31 2     x 1 y 1 178 02 15 1  1 16  n 3 n 3

Rgauss

 Mgauss

( x, y )


40

n 3 n 3

Bgauss ( x, y)

Bgauss

 (1,1)

Bgauss (1,1) 

Bgauss (1,1)  Bgauss (1,1) Bgauss (1,1) Bgauss (1,1)

 B x 1

( x, y)

 Mgauss 

y 1

1 2  1 2  4  2  1 2  1  B (1 ,1) 1 B ( 2, 1)  2 B (3, 1) 1  n 3 n 3   x 1y 1B (1 , 2)  2 B ( 2, 2)  4 B (3, 2)  2     B(1 , 3) 1 B (2 , 3)  2 B (3 , 3) 1  16 150  2 250 1 147 1  n 3 n 3 19  2 255  4 179  2     x 1 y 1 44 1 102  2 189 1 16 147 300 250 n 3 n 3 38 1020 358    x 1 y 1 44 204 189

16 147 + 300 + 250 + 38 + 1020 + 358 + 44 + 204 + 189  16 2550  16  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 pojokpojok 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 (1,3) = (Rgauss (1,3), Ggauss (1,3), Bgauss(1,3)

P (3,1) = (Rgauss (3,1), Ggauss (3,1), Bgauss (3,1)

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 : 16 8    n n P( x , y ) M OD(2 ) M OD(2 )  1     P  ) M OD(2 )  2 M OD(2  x 1 y 1  16 8 (x , y

1)

  

 Rgauss ( x , y )       

P(x , y  2) M OD(2 1

P

) M OD(2 )

) M OD(2 ) 

M OD(2 4



16 (x 1)

P

 ) M OD(2 )  2 

M OD(2

 8

16

8

1, y

8

16

P(x  2, y ) M OD(216 ) M OD(2 8 )  1  

P(x  1, y) M OD(216 ) M OD(2 8 )  2

(x 1)

16

P(x  1, y  2 ) M OD(2 2

2, y

8

) M OD(2 )  P(x  2, y  2) M OD(2

16

8

16

Ket : Rgauss(x, y) = Nilai warna merah gaussian pada kolom x, baris y

MOD = Modulus

) M OD(2 )  1       

P = Value Image pada pixel (Raw data)




43

 

 

P( x , y ) M OD(21 6 ) 8

(2 )

Int    M OD(216 ) P    n n  (x, y 1 )     Int  x   

 Ggauss( x , y )             

1

1 y

  Int  

(2 )

8

P(x, y  2 ) M OD(2 ) 8 (2 )

1

Int

P(x 1 , y) M OD(21 6 ) 8

(2 ) P

2 Int

2

M OD(21 6 )

(x 1, y 1)

(2 )

16

8

(2 ) M OD(21 6 )

(x  2, y 1) 8

(2 )

16

1 Int

P(x 1, y  2 ) M OD(2 ) 8 (2 )

16

2 Int

    1         

P(x  2, y) M OD(216 )

P 4 Int

8

Int

P(x  2 , y  2) M OD(2 8

 2        )  1   

(2 )

16

             

 

Ket : Ggauss(x, y) = Nilai warna hijau gaussian pada kolom x, baris y P = Value Image pada pixel (Raw data) MOD = Modulus    

Bgauss( x, y )

 P(x  2, y)   P( x, y ) P(x 1, y) Int Int  1  2  1    16 16 (2 ) (216 ) Int (2 )   n n    P P P   (x  2, y 1) (x , y 1) (x 1, y 1)   Int  Int  2  Int    2 16 4 16 (2 ) (2 ) (216 ) x 1 y 1         P(x  2, y  2) P(x , y  2) P(x 1, y  2)    1  2  Int  1 Int Int 16 16 16    (2 ) (2 ) (2 )    16                    

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 hijau warna

Bb biru

warna =

nilai 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 nilai varian warna dari tiap pixel akan bertambah 60.

adalah 60 maka


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 (3,1)=(Rb(3,1),Gb(3,1),Bb(3,1))

P (1,3)=(Rb(1,3),Gb (1,3),Bb(1,3))

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 warna yang perbedaan

telah

diproses

warnanya. Proses

akan ini

dapat

semakin dilakukan

sehingga

terlihat dengan

jelas cara

mengalikan warna dengan range nilai 0.9 – 1.9 dengan menggunakan cara sebagai berikut : ďƒ Rk = Rb x

Merah

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)  Int 113.0,5, 147.0,5, 219.0,5

P(1 ,1)  57, 74, 110 

 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 (3,1)=(Rk(3,1),Gk(3,1),Bk(3,1))

P (1,3)=(Rk(1,3),Gk(1,3),Bk(1,3))

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.

Rf

  Rc (x , y)  N : Rth  Bandwidth   Rc (x , y)  Rth  Bandwidth  

(x , y)

, Gf (x , y) , Bf (x , y)    Gc (x , y)  N : Gth  Bandwidth   Gc (x , y)  Gth  Bandwidth     Bc (x , y)  N : Bth  Bandwidth   Bc (x , y)  Bth  Bandwidth 

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

x (0,0)

(160,0) ULx ULy

URx

y BLy (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 :

4.1

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

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

tebesar

Pengujian

ini

dan terkecil,

serta

dibutuhkan

bertujuan

untuk

menentukan

batas

mengetahui nilai

sudut

OCR yang

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

program tersebut dengan

pada

wizard,

generate

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

kesimpulan bahwa motor

servo

Y

untuk

yang

telah

dilakukan,

mengendalikan

motor

dapat

diperoleh

servo

X

dapat dilakukan dengan memberikan nilai OCR

yang sama seperti yang terlihat pada Tabel 4.2.

4.3

dan

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 AVR

Seting

konfigurasi

seperti gambar di bawah ini :

terminal

pada

CodeVision


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 mengetahui

dapat

berfungsi

secara

normal,

kemudian

untuk

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, OpenCV2.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 pengujian

2,

diinginkan

saja

terdapat

objek

yang

diinginkan.

Dari

hasil

program berhasil memprioritaskan satu objek yang

aplikasi

sebagai konsol

target. Pada yang

pengujian

di

atas

juga

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

1.

Kanan, Atas

Respon pada OpenCV Cepat

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 yang

di

No

Posisi Target

percobaan

atas,

Lambat

Hasil Citra Hasil Citra Pada Pada VB OpenCV Biasa Bagus

Respon Pada VB

program

berjalan

sesuai

dengan

apa

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

perencanaan

oleh

dan pembuatan

penulis.

serta

Setelah

implementasi

melakukan

sistem

robot

ini,

kemudian dilakukan pengujian dan analisa maka dapat dimabil kesimpulan dan saran-saran sebagai berikut:

5.1

Kesimpulan Setelah

melakukan

pengujian tugas

berbagai

akhir

ini,

tahapan maka

dalam

penulis

pengerjaan

memiliki

dan

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)

5.2

Iluminasi sangat berpengaruh dalam penggunaan alat ini.

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) = GM(1, 2) = GM(1, 3) = GM(2, 1) = GM(2, 2) = GM(1, 3) = GM(3, 1) = GM(3, 2) = GM(3, 3) =

1 2 1 2 4 2 1 2 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)) GM(1, 3)) + (R(i + 1, j + 2) * GM(2, 3)) + (R(i GM(3, 3))) / 16 G(i, j) = ((G(i, j) * GM(1, 1)) + (G(i + 1, (G(i + 2, j) * GM(3, 1)) + (G(i, j + 1) * GM(1, + 1) * GM(2, 2)) + (G(i + 2, j + 1) * GM(3, 2)) GM(1, 3)) + (G(i + 1, j + 2) * GM(2, 3)) + (G(i GM(3, 3))) / 16 B(i, j) = ((B(i, j) * GM(1, 1)) + (B(i + 1, (B(i + 2, j) * GM(3, 1)) + (B(i, j + 1) * GM(1, + 1) * GM(2, 2)) + (B(i + 2, j + 1) * GM(3, 2)) GM(1, 3)) + (B(i + 1, j + 2) * GM(2, 3)) + (B(i GM(3, 3))) / 16

+ (R(i, j + 2) * + 2, j + 2) * j) * GM(2, 1)) + 2)) + (G(i + 1, j + (G(i, j + 2) * + 2, j + 2) * j) * GM(2, 1)) + 2)) + (B(i + 1, j + (B(i, j + 2) * + 2, j + 2) *

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 #include #include #include #include #include #include #include #include

"cv.h" "highgui.h" <stdlib.h> <stdio.h> <unistd.h> <fcntl.h> <termios.h> <string.h> "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++) { uchar* ptr=(uchar*)(frame->imageData+y*frame>widthStep); 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 write(fd,&oc1al write(fd,&oc1bh write(fd,&oc1bl

,1); ,1); ,1); ,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 #define #define #define #define

FRAMING_ERROR (1<<FE) PARITY_ERROR (1<<UPE) DATA_OVERRUN (1<<DOR) DATA_REGISTER_EMPTY (1<<UDRE) 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 #define #define #define #define #define

periode 27647 tmax 3200 tmin 1100 delta 2100 mx PORTB.1 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 #define #define #define #define

FRAMING_ERROR (1<<FE) PARITY_ERROR (1<<UPE) DATA_OVERRUN (1<<DOR) DATA_REGISTER_EMPTY (1<<UDRE) 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 Menyatakan

: Teknik Mekatronika dengan

benar-benar merupakan

sebenarnya hasil

bahwa

laporan

tugas

akhir

saya

sendiri,

bukan

merupakan

karya

ini

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,

bersaudara

dari pasangan

Sugiarti.

Setelah

putra

kedua Bapak

dari

Irianto

tiga

dan

Ibu

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 dukungan dari semuanya, tugas akhir

ini.

Semoga

dan

motivasi untuk

terus

belajar,

berusaha

penulis telah berhasil menyelesaikan pengerjaan dengan

bermanfaat bagi semuanya.

Data Riwayat Penulis Nama : Rizky Dwi Septanto Email : rizkydseptanto@gmail.com

penulisan

tugas

akhir

ini

dapat


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.