Vous êtes sur la page 1sur 72

PROYEK AKHIR

ALGORITMA POSISI BATU BATA


PADA
ROBOT TUKANG BATU

Didik Subandi
NRP.7103.030.028

Dosen Pembimbing:
Edy Satriyanto, SSi

NIP. 132 127 286

Eru Puspita, ST, MT


NIP. 132 127 285

JURUSAN ELEKTRONIKA
POLITEKNIK ELEKTRONIKA NEGERI SURABAYA
SURABAYA 2006
ALGORITMA POSISI BATU BATA
PADA ROBOT TUKANG BATU

Oleh:
Didik Subandi
NRP. 7103 030 028

Proyek Akhir ini Digunakan Sebagai Salah Satu Syarat


Untuk Memperoleh gelar Ahli Madya (A.Md.)
Di
Politeknik Elektronika Negeri Surabaya
Institut Teknologi Sepuluh Nopember Surabaya

Disetujui oleh
Tim Penguji: Dosen Pembimbing:
1. 1.

Bima Sena Bayu D, SST Edy Satriyanto, SSi


NIP. 132.232.762 NIP. 132.127.286

2. 2.

Akhmad Hendriawan, ST Eru Puspita, ST, MT


NIP. 132.300.367 NIP. 132.127.285

3.

Firman Arifin, ST
NIP. 132.296.743

Mengetahui
Ketua Jurusan Teknik Elektronika

Ir. Dedid Cahya Happyanto, MT


NIP. 131.694.603
ABSTRAK

Robot tukang batu adalah robot yang memiliki kemampuan tidak


hanya menyusun batu bata tetapi juga mampu menyusun tembok dengan
jalan merangkai susunan bata bergantian dengan pemasangan adonan
semen.
Setiap bata yang dipasang memiliki data berupa warna tertentu
yang digunakan sebagai acuan untuk pembuatan tembok. Sebagai alat
pengelihatan adalah webcam yang akan mendeteksi keberadaan bata
tersebut melalui proses pengolahan citra. Lebar dari tembok akan
menentukan banyaknya bata yang diperlukan. Banyaknya bata tersebut
dapat dilihat pada database tembok yang telah disusun. Pergerakan robot
tukang batu akan ditentukan berdasarkan dari data jumlah bata yang
telah ada di dalam database dan banyaknya langkah yang diperlukan
untuk memasang adonan semen.

Kata kunci : Batu bata, Pengolahan Citra, Warna


ABSTRACT

Stonemason robot is a robot owning ability that it’s not only


arrange the bricks, but this robot also able to arrange the wall by way of
stringing up formation of bricks step by step with the installation of
dough cement.
Every brick that installed has a data in the form of certain color
which is used as a reference for the making of a wall. The function of
webcam is to detect the the brick existence through image processing.
The wall width will determine by the number of bricks needed. To the
number of the bricks needed could checked at wall database which have
been arranged. The movement of stonemason robot will be determined
by the data of amount of bricks in the database and the number of step
which is needed to install the dough cement.

Keywords : Bricks, Image Processing, Color


KATA PENGANTAR

Dengan memanjatkan puji syukur kehadirat Allah SWT yang


telah memberikan rahmat, hidayah dan karunia-Nya sehingga penulis
dapat menyelesaikan Tugas Akhir ini dengan mengambil judul :

ALGORITMA POSISI BATU BATA


PADA ROBOT TUKANG BATU

Pada tugas akhir ini penulis mengerjakan bersama-


sama dengan rekan penulis, TRIJAYA MARTHA PN (7103.030.027)
yang mengerjakan tugas akhir ini dengan mengambil judul :

ROBOT TUKANG BATU SEBAGAI ALAT BANTU KERJA


DALAM PEMBUATAN RUMAH

Tugas Akhir ini disusun guna memenuhi salah satu persyaratan


akademis untuk mendapatkan gelar Ahli Madya (A.Md) pada Jurusan
Teknik Elektronika di Politeknik Elektronika Negeri Surabaya – Institut
Teknologi Sepuluh Nopember.
Harapan kami sebagai penulis, semoga karya ini dapat
memberikan kemanfaatan dimasa kini dan yang akan datang bagi
perkembangan ilmu pengetahuan, riset dan teknologi pada umumnya
dan bagi politeknik pada khususnya
Penulis menyadari bahwa Tugas Akhir ini masih banyak
kekurangan. Oleh karena itu penulis sangat mengharapkan adanya kritik
dan saran dari para pembaca dan diharapkan adanya penyempurnaan di
tahun mendatang.
Akhirnya penulis berharap semoga Tugas Akhir ini dapat
bermanfaat bagi semua pihak yang memerlukannya.

Surabaya, Agustus 2006

Penulis
UCAPAN TERIMA KASIH

Bahwa terselesaikanya Proyek Akhir ini bukanlah semata-mata


karena usaha dan kerja individu penulis sendiri, tetapi mendapatkan
banyak bantuan dari berbagai pihak, untuk itu penulis menyampaikan
terima kasih kepada:
4JJ1 SWT, yang telah memberi segala macam nikmat, baik berupa
nikmat iman, islam, sehat, ilmu dan nikmat yang tidak akan pernah
bisa disebutkan satu persatu. Alhamdulillah Yaa Rabb.
Rosulullah sebagai uswatun khasanah kita. Kita contoh beliau
yoook. Allohummasolli ‘alaa Muhammad.
Keluargaku tercinta :
Ibu dan bapak yang terus menerus memberikan supportnya,
baik berupa doa, materi, semangat dll. Muliakan mereka Ya
4JJ1, amiiien…..
Dik Rusdiana (Bantu cari kerja, donk?), dik Agus (jangan baca
komik tok).
Dr.Ir. Titon Dutomo M.Eng selalu direktur EEPIS – ITS.
Kajur Elektronika Bpk Ir. Dedid CH dan Wakajur Elektronika Bpk
Akhmad Hendriawan, ST
Pak Edi Satriyanto,SSi dan Pak Eru Puspita, ST, MT selaku dosen
pembimbing tugas akhir ini, semoga 4JJ1 slalu memberi
keselamatan dan kebahagian dunia akhirat.
Partner TA saya Trijaya, atas kerjasama dan motivasinya. Matur
suwun, mas.
Seluruh pengajar dan staf Politeknik Elektronika Negeri Surabaya-
ITS, atas bagi-bagi ilmu, smoga menjadi ilmu yang manfaat. Bu
Endah, pak Ardik, pak Bambang S, pak Hari Oktavianto, mas Eko
Henfri (cak Gen), mbak Yati (mikronya dah selesai, so what g 2
lho..), Pak Karyoto (ac atau dc?), mas Rofi (seminar yook) dll.
Seluruh karyawan dan staf Politeknik Elektronika Negeri Surabaya-
ITS, pak Udin (ngopi cd boleh?), pak Bilal, pak Is (warm tea, I like
it ), pak security (karcisnya, mas!) dll.
Semua teman-teman di TMB 73 yang udah support aku (jangan di-
black list, donk?)
Konco-konco kosan & mantan kosan (ojo lali dengan semua apa
yang telah kita alami bersama. Trust me, the friendship will be
forever).
Konco-konco and teman-teman sekelas (nikah undang aqu
yo..Suwun sing akeh). Teman-teman seangkatan, kakak kelas, adik
kelas dll.
Seseorang yang selalu menjaga hatinya, smoga 4JJ1 slalu menjaga
hati kita agar tetap bersih dan bercahaya. Thank’s for all ☺
Semoga Allah SWT. memberikan limpahan rahmat dan
hidayah-Nya atas segala kebaikan dan semoga kita semua selalu dalam
lindungan serta tuntunan-Nya.
Tak lupa penulis mohon maaf bila terdapat kekhilafan selama
mengerjakan Tugas Akhir ini. Semoga apa yang telah penulis kerjakan
bisa bermanfaat bagi agama, masyarakat, bangsa dan Negara. Amiin.
DAFTAR ISI

HALAMAN JUDUL
LEMBAR PENGESAHAN............................................................... i
ABSTRAK........................................................................................ iii
ABSTRACT...................................................................................... iv
KATA PENGANTAR...................................................................... v
UCAPAN TERIMA KASIH............................................................. vii
DAFTAR ISI..................................................................................... ix

BAB I PENDAHULUAN................................................................. 1
1.1 Latar Belakang ................................................................ 1
1.2 Tujuan.............................................................................. 1
1.2.1 Tujuan Umum......................................................... 1
1.2.2 Tujuan Khusus........................................................ 2
1.3 Batasan Masalah............................................................... 2
1.4 Ruang Lingkup Pembahasan............................................ 2
1.5 Sistematika Penulisan....................................................... 2

BAB II TEORI PENUNJANG....................................................... 5


2.1 Microsoft Visual Basic 6.0............................................ 5
2.1.1 Pengenalan Microsoft Visual Basic 6.0................ 5
2.1.2 Membuat Aplikasi Visual Basic 6.0..................... 8
2.1.3 Bekerja Dengan Control………………………… 8
2.1.4 Aplikasi Access dengan Visual Basic 6.0………. 9
2.1.5 Sekilas tentang ADO……………………………. 10
2.2 Image Processing…………………………………….. 10
2.2.1 Pengertian Citra Dan Pengolahan Citra Digital.... 10
2.2.2 Model Citra........................................................... 11
2.2.3 Pixel Dan Dasar-Dasar Hubungan Antar Pixel..... 13
2.2.4 Warna…………………………………………… 14
2.2.4.1 Warna RGB, CMY, Dan Gray Level…... 14
2.2.4.2 Penjumlahan Warna……………………. 15
2.2.5 Greyscale.............................................................. 16
2.2.6 Segmentasi............................................................ 16
2.2.7 Scanning………………………………………… 17
2.2.8 Filter...................................................................... 17
BAB III PERENCANAAN DAN PEMBUATAN PROGRAM.... 19
3.1 Algoritma Program Dan Diagram Alir.......................... 19
3.1.1 Algoritma Program............................................... 19
3.1.2 Diagram Alir........................................................ 20
3.2 Piranti Pendukung......................................................... 23
3.3 Pembuatan Program...................................................... 24
3.3.1 Design Form Visual Basic 6.0............................. 24
3.3.2 Koneksi Visual Basic dengan Database............... 25
3.3.3 Command Form Pada Visual Basic..................... 25
3.3.3.1 Command Proses...................................... 27
3.3.4 Penentuan Segmentasi…………………………. 27

BAB IV PENGUJIAN DAN ANALISA PROGRAM.................. 33


4.1 Pengujian Pengenalan Warna Bata............................... 33
4.2 Pengujian Komunikasi Data Serial............................... 36
4.3 Pengujian Sistem Secara Keseluruhan.......................... 39

BAB V PENUTUP............................................................................ 41
5.1 Kesimpulan..................................................................... 41
5.2 Saran............................................................................... 41

DAFTAR PUSTAKA...................................................................... 43

TENTANG PENULIS..................................................................... 45

LAMPIRAN A.................................................................................. 47

LAMPIRAN B.................................................................................. 55
DAFTAR GAMBAR

Gambar 2.1 Form dalam Visual Basic......................................... 5


Gambar 2.2 Menu UtamaVisual Basic........................................ 6
Gambar 2.3 ToolBox Dalam Visual Basic................................... 7
Gambar 2.4 Properties dalam Visual Basic................................. 7
Gambar 2.5 Toolbar dalam Visual Basic..................................... 8
Gambar 2.6 Elemen Sistem Pengolah Citra................................. 12
Gambar 2.7 Ruang Warna RGB dan CMY.................................. 15
Gambar 2.8 Prinsip Kerja Metode Scanning................................ 17
Gambar 3.1 Diagram Alir............................................................. 22
Gambar 3.2 Diagram Sistem......................................................... 23
Gambar 3.3 Design Form Antar Muka......................................... 23
Gambar 4.1 Sebelum Ada Bata.................................................... 34
Gambar 4.2 Setelah Ada Bata..................................................... 34
Gambar 4.3 Flowchart Komunikasi Serial................................... 38
DAFTAR TABEL

