Algoritma Posisi Batu Bata

  • December 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Algoritma Posisi Batu Bata as PDF for free.

More details

  • Words: 11,331
  • Pages: 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: 1.

Dosen Pembimbing: 1.

Bima Sena Bayu D, SST NIP. 132.232.762

Edy Satriyanto, SSi NIP. 132.127.286 2.

2. Akhmad Hendriawan, ST NIP. 132.300.367

Eru Puspita, ST, MT 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 bersamasama 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 SurabayaITS, 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 SurabayaITS, 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 diblack 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............................................................... ABSTRAK........................................................................................ ABSTRACT...................................................................................... KATA PENGANTAR...................................................................... UCAPAN TERIMA KASIH............................................................. DAFTAR ISI.....................................................................................

i iii iv v vii ix

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

1 1 1 1 2 2 2 2

BAB II TEORI PENUNJANG....................................................... 2.1 Microsoft Visual Basic 6.0............................................ 2.1.1 Pengenalan Microsoft Visual Basic 6.0................ 2.1.2 Membuat Aplikasi Visual Basic 6.0..................... 2.1.3 Bekerja Dengan Control………………………… 2.1.4 Aplikasi Access dengan Visual Basic 6.0………. 2.1.5 Sekilas tentang ADO……………………………. 2.2 Image Processing…………………………………….. 2.2.1 Pengertian Citra Dan Pengolahan Citra Digital.... 2.2.2 Model Citra........................................................... 2.2.3 Pixel Dan Dasar-Dasar Hubungan Antar Pixel..... 2.2.4 Warna…………………………………………… 2.2.4.1 Warna RGB, CMY, Dan Gray Level…... 2.2.4.2 Penjumlahan Warna……………………. 2.2.5 Greyscale.............................................................. 2.2.6 Segmentasi............................................................ 2.2.7 Scanning………………………………………… 2.2.8 Filter......................................................................

5 5 5 8 8 9 10 10 10 11 13 14 14 15 16 16 17 17

BAB III PERENCANAAN DAN PEMBUATAN PROGRAM.... 3.1 Algoritma Program Dan Diagram Alir.......................... 3.1.1 Algoritma Program............................................... 3.1.2 Diagram Alir........................................................ 3.2 Piranti Pendukung......................................................... 3.3 Pembuatan Program...................................................... 3.3.1 Design Form Visual Basic 6.0............................. 3.3.2 Koneksi Visual Basic dengan Database............... 3.3.3 Command Form Pada Visual Basic..................... 3.3.3.1 Command Proses...................................... 3.3.4 Penentuan Segmentasi………………………….

19 19 19 20 23 24 24 25 25 27 27

BAB IV PENGUJIAN DAN ANALISA PROGRAM.................. 4.1 Pengujian Pengenalan Warna Bata............................... 4.2 Pengujian Komunikasi Data Serial............................... 4.3 Pengujian Sistem Secara Keseluruhan..........................

33 33 36 39

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

41 41 41

DAFTAR PUSTAKA......................................................................

43

TENTANG PENULIS.....................................................................

45

LAMPIRAN A..................................................................................

47

LAMPIRAN B..................................................................................

55

DAFTAR GAMBAR

Gambar 2.1 Gambar 2.2 Gambar 2.3 Gambar 2.4 Gambar 2.5 Gambar 2.6 Gambar 2.7 Gambar 2.8 Gambar 3.1 Gambar 3.2 Gambar 3.3 Gambar 4.1 Gambar 4.2 Gambar 4.3

Form dalam Visual Basic......................................... Menu UtamaVisual Basic........................................ ToolBox Dalam Visual Basic................................... Properties dalam Visual Basic................................. Toolbar dalam Visual Basic..................................... Elemen Sistem Pengolah Citra................................. Ruang Warna RGB dan CMY.................................. Prinsip Kerja Metode Scanning................................ Diagram Alir............................................................. Diagram Sistem......................................................... Design Form Antar Muka......................................... Sebelum Ada Bata.................................................... Setelah Ada Bata..................................................... Flowchart Komunikasi Serial...................................

5 6 7 7 8 12 15 17 22 23 23 34 34 38

DAFTAR TABEL

Tabel 4.1 Tabel 4.2 Tabel 4.3 Tabel 4.4 Tabel 4.5

Pengujian Bata 1........................................................... Pengujian Bata 2........................................................... Karakter Ascii .............................................................. Hasil Percobaan............................................................. Jarak Melenceng Robot................................................

35 36 39 40 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 1. 2. 1

TUJUAN 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. 2. 3. 4. 5.