Tabel 4.1 Pengujian Bata 1........................................................... 35


Tabel 4.2 Pengujian Bata 2........................................................... 36
Tabel 4.3 Karakter Ascii .............................................................. 39
Tabel 4.4 Hasil Percobaan............................................................. 40
Tabel 4.5 Jarak Melenceng Robot................................................ 48
BAB I
PENDAHULUAN

1. 1 LATAR BELAKANG
Perkembangan teknologi dewasa ini membawa manusia
menuju era teknologi dan era otomatisasi yang semakin tinggi. Dampak
dari otomatisasi tersebut dapat dirasakan telah merambah hampir ke
seluruh sudut kehidupan manusia. Dengan adanya tekanan ini
dibutuhkan peralatan otomatis untuk menggantikan pekerjaan manusia
dengan tujuan untuk meningkatkan kualitas serta mutu dari suatu produk
maupun jasa yang dihasilkan agar tidak kalah dalam persaingannya. Di
samping itu juga untuk menjaga keselamatan dari manusia yang
melakukan kerja tersebut.
Perkembangan ilmu pengetahuan dan teknologi dewasa ini
sangat pesat terutama di bidang elektronika khususnya robotika sehingga
membuat manusia lebih memberdayakan robot untuk menggantikan
tugas manusia.
Metode pengendalian peralatan yang ada di dunia industri
maupun rumah tangga dewasa ini berkembang sangat pesat, mulai dari
sistem kontrol yang sederhana sampai dengan yang paling canggih.
Salah satu diantaranya adalah dengan menggunakan teknik
kendali logika yang diimplementasikan pada komputer atau
mikrokontroller untuk mengendalikan proses industri kendali robot,
rumah tangga dan sebagainya.
Pada umumnya kendali logika yang diimplementasikan pada
komputer atau mikrokontroller yang dirancang hanya untuk
mengendalikan sebuah peralatan. Hal ini dilakukan untuk efektivitas dan
fungsional dari alat serta pengendali yang digunakan.
Dengan memadukan peralatan mikrokontroller, rangkaian
driver, kamera sebagai perangkat sensor dan rangkaian lainnya serta
pemrograman assembly sebagai pengendalinya, maka akan tercipta
suatu piranti kontroler yang baru dan dapat dioperasikan secara otomatis

1. 2 TUJUAN
1. 2. 1 Tujuan Umum
Tujuan umum dari pembuatan Tugas Akhir ini untuk
melengkapi kurikulum studi pada Politeknik Elektronika Negeri
Surabaya dan sebagai salah satu syarat kelulusan dalam menempuh
pendidikan akhir di Politeknik Elektronika Negeri Surabaya.
1. 2. 2 Tujuan Khusus
Tujuan dari proyek akhir ini adalah untuk membuat suatu robot
yang bisa membantu meringankan pekerjaan manusia. Dalam proyek
akhir ini adalah robot tukang batu yang berguna untuk membantu
pekerjaan manusia dalam pembuatan rumah, khususnya dalam
pembuatan tembok.

1. 3 BATASAN MASALAH
Asumsi berikut ini sebagai batasan masalah yang dipakai dalam
tugas akhir ini adalah:

1. Tinggi tembok maksimal adalah 1 m dan lebar tembok


maksimal adalah 80 cm.
2. Lantai pada saat pembuatan tembok adalah lantai yang datar.
3. Pencahayaan pada ruangan kelas haruslah cukup terang.
4. Bata yang digunakan adalah batu bata asli warna merah
dengan ukuran 15x8x4 cm.
5. Adonan semen yang digunakan merupakan campuran pasir,
kapur, dan air.

1. 4 RUANG LINGKUP PEMBAHASAN


Pembuatan algoritma robot tukang batu ini memerlukan
literatur-literatur, diantaranya meliputi:
Image processing
Pemrograman Visual Basic
Database

1. 5 SISTEMATIKA PENULISAN
Sistematika penulisan dari buku proyek akhir ini direncanakan
sebagai berikut:
BAB I PENDAHULUAN
Berisi tentang latar belakang, tujuan, batasan masalah,
sistematika pembahasan masalah yang digunakan.
BAB II TEORI PENUNJANG
Membahas tentang teori-teori yang digunakan dalam
penyelesaian proyek akhir ini yaitu image processing, database dan
bahasa pemrograman visual basic.

BAB III PERENCANAAN DAN PEMBUATAN PROGRAM


Menguraikan tentang tahap-tahap perencanaan dan pembuatan
algoritma serta perangkat lunak dari sistem robot tukang batu yang
menggunakan kamera.

BAB IV PENGUJIAN DAN ANALISA PROGRAM


Dalam bab ini akan diuraikan mengenai analisa sistem kerja
berdasarkan pada sistem program yang dibuat pada perencanaan
perangkat lunak.

BAB V PENUTUP
Setelah pengujian dan analisa alat selesai, maka diambil
kesimpulan yang mendukung hasil kerja alat dan saran yang menunjang
kesempurnaan alat.
********** Halaman ini sengaja dikosongkan**********
BAB II
TEORI PENUNJANG

2. 1 MICROSOFT VISUAL BASIC 6.0


2. 1. 1 Pengenalan Microsoft Visual Basic 6.0
Microsoft Visual Basic 6.0 merupakan produk pengembangan
dari Microsoft Visual Basic sebelumnya. Teknologi akses data yang
dimiliki oleh Visual Basic 6.0 yaitu teknologi ActiveX Data Object atau
yang lebih dikenal dengan nama ADO. ADO adalah teknologi terbaru
dari Microsoft untuk memanipulasi informasi dari database relasional
dan nonrelasional. ADO mampu mengintegrasikan program aplikasi
database yang dibangun dengan berbagai sumber data seperti Microsoft
Access, SQL Server, ODBC, Oracle, dan lain sebagainya.
Langkah awal dalam menjalankan Visual Basic adalah
mengenal IDE (Integrated Developement Environment) Visual Basic
yang merupakan Lingkungan Pengembangan Terpadu bagi programmer
dalam mengembangkan aplikasinya. Dengan menggunakan IDE
programmer dapat membuat user interface, melakukan koding,
melakukan testing dan debuging serta mengkompilasi program menjadi
executable. Penguasaan yang baik akan IDE akan sangat membantu
programmer dalam mengefektifkan tugas-tugasnya sehingga dapat
bekerja dengan efisien.
IDE Visual Basic 6 menggunakan model MDI (Multiple
Document Interface). Berikut ini pada gambar 2.2 bisa kita lihat menu
utama visual basic yang menunjukan bagian-bagian dan nama-nama
jendela yang dapat tampil pada IDE Visual Basic.
Form adalah bagian dari project yang digunakan untuk
mendesain windows yang merupakan tampilan antar muka program.
Form juga digunakan untuk menampilkan label, textbox, grafik dan
kontrol – kontrol lainnya yang digunakan dalam mendesain tampilan
program atau untuk memasukan data.

Gambar 2.1. Form dalam Visual Basic


Gambar 2.2. Menu utama Visual Basic

Toolbox menampilkan semua standart Visual Basic kontrol


ditambah dengan kontrol yang bisa kita pilih dalam project tersebut.
Toolbox biasanya terletak di sisi sebelah kiri layar. Toolbox
mengandung kontrol-kontrol yang bisa digunakan untuk menambah
gambar, label, tombol, kotak daftar, baris penggulung, menu, serta
bentuk-bentuk geometris pada antarmuka.
Setiap kontrol yang ditambahkan ke dalam form akan menjadi
objek, atau elemen antarmuka yang bisa diprogram. Elemen-elemen ini
akan dilihat oleh pemakai program bila program berjalan dan akan
beroperasi seperti objek-objek standar pada aplikasi berbasis windows
lainnya. Toolbox juga mengandung kontrol-kontrol yang bisa digunakan
untuk membuat objek yang bisa melakukan operasi “di balik layar” pada
program Visual Basic.
Objek ini melakukan pekerjaan yang bermanfaat tetapi tidak
nampak oleh pemakai apabila program dijalankan. Objek ini diantaranya
adalah objek untuk memanipulasi informasi pada database, objek untuk
bekerja dengan aplikasi berbasis windows, dan objek untuk menelusuri
waktu program. Tampilan toolbox pada visual Basic bisa dilihat pada
gambar 2.3 di bawah ini.
Gambar 2.3. ToolBox dalam Visual Basic

Anda dapat mengatur properties dari form dan kontrol dengan


menggunakan properties window. Dengan properties ini anda dapat
merubah nilai dari form atau kontrol tersebut seperti caption, name, font,
color, size, position, dsb. Jendela properti ini merupakan daftar properti-
properti object yang sedang terpilih. Kita juga dapat menggunakan
tombol F4 untuk menampilkan jendela properti ini.

Gambar 2.4. Properties dalam Visual Basic


Visual Basic Toolbar juga menyediakan shortcuts untuk operasi
yang biasa kita gunakan.

Gambar 2.5. ToolBar dalam Visual Basic

2. 1. 2 Membuat Aplikasi Visual Basic 6.0


Pertama kita harus memanggil program Visual Basic dan pilih
Standart EXE. Normalnya anda akan melihat Form1 pada project anda.
Sekarang klik ganda Form1, source code windows untuk Form1 akan
terlihat dengan statement :

Private Sub Form_Load()


End Sub.

Coba anda ketikan baris pertama seperti dibawah ini :

Private Sub Form_Load()


Dim I as Integer
For I=1 to 10
Print “Hello Visual Basic”
Next
End Sub.

2. 1. 3 Bekerja Dengan Control


Sebelum menulis event prosedur dari kontrol ntuk merespon
user, anda harus memastikan properti dari masing – masing kontrol
tersebut dan bagaimana kontrol tersebut bekerja. Anda bisa merubah
properti tersebut melalui properties windows. Kita akan menjelaskan
secara detail bagaimana mengubah properties tersebut, akan tetapi hanya
menitikberatkan pada point – point tertentu saja yang di anggap penting.
Anda harus mengatur Caption Properti dari kontrol sehingga user
mengetahui apa yang harus mereka lakukan dengan kontrol tersebut.
Misalnya pada command button yang telah diberi caption “OK”
atau “Cancel”, user akan tahu apa yang harus mereka lakukan dengan
command button tersebut dibandingkan jika anda hanya memberikan
nilai default dari command button tersebut. Anda harus men-set Name
Propety dari masing – masing kontrol yang mencerminkan maksud dari
kontrol tesebut sehingga anda akan mudah membaca alur program anda
dan anda dapat dengan mudah memperbaikinya di kemudian hari.
Properti lainnya yang tidak kalah penting adalah apakah anda
menginginkan kontrol tesebut terlihat atau tersembunyi pada saat start
up. Property ini dapat anda set menjadi True atau False. Hal lain yang
lebih penting lagi adalah apakah kontrol tersebut aktif atau tidak dengan
merubah properti enable menjadi True atau False.
1. Label
Label adalah kontrol grafis yang dapat anda gunakan untuk
menampilkan text dimana user tidak dapat merubahnya secara langsung.
Anda harus merubahnya melalui kode pemogramman pada saat run
time. Untuk merubah textnya anda bisa mengubah captionnya dan
mengisikan text sesuai dengan keinginan anda. Ubah AutoSize dan
WordWrap properti menjadi true jika anda ingin menampilkan seluruh
text tanpa harus merubah kontrol label tersebut secara manual.
2. Text Box
TextBox kontrol digunakan untuk menampilkan informasi
dimana user dapat merubahnya secara langsung. TextBox juga dapat
dirubah melalui kode pemograman pada saat run time. Untuk merubah
textnya anda bisa merubah text properti pada TextBox tesebut. Untuk
menampilkan banyak text anda bisa merubah MultiLine properti
menjadi true. Anda juga bisa menampilkan scrollbar pada textbox
tersebut dengan merubah scrollbar properti.
3. Command Button
Kontrol ini yang paling sering digunakan karena berfungsi
seperti tombol pada umumnya. Anda bisa merubah textnya dengan
merubah caption properti. Untuk menentukan aksi apa yang akan
dilakukan jika anda mengklik tombol tersebut anda bisa mengisikan
kode program anda pada event click.
4. List Box
ListBox digunakan untuk menampilkan sejumlah item dimana
user dapat memilih satu atau lebih item yang tersedia. Jika jumlah item
yang ditampilkan melebihi ukurannya, listbox secara otomatis akan
menampilkan scrollbar. Jika tidak ada item yang dipilih, nilai pada
ListIndex adalah -1. Item pertama akan diberi nilai 0 sedangkan nilai
ListCount adalah jumlah item ditambah 1. Untuk menambah item anda
bisa menggunakan AddItem methode sedangkan untuk menghapusnya
anda bisa menggunakan RemoveItem methode.

2. 1. 4 Aplikasi Access Dengan Visual Basic 6.0


Ada banyak fasilitas untuk membuat lembar kerja kita
berhubungan dengan tabel dalam database yang kita buat. Yang sering
dipakai ada tiga macam yaitu dengan Oracle Data Control, ADO dan
Data Environment Modul. Namun pada tugas akhir ini hanya
menggunakan ADO sebagai penghubungnya.

2. 1. 5 Sekilas tentang ADO


Teknologi yang dikembangkan oleh Microsoft ini yang
memungkinkan aplikasi Visual Basic yang kita buat untuk
berkomunikasi dengan database. ADO adalah sekumpulan objek yang
menyediakan mekanisme untuk mengakses informasi dari sumber data
(database).
ADO memungkinkan suatu aplikasi untuk mengakses dan
memanipulasi data di suatu server database dengan metode yang sama
walaupun database yang digunakan berasal dari vendor yang berbeda.
Umumnya untuk mengakses dan memanipulasi database langkah-
langkah yang dilakukan adalah sebagai berikut:

• menghubungkan aplikasi/skrip dengan database.


• mengakses data atau melakukan perubahan data.
• menampilkan hasil dari manipulasi data.
• menutup objek untuk membebaskan memori.

2. 2 IMAGE PROCESSING
Pemrosesan citra secara digital (image processing) banyak
digunakan untuk memperoleh data dari sebuah pencitraan. Pencitraan itu
sendiri merupakan salah satu langkah yang digunakan untuk
mengenalkan komputer dengan lingkungan dengan media kamera. Pada
tugas akhir ini dilakukan proses pengambilan data oleh kamera dan
kemudian dilakukan pengolahan gambar dengan image processing untuk
selanjutnya dihasilkan data berupa nilai-nilai. Data nilai ini selanjutnya
diproses sehinga diperoleh data yang dikonversikan menjadi perintah
kepada mikrocontroller untuk melakukan system control pada lampu
lalu lintas.
Pembahasan mengenai konse-konsep dari pengolahan citra
digital secara umum dan teori-teori yang digunakan pada perencanaan
proses pengolahan citra dapat dijabarkan sebagai berikut.

2. 2. 1 Pengertian Citra Dan Pengolahan Citra Digital


Citra adalah presentasi dari dua dimensi untuk bentuk fisik
nyata tiga dimensi. Citra dalam perwujudannya dapat bermacam-
macam, mulai dari gambar hitam putih dalam sebuah foto (yang tidak
bergerak) sampai pada gambar berwarna yang bergerak pada pesawat
televisi. Proses transformasi dari bentuk tiga dimensi ke bentuk dua
dimensi untuk menghasilkan citra akan dipengaruhi oleh bermacam-
macam faktor yang mengakibatkan penampilan citra suatu benda tidak
sama persis seperti bentuk fisik nyatanya.
Faktor-faktor tersebut merupakan efek degradasi atau
penurunan kualitas yang dapat berupa rentang kontras benda yang
terlalu sempit atau terlalu lebar, distorsi geometri (geometrik distortion),
kekaburan (blur), kekaburan akibat obyek citra yang bergerak (motion
blur), noise atau gangguan yang disebabkan interferensi peralatan
pembuat citra, baik itu berupa tranduser, peralatan elektronik ataupun
peralatan optik.
Karena pengolahan citra digital dilakukan dengan komputer
digital maka citra yang akan diolah terlebih dahulu ditransformasikan
kedalam bentuk besaran-besaran diskrit dari nilai tingkat keabuan pada
titik-titik elemen citra. Bentuk citra ini disebut citra digital. Elemen-
elemen citra digital apabila ditampilkan dalam layar monitor akan
menempati sebuah ruang yang disebut dengen pixel ( picture elemen
pixel).
Teknik dan proses untuk mengurangi atau menghilangkan efek
degradasi pada citra digital meliputi perbaikan citra (image
enhancement), restorasi citra (image restoration), dan transformasi
spesial (spatial transformation). Subyek lain pengolahan citra digital
diantaranya adalah pengkodean citra (image coding), segmentasi citra
(image segmentation), representasi dan diskripsi citra (image
representation and description). Pembatasan istilah istilah diatas
tidaklah mutlak karena pada kenyataan pengolahan citra tidak dapat
dilakukan dengan menampilkan satu objek saja.

2. 2. 2 Model Citra
Citra merupakan matrik dua dimensi dari fungsi intensitas
cahaya. Karena itu, referensi citra menggunakan dua variabel yang
menunjukkan posisi pada bidang dengan sebuah fungsi intensitas cahaya
yang dapat dituliskan sbagai f(x,y) dimana f adalah nilai amplitudo pada
koordinat spasial (x,y). Karena cahaya merupakan salah satu bentuk
energi, f(x,y)tidak berharga nol atau negatif dan merupakan bilangan
berhingga, yang dalam pernyataan matematis adalah sebagai
berikut,konversi sistem koordinat citra diskrit ditunjukkan oleh gambar
berikut :
(0,0)
y

Citra
F(x,y)

Gambar 2.6 Elemen Sistem Pengolah Citra

Citra yang kita lihat sehari-hari merupakan cahaya yang


direfleksikan sebuah objek. Fungsi f(x,y) dapat dilihat sebagai fungsi
dengan dua unsur, pertama merupakan besarnya sumber cahaya yang
melingkupi pandangan kita terhadap objek (illumination), kedua
merupakan besarnya cahaya yang direfleksikan oleh objek dalam
pandangan kita (reflectance component). Keduanya dituliskan dengan
fungsi yang berturut-turut i(x,y) dan r(x,y). Fungsi i(x,y) dan r(x,y)
merupakan kombinasi perkalian untuk membentuk fungsi f(x,y) yang
dapat dituliskan dengan persamaan:

f(x,y) = i(x,y) r(x,y) dengan


0 < i(x,y) < ~
0 < i(x,y) < 1
Persamaan diatas menandakan bahwa nilai kerefleksian dibatasi
oleh nilai 0 (total absorbtion) dan nilai 1 (totol reflectance). Fungsi
i(x,y) ditentukan oleh sumber atau asal sinar, sedangkan fungsi r(x,y)
ditentukan oleh karakteristik dari objek.
Citra digital (image processing) adalah citra kontinyu f(x,y)
yang sudah didiskritkan baik koordinat spasial maupun tingkat
kecerahannya. Kata kontinyu disini menjelaskan bahwa indeks x dan y
hanya bernilai. Kita menganggap citra digital sebagai matrik dengan
ukuran M x N yang baris dan kolomnya menunjukkan titiknya, yang
diperlihatkan pada persamaan berikut :
⎛ f (0,0) f (0,1) ....... f (0,N−1) ⎞
⎜ ⎟
⎜ f (1,0) f (1,1) ....... f (1,N−1) ⎟
f (x,y) = ⎜
......... .......... ....... ....... ⎟
⎜ ⎟
⎜ f (M−1,0) f (M−1,1) .......f (M−1,N−1)⎟
⎝ ⎠

Citra yang berwarna hitam putih dikenal juga sebagai citra


dengan derajat keabuan (citra gray level). Derajat keabuan yang dimiliki
ini bisa beragam, mulai dari 2 derajat keabuan ( yaitu 0 dan 1) yang
dikenal juga sebagai citra monocrhome, 16 derajat keabuan dan 256
derajat keabuan. Semakin besar jumlah derajat keabuan yang dimiliki
semakin halus citra tersebut.
Dalam sebuah citra monocrhome, sebuah pixel diwakili oleh 1
bit data yang berisikan data tentang derajat keabuan yang memiliki pixel
tersebut. Data akan berisi 1 bila berisi pixel tersebut berwarna putih dan
data akan berisi nilai 0 bila pixel tersebut berwarna hitam.
Citra yang memiliki 16 derajat keabuan (mulai dari 0 yang
mewakili warna hitam sampai dengan 15 yang mewakili warna putih)
direpresentasikan oleh 4 bit data, sedangkan citra dengan 256 derajat
keabuan (nilai dari 0 yang mewakili warna hitam sampai dengan 255
yang mewakili warna putih) direpresentasikan oleh 8 bit data.
Dalam citra berwarna, jumlah warna bisa beragam mulai dari
16, 255, 65536 atau 16 juta warna, yang masing-masing
direpresentasikan oleh 4, 8, 16, dan 24 bit data untuk setiap pixelnya.
Warna yang ada terdiri dari 3 komponen utama yaitu nilai merah (red),
nilai hijau (green), dan nilai biru (blue). Paduan ketiga komponen utama
pembentuk warna ini dikenel sebagai RGB color.

2. 2. 3 Pixel dan Dasar-Dasar Hubungan antar Pixel


Salah satu komponen dari gambar yang menentukan resolusi
dari gambar tersebut, misalnya sebuah gambar dikatakan resolusinya
sebesar 800 x 600 maka artinya yaitu panjang pixel horizontalnya 800
dan panjang pixel vertikalnya 600 dan jumlah total keseluruhan pixel
dari gambar tersebut yaitu 480000 atau dapat dikatakan bahwa dalam
gambar tersebut terdiri dari 480000 pixel.
Dalam masalah pengolahan citra, hubungan antar pixel
merupakan hal yang sangat penting. Sebuah pixel p pada koordinat (x,y)
mempunyai 4 tetangga horizontal dan vertikal yang koordinat-
koordinatnya sebagai berikut :

(x+1,y),(x-1,y),(x,y+1), dan (x,y-1)

Kumpulan dari pixel-pixel diatas yang disebut 4-neighbours of


p dapat dinyatakan sebagai N 4 (p), kecuali jika p(x,y)posisinya terletak
digaris batas gambar, sehingga jumlah pixel tetangga tidak terdiri dari 4
tetangga. Selain 4 tetangga diatas, p juga mempunyai 4 tetangga
diagonal, yaitu :
(x+1,y+1),(x+1,y-1),(x-1,y+1), dan (x-1,y-1)

Pixel-pexel diatas dinyatakan sebagai N D (p )gabungan dari


N 4 (p) dan N D (p) didefinisikan sebagai 8-neighbours of p dan
dinyatakan sebagai N 8 (p) .
Hubungan antar pixel merupakan suatu konsep yang sangat
penting yang digunakan untuk mendefinisikan batas-batas dari suatu
objek serta bagian- bagian daerah kecil dari suatu gambar. Sebagai
pertimbangan apakah dua pixel dihubungkan atau tidak, diperlukan
beberapa kriteria. Diantaranya adalah apakah kedua pixel tersebut
mempunyai prinsip kedekatan yang sesuai dengan konsep yang telah
ditentukan, seperti konsep 4-neighbours atau 8-neighbours. Selain itu,
apakah kedua pixel tersebut memiliki gray level yang sesuai dengan
kriteria yang kita inginkan. Sebagi contoh, jika dua pixel mempunyai
nilai masing-masing 0 dan 1 dan keduanya merupakan bagian dari 4-
neighbours, maka dinyatakan bahwa kedua pixel tersebut tidak ada
hubungan, hal ini karena keduanya memiliki nilai yang berbeda.