Tinggi tembok maksimal adalah 1 m dan lebar tembok maksimal adalah 80 cm. Lantai pada saat pembuatan tembok adalah lantai yang datar. Pencahayaan pada ruangan kelas haruslah cukup terang. Bata yang digunakan adalah batu bata asli warna merah dengan ukuran 15x8x4 cm. 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 2. 1. 1

MICROSOFT VISUAL BASIC 6.0 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 propertiproperti 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 langkahlangkah 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 bermacammacam, 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 bermacammacam 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. Elemenelemen 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) x 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,1) ....... f (0,N−1) ⎞ ⎛ f (0,0) ⎜ ⎟ f (1,1) ....... f (1,N−1) ⎟ ⎜ f (1,0) 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 koordinatkoordinatnya 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 4neighbours, 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 Masing-masing R, G, dan B didiskritkan dalam skala 256, sehingga RGB akan memilki indeks antara 0 sampai 255. penjumlahan warna RGB ini adalah : 3

C = C1 + C2 =

( rC1, gC1, bC1) + (rC 2, gC 2, bC 2) 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 ratarata 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

Vy

∑I

x =1 n

=

I ( x, y ) =

y =1

( x, y )

( x, y )

R( x , y ) + G ( x , y ) + B( x , y )

Dengan :

2. 2. 8

Hx Vy

=

Jumlah scanning horizontal

=

Jumlah scanning vertical

I ( x, y )

=

Jumlah intensitas tiap pixel pada titik x,y

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

ALGORITMA PROGRAM DAN DIAGRAM ALIR 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 3. 3. 1

PEMBUATAN PROGRAM 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 kontrolkontrol 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. 2

Koneksi 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 Settings\didik\My Documents\tahap latihan\didik.mdb;Persist Security Info=False

and

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 = d = c = b = Do

Text3.Text 10 1100 0

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 = VideoData(x, y).g = VideoData(x, y).b = Next Next atas = 160 For y = atas To atas For x = 0 To 319 VideoData(x, y).R = VideoData(x, y).g = VideoData(x, y).b = Next Next

0 255 255

0 255 255

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 = VideoData(x, y).g = VideoData(x, y).b = Next Next atas = 160 For y = atas To atas For x = 0 To 319 VideoData(x, y).R = VideoData(x, y).g = VideoData(x, y).b = Next Next

0 255 255

0 255 255

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 V V 1 1 V V 2 2 V V 3 3 X V 4 4 Lokasi : Lokasi : V V 5 5 Ruangan Ruangan V V 6 6 (tanpa (dengan X V 7 7 lampu) lampu) X V 8 8 V V 9 9 Waktu : Waktu : V V Siang Hari Siang Hari 10 10 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 Lokasi : Lokasi : 5 V 5 V Ruangan Ruangan 6 V 6 V (tanpa (dengan 7 V 7 V lampu) lampu) 8 V 8 V 9 X 9 V Waktu : Waktu : Siang Hari Siang Hari 10 X 10 V 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 a b c d e f g h i j 4. 3

ASCII (Hex) 61 62 63 64 65 66 67 68 69 6A

PERINTAH Semen Buka Geser Kiri Semen Tutup Geser Kanan Konveyor On Proses Off Pelurus On Pelurus Off Robot Naik Robot Rem

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 1 2 3 4 5 6 7 8 9 10

Waktu 20 det 21 det 21 det 23 det 20 det 32 det 20 det 21 det 21 det 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] [2] [3]

[4] [5]

Agus Sastro, Autonomous Vehicle dengan Kamera Sub Judul Neural Network Algoritma, TA EEPIS ITS 2004. Ario Suryo Kusumo,Drs , Microsoft Visual Basic 6.0 , Elex Media Komputindo, Jakarta 2000. Dewi Supriatin Resmah, Perancangan dan Implementasi Robot Banteng yang Mengikuti Warna Merah sebagai Acuannya Sub Judul Image Processing, TA EEPIS ITS 2004. Noel Jerke, The Complete Reference Visual Basic 6, Osborne, 2000. 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 : [email protected] 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 Dim lNFrames As Long

' Handle to the Capture Windows ' 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 Public Public Public

lwndC As Long ' Handle ka angguy nagkap Windows fps As Byte fpsL As Single 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 = VideoData(x, y).g = VideoData(x, y).b = Next Next atas = 160 For y = atas To atas For x = 0 To 319 VideoData(x, y).R = VideoData(x, y).g = VideoData(x, y).b = Next Next Dim Ymax, Ymin As Integer Ymax = Ymin = -1

0 255 255

0 255 255

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

Related Documents

Algoritma Posisi Batu Bata
December 2019 17
Batu Bata 2.docx
July 2020 16
Bata
May 2020 15
Bata
May 2020 20
Algoritma
November 2019 46