2. 2. 4 Warna
Berikut ini membahas mengenai teori dasar warna pada citra
digital, penjumlahan warna dan konversinya.

2. 2. 4. 1 Warna RGB, CMY, Dan Gray Level


Model warna RGB (red, green, blue) mendeskripsikan warna
sebagai kombinasi positif dari 3 warna, yaitu merah, hijau, dan biru.
Sehingga membentuk sebuah warna C dengan rumusan sebagai berikut :

C = rR + gG + bB
Jika skalar r, g, b kita beri harga antara 0 dan 1, maka semua
definisi warna akan berada dalam kubus sebagai berikut :

Gambar 2.7 Ruang Warna RGB dan CMY


Ruang warna ini adalah warna display monitor komputer. Garis
sepanjang titik hitam (0, 0, 0) RGB hingga titik (1, 1, 1) RGB disebut
dengan titik keabuan atau gray level. Sehingga dengan mudah kita
dapatkan hubungan antara RGB dengan gray level.
(a) GL ⇔ (a,a,a) RGB

sementara hubungan RGB dengan CMY diberikan oleh


rumusan sbb:
(r,g,b) RGB = (1, 1, 1) - (c,m,y) CMY

sehingga apabila kita menurunkan nilai dari b akan


menyebabkan warna bergeser menjadi kekuningan.

2. 2. 4. 2 Penjumlahan Warna
Dalam komputer kita tidak terlibat langsung dengan panjang
gelombang suatu warna. Warna yang dideskripsikan dengan RGB
adalah pemetaan yang mengacu pada panjang gelombang dari RGB.
Pemetaan menghasilkan nuansa warna sekitar 16 juta
( 256 = 16.777.216) yaitu 256 (8 bit)untuk masing-masing R, G, dan B
3

Masing-masing R, G, dan B didiskritkan dalam skala 256,


sehingga RGB akan memilki indeks antara 0 sampai 255. penjumlahan
warna RGB ini adalah :

( rC1, gC1, bC1) + (rC 2, gC 2, bC 2)


C = C1 + C2 =
2
Penjumlahan ini menghasilkan RGB yang tidak bulat, sehingga
kita harus membulatkan ini, yaitu dengan metode pembulatan kebawah
atau keatas. Misalkan dua warna yaitu hitam (0, 0, 0) kita jumlahkan
dengan warna putih (255, 255, 255) akan menghasilkan warna abu-abu
antara hitam dan putih (127, 127, 127). Hasil akhir dibulatkan ke bawah.
Contoh lain misalkan menjumlahkan warna merah (255, 0, 0) dengan
warna hijau (0, 255, 0) akan menghasilkan warna kuning (127, 127, 0).

2. 2. 5 Greyscale
Merupakan sebuah format warna yang mana pengambilan rata-
rata dari nilai r, g, dan b dari sebuah format gambar berwarna. Dengan
menggunakan persamaan sebagai berikut :

Greyscale = (αR+βG+δB) / (α+β+δ)

Dengan nilai α = 0.35, β = 0.25, δ = 0.4, sehingga nilai α + β +


δ = 1. format warna grey ini diperlukan untuk memudahkan proses
selanjutnya karena apabila kita memproses menggunakan format gambar
berwarna maka nilai r, g, dan b yang bervariasi sehingga akan sulit
untuk menjalankan proses selanjutnya. Dan dengan format warna grey
ini maka dihasilkan nilai R=G=B dan akan memudahkan kita untuk
memproses pada proses selanjutnya sesuai yang kita inginkan.

2. 2. 6 Segmentasi
Proses segmentasi di sini menekankan pada pengambilan citra
serta bagaimana cara membedakan atau memisahkan antara obyek
dengan background dan antara obyek itu sendiri. Pendeteksian dalam hal
ini merupakan metode awal yang berguna untuk mengenali warna merah
dari background.
Disini digunakan metode thresholding untuk memisahkan
antar obyek dengan background yang agak gelap atau sebaliknya.
Metode ini digunakan untuk mengkonversi data image menjadi biner
dengan tujuan agar proses selanjutnya lebih mudah. Dari proses
thresholding ini akan didapat hasilnya apabila jumlah warna green dan
blue mempunyai intensitas kedalaman warna kurang dari red maka
warna tersebut menjadi warna hitam.
Secara sistematis dapat dituliskan sebagai berikut : R > G + B.
Teknik ini berdasarkan konsep yang sederhana. Jadi warna background
dengan warna obyek saling berkebalikan (invert).
2. 2. 7 Scanning
Scanning disini adalah suatu metode yang dirancang di mana
fungsinya adalah untuk mendapatkan letak posisi keberadaan benda
(bata) dengan memanfaatkan pixel warna yang dimiliki baik itu
horizontal maupun vertikal. Berikut adalah ilustrasi prinsip kerja dari
scanning :

Gambar 2.8 Prinsip Kerja Metode Scanning


Dimana :
m
Hx = ∑I x =1
( x, y )

n
Vy = ∑I
y =1
( x, y )

I ( x, y ) = R( x , y ) + G ( x , y ) + B( x , y )
Dengan :
Hx = Jumlah scanning horizontal
Vy = Jumlah scanning vertical
I ( x, y ) = Jumlah intensitas tiap pixel pada titik x,y

2. 2. 8 Filter
Proses filtering sangatlah dibutuhkan pada image processing
karena keberadaan noise dapat menjadi gangguan pada proses
selanjutnya. Pada tugas akhir ini digunakan median filter sebagai salah
satu metode filtering untuk mengurangi noise pada gambar. Median
filter ini mempunyai prinsip mengambil nilai tengah dari sample matrix
yang diberikan. Sebagai contoh matrix 4x4 sehingga ada 16 kombinasi
warna RGB yang berbeda-beda yang tidak berurut. Setelah itu dilakukan
proses mengurutkan 16 nilai tersebut dari yang terkecil sampai yang
terbesar, lalu dilakukan pengambilan nilai tengah dari 16 urutan
tersebut.
********** Halaman ini sengaja dikosongkan**********
BAB III
PERENCANAAN DAN PEMBUATAN PROGRAM

Pembahasan materi dalam bab ini adalah diarahkan pada


langkah-langkah perencanaan tugas akhir yang meliputi perencanaan
dan pembuatan perangkat lunak untuk tracking warna merah dari batu
bata dan menyusunnya hingga membentuk sebuah tembok. Warna
merah pada batu bata ini digunakan sebagai acuan dari hampir semua
proses yang ada pada algoritma robot tukang batu ini.
Perencanaan selanjutnya adalah perencanaan dan pembuatan
database. Pada database ini akan dimasukkan data-data tentang
pembuatan tembok, misalnya data tentang lebar dan ketinggian dari
tembok yang akan dibuat. Database dalam proyek akhir ini hanya
digunakan sebagai media penyimpanan data yang efektif. Misalnya pada
database tentang lebar tembok, akan dimasukkan data-data seperti
berapa jumlah bata yang dibutuhkan untuk menyusun lebar tembok
tertentu. Dalam database ini diperlukan pembuatan tabel dan
pengkoneksian antara provider dengan database tersebut.
Pengolahan suatu bentuk pola gambar diperlukan suatu teknik
pengenalan yang baku sehingga dalam sistem pengenalan tersebut untuk
membuat sebuah sistem pengenalan pola secara langsung dengan
teknologi komputer tidaklah mudah, citra dari objek yang berwarna
merah ditangkap dengan sebuah kamera digital kemudian diolah oleh
komputer dengan metode pengolahan citra.
Untuk permulaan, beberapa hal yang dapat menjadi kendala
bagi pengembangan proyek akhir ini adalah kesulitan dalam
mendapatkan citra bata yang bersih atau bebas dari noise. Perbedaan
dalam tingkat pencahayaan juga menentukan seberapa besar kualitas
gambar yang dapat ditangkap oleh kamera. Di samping itu juga,
penentuan lokasi apakah di dalam ruangan atau di luar juga ikut
mempengaruhi.
Image atau gambar yang diperoleh dari kamera masih memiliki
warna yang sangat kompleks. Dalam pengolahan image ini diperlukan
beberapa tahapan agar dapat mendapatkan hasil yang memuaskan.
Beberapa tahapan di antaranya yaitu proses filter warna, penentuan
segmentasi warna merah, kemudian pembuatan lintasan pada tampilan
image. Lintasan ini digunakan sebagai jalur untuk menentukan apakah
bata telah dipasang pada jalur yang benar.
3. 1 ALGORITMA PROGRAM DAN DIAGRAM ALIR
3. 1. 1 Algoritma Program
Dibawah ini adalah keseluruhan dari algoritma robot penunjuk
arah, yaitu sbb:
1. Penentuan lebar dan ketinggian tembok.
2. Mencocokkan data lebar tembok dengan database.
3. Pengambilan data berupa jumlah bata dari tembok yang akan
dibuat.
4. Pemberian perintah ke mikrokontroller untuk bergerak ke
samping untuk memasang semen.
5. Inisialisasi kamera.
6. Kamera mulai melakukan scanning.
7. Melalui proses scanning, akan dicek, apakah telah terdeteksi
bata pada lantai? Jika tidak ada, maka konveyor yang memuat
bata akan terus bergerak hingga menjatuhkan bata pada lantai.
8. Jika bata telah terdeteksi, maka akan dilakukan pengecekan
untuk menentukan posisi bata tersebut apakah sudah sesuai
dengan jalur yang diinginkan atau tidak.
9. Jika melenceng dari jalur, maka robot akan melakukan koreksi
posisi bata tersebut dengan cara menggeser posisi bata hingga
berada di jalur yang sesuai.
10. Kemudian robot akan bergerak ke samping untuk meletakkan
bata berikutnya.
11. Jika lebar tembok telah terpenuhi maka robot akan bergerak
naik untuk menyusun bata pada tingkat berikutnya

3. 1. 2 Diagram Alir
Proyek akhir ini merupakan perwujudan dari algoritma
program yang telah diuraikan diatas. Alur program tersebut merupakan
fungsi untuk mengatur alur program sehingga program dapat berjalan
dengan baik dan benar. Selain itu alur program dapat menggambarkan
secara singkat dan tepat pola pikir program.
Alur program proyek akhir ini mempunyai kesamaan dengan
algoritma pemikiran manusia sehingga mudah untuk diwujudkan dalam
bentuk perangkat lunak dan dapat dimengerti secara logika dan nalar.
Pada permulaan alur program terdapat penentuan lebar dan ketinggian
dari tembok, kemudian terdapat pengambilan data jumlah bata dan
tingkat yang diperlukan berdasarkan lebar dan ketinggian yang telah
ditentukan tersebut.
Setelah itu prosesor akan memberikan perintah kepada
mikrokontroler untuk bergerak ke samping sambil membuka tutup
wadah semen sehingga terbentuk suatu landasan atau dasar bagi bata.
Kemudian dengan bantuan konveyor akan dilakukan peletakan bata pada
lantai. Kamera akan mendeteksi bata di lantai berdasarkan jumlah warna
merah yang ditangkap dan luasan dari obyek tersebut. Bila kamera telah
mendeteksi bata maka konveyor akan berhenti bergerak. Kemudian
kamera akan melakukan scanning untuk mendeteksi posisi bata tadi dan
melakukan koreksi apabila posisinya melenceng dari jalur yang ada.
Setelah itu robot bergeser ke samping dan melakukan proses peletakan
bata kembali hingga lebar tembok yang telah ditentukan. Jika lebar telah
terpenuhi maka robot akan bergerak naik untuk mendapatkan ketinggian
yang diinginkan. Semua proses tersebut akan disesuaikan dengan data
pada database yang telah dibuat.
Dari algoritma yang telah dijelaskan di atas, untuk
memudahkan menganalisa, diagram alir dari perangkat lunak
ditunjukkan pada gambar 3.1
Gambar 3.1 Diagram Alir
3. 2 PIRANTI PENDUKUNG
Seperti yang telah disebutkan pada bagian depan, piranti
pendukung untuk proyek akhir ini adalah berupa kamera digital yang
berfungsi sebagai indera penglihatan bagi komputer untuk mengenali
pola suatu obyek, disini jenis kamera sangat berpengaruh terhadap
proses pengolahan image.
Bila kamera kurang sensitif terhadap perubahan intensitas
cahaya maka kualitas gambar yang diambil kurang baik. Begitu pula
resolusi yang didukung oleh kamera tersebut. Untuk piranti penghubung
antara kamera dengan komputer adalah melalui USB (Universal Serial
Bus) yang terdapat pada komputer maupun pada kamera. Untuk diagram
sistem dapat dilihat pada gambar 3.2. Komunikasi yang digunakan
antara PC dengan mikrokontroller adalah komunikasi serial.

Gambar 3.2 Diagram Sistem

Untuk menampilkan dan menyimpan gambar dari kamera di


layar monitor komputer diperlukan perintah-perintah yang dapat
digunakan untuk mengolah data maupun mengambil gambar.
3. 3 PEMBUATAN PROGRAM
3. 3. 1 Design Form Visual Basic 6.0
Form antar muka dibuat dengan menggunakan program
aplikasi Microsoft Visual Basic 6.0 dengan sistem operasi Windows XP
pro. Langkah pertama yaitu mendisain form antar muka, akan tampak
seperti pada Gambar 3.5.

(a)

(b)

Gambar 3.3 (a dan b). Design form antar muka


Pada kedua form ini terdapat beberapa kontrol yang
mempunyai fungsi bermacam-macam. Diantaranya adalah kontrol-
kontrol command yang berguna untuk mengirimkan karakter ke mikro
kontroller.
Kontrol selanjutnya adalah kontrol adodc yang berfungsi untuk
mengoneksikan antara visual basic dengan database access. Sedangkan
kontrol datagrid berfungsi untuk menampilkan database access. Di atas
terdapat 2 database yang digunakan. Untuk lebih jelasnya bisa dilihat
pada tabel 3.1.
Disini yang tidak kalah pentingnya adalah kontrol mscomm
yang berfungsi sebagai alat komunikasi serial antara mikrokontroller
dengan PC. Dimana PC akan mengirim dan menerima data dari
mikrokontroller, baik berupa perintah atau berupa data.

3. 3. 2Koneksi Visual Basic dengan Database


Koneksi dari Visual Basic ke Microsoft Access database adalah
menggunakan provider Microsoft.Jet.OLEDB.4.0 Provider. Kita
menggunakan source of connection yaitu use connection string.
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and
Settings\didik\My Documents\tahap latihan\didik.mdb;Persist Security Info=False

String koneksi tersebut berfungsi untuk menghubungkan Visual


Basic dengan database Access yang mempunyai service name
didik.mdb, dengan user name admin dan blank password.

3. 3. 3 Command Form Pada Visual Basic


Perintah command pada tampilan form design terdapat 2 buah
command utama yaitu command ok dan command isi data. Command
OK berfungsi sebagai memulai menjalankan program dan pengirim
perintah kepada hardware. Sedangkan command isi data berfungsi untuk
mengisi data-data tembok yang ada.

3. 3. 3. 1 Command Proses
Command Proses adalah command yang berfungsi untuk
menjalankan perintah dari PC ke mikrokontroller. Syaratnya adalah bila
user sudah memasukkan data lebar tembok maka form kedua akan
muncul dan Command Proses akan muncul juga. Listing program
command proses bisa dilihat pada baris bawah ini.
Private Sub Cmd_proses_Click()
Dim a, b, c, d, e As Integer

a = 300
MSComm1.Output = "a"
Tunda a

e = Text3.Text
d = 10
c = 1100
b = 0
Do
MSComm1.Output = "b"
Tunda c
b = b + 1
Loop Until b = e

MSComm1.Output = "c"
Tunda a

Do
Cek_bata
Cek_Posisi
Cek_batako
b = b + 1
loop until b = Text4.Text

End Sub

Untuk pencarian data pada database kita akan menggunakan


pencarian berurutan (sekuensial) yaitu mencari data secara berurut dari
suatu lokasi atau record sampai ke lokasi lainnya. Dengan memeriksa
record per record. Setelah menemui record yang sesuai dengan data
yang dicari, maka pencarian dapat dihentikan atau diteruskan.
Karena data input harus dimasukkan terlebih dahulu yaitu data
lebar tembok, maka pencarian cukup dilakukan sekali. Listingnya
dituliskan dibawah ini.

Private Sub Command1_Click()


frmUtama.Text1.Text = Text1.Text
frmUtama.Adodc1.RecordSource = "select * from lebar where
lebar = '" & frmUtama.Text1.Text & "'"
frmUtama.Adodc1.Refresh
If frmUtama.Adodc1.Recordset.RecordCount < 0 Then
MsgBox "Maaf data tidak cocok"
Exit Sub
Else
frmUtama.Text2.Text = frmUtama.Adodc1.Recordset!Bata
frmUtama.Text3.Text = frmUtama.Adodc1.Recordset!step
End If
frmUtama.Show
Unload Me
End Sub

3. 3. 4 Penentuan Segmentasi
Segmentasi dilakukan untuk membedakan warna obyek dengan
background. Programnya adalah sebagai berikut.

Sub OperasiRobot()
Static vPutih(320, 240) As Byte
Static x As Integer, y As Integer
Dim R, g, b As Long
Dim atas, bawah, up As Integer
Dim a, xbar, ybar, ttkx, ttky, i, j, w As Integer
For y = 30 To 180
For x = 60 To 319
' Deteksi warna putih dengan cara
'R > (G + B)
On Error Resume Next
If VideoData(x, y).R > (CInt(VideoData(x, y).g)
+ VideoData(x, y).b) - frmUtama.HScroll1.Value Then
vPutih(x, y) = 255
w = 255
Else
vPutih(x, y) = 0
w = 0
a = a + 1
xbar = xbar + 1 * x
ybar = ybar + 1 * y
End If
VideoData(x, y).R = w
VideoData(x, y).g = w
VideoData(x, y).b = w
Next
Next
ttkx = xbar \ a
ttky = ybar \ a
frmUtama.Text4.Text = ttkx & " " & ttky & " " & a
frmUtama.Text6.Text = a

For i = -3 To 3 '1 To 5
For j = -3 To 3 '1 To 5
VideoData(ttkx + i, ttky + j).R = 255
VideoData(ttkx + i, ttky + j).g = 255
VideoData(ttkx + i, ttky + j).b = 0
Next j
Next i

bawah = 40
For y = bawah To bawah
For x = 0 To 319
VideoData(x, y).R = 0
VideoData(x, y).g = 255
VideoData(x, y).b = 255
Next
Next
atas = 160
For y = atas To atas
For x = 0 To 319
VideoData(x, y).R = 0
VideoData(x, y).g = 255
VideoData(x, y).b = 255
Next
Next

Dim Ymax, Ymin As Integer


Ymax = Ymin = -1

For y = ttky To 180 'cari batas atas


For x = ttkx To ttkx
If VideoData(x, y).R = 255 Then Ymax = y
Next
Next

For y = ttky To 30 Step -1 'cari batas bawah


For x = ttkx To ttkx
If VideoData(x, y).R = 255 Then Ymin = y
Next
Next

frmUtama.Text5.Text = Ymax & " " & Ymin

For y = ttky To Ymax 'kasih garis vertikal dari titik


tengah ke batas atas
For x = ttkx To ttkx
VideoData(x, y).R = 0
VideoData(x, y).g = 255
VideoData(x, y).b = 0
Next
Next

For y = ttky To Ymin Step -1 'kasih garis vertikal dari


titik tengah ke batas bawah
For x = ttkx To ttkx
VideoData(x, y).R = 0
VideoData(x, y).g = 255
VideoData(x, y).b = 0
Next
Next
End Sub
Untuk penjelasan listing program diatas akan dijelaskan per
bagian. Pada form visual basic akan ditampilkan hasil segmentasi pada
picture berskala 320x240 pixel. Setiap pixel mempunyai nilai RGB
(Red, Green, Blue) sendiri-sendiri sehingga nilai tersebut harus
dikalkulasikan terlebih dahulu. Nilai RGB akan dimasukkan kedalam
suatu variabel yang nantinya nilai variabel tersebut digunakan untuk
menentukan nilai yang dominan. Nilai Red akan dikalkulasikan ke
dalam variabel m, nilai Green akan dikalkulasikan kedalam variabel g,
sedangkan nilai Blue akan dikalkulasikan kedalam variabel br.
Kita juga akan mencari luasan atau jumlah pixel tersebut
dengan cara melakukan penjumlahan tiap kali looping. Proses scanning
telah dilakukan dengan menggunakan for ...next. Proses scanning ini
dimulai dari titik 0,0 samapai 320,240

For y = 30 To 180
For x = 60 To 319
' Deteksi warna merah dengan cara
'R > (G + B)
On Error Resume Next
If VideoData(x, y).R > (CInt(VideoData(x, y).g)
+ VideoData(x, y).b) - frmUtama.HScroll1.Value Then
vMerah(x, y) = 255
w = 255
Else
vMerah(x, y) = 0
w = 0
a = a + 1
xbar = xbar + 1 * x
ybar = ybar + 1 * y
End If
VideoData(x, y).R = w
VideoData(x, y).g = w
VideoData(x, y).b = w
Next
Next
ttkx = xbar \ a
ttky = ybar \ a
frmUtama.Text4.Text = ttkx & " " & ttky & " " & a
frmUtama.Text6.Text = a

Pada program di atas terlihat bahwa deteksi warna merah


dilakukan dengan menghitung jumlah warna merah, hijau, dan biru pada
tiap-tiap pixel. Kemudian nilai warna ini dibandingkan. Apabila nilai
warna merah pada suatu pixel nilainya lebih besar dari gabungan warna
hijau dan biru maka nilai tersebut akan ditampilkan dengan warna putih.
Jika lebih kecil maka akan ditampilkan sebagai warna hitam.
Penggunaan threshold digunakan untuk memperluas cakupan warna
merah sehingga warna merah menjadi lebih banyak dikenali.
Selanjutnya adalah menentukan titik tengah dari obyek yang
diamati. Titik tengah ini berupa kotak persegi kecil yang akan
ditampilkan layar.

For i = -3 To 3 '1 To 5
For j = -3 To 3 '1 To 5
VideoData(ttkx + i, ttky + j).R = 255
VideoData(ttkx + i, ttky + j).g = 255
VideoData(ttkx + i, ttky + j).b = 0
Next j
Next i

Setelah itu kita akan membuat program yang berguna untuk


menentukan lintasan dari bata. Karena bata yang disusun harus dalam
posisi yang lurus maka lintasan ini sangatlah diperlukan.

bawah = 40
For y = bawah To bawah
For x = 0 To 319
VideoData(x, y).R = 0
VideoData(x, y).g = 255
VideoData(x, y).b = 255
Next
Next
atas = 160
For y = atas To atas
For x = 0 To 319
VideoData(x, y).R = 0
VideoData(x, y).g = 255
VideoData(x, y).b = 255
Next
Next

Kemudian menentukan posisi bata apakah sudah lurus atau


tidak dengan lintasan. Apabila lurus maka robot akan bergeser tetapi jika
tidak maka akan dilakukan koreksi.

Dim Ymax, Ymin As Integer


Ymax = Ymin = -1

For y = ttky To 180 'cari batas atas


For x = ttkx To ttkx
If VideoData(x, y).R = 255 Then Ymax = y
Next
Next

For y = ttky To 30 Step -1 'cari batas bawah


For x = ttkx To ttkx
If VideoData(x, y).R = 255 Then Ymin = y
Next
Next

frmUtama.Text5.Text = Ymax & " " & Ymin

For y = ttky To Ymax 'kasih garis vertikal dari titik


tengah ke batas atas
For x = ttkx To ttkx
VideoData(x, y).R = 0
VideoData(x, y).g = 255
VideoData(x, y).b = 0
Next
Next

For y = ttky To Ymin Step -1 'kasih garis vertikal dari


titik tengah ke batas bawah
For x = ttkx To ttkx
VideoData(x, y).R = 0
VideoData(x, y).g = 255
VideoData(x, y).b = 0
Next
Next

Pada program di atas juga dibuat garis vertikal dari titik tengah
untuk menentukan luasan dari obyek. Garis inilah yang akan dideteksi.
Apabila garis yang dibuat oleh komputer panjangnya melebihi lintasan
maka bata dianggap telah bergeser dari tempat semula.
Contoh listing program untuk membuat tembok selebar 1 m
adalah sebagai berikut:

Private Sub Cmd_gjl80_Click()


Dim a, b, c As Integer
MSComm1.Output = "h"

a = 200
MSComm1.Output = "a"
Tunda a
b = 1000
MSComm1.Output = "b"
Tunda 4 * b
MSComm1.Output = "c"
Tunda a

'c = 10
cek_bata
'Tunda c
cek_batako
MSComm1.Output = "f"
MSComm1.Output = "h"

cek_bata
'Tunda c
cek_batako
MSComm1.Output = "f"
MSComm1.Output = "h"

cek_bata
'Tunda c
cek_batako
MSComm1.Output = "f"
MSComm1.Output = "h"

cek_bata
'Tunda c
MSComm1.Output = "f"
End Sub
BAB IV
PENGUJIAN DAN ANALISA PROGRAM

Dalam bab ini akan dibahas tentang pengujian berdasarkan


perencanaan dari sistem telah yang dibuat. Program pengujian ini akan
disimulasikan di suatu sistem yang sesuai. Pengujian ini dilaksanakan
untuk mengetahui sejauh mana kehandalan dari suatu sistem tersebut
dan untuk mengetahui apakah sudah sesuai dengan perencanaan atau
belum. Pengujian pertama-tama dilakukan secara terpisah, antara bagian
software dan hardware memiliki bagian masing-masing. Setelah itu
dilakukan pengujian kedalam sistem yang telah terintegrasi.
Pengujian beserta analisa yang dilakukan pada bab ini antara lain :
1. Pengujian pengenalan warna bata
2. Pengujian komunikasi data serial
3. Pengujian sistem secara keseluruhan

4. 1 PENGUJIAN PENGENALAN WARNA BATA


Tujuan dari pengujian pengenalan warna bata adalah untuk
mengetahui bahwa sistem sudah dapat mengenali bata atau belum.
Pengujian ini akan menggunakan kamera sebagai sensor.
Apabila kamera menangkap warna merah maka melalui proses
segmentasi warna merah akan diganti warna putih sedangkan selain
warna merah akan diganti oleh warna hitam. Dari sini akan kelihatan
perbedaannya. Kita bisa menggunakan pembandingan nilai RGB (red,
green, blue ) yang telah ditemukan oleh sensor kamera. Bila
pembandingan nilai RGB tersebut lebih besar nilai R atau red maka
obyek yang ditemukan adalah obyek berwarna merah.
Gambar 4.1 Sebelum ada bata

Gambar 4.2 Setelah ada bata


Pengujian ini menggunakan 10 bata berbeda yang sama-sama
merupakan bata merah, tetapi masing-masing bata tersebut merupakan
bata yang permukaannya tidak rata dan tingkat kecerahan warnanya juga
berbeda-beda. Pengujian akan dilakukan 40 kali dengan dua kondisi
yang berbeda-beda. Sedangkan nilai kecerahan atau threshold adalah
berbeda tetapi dengan jarak kamera yang sama. Untuk detailnya kita
bisa melihat tabel 4.1 dan tabel 4.2 dibawah ini.

Tabel 4.1 Pengujian Bata 1

Obyek : Bata Merah (15 x 8 x 4 cm)


Percobaan I Percobaan II
No Hasil Keterangan No Hasil Keterangan
1 V 1 V
2 V 2 V
3 V 3 V
4 X 4 V
5 V Lokasi : 5 V Lokasi :
6 V Ruangan 6 V Ruangan
(tanpa (dengan
7 X 7 V
lampu) lampu)
8 X 8 V
9 V Waktu : 9 V Waktu :
10 V Siang Hari 10 V Siang Hari
HASIL = 70% HASIL = 100%
Tabel 4.2 Pengujian Bata 2

Obyek : Bata Merah (15 x 8 x 4 cm)


Percobaan III Percobaan IV
No Hasil Keterangan No Hasil Keterangan
1 V 1 V
2 V 2 V
3 V 3 V
4 V 4 V
5 V Lokasi : 5 V Lokasi :
6 V Ruangan 6 V Ruangan
(tanpa (dengan
7 V lampu) 7 V lampu)
8 V 8 V
9 X Waktu : 9 V Waktu :
10 X Siang Hari 10 V Siang Hari
HASIL = 80% HASIL = 100%

Setelah kita melihat hasil percobaan diatas maka bisa diambil


beberapa analisa. Yang pertama kita lihat tabel 4.1, bila membandingkan
antara percobaan 1 dan 2, maka hasil yang lebih akurat adalah kondisi
ruangan menyala. Hal ini membuktikan bahwa dengan penerangan yang
cukup maka bata akan terdeteksi dengan baik.
Pada tabel 4.2, hasil yang diperoleh juga sama. Antara
percobaan pada Tabel 4.1 dengan 4.2 diberikan nilai threshold yang
berbeda. Akan tetapi hal tersebut ternyata sama sekali tidak
mempengaruhi hasil apabila ruangan dalam kondisi menyala. Maka
dapat diambil kesimpulan bahwa hasil yang paling baik diperoleh bila
ruangan dalam kondisi menyala.
.

4. 2 PENGUJIAN KOMUNIKASI DATA SERIAL


Tujuan dari pengujian komunikasi serial adalah memastikan
bahwa PC dapat mengirimkan data atau perintah ke mikrokontroller.
Untuk pengujian ini digunakan beberapa peralatan diantaranya
minimum system mikrokontroller AT89S51, rangkaian led pada port1,
konektor db9 & kabel serial, DC power supply + 5 volt. Setelah itu kita
hubungkan antara PC dengan minimum sistem mikrokontroler
menggunakan konektor db9 dan kabel serial.
Setelah kita mengisi box lebar dan kita tekan tombol “OK”
maka form kedua akan muncul. Setelah kita menekan tombol Proses
maka secara default PC akan mengirimkan karakter “a” yang berarti
perintah untuk membuka tutup wadah semen. Pada mikrokontroller kita
bisa simulasikan melalui rangkaian led pada port 2.0 & 2.1 menyala.
Untuk pengujian pengiriman karakter pada mikrokontroller
secara serial adalah dengan mengirimkan beberapa karakter berbeda
diantaranya adalah karakter “b” untuk perintah bergeser ke kiri, karakter
“c” untuk perintah menutup wadah semen, karakter “d” untuk perintah
bergeser ke kanan, karakter “e” untuk perintah konveyor jalan, karakter
“f” untuk menghentikan semua proses, karakter “g” untuk perintah
pelurus maju, karakter “h” untuk perintah pelurus mundur, dan karakter
“i” untuk perintah robot naik. Pada tabel 4.4 berikut ini menunjukkan
karakter beserta kode ascii dalam hexadesimal.
Gambar 4.3 Flowchart Komunikasi Serial
Tabel 4.3 Karakter Ascii

KARAKTER ASCII (Hex) PERINTAH


a 61 Semen Buka
b 62 Geser Kiri
c 63 Semen Tutup
d 64 Geser Kanan
e 65 Konveyor On
f 66 Proses Off
g 67 Pelurus On
h 68 Pelurus Off
i 69 Robot Naik
j 6A Robot Rem

4. 3 PENGUJIAN SISTEM SECARA KESELURUHAN


Tujuan dari pengujian sistem secara keseluruhan ini adalah
untuk mengetahui bahwa sistem yang telah terintegrasi antara software
dan hardware sudah bisa berjalan secara baik dan benar.
Untuk pengujian sistem secara keseluruhan ,kita menggunakan
rangkaian hardware robot yang telah terintegrasi dengan sebuah PC.
Alur algoritma sama seperti yang telah diterangkan sebelumnya yaitu
kita menentukan terlebih dahulu lebar tembok yang akan dibuat. Setelah
itu PC akan mengambil data dari database berupa data banyaknya bata
yang diperlukan dan step yang dibutuhkan. Robot tidak akan berjalan
sebelum tombol “OK” ditekan. Setelah tombol ditekan maka form kedua
akan muncul. Selanjutnya setelah tombol proses ditekan maka PC akan
mengirimkan karakter “a” yang berarti perintah untuk wadah semen
membuka.
Setelah itu robot bergeser ke kiri sejauh lebar yang diinginkan.
Lebar ini ditentukan oleh nilai step. Satu niali step adalah sejauh 20 cm.
Hal ini dengan asumsi ketika robot bergerak konveyor membawa bata
maksimal 4 buah dan wadah semen dalam keadaan penuh. Misalnya,
lebar tembok adalah 100 cm maka pada tabel akan muncul jumlah bata 5
dan step sebanyak 5 juga.
Kemudian setelah step terakhir dilampaui maka wadah semen
akan menutup. Selanjutnya konveyor akan jalan. Di sinilah peran sensor
kamera bekerja. Apabila pada layar tampak bata jatuh maka konveyor
akan berhenti. Selanjutnya dilakukan scanning apakah posisi bata sesuai
dengan lintasan atau tidak. Jika tidak sesuai maka akan dilakukan
koreksi. Apabila sudah tepat maka robot akan bergeser ke kanan.
Panjang pergeseran robot ke kanan ditentukan berdasarkan ada
tidaknya bata pada lantai. Apabila bata yang dipasang pertama kali
sudah tidak terdeteksi oleh kamera maka robot akan berhenti bergeser.
Selanjutnya kembali konveyor aktif, demikian seterusnya hingga selesai.
Pada saat percobaan sistem secara keseluruhan, kita melakukan
beberapa percobaan simulasi di dalam ruangan. Terdapat kelemahan
pada peletakan bata yaitu sulit untuk mendapatkan hasil yang sesuai
dengan yang diinginkan. Percobaan ini dilakukan dengan memberi
perintah kepada robot untuk membuat tembok sejauh 80 cm, maka
didapatkan data sebagai berikut.

Tabel 4.4 Hasil percobaan

Percobaan Waktu
1 20 det
2 21 det
3 21 det
4 23 det
5 20 det
6 32 det
7 20 det
8 21 det
9 21 det
10 20 det

Terdapat beberapa faktor yang menyebabkan hasil yang


diperoleh menjadi bervariasi, yaitu faktor bata yang digunakan tidak
sama dalam hal komposisi warna merah pada permukaannya. Hal ini
seharusnya bisa diatasi dengan mengatur nilai threshold pada saat
menjalankan form kedua sehingga citra yang tertangkap oleh kamera
adalah sama.
Nilai waktu yang melenceng di atas sebesar 32 detik
disebabkan karena konfigurasi mekanik robot yang belum pas sehingga
jatuhnya bata menjadi tidak tepat.
BAB V
PENUTUP

5.1 KESIMPULAN

Dari uji coba yang dilakukan berdasarkan pengujian data hasil


percobaan, dapat diambil suatu kesimpulan sebagai berikut:
1. Adanya hasil pengenalan yang tidak sesuai dengan yang
diharapkan disebabkan oleh kesensitifan kamera dan faktor
pencahayaan.
2. Faktor yang berpengaruh terhadap kualitas pengenalan obyek
adalah faktor permukaan obyek untuk memantulkan cahaya
dan faktor pencahayaan ruangan itu sendiri.
3. Filtering dari noise hasil scanning obyek juga mempengaruhi
keakuratan data status penangkapan gambar obyek target.
4. Kecepatan dari laju robot juga mempengaruhi keakuratan
data status penangkapan gambar obyek target sehingga
kecepatan robot harus disesuaikan.
5. Faktor yang mempengaruhi laju robot diantaranya adalah
faktor persamaan spesifikasi motor, faktor kondisi alas pada
lantai dan faktor dari power supply yang digunakan.

5.2 SARAN

Sedikit saran untuk pengembangan proyek ini lebih lanjut,


management database, algoritma program serta kelengkapan
program dapat diperbaiki dalam beberapa hal :
1. Penggunaan program mendeteksi rambu sebaiknya sudah
bisa mendeteksi rambu yang berupa pola.
2. Penggunaan kamera yang mempunyai kemampuan
menangkap cahaya yang efisien sangatlah dibutuhkan.
********** Halaman ini sengaja dikosongkan**********
DAFTAR PUSTAKA

[1] Agus Sastro, Autonomous Vehicle dengan Kamera Sub Judul


Neural Network Algoritma, TA EEPIS ITS 2004.
[2] Ario Suryo Kusumo,Drs , Microsoft Visual Basic 6.0 , Elex Media
Komputindo, Jakarta 2000.
[3] Dewi Supriatin Resmah, Perancangan dan Implementasi Robot
Banteng yang Mengikuti Warna Merah sebagai Acuannya Sub
Judul Image Processing, TA EEPIS ITS 2004.
[4] Noel Jerke, The Complete Reference Visual Basic 6, Osborne,
2000.
[5] Widodo Budiharto,SSi,MKom, Interfacing Komputer dan
Mikrokontroller, Jakarta, 2004.
TENTANG PENULIS

Nama :
Didik Subandi
Tempat / Tanggal Lahir :
Bangkalan/ 13 Oktober 1981
Riwayat Pendidikan :
1. SDN Kraton 6
(1988 - 1992)
2. SDN Pejagan 1
(1992 – 1994)
2. SLTPN I Bangkalan
(1994 – 1997)
3. SMUN I Bangkalan
(1997 - 2000)
4. PENS - ITS D3 Teknik Elektronika
(2003 - 2006)
Alamat :
Jl. Bhayangkara Abdul Rahem 2 Rt/Rw
2/03 Bangkalan – Madura 69112

Telp / HP :
03160473625

Email :
Didik_subandi@yahoo.com

Pelatihan yang pernah diikuti :


1. Robot EEPIS-ITS 2004
2. Optimasi Komputer EEPIS-ITS 2005

Pesan :
Awali dengan niat yang baik, bersungguh-sungguhlah dalam berusaha,
setelah itu bertawakkal hanya kepada 4JJ1...
LAMPIRAN A
LISTING PROGRAM UTAMA.frm
Option Explicit
Dim lwndC As Long ' Handle to the Capture Windows
Dim lNFrames As Long ' Number of frames captured

Sub ResizeCaptureWindow(ByVal lwnd As Long)

Dim CAPSTATUS As CAPSTATUS

'// Get the capture window attributes .. width and


height
capGetStatus lwnd, VarPtr(CAPSTATUS), Len(CAPSTATUS)

'// Resize the capture window to the capture sizes


SetWindowPos lwnd, HWND_BOTTOM, 0, 0, _
CAPSTATUS.uiImageWidth, _
CAPSTATUS.uiImageHeight, _
SWP_NOMOVE Or SWP_NOZORDER

End Sub

Private Sub cKamera_Click()


PilihKamera cKamera.ListIndex
End Sub

Private Sub Cmd_20_Click()


Dim a, b, c As Integer
MSComm1.Output = "h"

a = 200
MSComm1.Output = "a"
Tunda a
b = 1600
MSComm1.Output = "b"
Tunda b
MSComm1.Output = "c"
Tunda a

MSComm1.Output = "e"
'c = 10
cek_bata
'Tunda c
MSComm1.Output = "f"
End Sub
Private Sub Cmd_gjl40_Click()
Dim a, b, c As Integer
MSComm1.Output = "h"

a = 200
MSComm1.Output = "a"
Tunda a
b = 1000
MSComm1.Output = "b"
Tunda 2 * b
MSComm1.Output = "c"
Tunda a
c = 1000
MSComm1.Output = "e"
Tunda c
MSComm1.Output = "f"
MSComm1.Output = "g"
MSComm1.Output = "d"
Tunda b
MSComm1.Output = "e"
Tunda c
MSComm1.Output = "f"
'c = 10
'cek_bata
'Tunda c
'cek_batako
'MSComm1.Output = "f"
'MSComm1.Output = "h"

'MSComm1.Output = "e"
'cek_bata
'Tunda c
'MSComm1.Output = "f"
End Sub

Private Sub Cmd_gjl60_Click()


Dim a, b, c As Integer
MSComm1.Output = "h"

a = 200
MSComm1.Output = "a"
Tunda a
b = 1000
MSComm1.Output = "b"
Tunda 3 * b
MSComm1.Output = "c"
Tunda a

'c = 10
cek_bata
'Tunda c
cek_batako
MSComm1.Output = "f"
MSComm1.Output = "h"

cek_bata
'Tunda c
cek_batako
MSComm1.Output = "f"
MSComm1.Output = "h"

cek_bata
'Tunda c
MSComm1.Output = "f"
End Sub

Private Sub Cmd_gjl80_Click()


Dim a, b, c As Integer
MSComm1.Output = "h"

a = 200
MSComm1.Output = "a"
Tunda a
b = 1000
MSComm1.Output = "b"
Tunda 4 * b
MSComm1.Output = "c"
Tunda a

'c = 10
cek_bata
'Tunda c
cek_batako
MSComm1.Output = "f"
MSComm1.Output = "h"

cek_bata
'Tunda c
cek_batako
MSComm1.Output = "f"
MSComm1.Output = "h"

cek_bata
'Tunda c
cek_batako
MSComm1.Output = "f"
MSComm1.Output = "h"

cek_bata
'Tunda c
MSComm1.Output = "f"
End Sub
Private Sub Cmd_gnp40_Click()
'MSComm1.Output = "h"
'd = 800
'MSComm1.Output = "b"
'Tunda d

'a = 200
'MSComm1.Output = "a"
'Tunda a
'b = 1600
'MSComm1.Output = "b"
'Tunda b
'MSComm1.Output = "c"
'Tunda a

'c = 10
'cek_bata
'Tunda c

'MSComm1.Output = "d"
'Tunda d
'MSComm1.Output = "i"
End Sub

Private Sub Cmd_gnp60_Click()


'MSComm1.Output = "h"
'd = 800
'MSComm1.Output = "b"
'Tunda d

'a = 200
'MSComm1.Output = "a"
'Tunda a
'b = 1600
'MSComm1.Output = "b"
'Tunda 2 * b
'MSComm1.Output = "c"
'Tunda a

'c = 10
'cek_bata
'Tunda c
'cek_batako
'MSComm1.Output = "f"
'MSComm1.Output = "h"

'cek_bata
'Tunda c
'MSComm1.Output = "d"
'Tunda d
'MSComm1.Output = "i"
End Sub

Private Sub Cmd_gnp80_Click()


'MSComm1.Output = "h"
'd = 800
'MSComm1.Output = "b"
'Tunda d

'a = 200
'MSComm1.Output = "a"
'Tunda a
'b = 1600
'MSComm1.Output = "b"
'Tunda 3 * b
'MSComm1.Output = "c"
'Tunda a

'c = 10
'cek_bata
'Tunda c
'cek_batako
'MSComm1.Output = "f"
'MSComm1.Output = "h"

'cek_bata
'Tunda c
'cek_batako
'MSComm1.Output = "f"
'MSComm1.Output = "h"

'cek_bata
'Tunda c

'MSComm1.Output = "d"
'Tunda d
'MSComm1.Output = "i"
End Sub

Private Sub cOutput_Click()


VideoOut = (cOutput.Value = 1)
End Sub

Private Sub ext_Click()


Unload Me
End Sub

Private Sub PilihKamera(wDriver As Long)


'Dim lpszName As String * 100
'Dim lpszVer As String * 100
'TutupKamera
'Debug.Print capGetDriverDescriptionA(wDriver, lpszName,
100, lpszVer, 100) '// Retrieves driver info
'lwndC = capCreateCaptureWindowA(lpszName, WS_CHILD Or
WS_VISIBLE, 0, 0, 160, 120, Me.hWnd, 0)
'lwndC = capCreateCaptureWindowA(lpszName, WS_THICKFRAME
Or WS_CHILD Or WS_VISIBLE, 0, 0, 160, 120, Me.hWnd, 0)
lwndC = capCreateCaptureWindowA(cKamera, WS_VISIBLE +
WS_CHILD, 0, 0, 320, 240, Me.VideoIn.hWnd, 0)

If capDriverConnect(lwndC, wDriver) Then

'Debug.Print capDriverGetCaps(lwndC, VarPtr(Caps),


Len(Caps))

'capSetCallbackOnVideoStream lwndC, AddressOf


MyVideoStreamCallback
Debug.Print capSetCallbackOnFrame(lwndC, AddressOf
OnFrameEvent)

Debug.Print capPreviewScale(lwndC, True)


Debug.Print capPreviewRate(lwndC, 10)
'// preview image dari Camera
Debug.Print capPreview(lwndC, True)

'ResizeCaptureWindow lwndC ', True


Kamera = GetDC(lwndC)
Else
MsgBox "Device Kamera : " + cKamera + " tidak
ditemukan", vbCritical
End If
End Sub

Private Sub DaftarKamera()


Dim lpszName As String * 100
Dim lpszVer As String * 100
Dim Device As String
cKamera.Clear
Dim wDriver As Long
wDriver = 0
While capGetDriverDescriptionA(wDriver, lpszName, 100,
lpszVer, 100)
'Device = lpszName
'Device = Device + " " + lpszVer
cKamera.AddItem lpszName
cKamera.List(wDriver) = cKamera.List(wDriver) + " "
+ lpszVer
DoEvents
wDriver = wDriver + 1
Wend
If cKamera.ListCount > 0 Then cKamera = cKamera.List(0)
End Sub

Private Sub Form_Load()


MSComm1.CommPort = 1
MSComm1.Settings = "9600,N,8,1"
MSComm1.PortOpen = True
'Dim Caps As CAPDRIVERCAPS
'//Create Capture Window
DaftarKamera
If cKamera.ListCount > 0 Then PilihKamera 0
End Sub

Private Sub TutupKamera()


'capSetCallbackOnError lwndC, vbNull
'capSetCallbackOnStatus lwndC, vbNull
'capSetCallbackOnYield lwndC, vbNull
capSetCallbackOnFrame lwndC, vbNull
If lwndC <> 0 Then DestroyWindow lwndC
'capSetCallbackOnVideoStream lwndC, vbNull
'capSetCallbackOnWaveStream lwndC, vbNull
'capSetCallbackOnCapControl lwndC, vbNull
End Sub

Private Sub Form_Unload(Cancel As Integer)


TutupKamera
End Sub

Private Sub HScroll1_Change()


Label8.Caption = HScroll1.Value
End Sub

Private Sub mli_Click()


Dim sFileName As String
Dim CAP_PARAMS As CAPTUREPARMS
capCaptureGetSetup lwndC, VarPtr(CAP_PARAMS),
Len(CAP_PARAMS)
CAP_PARAMS.dwRequestMicroSecPerFrame = (1 * (10 ^ 6)) /
30 ' 30 Frames per second
CAP_PARAMS.fMakeUserHitOKToCapture = True
CAP_PARAMS.fCaptureAudio = False
capCaptureSetSetup lwndC, VarPtr(CAP_PARAMS),
Len(CAP_PARAMS)
sFileName = "C:\myvideo.avi"
capCaptureSequence lwndC ' mulai melakukan capture!
capFileSaveAs lwndC, sFileName ' Copy video dari swap
file ke a real file.
End Sub

Private Sub mnuPeringatan_Click()


MsgBox "HATI-HATI, HENTIKAN PROGRAM 'VB' DENGAN CARA
'BERKAS' -> 'KELUAR'" + Chr(10) + Chr(13) + "JIKA TIDAK, VB
AKAN HANG DAN KEMUNGKINAN DAPAT 'MERUSAK' FILE ANDA",
vbCritical
End Sub

Sub setkam_Click()
capDlgVideoFormat lwndC
ResizeCaptureWindow lwndC
End Sub

Private Sub src_Click()


capDlgVideoSource lwndC
End Sub

Private Sub Timer1_Timer()


fpsL = (4 * fpsL + fps) / 5
NilaiFPS = CInt(fpsL * 100) / 100
fps = 0
End Sub
LAMPIRAN B
LISTING PROGRAM IMAGE.cls
Option Explicit

Public Const WS_BORDER = &H800000


Public Const WS_CAPTION = &HC00000
Public Const WS_SYSMENU = &H80000
Public Const WS_CHILD = &H40000000
Public Const WS_VISIBLE = &H10000000
Public Const WS_OVERLAPPED = &H0&
Public Const WS_MINIMIZEBOX = &H20000
Public Const WS_MAXIMIZEBOX = &H10000
Public Const WS_THICKFRAME = &H40000
Public Const WS_OVERLAPPEDWINDOW = (WS_OVERLAPPED Or
WS_CAPTION Or WS_SYSMENU Or WS_THICKFRAME Or WS_MINIMIZEBOX
Or WS_MAXIMIZEBOX)
Public Const SWP_NOMOVE = &H2
Public Const SWP_NOSIZE = 1
Public Const SWP_NOZORDER = &H4
Public Const HWND_BOTTOM = 1
Public Const HWND_TOPMOST = -1
Public Const HWND_NOTOPMOST = -2
Public Const SM_CYCAPTION = 4
Public Const SM_CXFRAME = 32
Public Const SM_CYFRAME = 33
Public Const WS_EX_TRANSPARENT = &H20&
Public Const GWL_STYLE = (-16)
Declare Function SetWindowLong Lib "user32" Alias
"SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long,
ByVal dwNewLong As Long) As Long

'// Manipulasi Memori


Declare Function lStrCpy Lib "kernel32" Alias "lstrcpyA"
(ByVal lpString1 As Long, ByVal lpString2 As Long) As Long
Declare Function lStrCpyn Lib "kernel32" Alias "lstrcpynA"
(ByVal lpString1 As Any, ByVal lpString2 As Long, ByVal
iMaxLength As Long) As Long
Declare Sub RtlMoveMemory Lib "kernel32" (ByVal hpvDest As
Long, ByVal hpvSource As Long, ByVal cbCopy As Long)
Declare Sub hmemcpy Lib "kernel32" (hpvDest As Any,
hpvSource As Any, ByVal cbCopy As Long)

'// Manipulasi Window


Declare Function SetWindowPos Lib "user32" (ByVal hWnd As
Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal
y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags
As Long) As Long
Declare Function DestroyWindow Lib "user32" (ByVal hndw As
Long) As Boolean
Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex
As Long) As Long
Declare Function SetWindowText Lib "user32" Alias
"SetWindowTextA" (ByVal hWnd As Long, ByVal lpString As
String) As Long

Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long,


ByVal x As Long, ByVal y As Long) As Long
Declare Function SetPixel Lib "gdi32" (ByVal hdc As Long,
ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As
Long
'Declare Function SetRect Lib "user32" (lpRect As RECT,
ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal
Y2 As Long) As Long
Declare Function Rectangle Lib "gdi32" (ByVal hdc As Long,
ByVal X1 As Long, ByVal Y1 As Long, ByVal X2 As Long, ByVal
Y2 As Long) As Long
Declare Function LineTo Lib "gdi32" (ByVal hdc As Long,
ByVal x As Long, ByVal y As Long) As Long
Declare Function SetDeviceGammaRamp Lib "gdi32" (ByVal hdc
As Long, lpv As Any) As Long
Declare Function TextOut Lib "gdi32" Alias "TextOutA" (ByVal
hdc As Long, ByVal x As Long, ByVal y As Long, ByVal
lpString As String, ByVal nCount As Long) As Long

Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As


Long
Declare Function ReleaseDC Lib "user32" (ByVal hWnd As Long,
ByVal hdc As Long) As Long

Public Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As


Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As
Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal
xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As
Long
Public Declare Function GetBitmapBits Lib "gdi32" (ByVal
hBitmap As Long, ByVal dwCount As Long, lpBits As Any) As
Long
Public Declare Function SetBitmapBits Lib "gdi32" (ByVal
hBitmap As Long, ByVal dwCount As Long, lpBits As Any) As
Long

Public lwndC As Long ' Handle ka angguy nagkap Windows


Public fps As Byte
Public fpsL As Single
Public VideoOut As Boolean

Private vLx As Integer


Private vLy As Integer
Private vWarna As Boolean
Const LxMax = 320
Const LyMax = 240

Type tImage
b As Byte
g As Byte
R As Byte
End Type

Dim VideoHeader As VIDEOHDR

Type tVideoData
b As Byte
g As Byte
R As Byte
End Type

Dim VideoData(0 To 319, 0 To 239) As tVideoData


Dim Bata As Boolean
Global Kamera As Long

Function OnFrameEvent(ByVal lwnd As Long, ByVal lpVHdr As


Long) As Long
' Ambil Header Buffer Video dari Windows API
RtlMoveMemory VarPtr(VideoHeader), lpVHdr,
Len(VideoHeader)
' Ambil Data Buffer Video dari Windows API
If VideoHeader.dwBytesUsed <> 230400 Then
MsgBox "Ubah setting konfigurasi Video dalam 320x240
RGB24", vbCritical, "Pesan Kesalahan"
frmUtama.setkam_Click
Exit Function
End If
RtlMoveMemory VarPtr(VideoData(0, 0)),
VideoHeader.lpData, VideoHeader.dwBytesUsed
' Lakukan Operasi Image Processing sesuai dengan
keperluan
'cek_bata
OperasiRobot
'semen
' Jika diinginkan, tampilkan kembali hasil Image
Processing
If VideoOut Then RtlMoveMemory VideoHeader.lpData,
VarPtr(VideoData(0, 0)), VideoHeader.dwBytesUsed
' Penghitung kecepatan proses tiap detik
fps = fps + 1
End Function
Sub cek_batako()
Dim a, b, c As Integer
b = 100
c = 0
Do
a = frmUtama.Text6.Text
frmUtama.MSComm1.Output = "b"
Tunda b
If a > 39000 Then
Exit Sub
End If
c = c + 1
frmUtama.Text6.Refresh
Loop Until c = 30
End Sub
Sub cek_bata()
Dim a, b, c, x, y, d As Integer
For y = 30 To 180
For x = 0 To 319
On Error Resume Next
If VideoData(x, y).R > (CInt(VideoData(x, y).g)
+ VideoData(x, y).b) - frmUtama.HScroll1.Value Then

Else

a = a + 1
End If
Next
Next
'If a < 35000 Then Bata = True

c = 0
d = 100
Do
b = frmUtama.Text6.Text
frmUtama.MSComm1.Output = "e"
Tunda d
If b < 35000 Then
Exit Sub
End If
c = c + 1
frmUtama.Text6.Refresh
Loop Until c = 20
End Sub

Sub OperasiRobot()
' Segmentasi Warna Putih
' Pixel lainnya menjadi hitam
Static vPutih(320, 240) As Byte
Static x As Integer, y As Integer
Dim R, g, b As Long
Dim atas, bawah, up As Integer
Dim a, xbar, ybar, ttkx, ttky, i, j, w As Integer
'-----------------------Low Pass Filter-----------------
-------------------------
For x = 0 To vLx - 1
R = 255
g = 255
b = 255
For y = 0 To vLy - 1
R = (2 * R + VideoData(x, y).R) \ 3
g = (2 * g + VideoData(x, y).g) \ 3
b = (2 * b + VideoData(x, y).b) \ 3
VideoData(x, y).R = R
VideoData(x, y).g = g
VideoData(x, y).b = b
Next
Next
For y = 0 To vLy - 1
R = 255
g = 255
b = 255
For x = 0 To vLx - 1
R = (2 * R + VideoData(x, y).R) \ 3
g = (2 * g + VideoData(x, y).g) \ 3
b = (2 * b + VideoData(x, y).b) \ 3
VideoData(x, y).R = R
VideoData(x, y).g = g
VideoData(x, y).b = b
Next
Next
'-------------------------------------------------------
--------------------------------
For y = 30 To 180
For x = 60 To 319
' Deteksi warna putih dengan cara
'R > (G + B)
On Error Resume Next
If VideoData(x, y).R > (CInt(VideoData(x, y).g)
+ VideoData(x, y).b) - frmUtama.HScroll1.Value Then
vPutih(x, y) = 255
w = 255
Else
vPutih(x, y) = 0
w = 0
a = a + 1
xbar = xbar + 1 * x
ybar = ybar + 1 * y
End If
VideoData(x, y).R = w
VideoData(x, y).g = w
VideoData(x, y).b = w
Next
Next
ttkx = xbar \ a
ttky = ybar \ a
frmUtama.Text4.Text = ttkx & " " & ttky & " " & a
frmUtama.Text6.Text = a

For i = -3 To 3 '1 To 5
For j = -3 To 3 '1 To 5
VideoData(ttkx + i, ttky + j).R = 255
VideoData(ttkx + i, ttky + j).g = 255
VideoData(ttkx + i, ttky + j).b = 0
Next j
Next i

bawah = 40
For y = bawah To bawah
For x = 0 To 319
VideoData(x, y).R = 0
VideoData(x, y).g = 255
VideoData(x, y).b = 255
Next
Next
atas = 160
For y = atas To atas
For x = 0 To 319
VideoData(x, y).R = 0
VideoData(x, y).g = 255
VideoData(x, y).b = 255
Next
Next
Dim Ymax, Ymin As Integer
Ymax = Ymin = -1

For y = ttky To 180 'cari batas atas


For x = ttkx To ttkx
If VideoData(x, y).R = 255 Then Ymax = y
Next
Next

For y = ttky To 30 Step -1 'cari batas bawah


For x = ttkx To ttkx
If VideoData(x, y).R = 255 Then Ymin = y
Next
Next
frmUtama.Text5.Text = Ymax & " " & Ymin

For y = ttky To Ymax 'kasih garis vertikal dari titik


tengah ke batas atas
For x = ttkx To ttkx
VideoData(x, y).R = 0
VideoData(x, y).g = 255
VideoData(x, y).b = 0
Next
Next

For y = ttky To Ymin Step -1 'kasih garis vertikal dari


titik tengah ke batas bawah
For x = ttkx To ttkx
VideoData(x, y).R = 0
VideoData(x, y).g = 255
VideoData(x, y).b = 0
Next
Next

End Sub

Vous aimerez peut-être aussi