RANCANG BANGUN PROTOTIPE ALAT DETEKSI JARAK DENGAN SENSOR PING PADA MOBIL PENGANGKUT BARANG BERBASIS ARDUINO Skripsi Sebagai Salah Satu Syarat untuk Memperoleh Gelar Sarjana Komputer Fakultas Sains Dan Teknologi Universitas Islam Negeri Syarif Hidayatullah Jakarta Oleh : Nurul Uswah Azizah 109091000036 PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI UIN SYARIF HIDAYATULLAH JAKARTA 2014 M / 1435 i ii iii LEMBAR PERNYATAAN DENGAN INI SAYA MENYATAKAN BAHWA SKRIPSI INI BENAR – BENAR HASIL KARYA SAYA SENDIRI YANG BELUM PERNAH DIAJUKAN SEBAGAI SKRIPSI ATAU KARYA ILMIAH PADA PERGURUAN TINGGI ATAUPUN LEMBAGA MANAPUN. Jakarta, Juni 2014 Nurul Uswah Azizah NIM. 109091000036 iv ABSTRAK Nurul Uswah Azizah – 109091000036, Rancang Bangun Prototipe Alat Deteksi Jarak pada Mobil Pengangkut Barang Berbasisi Arduino. Dibimbing oleh Nenny Anggraini, S.Kom,MT dan Feri Fahrianto, M,Sc. Sistem pergudangan erat kaitannya dengan proses pemindahan dan penempatan komponen dan produk dari dan menuju tempat tertentu. Pada umumnya proses pemindahan ini menggunakan mobil pengangkut barang atau forklift. Forklift dapat membantu manusia mengangkut barang dengan bobot berat dan ukuran yang cukup besar. Akan tetapi, penggunaan forklift memiliki beberapa kelemahan seperti proses kerja yang lambat dan seringnya terjadi kecelakaan kerja, tingkat kerusakan barang yang tinggi karena barang yang diangkut menghalangi penglihatan yang dapat menyebabkan terbenturnya barang yang sedang diangkut. Mengutip dari website www.safetyposter.co.id bahwa jumlah kecelakaan kerja di Amerika pada sektor transportasi dan pergudangan tahun 2010 terjadi 661 kasus dan 30 % di akibatkan karena kecelakaan pada forklift. Oleh karena itu, penulis mencoba memberikan solusi atas permasalahn tersebut dengan membuat sebuah prototipe alat deteksi jarak menggunakan mikrikontroler arduino. Alat yang penulis rancang menggunakan sensor PING dan mini servo sebagai input untuk pembacaan jarak dan penentu sudut, serta buzzer dan pemrograman Java sebagai output yang menghasilkan indikator suara beserta grafik polar. Penulis menggunakan metode studi lapangan dan studi literatur untuk proses pengumpulan data penelitian sedangkan dalam pengembangan sistem penulis menggunakan metode prototipe. Dari hasil penelitian ini dapat disimpulkan bahwa pembacaan jarak oleh sensor PING bekerja dengan baik, namun masih terdapat jeda antara pergerakan pengangkut barang dengan jarak yang tampil di layar. Kata Kunci : Mobil Angkut, Deteksi Jarak, Prototipe, Sensor PING v Arduino, KATA PENGANTAR Segala puji syukur penulis panjatkan kehadirat Allah SWT, yang telah melimpahkan rahmat dan karunia-Nya, sehingga penulis dapat menyelesaikan Skripsi ini dengan judul “Rancang Bangun Prototipe Alat Deteksi Jarak pada Mobil Pengangkut Barang Berbasis Arduino”. Maksud utama dari penulisan Skripsi ini adalah sebagai syarat untuk memperoleh gelar Sarjana Strata Satu (S1) di Program Studi Teknik Informatika Fakultas Sains dan Teknologi UIN Syarif Hidayatullah Jakarta. Mengingat keterbatasan kemampuan penulis, tentu saja skripsi ini masih jauh dari kesempurnaan dan masih banyak kekurangan. Hal ini disebabkan kemampuan penulis yang terbatas dan kurangnya pengalaman dalam penulisan baik materi dan teknik. Oleh karena itu kritik yang sifatnya membangun dan saran demi sempurnanya skripsi ini penulis terima dengan senang hati. Dalam penyusunan skripsi ini, penulis mendapat bimbingan dan bantuan baik dari segi moral dan material dari berbagai pihak. Oleh karena itu, pada kesempatan ini penulis mengucapkan terima kasih kepada : 1. Bapak Dr. Agus Salim, M. Si selaku Dekan Fakultas Sains dan Teknologi. 2. Ibu Nurhayati, Ph.D selaku Ketua Program Studi Teknik Informatika dan Bapak Hendra Bayu Suseno M.Kom, selaku Sekretaris Program Studi Teknik Informatika. 3. Ibu Nenny Anggraini, S.Kom, MT, selaku Dosen Pembimbing I dan Bapak Feri Fahrianto,M,Sc selaku Dosen Pembimbing II Fakultas Sains dan vi Teknologi UIN Syarif Hidayatullah Jakarta yang secara bijaksana dan kooperatif telah memberikan bimbingan, bantuan, dan dukungan baik secara moral maupun teknis dan telah memberikan semangat, dukungan, dan motivasi selama melakukan studi. 4. Bapak Hata Maulana, S.Si, MTI selaku Dosen Penguji I dan Ibu Fenty Eka Muzayyana A, M.kom selaku Dosen Penguji II Fakultas Sains dan Teknologi UIN Syarif Hidayatullah Jakarta yang secara bijaksana dan kooperatif telah menguji skripsi saya, memberikan arahan dan saran serta bimbingan perbaikan serta dukungan moral maupun teknis. 5. Mamah, Bapak serta kedua Kakak tersayang dan keponakan tercinta yang selalu memberikan doa, dukungan semangat dan motivasi dalam segala hal hingga terselesaikannya skripsi ini. Love You All. 6. Sahabat – sahabatku, Fitri Sani Najiha, Cholifah Nur Asri, Devi Tri Lestari, Gita Cipta Puspita, Joko Budi Pratomo, Nurul Fauziah, dan semua teman – teman TI angkatan 2009, yang telah memberikan semangat, dukungan, dan bantuan kepada penulis selama kuliah serta hingga skripsi ini selesai. Perjuangan belum selesai kawan! 7. Reza Firdaus Machfudz yang selalu memberikam dukungan dan semangat kepada penulis, serta menjadi pendengar setia cerita dalam suka maupun duka. 8. Semua pihak yang secara langsung maupun tidak langsung membantu penulis selama kegiatan hingga penyelesaian skripsi ini. Pada kesempatan ini penulis juga memohon maaf yang sebesar – besarnya dan menyadari bahwa skripsi ini belumlah sempurna, maka penulis sangat vii mengharapkan kritik dan saran dari pembaca dan pihak lain untuk penulisan skripsi selanjutnya yang lebih baik. Akhir kata penulis berharap agar skripsi ini dapat bermanfaat bagi pembaca sekalian. Amiin Jakarta, Juli 2014 Nurul Uswah Azizah 109091000036 viii DAFTAR ISI Halaman Halaman Judul........................................................................................... i Halaman Pengesahan Pembimbing .......................................................... ii Lembar Pengesahan Ujian......................................................................... iii Lembar Pernyataan.................................................................................... iv Abstrak ...................................................................................................... v Kata Pengantar .......................................................................................... vi Daftar Isi.................................................................................................... ix Daftar Gambar........................................................................................... xiv Daftar Tabel .............................................................................................. xvi Daftar Lampiran ........................................................................................ xvii BAB I PENDAHULUAN........................................................................ 1 1.1. Latar Belakang ............................................................................. 1 1.2 Rumusan Masalah ......................................................................... 4 1.3 Batasan Masalah............................................................................ 4 1.4 Tujuan Penelitian ......................................................................... 5 1.5 Manfaat Penelitian ........................................................................ 5 1.6 Metodologi Penelitian ................................................................... 6 ix 1.7 Sistematika Penulisan ................................................................... 7 BAB II LANDASAN TEORI ................................................................. 8 2.1 Pengertian Rancang Bangun ....................................................... 8 2.2 Prototipe ........................................................................................ 9 2.2.1 Definisi Prototipe ................................................................. 9 2.2.2 Karakteristik Metode Prototipe ............................................ 12 2.2.3 Keunggulan dan Kelemahan Metode Prototipe ................... 13 2.3 Alat Deteksi Jarak ......................................................................... 14 2.3.1 Pengertian Sensor................................................................. 14 2.3.2 Sensor Ultrasonik ................................................................. 15 2.3.3 Sensor Jarak Ultrasonik PING ............................................. 17 2.3.4 Sensor Jarak Ultrasonik Devantech SRF05 ......................... 18 2.3.4 Prinsip Kerja Sensor............................................................. 19 2.4 Mobil Pengangkut (Material Transport) ...................................... 20 2.4.1 Pemindahan Dalam Jumlah Banyak..................................... 21 2.4.2 Pemindahan Barang Dalam Jumlah Kecil Secara Terus Menerus .......................................................... 23 2.5 Embedded System.......................................................................... 24 2.6 Mikrokontroler .............................................................................. 26 2.6.1 Perbedaan Mikrokontroler dengan Mikroprosesor .............. 27 2.6.2 Aplikasi Mikrokontroler ...................................................... 28 x 2.6.3 Perkembangan Mikrokontroler ............................................ 29 2.6.4 Mikrokontroler Arduino....................................................... 29 2.7 Pemrograman Java ........................................................................ 31 2.7.1 Sejarah Singkat Pemrograman Java ..................................... 32 2.7.2 Pemrograman Prosedural dan Pemrograman Berorientasi Objek ............................................................... 33 2.7.3 Sifat – sifat Pemrograman Java............................................ 35 2.7.4 Compiler dan Interpreter Java.............................................. 36 2.7.5 Konsep Pemrograman Java .................................................. 39 2.7.6 Paket (Package) ................................................................... 44 2.7.7 Object Oriented Programming (OOP)................................. 46 2.7.8 Grafical User Interface (GUI) ............................................. 49 2.8 Metode Penelitian.......................................................................... 52 2.8.1 Metode Pengumpulan Data .................................................. 52 2.8.2 Metode Pengembangan Sistem ............................................ 55 BAB III METODOLOGI PENELITIAN ............................................. 58 3.1 Metode Penelitian.......................................................................... 58 3.2 Teknik Pengumpulan Data............................................................ 58 3.2.1 Studi Lapangan..................................................................... 59 3.2.2 Studi Pustaka........................................................................ 59 3.2.3 Studi Literatur ...................................................................... 60 xi 3.3 Metode Pengembangan Sistem Prototipe...................................... 64 3.3.1 Pemilahan Fungsi ................................................................. 64 3.3.2 Membangun Prototyping ..................................................... 65 3.3.3 Evaluasi Prototyping............................................................ 65 3.3.4 Mengkodekan Sistem ........................................................... 65 3.3.5 Menguji Sistem .................................................................... 66 3.3.6 Evaluasi Sistem .................................................................... 66 3.3.7 Penggunaan Sistem .............................................................. 66 3.4 Peralatan Penelitian....................................................................... 67 3.5 Kerangka Penelitian ...................................................................... 68 BAB IV HASIL DAN PEMBAHASAN ................................................ 69 4.1 Pengembangan Prototipe............................................................... 69 4.1.1 Pengumpulan Kebutuhan ..................................................... 69 4.1.2 Membangun Prototyping ..................................................... 70 4.1.3 Evaluasi Prototyping............................................................ 73 4.1.4 Mengkodekan Sistem ........................................................... 74 4.2 Uji Coba ........................................................................................ 82 4.2.1 Uji Kepekaan Sensor PING ................................................. 82 4.2.2 Uji Coba Interface (GUI) ..................................................... 84 4.2.3 Uji Coba Keseluruhan .......................................................... 87 4.2.4 Uji Kecepatan Antara Forklift dan Prototipe ....................... 88 xii 4.3 Analisis.......................................................................................... 88 BAB V PENUTUP................................................................................... 90 5.1 Kesimpulan ................................................................................... 90 5.2 Saran.............................................................................................. 91 DAFTAR PUSTAKA ........................................................................................ LAMPIRAN....................................................................................................... xiii DAFTAR GAMBAR Halaman Gambar 2.1 Prinsip Kerja Sensor Ultrasonik ............................................ 16 Gambar 2.2 Prinsip Pemantulan Sensor Ultrasonik.................................. 17 Gambar 2.3 Sensor Jarak Ultrasonik PING .............................................. 17 Gambar 2.4 Prinsip Kerja Sensor PING ................................................... 19 Gambar 2.5 Susunan Standar Embedded System ...................................... 26 Gambar 2.6 Arduino UNO........................................................................ 31 Gambar 2.7 Proses Kompilasi................................................................... 37 Gambar 3.1 Kerangka Penelitian .............................................................. 68 Gambar 4.1 Diagram Blok ........................................................................ 70 Gambar 4.2 Alur Proses Pembacaan Jarak Pada Prototipe ....................... 71 Gambar 4.3 Prototipe Awal....................................................................... 72 Gambar 4.4 Rangkaian Alat...................................................................... 74 Gambar 4.5 Sensor PING Menerima Input............................................... 83 Gambar 4.6 Hasil Pembacaan Sensor PING pada Serial Monitor ........... 83 xiv Gambar 4.7 Hasil Pengukuran Manual Menggunakan Penggaris ............ 84 Gambar 4.8 Tampilan Grafik Polar........................................................... 84 Gambar 4.9 Tampilan Keterangan Sudut dan Jarak Secara Digital.......... 85 Gambar 4.10 Tampilan Pemilihan COM port dan Tombol On/Off.......... 85 Gambar 4.11 Tampilan Console dari Data yang Diambil Langsung pada Serial Monitor Arduino.............................................. 86 Gambar 4.12 Tampilan Keseluruhan ........................................................ 86 Gambar 4.13 Pemasangan Sensor PING dengan Dua Buah Micro Servo 87 Gambar 4.14 Tampilan Interface (GUI) Saat Program Dijalankan .......... 87 xv DAFTAR TABEL Halaman Tabel 3.1 Hasil Studi Literatur.................................................................. 61 Tabel 4.1 Alat dan Bahan.......................................................................... 72 xvi DAFTAR LAMPIRAN Halaman Lampiran 1. Source Code Program Java................................................... L-1 Lampiran 2. Source Code Program Arduino ............................................ L-2 Lampiran 3. Tampilan Software Arduino ................................................ L-3 Lampiran 4. Form Perbaikan Sidang Skripsi ............................................ L-4 xvii BAB I PENDAHULUAN 1.1 Latar Belakang Sistem pergudangan berhubungan dengan proses penempatan serta pengambilan komponen dan produk dari dan menuju tempat tertentu di dalam gudang penyimpanan pada suatu pabrik maupun industri. Salah satu contoh sederhana dari sistem ini adalah proses pemindahan dan penyusunan barang pada rak-rak penyimpanan di dalam gudang. Pada umumnya, proses pemindahan barang dilakukan dengan menggunakan forklift. Forklift dapat membantu manusia mengangkat barang dengan bobot yang berat dan ukuran yang cukup besar. Akan tetapi, penggunaan forklift memiliki beberapa kelemahan seperti proses yang kerja yang lambat dan seringnya terjadi kecelakaan kerja, tingkat kerusakan barang yang tinggi karena barang yang diangkut menghalangi penglihatan yang dapat menyebabkan terbenturnya barang yang sedang diangkut. Mengutip dari website www.safetyposter.co.id bahwa jumlah kecelakaan kerja di Amerika pada sektor transportasi dan pergudangan tahun 2010 terjadi 661 kasus dan 30 % di akibatkan karena kecelakaan pada forklift. Penerapan teknologi otomasi pada sistem pergudangan, memungkinkan pekerjaan penempatan dan pengambilan barang dilakukan dengan lebih mudah, aman serta lebih cepat dibandingkan dengan pemindahan barang secara manual. Menurut Kiki Prawiroredjo dalam penelitiannya tahun 2008, penerapan sensor pada kendaraan pribadi untuk mendeteksi jarak saat parkir dinilai dapat membantu pengendaranya dalam memarkirkan kendaraan mereka, dan dapat 1 2 mengurangi benturan dengan mobil, dari sistem yang ada pada kendaraan pribadi ini, ada baiknya jika sensor parkir ini diterapkan pada mobil pengangkut barang yang saat ini digunakan di pergudangan dengan penambahan indikator suara yang berfungsi sebagai pengingat jarak, dan tampilan grafik pada layar PC yang dapat dimanfaatkan sebagai acuan untuk mengevaluasi kinerja operator. Seiring dengan perkembangan teknologi di berbagai aspek kehidupan manusia, maka berkembang pula dengan ketersediaan perangkat keras (hardware) maupun perangkat lunak (software) yang semakin canggih dan meningkat kemampuannya. Salah satunya yaitu berkembangnya suatu rangkaian sistem elektronik digital yang merupakan bagian dari sebuah sistem yang lebih besar atau dalam kata lain sering di sebut embedded system atau sistem tertanam. Kata embedded menunjukan bahwa dia merupakan bagian yang tidak dapat berdiri sendiri. Embedded system biasanya merupakan application specific system yang di desain khusus untuk aplikasi tertentu. Secara fisik embedded system berkisar dari perangkat portable seperti jam digital dan MP3 player, untuk instalasi seperti lampu lalu lintas, pengontrol pabrik, bahkan saat ini diterapkan pada mobil pribadi yang dapat digunakan saat parkir. Kompleksitas bervariasi dari rendah, dengan satu mikrokontroler chip, hingga sangat tinggi dengan beberapa unit. Salah satu mikrokontroler yang paling popular dan banyak digunakan saat ini adalah arduino. Arduino merupakan sebuah platform elektronik yang open source, berbasis pada software dan hardware yang fleksibel dan mudah digunakan. Arduino adalah sebuah papan rangkaian yang kecil, 2 3 seukuran kartu nama, yang dapat diprogram dan mampu bekerja seperti layaknya sebuah komputer. Selain perangkat Arduino yang popular saat ini, banyak pula bermunculan berbagai bahasa pemrograman yang ada pada komputer saat ini. Salah satu bahasa pemrograman komputer adalah bahasa pemrograman Java. Bahasa pemrograman Java adalah bahasa pemrograman berorientasi objek (PBO) atau Object Oriented Programming (OOP). Java bersifat netral, tidak bergantung pada suatu platform, dan mengikuti prinsip WORA ( Write Once and Run Anywhere). Beberapa bahasa pemrograman, seperti Basic, Fortan, Pascal, COBOL, C, ProLog, dan yang lainnya harus bergantung pada suatu platform karena harus mengkompilasi program tersebut pada setiap sistem operasi yang ditentukan jika ingin menggunakan hasil program tersebut. Berdasarkan paparan yang telah dijelaskan, penulis mencoba untuk merancang sebuah prototipe alat deteksi jarak dengan perpaduan antara arduino, sensor PING dan Java. Hal ini difungsikan agar alat tersebut dapat berjalan pada mobil atau alat pemindah barang sesuai dengan yang penulis harapkan. Dalam proses pemindahan barang, alat di letakan pada mobil pengangkut barang menggunakan sensor ultrasonik sehingga alat penganggkut barang tersebut dapat terus berjalan tanpa menabrak barang – barang disekitarnya. Sensor yang bekerja sebagai navigasi adalah sensor ultrasonik dimana sensor ini mampu mendeteksi adanya objek berkisar 3cm – 3m, jarak yang di deteksi sensor menjadi acuan bagi prototipe tersebut, hal ini yang menjadi alasan penulis untuk menentukan judul tugas akhir, oleh karena itu dibuatlah tugas akhir 3 4 dengan judul “Rancang Bangun Prototipe Alat Deteksi Jarak dengan Sensor PING pada Mobil Pengangkut Barang Berbasis Arduino”. 1.2 Rumusan Masalah Berdasarkan latar belakang yang telah dijelaskan dapat dirumuskan bahwa permasalahan yang ada adalah bagaimana mengatasi masalah pada forklift seperti kemungkinan benturan antara barang yang diangkut dengan benda di sekitarnya serta tingkat kerusakan benda yang sangat tinggi dengan membuatkan sebuah alat prototipe deteksi jarak dengan menggunakan Mikrokontroler Arduino, Sensor PING Ultrasonik dan bahasa pemrograman Java. 1.3 Batasan Masalah Penulis membatasi penulisan skripsi ini antara lain pada : 1. Pembuatan sistem menggunakan mikrokontroler Arduino Uno. 2. Sensor yang digunakan adalah sensor jarak ultrasonik PING, dengan kapasitas 3cm – 3m. 3. Pada penelitian ini sistem yang dirancang hanya digunakan pada sistem pergudangan. 4. Informasi yang disampaikan berupa : 1. Jarak sensor dengan benda hingga 3m. 2. Hasil yang dibaca oleh sensor ditampilkan dalam bentuk gambar atau grafik dan indikator suara. 5. Hasil ditampilkan pada layar monitor. 4 5 1.4 Tujuan Penelitian Berdasarkan uraian latar belakang masalah tersebut, maka tujuan penulisan skripsi ini : 1. Membuat aplikasi sederhana yang bersifat embedded sistem dengan menggunakan mikrokontroler Arduino Uno. 2. Membuat sebuah alat deteksi jarak dengan sensor PING ultrasonik dan Arduino Uno untuk membantu mengurangi tingkat kecelakaan kerja atau benturan dengan benda lain pada forklift. 1.5 Manfaat Penelitian Manfaat yang didapat dari penulisan skripsi ini adalah : 1. Bagi Penulis Menambah wawasan tentang bagaimana aplikasi yang bersifat embedded sistem dengan menggunakan mikrokontroler Arduino Uno. 2. Bagi Universitas Memberikan kontribusi sosial dengan nyata, bahwa aplikasi yang dibuat oleh mahasiswanya dapat berguna bagi masyarakat secara langsung. 3. Bagi Pengguna Dapat memberikan kemudahan dalam mengatur jarak barang – barang yang terdapat di gudang penyimpanan. 5 6 1.6 Metodologi Penelitian Metode yang digunakan penulis dalam penulisan bagian metodelogi penelitian dibagi menjadi dua, yaitu metode pengumpulan data dan metode pengembangan. Berikut penjelasan kedua metode tersebut : 1.6.1 Metode Pengumpulan Data Merupakan metode yang digunakan penulis dalam melakukan analisis data dan menjadikan informasi yang akan digunakan untuk mengetahui permasalahan yang dihadapi. 1. Studi Pustaka 2. Studi lapangan dengan observasi 3. Studi literatur sejenis. 1.6.2 Metode Pengembangan Sistem Pada penelitian ini penulis menggunakan metode pengembangan sistem Prototipe. Karena dengan metode ini penulis dapat merancang sebuah alat sesuai dengan kebutuhan user dengan cepat dan tepat. Adapun tahapan yang menjadi karakteristik pengembangan metode Prototipe adalah sebagai berikut : a. Pemilihan fungsi. b. Penyusunan Sistem. c. Evaluasi. d. Penggunaan Selanjutnya. 6 7 1.7 Sistematika Penulisan Agar lebih mempermudah perumusan dan pemecahan masalah yang akan dibahas pada tugas akhir ini, maka penulis menguraikan tahapan-tahapan dalam penyusunan laporan ini sebagai berikut: BAB I PENDAHULUAN Bab ini membahas latar belakang penulisan skripsi, batasan masalah, tujuan, manfaat, metodelogi dan sistematika penulisan. BAB II LANDASAN TEORI Bab ini akan membahas tentang teori – teori yang diperlukan dalam penulisan skripsi ini. BAB III METODOLOGI PENELITIAN Dalam bab ini akan diuraikan metode – metode yang digunakan dalam penulisan yang berhubungan dengan judul skripsi ini. BAB IV ANALISIS DAN PEMBAHASAN Dalam bab ini akan dijelaskan bagaimana merancang dan membangun sebuah prototipe alat deteksi jarak menggunakan Mikrokontroler Arduino Uno dan bahasa pemrograman Java. BAB V PENUTUP Bab ini berisi kesimpulan secara keseluruhan yang diperoleh dari hasil analisis dan perancangan serta saran-saran untuk penerapan dan pengembangan lebih lanjut sistem yang bersangkutan. 7 BAB II LANDASAN TEORI Pada bab ini akan dijelaskan mengenai landasan teori dan alat yang digunakan pada penelitian skripsi ini. Penjelasan yang diberikan pada bab ini diharapkan dapat membantu peneliti serta pembaca dalam memahami teori yang dipakai dalam laporan penelitian ini. Teori yang dijelaskan pada bagian ini meliputi teori rancang bangun, prototipe, embedded system, mikrokontroler Arduino, sensor, dan Pemrograman Java. 2.1 Pengertian Rancang Bangun Rancang merupakan serangkaian prosedur untuk menerjemahkan hasil analisa dari sebuah sistem ke dalam bahasa pemrograman untuk mendeskripsikan dengan detail bagaimana komponen-komponen sistem diimplementasikan (Pressman, 2002). Rancangan sistem adalah penentuan proses dan data yang diperlukan oleh sistem baru (McLeod, 2002). Perancangan adalah kegiatan yang memiliki tujuan untuk mendesain sistem baru yang dapat menyelesaikan masalah-masalah yang dihadapi perusahaan yang diperoleh dari pemilihan alternatif sistem yang terbaik (Ladjamudin, 2005). Sedangkan pengertian bangun atau pembangunan sistem adalah kegiatan menciptakan sistem baru maupun mengganti atau memperbaiki sistem yang telah ada baik secara keseluruhan maupun sebagian (Pressman, 2002). Bangun sistem adalah membangun sistem informasi dan komponen yang didasarkan pada spesifikasi desain (Whitten et al, 2004). 8 9 Dengan demikian pengertian rancang bangun merupakan kegiatan menerjemahkan hasil analisa ke dalam bentuk paket perangkat lunak kemudian menciptakan sistem tersebut ataupun memperbaiki sistem yang sudah ada. 2.2 Prototipe 2.2.1 Definisi Prototipe Prototyping menurut Houde dan Hill merupakan salah satu metode pengembangan perangkat lunak yang banyak digunakan. Dengan metode prototyping ini pengembang dan pelanggan dapat saling berinteraksi selama proses pembuatan sistem. Sering terjadi seorang pelanggan hanya mendefinisikan secara umum apa yang dikehendakinya tanpa menyebutkan secara detail output apa saja yang dibutuhkan, pemrosesan dan data – data apa saja yang dibutuhkan. Sebaliknya disisi pengembang kurang memperhatikan efisiensi algoritma, kemampuan sistem operasi dan interface yang menghubungkan manusia dan komputer. Untuk mengatasi ketidakserasian antara pelanggan dan pengembang maka dibutuhkan kerjasama yang baik antara keduanya sehingga pengembang akan mengetahui dengan benar apa yang diinginkan pelanggan dengan tidak mngesampingkan segi – segi teknis dan pelanggan akan mengetahui proses – proses dalam menyelesaikan sistem yang diinginkan. Dengan demikian akan menghasilkan sistem sesuai dengan jadwal waktu penyelesaian yang telah ditentukan. Prototipe merupakan pendekatan literatif dalam pengembangan sistem yang dibuat. Secara umum tujuan pengembangan sistem informasi adalah untuk 9 10 memberikan kemudahan dalam penyimpanan informasi, mengurangi biaya dan menghemat waktu, meningkatkan pengendalian, mendorong pertumbuhan, dan meningkatkan produktifitas. Dalam beberapa tahun terakhir ini, peningkatan produktifitas organisasi ini dibantu dengan berkembangnya teknologi komputer baik hardware maupun softwarenya. Tetapi tidak semua kebutuhan sistem informasi dengan komputer itu dapat memenuhi kebutuhan dan menyelesaikan masalah yang dihadapi organisasi. Keterbatasan sumber daya dan anggaran pemeliharaan memaksa para pengembang sistem informasi untuk menemukan jalan untuk mengoptimalkan kinerja sumber daya yang telah ada. Karakteristik dari suatu sistem informasi manajemen yang lengkap tergantung dari masalah yang dihadapi, proses pengembangannya dan tenaga kerja yang akan dikembangkannya. Seiring dengan perkembangan permasalahan karena berubahnya lingkungan yang berdampak kepada perusahaan maka yang menjadi parameter proses pengembangan sistem informasi yaitu masalah yang dihadapi, sumber daya yang tersedia dan perubahan, sehingga hasil pengembangan sisitem informasi manajemen, baik yang diharapkan oleh perorangan maupun oleh organisasi turut berubah. Perubahan tersebut pada akhirnya menimbulkan ketidakpastian dan menambah kompleks/rumit masalah yang dihadapi oleh para analis sistem informasi. Metode tradisional seperti SDLC (System Development Life Cycle) dianggap tidak lagi mampu memenuhi tantangan perubahan dan kompleksnya masalah yang dihadapi tersebut. Sekitar awal tahun delapan puluhan, para professional dibidang sistem informasi 10 memperkenalkan suatu metode 11 pengembangan sistem informasi baru, yang dikenal dengan nama metode prototyping. Metode prototyping sebagai suatu paradigma baru dalam pengembangan sistem informasi manajemen, tidak hanya sekedar suatu evolusi dari metode pengembangan sisitem informasi yang sudah ada, tetapi sekaligus merupakan revolusi dalam pengembangan sistem informasi manajemen. Metode ini dikatakan revolusi karena merubah proses pengembangan sistem informasi yang lama (SDLC). Menurut literatur, yang dimaksud dengan prototipe adalah “model pertama” yang sering digunakan oleh perusahaan industry yang memproduksi barang secara masal. Tetapi dalam kaitannya dengan sisitem informasi definisi kedua dari Webster yang menyebutkan bahwa prototipe tersebut adalah sistem informasi yang menggambarkan hal – hal penting dari sistem informasi yang akan datang. Prototipe sistem informasi bukanlah merupakan sesuatu yang lengkap, tetapi sesuatu yang harus dimodifikasi kembali, dikembangkan, ditambahkan, atau digabungkan dengan sistem informasi yang lain bila perlu. Dalam beberapa hal pengembangan software berbeda dengan produk – produk manufaktur, setiap tahap atau fase pengembangan sistem informasi merupakan bagian yang tidak terpisahkan dari seluruh proses yang harus dilakukan. Proses ini umumnya hanya untuk satu produk dan karakteristik dari produk tersebut tidak dapat ditentukan secara pasti seperti produk manufaktur, sehingga penggunaan “model pertama” bagi pengembangan software tidaklah 11 12 tepat. Istilah prototyping dalam hubungannya dengan pengembangan software sistem informasi manajemen lebuh merupakan suatu proses bukan prototipe suatu produk. 2.2.2 Karakteristik Metode Prototipe Ada empat langkah yang menjadi karakteristik metode prototyping yaitu : 1. Pemilahan Fungsi Mengacu pada pemilahan fungsi yang harus ditampilkan oleh prototyping. Pemilahan harus selalu dilakukan berdasarkan pada tugas – tugas yang relevan yang sesuai dengan contoh kasus yang akan diperagakan. 2. Penyusunan Sistem Informasi Bertujuan untuk memenuhi permintaan akan tersedianya prototipe. 3. Evaluasi 4. Penggunaan Selanjutnya Jenis – jenis prototyping sendiri meliputi : 1. Feasibility prototyping – digunakan untuk menguji kelayakan dari teknologi yang akan digunakan untuk sistem informasi yang akan disusun. 2. Requitment prototyping – digunakan untuk mengetahui kebutuhan aktivitas user. 12 13 3. Desain prototyping - digunakan untuk mendorong perancanngan sistem informasi yang akan digunakan. 4. Implementation prototyping – merupakan lanjutan dari rancangan prototipe, dimana prototipe ini langsung disusun sebagai suatu sistem informasi yang akan digunakan. 2.2.3 Keunggulan dan Kelamahan Metode Prototipe Keunggulan 1. End User dapat berpartisipasi aktif. 2. Penentuan kebutuhan lebih mudah diwujudkan 3. Mempersingkat waktu pengembangan sistem informasi. Kelemahan 1. Proses analisis dan perancangan terlalu singkat. 2. Mengesampingkan alternatif pemecahan masalah. 3. Kurang fleksibel dalam menghadapi perubahan. 4. Prototipe yang dihasilkan tidak selamanya mudah dirubah. 5. Prototipe terlalu cepat selesai. (Houde dan Hill ,2004) 13 14 2.3 Alat Deteksi Jarak Alat deteksi jarak atau detektor erat kaitannya dengan Radar. Radar (Radio Detection and Ranging) merupakan sistem gelombang elektromagnetik yang digunakan untuk mendeteksi, mengukur jarak dan membuat map bendabenda seperti pesawat terbang, kendaraan bermotor dan informasi cuaca. Detektor ini berupa sebuah sensor yang bekerja secara otomatis berdasarkan pemilihan jenis sensor dan pemrograman pada sensor tersebut. 2.3.1 Pengertian Sensor Sensor dan transducer merupakan peralatan atau komponen yang mempunyai peranan penting dalam sebuah sistem pengaturan otomatis. Ketepatan dan kesesuaian dalam memilih sensor akan sangat menentukan kinerja dari sistem pengaturan secara otomatis. Secara umum berdasarkan fungsi dan penggunaannya sensor dapat dikelompokan menjadi 3 bagian yaitu : a. Sensor thermal (panas) b. Sensor mekanis c. Sensor optic (cahaya) Sensor mekanis adalah sensor yang mendeteksi perubahan gerak mekanis, seperti berat benda, perpindahan atau pergeseran posisi, gerak lurus dan melingkar, tekanan, gaya, aliran, level, dan sebagainya. Besaran masukan pada kebanyakan sisitem kendali adalah bukan besaran listrik, seperti besaran fisika, kimia, mekanis dan sebagainya, untuk memakaikan besaran listrik pada sistem pengukuran, atau sistem manipulasi atau sistem 14 15 pengontrolan. Fenomena fisik mampu menstimulus sensor menghasilkan sinyal elektrik meliputi berat/beban, temperatur, tekanan, gaya, medan magnet cahaya, pergerakan dan sebagainya. Dengan definisi seperti ini maka sensor merupakan alat elektronik yang banyak dipakai dalam kehidupan manusia saat ini. Bagaimana tekanan jari kita pada keyboard komputer, remote televisi, lantai lift yang kita tuju menghasilkan perubahan layar komputer atau televisi, serta gerakan lift adalah contoh mudah sensor secara luas. Hampir seluruh kehidupan sehari – hari saat ini tidak ada yang tidak melibatkan sensor. Tidak mengherankan jika sensor banyak disebut sebagai panca indera-nya alat elektronik (William, 2004). 2.3.2 Sensor Ultrasonik Sensor ultrasonik adalah sensor yang bekerja berdasarkan prinsip pantulan gelombang suara dan digunakan untuk mendeteksi suatu objek tertentu di depannya, frekuensi kerjanya pada daerah atas gelombang suara dari 40 KHz hingga 400 KHz. Sensor ultrasonik terdiri dari dua unit , yaitu unit pemancar dan unit penerima. Struktur unit pemancar dan penerima sangatlah sederhana, sebuah kristal piezoelectric dihubungkan dengan mekanik jangkar dan hanya dihubungkan dengan diafragma penggetar. Tegangan bolak – balik yang memiliki frekuensi 40 KHz – 400 KHz diberikan pada plat logam. Struktur atom dari kristal piezoelectric akan berkontraksi (mengikat), mengembang atau menyusut terhadap polaritas tegangan yang diberikan dan ini disebut efek piezoelectric. 15 16 Kontraksi yang terjadi diteruskan ke diafragma penggetar sehingga terjadi gelombang ultrasonik yang dipancarkan ke udara (tempat sekitarnya). Pantulan gelombang ultrasonik akan terjadi bila ada objek tertentu dan pantulan gelombang ultrasonik akan diterima kembali oleh unit sensor penerima. Selanjutnya unit sensor penerima akan menyebabkan diafragma penggetar akan bergetar dan efek piezoelectric menghasilkan sebuah tegangan bolak-balik dengan frekuensi yang sama. Untuk lebih jelas tentang prinsip kerja dari sensor ultrasonik dapat dilihat pada gambar 2.2 berikut : Gambar 2.1 Prinsip Kerja Sensor Ultrasonik sumber : www.parallax.com (2013) Besar amplitude sinyal elektrik yang dihasilkan unit sensor penerima tergantung dari jauh dekatnya objek yang dideteksi serta kualitas sensor pemancar dan sensor penerima. Proses sensoring yang dilakukan pada sensor ini menggunakan pantulan untuk menghitung jarak antara sensor dengan objek sasaran. Jarak antara sensor tersebut dihitung dengan cara mengalikan setengah waktu yang digunakan oleh sinyal ultrasonik dalam perjalanannya dari rangkaian pengirim sampai diterima oleh rangkaian penerima, dengan kecepatan rambat dari sinyal ultrasonik tersebut pada 16 17 media rambat yang digunakannya, yaitu udara. Prinsip pantulan dari sensor ultrasonik ini dapat dilihat pada gambar 2.3 sebagai berikut : Gambar 2.2 Prinsip Pemantulan Sensor Ultrasonik Sumber Widodo (2007) Terdapat dua jenis sensor ultasonik yang beredar dipasaran yaitu : 1. Sensor ultrasonik PING (parallax) 2. Sensor ultrasonic devantech (SRF 05 ranger) 2.3.3 Sensor Jarak Ultrasonik PING Sensor jarak ultrasonik PING adalah sensor 40 KHz produksi parallax yang banyak digunakan untuk aplikasi atau kontes robot cerdas. Kelebihan sensor ini hanya membutuhkan satu sinyal (SIG) selain jalur 5 v dan ground. Perhatikan gambar berikut : Gambar 2.3 Sensor jarak ultasonik PING sumber : www.parallax.com (2013) 17 18 Sensor PING mendeteksi jarak objek dengan cara memancarkan gelombang ultrasonik (40 KHz) selama t = 200 us sesuai dengan kontrol dari mikrokontroller pengendali (pulsa trigger dengan tout min 2 us). 2.3.4 Sensor Jarak Ultrasonik Devantech SRF05 SRF05 merupakan sensor pengukur jarak yang menggunakan ultrasonik. Dimana prinsip kerja sensor Ultrasonik ini adalah pemancar (transmitter) mengirimkan seberkas gelombang ultrasonik, lalu diukur waktu yang dibutuhkan hingga datangnya pantulan dari objek. Lamanya waktu ini sebanding dengan dua kali jarak sensor dengan objek, sehingga didapat jarak sensor dengan objek yang bisa ditentukan dengan persamaan Jarak = Kecepatan_suara × waktu_pantul/2 Sensor ultrasonik Devantech SRF05 dengan spesifikasi sebagai berikut : 1. Bekerja pada tegangan DC 5 volt. 2. Beban arus sebesar 30 mA – 50 mA. 3. Menghasilkan gelombang dengan frekuensi 40 KHz. 4. Jangkauan jarak yang dapat dideteksi 3 cm – 400 cm. 5. Membutuhkan trigger input minimal sebesar 10 uS. 6. Dapat digunakan dalam dua pilihan mode yaitu input trigger dan output echo terpasang pada pin yang berbeda atau input tirgger dan output echo terpasang dalam satu pin yang sama. 18 19 2.3.5 Prinsip Kerja Sensor Pada dasanya, Sensor PING terdiri dari sebuah chip pembangkit sinyal 40KHz, sebuah speaker ultrasonik dan sebuah mikrofon ultrasonik. Speaker ultrasonik mengubah sinyal 40 KHz menjadi suara sementara mikrofon ultrasonik berfungsi untuk mendeteksi pantulan suaranya. Sensor PING mendeteksi jarak objek dengan cara memancarkan gelombang ultrasonik (40 kHz) selama tBURST (200 μs) kemudian mendeteksi pantulannya. Sensor PING memancarkan gelombang ultrasonik sesuai dengan kontrol dari mikrokontroler pengendali (pulsa trigger dengan tOUT min. 2 μs). Gambar 2.4 Prinsip kerja sensor PING sumber : www.parallax.com (2013) Gelombang ultrasonik ini melalui udara dengan kecepatan 344 meter per detik, mengenai objek dan memantul kembali ke sensor. PING mengeluarkan pulsa output high pada pin SIG setelah memancarkan gelombang ultrasonik dan setelah gelombang pantulan terdeteksi PING akan membuat output low pada pin SIG. Lebar pulsa High (tIN) akan sesuai 19 20 dengan lama waktu tempuh gelombang ultrasonik untuk 2x jarak ukur dengan obyek. Maka jarak yang diukur adalah : S = (tIN x V) ÷ 2 Dimana : S = Jarak antara sensor ultrasonik dengan objek yang dideteksi V = Cepat rambat gelombang ultrasonik di udara (344 m/s) tIN = Selisih waktu pemancaran dan penerimaan pantulan gelombang. 2.4 Mobil Pengangkut (Material Transport) Banyak orang mengartikan material transport sama dengan material handling. Sebenarnya 2 istilah ini memiliki definisi yang berbeda. Material handling yaitu Ilmu tentang pemindahan (material transport), penyimpanan (storage), pengamanan, dan pengontrolan material. Jadi material transport merupakan bagian dari definisi material handling. Istilah lainnya yaitu material moving. Pada praktiknya, aktivitas ini menjadi sangat penting dalam operasi perusahaan. Mulai dari industri pertambangan, chemical, hingga manufacture, material transport memiliki alokasi biaya yang cukup besar. Dari sisi Suplier, ini menjadi bisnis bernilai milayaran dollar. Karena itu tidak mengherankan jika perkembangan teknologinya sangat pesat untuk memenuhi kebutuhan sistem operasi ter-modern. Pemindahan barang merupakan salah satu elemen dasar dalam implementasi Just In time , jika pemindahan barang antar stasiun kerja 20 21 berlangsung dengan cepat, efisien dan aman memiliki kontribusi terhadap peningkatan kecepatan operasi. Metode pemindahan barang terbagi dalam dua kelompok: 1. Pemindahan barang dalam jumlah banyak / besar seketika. 2. Pemindahan barang dalam jumlah kecil secara terus menerus / continue. 2.4.1 Pemindahan Barang Dalam Jumlah Banyak Pemindahan dalam jumlah besar sekaligus memiliki konsekuensi terhadap luas ruang gerak mesin pengangkut teutama untuk bermanuver. 1. Digerakan dengan tenaga manusia Berikut beberapa penerapan dalam manufacture yang menggunakan ini : a. Manual Hand Truck, yaitu alat pemindah barang secara manual atua dengan tenaga manusia. Variasi hand truck ini cukup banyak, karena rata – rata design alat menyesuaikan kondisi operasi. Bahkan untuk memenuhi kebutuhan operasi yang khusus, alat ini terkadang harus dibuat secara customized. Umumnya orang menyebut alat ini dengan trolley. b. Hydraulic Hand Trucks, jenis alat ini digunakan untuk memindahkan barang, tapi dilengkapi dengan mekanisme pengangkat secara hidraulic. Contoh alat yang umum digunakan dalam industri, hand pallet, jack pallet, scissors lift table, 21 22 hidraulic stackers, dan lain – lain. Sistem hidraulic tidak memerlukan sumber listrik dalam operasinya, sehingga penggunaannya bisa lebih luas. c. Electric Hand Trucks, jenis alat ini digunakan untuk memindahkan barang, tapi dilengkapi dengan mekanisme pengangkat/lifting secara electric/baterai. Jadi syarat utama penggunaannya stasiun kerja harus memiliki sumber arus listrik. 2. Digerakan dengan tenaga mesin Barang dipindahkan dengan menggunakan mesin-mesin penggerak , umumnya alat ini dilengkapi dengan mekanisme pengangkat secara hidraulic atau elektrik. a. Forklift, menurut penggunaan dan sumber tenaganya ada beberapa type forklift, diantaranya electric forklift, Diesel Engine Forklift, Gasoline/LPG engine forklift. Penggunaan di dalam lingkungan Industri biasanya berkisar pada beban angkat 2,5 - 5 Ton. Namun rentang daya angkat forklift yang tersedia dipasaran mulai dari 0,5 40 Ton. b. Car on Rails, heavy duty load, alat ini banyak digunakan dalam industri logam berat, karena bobot dan ukurannya yang relatif besar, dan bentuk yang rata-rata standar. Pemindahan barang tidak memungkinkan menggunakan crane, sehingga harus tetap bertumpu di lantai dengan menggunakan jalur khusus (Rail). 22 23 c. Order Picker, digunakan indoor dan dikendalikan oleh operator/driver. Umumnya bertenaga listrik atau hidrogen. Memiliki dimensi relatif kecil, sehingga mampu bermanuver didalam ruang yang terbatas. d. Crane, banyak digunakan diindustri yang berhubungan dengan pemindahan barang dengan bobot relatif berat, namun memiliki bentuk yang tidak standar. Aplikasinya banyak digunakan di area kerja Maintenance, Workshop, Perakitan mesin-mesin berat. e. Autonomous Guide Vehicles (AGV), kendaraan tanpa dikendarai namun dikendalikan oleh komputer dengan menggunakan gelombang radio atau jalur sensor. 2.4.2 Pemindahan Barang Dalam Jumlah Kecil Secara Terus Menerus Metode ini umumnya digunakan untuk memindahkan barang-barang yang ringan dan memiliki bentuk yang sama standar. Metode ini menggunakan mesin yang bersifat fixed /tetap, namun dapat dirancang untuk melalui celah yang kecil atau ketinggian yang cukup dari permukaan lantai kerja sehingga tidak mengganggu aktivitas produksi. Sistem ini menggunakan Conveyor. Conveyor adalah sistem mekanik yang befungsi memindahkan barang dari satu tempat ke tempat lain secara continue. Dari beberapa variasi, conveyor dikelompokan kedalam 4 jenis : 1. Gravity Conveyor 23 24 2. Motor Conveyor 3. Vibrating Conveyor 4. Hanging / Over Head Conveyor 2.5 Embedded System Menurut Pernantin Tarigan dalam bukunya Sistem Tertanam (Embedded System) (Tarigan, 2010), Embedded system adalah suatu sistem komputer yang dibangun untuk melakukan tujuan atau fungsi tertentu. Dalam suatu embedded system, terdapat susunan perangkat keras dan komponen-komponen mekanik. Komponen-komponen penyusun embedded system ini dikoordinasikan oleh satu atau lebih chip mikrokontroler yang telah diprogram untuk melakukan fungsi tertentu. Karena dibangun untuk fungsi tertentu saja, maka pada umumnya komponen utama embedded system dapat memiliki ukuran yang lebih kecil dengan jumlah dan jenis komponen penyusunnya sesuai dengan kebutuhan saja. Dengan demikian biaya produksinya pun dapat ditekan. Hal ini berbeda dari sistem komputer umum, seperti personal computer, yang lebih fleksibel karena dapat memenuhi berbagai kebutuhan pengguna. Sebagai konsekuensinya, personal computer harus menyediakan berbagai macam komponen yang dapat memenuhi kebutuhan pengguna secara umum. Akibatnya, ukuran komponen utamanya pun menjadi lebih besar dan biaya produksinya juga menjadi lebih mahal. Namun pada beberapa kasus, embedded system mungkin saja berupa suatu sistem dengan skala yang sangat besar dan bernilai sangat mahal, seperti embedded system pada pembangkit listrik tenaga nuklir atau sistem kontrol 24 25 pabrik. Pada intinya, yang membedakan antara embedded system dengan sistem komputer biasa adalah spesifikasi dari fungsinya. Suatu embedded system biasanya memiliki sensor-sensor sebagai masukan, seperti sensor panas, sensor posisi (GPS), sensor pengukur jarak, sensor guncangan, dan lain-lain. Selain sensor, embedded system juga dilengkapi dengan komponen yang berfungsi menanggapi hasil penerimaan sensor setelah diproses, yaitu dapat berupa motor penggerak, layar, ataupun menggunakan modem untuk berkomunikasi dengan suatu server. Perangkat masukan dan keluaran dalam suatu embedded system dapat bersifat digital jika perangkat tersebut menerima masukan atau memberi hasil dalam bentuk digital atau analog jika masukan maupun keluarannya berupa sinyal analog. Semua perangkat masukan dan keluaran dari embedded system ini dikoordinasikan oleh logika yang telah diprogram ke dalam mikrokontroller yang ditanamkan dalam sistem ini, atau lebih dikenal sebagai firmware. Inilah inti dari pembuatan suatu embedded system, karena program dalam mikrokontroler itulah yang menentukan pemrosesan dan hasil yang dikeluarkan. Berikut ini adalah susunan standar dari suatu embedded system: Gambar 2.5 Susunan Standar Embedded System Sumber : Tarigan ( 2010) 25 26 2.6 Mikrokontroler Komputer hadir dalam kehidupan manusia sejak 50 tahun yang lalu, namun efeknya sangat besar dalam merubah kehidupan manusia, bahkan melebihi penemuan manusia lainnya seperti radio, telepon, dan televisi. Begitu banyak aplikasi memanfaatkan chip mikroprosesor yang dapat melakukan komputasi sangat cepat, dapat bekerja sendiiri dengan diprogram, dan dilengkapi memori untuk menyimpan begitu banyak data. Seiring dengan perkembangan zaman, semakin luaslah kebutuhan akan kemampuan seperti yang dimiliki komputer, sehingga menyebabkan munculnya terobosan – terobosan baru yang salah satunya dibuatnya chip mikrokontroler. Mikrokontroler adalah single chip computer yang dapat diprogram dan digunakan untuk tugas-tugas berorientasi kontrol. Mikrokontroler datang dengan dua alasan utama yang pertama adalah kebutuhan pasar dan yang kedua adalah perkembangan teknologi baru. Yang dimaksud kebutuhan pasar adalah kebutuhan yang luas dari produk-produk elektronik akan perangkat pintar sebagai pengontrol pemroses data. Sedangkan yang dimaksud dengan perkembangan teknologi baru adalah perkembangan teknologi semikonduktor dan memungkinkan pembuatan chip dengan kemampuan komputasi yang sangat cepat, bentuk yang semakin kecil, dan harga yang semakin murah. 26 27 2.6.1 Perbedaan Mikrokontroler dengan Mikroprosesor Menurut Widodo dalam bukunya yang berjudul Panduan Lengkap Belajar Mikrokontroler ; Perancangan Sistem dan Aplikasi Mikrokontroler (Widodo, 2005), terdapat perbedaan yang signifikan antara mikrokontroler dan mikroprosesor. Perbedaan utama antara keduanya dilihat dari dua faktor utama yaitu arsitektur perangkat keras (hardware architecture) dan aplikasi masing – masing. Ditinjau dari segi arsitekturnya, mikroprosesor merupakan single chip CPU, sedangkan mikrokontroler dalam IC-nya selain CPU juga device lain yang memungkinkan mikrokontroler berfungsi sebagai suatu single chips computer. Dalam sebuah IC mikrokontroler telah terdapat ROM, RAM, EPROM, serial interface, dan parallel interface. Timer, interrupt controller, converter analog ke digital,dan lainnya (tergantung feature yang melengkapi mikrokontroler tersebut). Sedangkan dari segi aplikasinya, mikroprosesor hanya berfungsi sebagai Central Processing Unit yang menjadi otak komputer, sedangkan mikrokontroler, dalam bentuknya yang mungil, pada umumnya ditujukan untuk melakukan tugas – tugas yang berorientasi kontrol pada rangkaian yang membutuhkan jumlah komponen minimum dan biaya rendah (low cost). 27 28 2.6.2 Aplikasi Mikrokontroler Karena kemampuannya yang tinggi, bentuknya yang kecil, konsumsi dayanya yang rendah, dan harga yang murah maka mikrokontroler bnayak digunakan. Mikrokontroler digunakan mulai dari mainan anak – anak sampai perangkat elektronik rumah tangga, perangkat pendukung otomotif, perangkat industri, perangkat telekomunikasi, peralatan medis dan kedokteran sampai dengan pengendali robot serta persenjataan militer. Terdapat beberapa keuntungan dari alat – alat yang berbasis Mikrokontroler (mikrokontroler – based solutions) diantaranya : Kehandalan tinggi dan kemudahan integrasi dengan komponen lain. Penggunaan komponen semakin sedikit yang juga akan menyebabkan biaya produksi semakin ditekan. Ukuran yang dapat diperkecil. Waktu pembuatan lebih singkat sehingga lebih cepat pula dijual kepasaran sesuai kebutuhan. Konsumsi daya yang semakin rendah. (Widodo, 2005) 2.6.3 Perkembangan Mikrokontroler Karena kebutuhan yang tinggi terhadap “chip – chip pintar” dengan berbagai fasilitasnya, maka berbagai vendor juga berlomba untuk menawarkan produk – produk mikrokontrolernya. Hal tersebut terjadi semenjak awak tahun 28 29 1970-an. Motorolla mengeluarkan seri Mikrokontroler 6800 yang terus dikembangkan sehingga menjadi 68HC05, 68HC08, 68HC11, dan 68HC16. Zijog juga mengeluarkan seri mikroprosesor Z180 dan kemudian diadopsi juga oleh mikroprosesor Rabbit. Intel mengeluarkan Mikrokontroler yang mendunia yaitu 8051, karena begitu populernya maka arsitektur 8051 kemudian diadopsi oleh vendor lain seperti Philips, Siemens, Atmel, dan vendor – vendor lain dalam produk mikrokontroler mereka. Selain itu masih ada mikrokontroler populer lainnya seperti Basic stamps, PIC dari Microchip, MSP 430 dari Texas Instrument dan Arduino, serta masih banyak lagi. Selain mikroprosesor dan mikrokontroler, sebenarnya telah bermunculan chip – chip pintar lain seperti DSP prosesor. Di masa depan, chip – chip mungil berkemampuan tinggi akan mendominasikan semua desain elektronik di dunia sehingga mampu memberikan kemampuan komputasi yang tinggi serta meminimalkan jumlah komponen – komponen konvensional. 2.6.4 Mikrokontroler Arduino Dalam buku “Getting Started with Arduino” , Arduino dituliskan sebagai sebuah platform komputasi fisik (Physical Computing) yang open source pada board input output sederhana. Yang dimaksud dengan platform komputasi fisik disini adalah sebuah sistem fisik yang interaktif dengan penggunaan software dan hardware yang dapat mendeteksi dan merespon situasi dan kondisi di dunia nyata. 29 30 Sedangkan dari situs resminya di www.arduino.cc, Arduino didefinisikan sebagai sebuah platform elektronik yang open source, berbasis pada software dan hardware yang fleksibel dan mudah digunakan yang ditujukan pada setiap orang yang tertarik dalam membuat objek atau lingkungan yang interaktif. Nama Arduino di sini tidak hanya dipakai untuk menamai board rangkaiannya saja, tetapi juga untuk menamai bahasa dan software pemrogramannya, serta lingkungan pemrogramannya atau IDE (Integrated Development Environment). Arduino adalah suatu mikrokontroler kecil yang berisi semua komponen komputer dan memiliki kekuatan yang tidak begitu besar. Tapi dengan Arduino yang murah tersebut, kita dapat membuat alat – alat yang sangat menarik. Arduino merupakan chip berwarna hitam yang mempunyai 28 kaki yang disebut ATmega168. Agar mikrokontroler Arduino dapat bekerja dengan baik dan dapat berkomunikasi dengan komputer, seluruh komponen – komponen yang dibutuhkan harus diletakkan pada tempatnya. Arduino memiliki banyak sekali versi. Salah satu yang paling simpel adalah Arduino Uno yang mudah untuk dipakai. (Arduino, 2010). Berikut adalah gambar untuk Arduino Uno : 30 31 Gambar 2.6 Arduino Uno (Sumber : arduino.cc) Penjelasan dari gambar : a. 14 digital input – output pin (Pin 0-13) Pin tersebut dapat menjadi input atau output yang dispesifikasikan sesuai program yang dibuat. b. 6 analog input pin (Pin 0-5) Pin tersebut difungsikan sebagai penerima data analog dari suatu sensor, dan kemudian mengubah data tersebut menjadi angka antara 0 dan 1023. c. 6 analog output pin (pin 3, 5, 6, 9, 10, dan 11) Pin ini sebenarnya adalah digital pin yang dapat diprogram ulang sehingga dapat mengubah mode pin yang dapat mengeluarkan data analog. 2.7 Pemrograman Java Program adalah sekumpulan perintah – perintah (instruction) yang diatur secara sistematis untuk menyelesaikan suatu masalah. Salah satu 31 32 bahasa pemrograman komputer adalah bahasa pemrograman Java. Bahasa pemrograman Java adalah bahasa pemrograman berorientasi objek (PBO) atau Object Oriented Programming (OOP). Java bersifat netral, tidak bergantung pada suatu platform, dan mengikuti prinsip WORA (Write Once and Run Anywhere). Beberapa bahasa pemrograman, seperti Basic, Fortan, Pascal, COBOL, C, Prolog dan lainnya harus bergantung pada suatu platform karena mengharuskan user mengkompilasi program tersebut pada setiap sistem operasi yang ditentukam jika ingin menggunakan hasil program tersebut (Sariadin, 2009). 2.7.1 Sejarah Singkat Pemrograman Java Pemrograman Java dipelopori oleh James Gosling, Patrick Naughton, Chris Warth, Ed Frank, dan Mike Sheridan dari Sun Microsystems, Inc. pada tahun 1991, ketika perusahaan tersebut memulai Green Project (proyek penelitian membuat bahasa yang akan digunakan pada chip – chip embedded untuk device intelligent consumer electronic). Mereka membutuhkan waktu kurang lebih 18 bulan untuk membuat versi pertamanya. Bahasa tersebut haruslah bersifat multiplatform dan tidak tergantung pada vendor yang memanufaktur chip tersebut. Pada awalnya, bahasa ini disebut Oak, tapi kemudian diubah menjadi Java pada tahun 1995 karena nama Oak telah dijadikan hak cipta dan digunakan sebagai bahasa pemrograman lainnya. 32 33 Sejak pembuatan Oak pada musim gugur tahun 1992 hingga diumumkan ke publik pada musim semi tahun 1995, banyak orang yang terlihat dalam desain dan evolusi bahasa ini. Bill Joy, Arthur van Hoff, Jonathan Payne, Frank Yellin, dan Tim Lindholm merupakan kontributor kunci yang mematangkan prototipe aslinya. Pada saat ini, Java banyak digemari oleh para programmer karena open source dan dapat dikembangkan ke pemrograman berbasis internet sesuai kebutuhan masa atau zaman ( Spell, 2000). 2.7.2 Pemrograman Prosedural dan Pemrograman Berorientasi Objek Menurut Sariadian dalam bukunya yang berjudul Pemrograman Java Dasar – dasr Pengenalan dan Pemahaman (Sariadin, 2009) menjelaskan bahwa program komputer terdiri atas kode dan data. Kode yang dimaksud adalah proses logis program (misalnya fungsi), sedangkan data dapat berupa variabel atau konstanta. Secara konseptual, kode dan data tersebut diatur sedemikian rupa sehingga dapat bekerja sama untuk menghasilkan keluaran sesuai dengan proses yang diinginkan. Pada model pemrograman tradisional atau prosedural (disebut process oriented mode), semua data kode digabung menjadi satu bagian dalam satu program. Untuk program – program sederhana yang hanya membutuhkan beberpa buah baris kode, penggunaan model ini tentu tidak begitu menjadi masalah. Permasalahan baru akan timbul pada saat program tersebut berkembang ke arah yang lebih besar dan kompleks, yang mungkin 33 34 membutuhkan ratusan atau bahkan ribuan baris kode. Pada pemrograman beronrientasi objek, komponen – komponen penyusun program secara konseptual akan dipecah menjadi bagian – bagian tersendiri yang disebut dengan “objek”. Dalam pemrograman berorientasi objek, setiap objek akan memiliki data (sifat berupa variabel atau konstanta) dan method (perilaku atau kemampuan melakukan sesuatu berupa fungsi). Jadi, objek dapat didefinisikan sebagai suatu entitas yang memiliki data dan method. Contoh : Manusia adalah suatu objek yang memiliki data – data : a. Nama b. Jenis Kelamin c. Tinggi Badan d. Berat Badan e. Golongan Darah Manusia memiliki method : a. Cara bicara b. Cara berjalan c. Cara marah d. Sifat 2.7.3 Sifat – sifat Pemrograman Java Sifat – sifat pemrograman Java, antara lain : berorientasi objek, terdistribusi, multiplatform, dan multithread. 34 35 Java Berorientasi Objek Pemrograman Java merupakan pemrograman yang berorientasi objek. Artinya, penulisan program harus dibuat dalam bentuk objek – objek, kemudian memodelkan sifat masing – masing objek dalam program. Java menentukan dan mengatur interaksi antara objek. Java Bersifat Terdistribusi Program Java sesuai dengan perkembangan teknologi saat ini, yaitu teknologi jaringan local seperti jaringan internet. Dalam hal ini, Java dapat digunakan untuk menyebarkan/mendistribusikan data atau informasi dalam workstation client, e-mail server, database server, dan webserver (dalam jaringan komputer local dan internet). Java Bersifat Multiplatform Program Java yang sudah diterjemahkan (dikompilasi) dengan benar dan berhasil dapat dijalankan pada platform yang lain atau pada sistem operasi yang lain. Java menggunakan prinsip WORA (Write Once and Run Anywhere). Sekali menuliskan program maka hasil programnya dapat dijalankan pada sistem operasi yang mana saja. Artinya, sekali menulis program dalam bahasa Java dan mengkompilasinya maka program tersebut dapat dijalankan pada berbagai sistem operasi, seperti DOS, Windows, Linux, MacOS, dan Solaris. Java Bersifat Multithread Thread merupakan unit dasar penggunan Central Processing Unit (CPU) yang terdiri dari Thread_ID, program counter, register set, dan 35 36 stack. Multithread adalah banyaknya pekerjaan yang dikerjakan dalam satuan waktu yang hampir bersamaan. Sebagai contoh, suatu web server mempunyai ratusan client server. Jika web server hanya mempunyai satu thread, berarti client yang lain harus menunggu. Oleh karena itu, diperlukan multithread untuk dapat melayani client server. 2.7.4 Compiler dan Interpreter Java Java mempunyai sistem yang digunakan untuk melakukan compiler dan interpreter, yang semuanya mendukung program Java dalam melakukan tugasnya. a. Decompiler Decompiler adalah program yang dapat menerjemahkan bahasa mesin menjadi program yang dapat dibaca (high level language). b. Compiler dan Interpreter compiler dan interpreter adalah suatu sistem yang menerjemahkan bahasa sumber (source language) menjadi bahasa sasaran (target language). Source program yang ditulis diterjemahkan menjadi target program. Proses penerjemahan sering disebut “kompilasi” (compilasi). Perhatikan gambar 2.7. 36 37 Gambar 2.7 Proses Kompilasi sumber : Sariadin (2009) Class File adalah sejenis objek biner yang dihasilkan dari suatu sumber yang dikompilasi. Code Byte adalah format instruksi berupa urutan byte yang mewakili perintah suatu mesin visual (JVM). c. Java Virtual Machine (JVM) Java Virtual Machine (JVM) merupakan aplikasi sederhana yang ditulis dalam bahasa C untuk mengeksekusi program yang ditrulis dalam bahasa Java. Pada saat kompilasi (perubahan bahasa tingkay tinggi ke bahasa tingkat rendah), program tersebut diubah menjadi kode byte. Kemudian pada saat eksekusi, JVM membaca kode byte tersebut dan mengubahnya menjadi bahasa mesin yang dimengerti oleh sistem operasi tempat program tersebut dijalankan. Bahasa mesin merupakan bahasa level rendah yang 37 38 hanya dimengerti oleh mesin tertentu (misalnya, Intel), tapi tidak dapat dimengerti oleh mesin lain (seperti Macintosh). Karena JVM sangat bergantung pada platform – nya, kode byte ini dapat dibuat untuk terbebas dari kungkungan platform tertentu. Kode byte yang dihasilkan dalam proses kompilasi bahasa Java akan selalu sama untuk setiap sistem operasi atau jenis mesinnya, tetapi JVM akan mengubah kode byte tersebut menjadi bahasa mesin tujuannya. d. Just In Time Compiler (JIT) Meskipun Java didesain untuk diinterpretasi, namun secara teknis tidak ada yang menghalangi Java untuk dikompilasi menjadi bahasa mesin seperti bahas – bahasa pemrograman lainnya. Sun menyediakan Just In Time Compiler (JIT) untuk mengkompilasi kode byte tersebut agar menjadi bahasa mesin pada saat yang bersamaan dengan eksekusinya. Walaupun demikian, pendekatan JIT ini dapat menghasilkan kemampuan yang lebih dibandingkan dengan interpretasi biasa. e. Java Modern Java digunakan oleh berbagai aplikasi, seperti aplikasi embedded, aplikasi keuangan, desktop, simulasi pesawat, pemrosesan citra, game, web, dan aplikasi perusahaan distribusi. 38 39 2.7.5 Konsep Pemrograman Berorientasi Objek Konsep pemrograman berorientasi objek atau Object Oriented Programming (OOP) adalah inti dari pemrograman Java. Semua program Java merupakan objek. Dasar pemrograman objek pada pemrograman Java, antara lain : 1. Class 2. Object 3. Attribute 4. Method 5. Constructor Desain pemrograman berorientasi objek adalah teknik yang memfokuskan desain pada objek dan class berdasarkan pad askenario dunia nyata. Hal ini menegaskan keadaan (state), behavior, dan interaksi dari objek. Selain itu, pemrograman tersebut mempunyai manfaat akan kebebasan pengembangan, pemeliharaan, mempertinggi meningkatkan kemampuan kualitas, dalam mempermudah modifikasi, dan meningkatkan penggunaan kembali software. 1. Class Class adalah pemodelan dari objek yang menjelaskan data (sifat karakteristik data) dan fungsi yang dimiliki suatu objek. Class merupakan wadah (tempat) yang digunakan untuk menciptakan suatu objek. Dasar pemrograman berorientasi objek pada Java adalah class. Class dapat membuat atau mendeklarasikan tipe data baru. Ia dijalankan sebagai 39 40 blueprint. File sumber Java harus diberi nama berdasarkan class di dalam program. Bentuk deklarasi class : Class Nameclass { Class Body } Secara umum, class memiliki struktur anataomi sebagai berikut : (modifier1) Class Nameclass (modifier2) { Class Body } Dalam pemrograman Java, ada beberapa keyword yang sering digunakan sebagai modifier, yaitu kata tambahan yang terletak di depan suatu unsure (kelas/data/method). Modifier tersebut berupa abstract, final, multiple, static, serta tiga jenis lainnya, yaitu public, private, dan protected. Modifier bersifat opsional (boleh dipakai atau tidak). Modifier public, private dan protected digunakan untuk menentukan tingkat aksesibilitas dari suatu kelas/data/method. Aturan pemberian nama class : a. Dimulai dengan abjad, tanda underscore (_), atau tanda dolar ($). b. Nama class tidak boleh dimulai dengan bilangan (0,1,2,3,4,5,6,7,….). Setelah karakter pertama, dapat diikuti kombinasi abjad, underscore, dolar, atau bilangan. 40 41 c. Tidak boleh menggunakan keyword dalam Java (public, class, boolean, private, dan sebagainya). d. Tidak boleh menggunakan operator (+.-,=). e. Java bersifat case sensitive (membedakan huruf kecil dan huruf kapital). Nama file source harus sesuai dengan nama class. Misalnya, menuliskan nama mahasiswa dan alamat mahasiswa. Nama file source – nya : dataku.java Nama class : dataku class dataku{ public static void main(string[] args){ string nama,alamat; nama = “ Rita”; alamat = “Jalan Sudirman Medan”; system.out.printIn(“Nama : “+nama); system.out.printIn(“Alamat : “+alamat); } } 2. Object Object adalah sebuah entity yang memiliki keadaan, behavior, dan identitas yang tugasnya dirumuskan dalam suatu lingkup masalah dengan baik. Object dapat juga disebut suatu instans (instance). Instance adalah proses pembuatan (perwujudan) suatu kelas menjadi objek. Dalam 41 42 pembuatan suatu kelas, dapat hanya membuat pendefinisian tipe data baru. Ada 2 tahap untuk membuat objek baru dari tipe kelas yang telah ddefinisikan : Tahap 1 Mendeklarasikan variabel yang digunakan sebagai referensi ke objek dari kelas yang bersangkutan. Tahap 2 Menginstansiasi (instans) kelas dengan menggunakan kata kunci new dan memasukkan instance – nya ke dalam referensi yang baru dideklarasikan. Class yang menggunakan kata kunci new secara dinamis akan mengalokasikam ruang memori untuk menyimpan suatu objek tertentu dan mengembalikan nilai berupa referensi ke objek yang bersangkutan. Referensi objek adalah sebuah alamat memori dari objek yang dialokasikan dengan menggunakan operator new. 3. Attribute Attribute adalah elemen data dari suatu objek. Attribute menyimpan informasi tentang objek. Attribute dapat diartikan sebagai data, variabel, properti, atau sebuah field data. Setiap variabel harus memiliki tipe data dan diberi nama yang unik untuk membedakan yang satu dengan yang lainnya. Misalnya, objek mahasiswa. Attribute dari seorang mahasiswa berupa: Nomor mahasiswa Nama mahasiswa 4. Method 42 43 Method adalah subprogram yang dihubungkan pada definisi class tertentu. Setiap subprogram memiliki tugas sendiri. Method dalam pemrograman terstruktur adalah prosedur atau fungsi yang dimiliki suatu program. Sebuah method menjelaskan behavior dari sebuah objek. Dalam Java, method ada dua, yaitu : a. Method Void Method void adalah method yang tidak mengembalikan nilai. Untuk method void tipe data kembalian, harus diisi dengan kata kunci void. Cara kerja method void sama seperti prosedur (procedure). b. Method Nonvoid Method nonvoid adalah method yang mengembalikan nilai. Untuk mengembalikan suatu nilai tertentu maka di dalam method harus terdapat statement return yang diikuti dengan nilai yang akan dikembalikan. Cara kerja method nonvoid sama seperti fungsi (function). Pendeklarasian/pendefinisian method : 1. Deklarasi method disebut “judul method” (header method). 2. Badan method berada di dalam pasangan kurung kurawal. Cara penulisan : Headermethod{ 43 44 Badan method } 3. Badan method membentuk satu blok. 5. Constructor Constructor adalah sebuah method khusus yang digunakan dalam kelas untuk membuat dan menginisialisasi sebuah objek baru. Constructor berfungsi untuk menginisialisasi nilai terhadap data yang terdapat pada kelas yang berhubungan. Ketentuan constructor untuk melakukan inisialisasi: 1. Constructor harus bernama sama dengan nama kelas. 2. Constructor tidak memverifikasikan tipe data yang dikirim. 3. Kelas dapat berisi banyak constructor overloading yang memungkinkan objek diinisialisasi. 2.7.6 Paket (Package) a. Pengertian Package dalam Java Cara untuk mengelompokan beberapa class dan interface yang ada ke dalam kelompoknya masing – masing sehingga memungkinkan penggunaan nama yang sama dapat dilakukan atau sarana untuk mengelompokan kelas – kelas dan interface yang berhubungan dalam suatu pustaka (library) menjadi satu unit disebut package. Package yang 44 45 secara otomatis di dalam Java API (Aplication Programming Interface) adalah package java.lang. package ini berisi kelas – kelas dan interface yang merupakan fundamental bagi semua pemrograman Java, yang sering disebut “package language”. Sebagai contoh, isi package java.lang seperti pemakaian atau penulisan dalam program. Import java.io*; Import java.awt.*; Import javax.swing.*; --- Kita dapat mendeklarasikan kelas – kelas di dalam package yang tidak dapat diakses oleh statement atau perintah di luar package (paket yang lain) atau membuat package yang baru sesuai dengan keperluan program. Istilah package dapat juga dimaksudkan sebagai pembungkus kelas – kelas agar tersusun rapi. b. Deklarasi Package Pernyataan package dituliskan pada awal source code file sumber. Suatu package mendefinisikan nama ruang kelas – kelas disimpan dan kelas – kelas dideklarasikan dalam satu paket sehingga kelas – kelas itu menjadi milik package tersebut. Deklarasi package akan memberitahu compiler ke library mana suatu kelas akan dikompile atau dirujuk. Untuk mengkompilasi atau mengeksekusi program, program Java perlu mengetahui di mana letak dari semua kelas atau interface yang akan diperlukan. Oleh karena itu, perlu adanya setting path. Nama 45 46 package hendaknya dapat menggambarkan atau merepresentasikan nama kelas – kelas yang terkandung di dalam package tersebut. Penulisan package harus dengan huruf kecil. Deklarasi package ini adalah suatu kelas secara utuh yang meliputi variabel dan method yang ada di dalamnya. c. Mengimport Package dan Menggunakannya dalam Package lain Package yang berisikan class dan interface dapat digunakan oleh package yang lain. Maksudnya, penggunaan package yang lain adalah jika program memerlukan class dan interface berada di dalam direktori yang mana atau package yang mana. Perintahnya menggunakan import nama package.(namaClass|nama interface|*); atau dapat menggunakan tanda * (tanda bintang). Tanda bintang * gunanya untuk menyatakan import semua class atau interface yang terdapat pada package yang bersangkutan. 2.7.7 Object Oriented Programming (OOP) a. Ciri – ciri Pemrograman Berorientasi Objek Object Oriented Programming (OOP) adalah suatu pemrograman yang berorientasi objek. Ciri – ciri atau karakteristik pemrograman berorientasi objek, antara lain : 1. Abtraksi (abstraction) 2. Pembungkusan (encapsulation) 46 47 3. Pewarisan (inheritance) 4. Polimorfisme (polymorphism) Ciri – ciri pemrograman Java tersebut merupakan dasar – dasar dari konsep yang terkandung dalam pemrograman Java itu sendiri. 1. Abtraksi (Abstraction) Abstraksi adalah pengabstrakan atau melakukan seleksi terhadap aspek – aspek tertentu suatu masalah. Abstraksi digunakan untuk penyembunyian kerumitan dari suatu proses. Sebagai contoh, dalam membuat suatu sistem, ada tombol – tombol yang dapat digunakan. Operator atau pengguna tidak perlu berfikir tentang pembuatan tombol tersebut, tetapi yang penting mereka dapat menggunakannya. Contoh lain, mobil adalah kumpulan dari bagian – bagian kecil. Orang hanya berpikir bahwa mobil sebagai objek yang telah memiliki perilaku spesifik, yang dapat digunakan sebagai alat angkut sehingga orang menggunakannya tanpa harus mengetahui kerumitan proses yang terdapat di dalam mobil tersebut. Artinya, si pembuat mobil telah menyembunyikan semua kerumitan – kerumitan proses yang terdapat di dalam mobil dan pengguna tidak perlu mengetahui bagaimana sistem mesin, transmisi, dan rem bekerja. 2. Pembungkusan (Encapsulation) Pembungkusan sering pula disebut pengkapsulan. Artinya, proses membuat paket data objek bersama dengan metode – metodenya. Berdasarkan kode program, proses memisahkan aspek – aspek objek 47 48 dilakukan dengan cara pembungkusan. Proses pembungkusan itu sendiri merupakan cara atau mekanisme untuk melakukan abstraksi. Dalam pemrograman tradisional, proses semacam ini sering dinamakan dengan penyembunyian informasi (information hidding). Dalam melakukan pembungkusan kode dan data di dalam Java, terdapat tiga tingkat akses yang perlu diketahui, yaitu private, protected, dan public. 3. Pewarisan (Inheritance) Pewarisan adalah memberikan atau mewariskan sesuatu kepada keturunan berikutnya. Dalam konteks ini, suatu kelas dalam program dapat diturunkan menjadi kelas – kelas baru lainnya yang akan mewarisi beberapa sifat atau perilaku dari kelas induknya. Sebagai contoh, apabila kita memiliki kelas A dalam program yang dibuat maka kita dapat membentuk kelas – kelas turunan dari kelas A tersebut (misalnya, kelas B) yang mewarisi sifat – sifat yang terkandung dalam kelas A. dalam proses pembuatan kelas turunan tersebut, kita dapat menambahkan sifat dan perilaku baru ke daam kelas B, yang sebelumnya tidak dimiliki dalam kelas A. dalam terminologi Java, kelas induk dinamakan dengan superclass dan kelas turunan disebut dengan subclass. Untuk membuat class anak atau subclass berdasarkan class yang telah ada, kita dapat gunakan kata kunci extend dalam mendeklarasikan class. Sebuah class hanya dapat meng – extend satu class induk. 4. Polimorfisme (Polymorphism) 48 49 Polimorfisme adalah suatu kejadian ketika objek dapat mengungkap banyak hal melalui satu cara yang sama. Secara harfiah, poli berarti banyak dan morph berarti bentuk. Jadi polimorfisme berarti mempunyai banyak bentuk. Sebagai contoh, ada kelas A yang diturunkan menjadi kelas B, C, dan D. Dengan konsep polimorfisme, kita dapat menjalankan method – method yang terdapat pada kelas B, C, dan D hanya dari objek yang diinstansiasi dengan kelas A. Polimorfisme memungkinkan kita mengenali kesamaan di antara kelas yang berbeda. Polimorfisme sering dinamakan dengan dynamic binding, late binding, atau runtime binding. 2.7.8 Graphical User Interface (GUI) a. Pengertian Graphical User Interface (GUI) Graphical User Interface (GUI) adalah suatu aplikasi dalam Java yang berbasis grafik. GUI membuat hasil dari suatu program tampak menarik dan nyaman ketika digunakan oleh para user. Java menyediakan dua kelas untuk GUI, antara lain: 1. AWT (Abstract Windowing Toolkit), yang terdapat dalam package java.awt. 2. Swing, yang terdapat dalam package javax.swing. Kedua package tersebut –java.awt dan javax.swing- mempunyai mekanisme penanganan (event handling) yang bersamaan. AWT dan Swing menyediakan komponen GUI yang dapat digunakan dalam membuat aplikasi Java dan Applet. 49 50 1. AWT (Abstract Windowing Toolkit) AWT merupakan kumpulan class untuk membuat user interface dan gambar. AWT terdapat dalam package java.awt. Package java.awt berisi komponen – komponen GUI yang bersifat platform sistem operasi. Pada AWT terdapat class – class yang mendukung, seperti component, container, window, frame, panel, dan dialog. Setiap class mempunyai beberapa subclass. - Frame Frame dapat diubah ukurannya (resize). Konstruktor : Frame(); Frame(String tittle); - Panel Panel adalah subclass dari AWT yang sering digunakan dalam pengorganisasian tata letak komponen. Panel sering juga digunakan bersamaan dengan frame. 2. Swing Swing merupakan pengembangan dari AWT, khususnya pada user interface. Swing terdapat pada package javax.swing. package javax.swing dapat diaplikasikan pada platform sistem operasi. Implementasi swing dalam program dapat menggunakan class yang sudah terdapat pada package javax.swing, yaitu JFrame. JDialog, JOption, JApplet. 50 51 - JFrame JFrame mempunyai subclass frame (bingkai atau kerangka). Konstruktor: Frame(); Frame(string tittle) - JDialog JDialog mempunyai subclass dialog. Dialog biasanya digunakan bersamaan dengan frame. Perbedaan utama antara dialog dengan frame adalah dialog tidak dibuat berdiri sendiri, tetapi frame dapat berdiri sendiri tanpa dialog. Cara mudah menampilkan dialog adalah dengan cara menggunakan class JOptionPane. Pada class JOptionPane disediakan beberapa method static yang dapat langsung digunakan untuk menampilkan dialog standar. - JOption JOption digunakan untuk melakukan pilihan pada fasilitas dari class Swing. - JApplet JApplet mempunyai subclass Applet. Applet adalah aplikasi Java yang dijalankan dalam lingkungan web browser internet. Applet memiliki tiga method utama, antara lain : init() init() merupakan method yang akan dicari dan dieksekusi pertama pada saat Applet dijalankan. 51 52 paint() paint() berfungsi untuk meng-update tampilan. add() add() berfungsi untuk menambahkan komponen – komponen ke Applet. Untuk menjalankan Applet, kita perlu membuat file dalam bentuk html (extention html). 2.8 Metode Penelitian 2.8.1 Metode Pengumpulan Data Metode Pengumpulan data adalah prosedur sistematik dan standar untuk memperoleh data yang diperlukan (Nazir, 2005). Data terbagi menjadi dua jenis, yaitu data primer dan data sekunder. Data primer adalah data yang didapatakan dan diolah sendiri oleh peneliti dari objek penelitian. Sedangkan data sekunder adalah data yang didapatkan dan diolah peneliti tanpa melakukan pengamatan langsung pada objek penelitian. Pada penelitian ini, penulis melakukan studi lapangan untuk mendapatkan data primer dan studi literature untuk mendapatkan data sekunder. 3. Studi Lapangan a. Observasi Observasi atau pengamatan (Observation) merupakan salah satu teknik pengumpulan fakta/data 52 yang cukup efektif untuk 53 mempelajari suatu sistem. Observasi adalah pengamatan langsung suatu kejadian yang sedang dilakukan (Jogiyanto, 2005). b. Wawancara Wawancara (interview) telah diakui sebagai teknik pengumpulan data atau fakta yang penting dan banyak dilakukan dalam pengembangan sistem informasi. Wawancara memungkinkan analisis sistem sebagai pewawancara untuk mengumpulkan data secara tatap muka langsung dengan orang yang diwawancarai (Jogiyanto, 2005:617). 4. Studi Pustaka Yang dimaksud dengan kepustakaan adalah segala usaha yang dilakukan oleh peneliti untuk menghimpun informasi yang relevan dengan topik atau masalah yang akan atau sedang diteliti. Informasi itu didapat dari buku – buku ilmiah, laporan penelitian, karangan – karangan ilmiah, peraturan – peraturan, ensiklopedia, dan sumber – sumber tertulis baik tercetak maupun elektronik lain (Bintarto, 2002). 5. Studi Literatur Beberapa sumber, ahli, maupun peneliti member istilah kajian literatur dengan sebutan kajian teori atau studi literatur. Studi literature merupakan salah satu kegiatan penelitian yang mencakup memeilih teori – teori hasil penelitian, mengidentifikasi literatur, dan menganalisa dokumen, serta menerapkan hasil analisis tadi sebagai landasan teori bagi penyelesaian masalah dalam penelitian yang 53 54 dilakukan. Maksud dari kegiatan literatur adalah mencari teori atau landasan berfikir yang tepat sebagai penguat proses penyelesaian masalah (M. Subana dan Sudrajat, 2005). Menurut Suwarno dalam bukunya “Metode Penelitian Kuantitatif & Kualitatif” (Suwarno, 2006), tujuan utama dari studi literatur ialah : 1) menemukan variabel – variabel yang akan diteliti, 2) membedakan hal – hal yang sudah dilakukan dan menentukan hal – hal yang diperlukan, 3) melakukan sintesa dan memperoleh perspektif baru, dan 4) menentukan makna dan hubungan antar variabel. Suwarno juga berpendapat (Suwarno,2006), sumber – sumber kepustakaan dalam studi literatur dapat berasal dari 1) abstrak hasil penelitian, 2) indeks, 3) review, 4) jurnal dan 5) buku referensi. 2.8.2 Metode Pengembangan Sistem Proses pengembangan sistem diartikan sebagai sekumpulan aktivitas, metode, best practive, deliverable, dan tools – tools otomatis yang digunakan stakeholder untuk mengembangkan sistem informasi dan software secara kontinu. Artinya pengembangan dilakukan sampai hal – hal yang menjadi kebutuhan sistem. Untuk mengembangkan sistem, dibutuhkan metode yang tepat agar memenuhi tujuannya. Dalam pengembangan prototipe pendeteksi jarak ini, peneliti menggunakan metode pendekatan literatif dalam pengembangan sistem atau biasa disebut Prototipe. Metode Prototipe merupakan salah satu metode 54 55 pengembangan perangkat lunak yang banyak digunakan. Dengan metode prototyping ini pengembang dan pelanggan dapat saling berinteraksi selama proses pembuatan sistem. Secara umum tujuan pengembangan sistem informasi adalah untuk memberikan kemudahan dalam penyimpanan informasi, mengurangi biaya dan menghemat waktu, meningkatkan pengendalian, mendorong pertumbuhan, dan meningkatkan produktifitas. Berikut akan dibahas dengan lebih jelas alasan peneliti menggunakan metode prototipe dalam pengembangan sistem pendeteksi jarak beserta tahapan dari alur prototipe tersebut. Empat langkah yang menjadi karakteristik metode prototipe yaitu : 1. Pemilihan Fungsi Mengacu pada pemilahan fungsi yang harus ditampilkan oleh prototyping. Pemilahan harus selalu dilakukan berdasarkan pada tugas – tugas yang relevan yang sesuai dengan contoh kasus yang akan diperagakan. 2. Penyusunan Sistem Bertujuan untuk memenuhi permintaan akan tersedianya prototipe. 3. Evaluasi Evaluasi ini dilakukan oleh user apakah prototipe ini sesuai dengan kebutuhan, jika yam aka sistem dilanjutkan, jika tidak sistem diulangi. 55 56 4. Penggunaan Selanjutnya Perangkat lunak yang telah di evaluasi dan diterima user siap digunakan. Tahapan – tahapan Prototyping : 1. Pengumpulan kebutuhan : User dan pengembang bersama – sama mendefinisikan format seluruh perangkat lunak, mengindentifikasikan semua kebutuhan, dan garis besar sistem yang akan dibuat. 2. Membangun prorotyping : Membangun prototyping dengan membuat perancangan sementara yang berfokus pada penyajian kepada user. 3. Evaluasi prototyping : Evaluasi ini dilakukan oleh user apakah prototyping yang dibangun sudah sesuai keinginan. Jika sudah sesuai maka langkah 4 akan diambil, jika tidak prototyping direvisi dengan mengulangi langkah 1 dan 2. 4. Mengkodekan sistem : Dalam tahap ini prorotyping yang sudah disepakati diterjemahkan kedalam bahasa pemrograman yang sesuai. 5. Pengujian sistem : Setelah sistem sudah menjadi suatu perangkat lunak yang siap dipakai, harus di tes dahulu sebelum digunakan. Pengujian ini digunakan dengan White Box, Black Box, Basis Path, pengujian arsitektur dan lain – lain. 6. Evaluasi sistem : User mengevaluasi apakah sistem yang sudah jadi sesuai dengan yang diharapkan. Jika ya, langkah 7 dilakukan, jika tidak, ulangi langkah 4 dan 5. 56 57 7. Menggunakan sistem : perangkat lunak yang telah diuji dan diterima user siap untuk digunakan. 57 BAB III METODOLOGI PENELITIAN Pembahasan pada bab 3 ini yaitu penulis mengumpulkan data – data dan informasi sebagai bahan yang mendukung kebenaran materi uraian pembahasan. Selain itu untuk menyelesaikan masalah yang ada dalam sebuah perancangan sistem, maka diperlukan beberapa tahap yang harus dilakukan. Dalam bab ini dijelaskan mengenai tempat dan waktu penelitian, bahan dan alat serta metodologi penelitian yang digunakan penulis dalam pengembangan sistem. 3.1 Metode Penelitian Metode Penelitian ini bertujuan untuk mengetahui sistematika proses yang berjalan pada pembuatan penulisan. Pada tahapan ini ada beberapa tahap yang dilakukan seperti observasi, studi pustaka, dan studi literatur. Pada penelitian ini diperhatikan pemahaman tentang cara berfikir dan cara melaksanakan hasil berfikir menurut langkah – langkah ilmiah. 3.2 Teknik Pengumpulan Data Teknik pengumpulan data berguna pada saat melakukan analisis terkait penelitian yang sedang dilakukan. Data yang didapat nantinya akan digunakan untuk acuan lebih lanjut. Proses pengumpulan data dapat dilakukan dengan teknik – teknik tertentu, tergantung pada karakteristik penelitian. 58 59 3.2.1 Studi Lapangan Pada observasi ini penulis mengamati langsung proses penempatan dan pemindahan komponen produk dari dan menuju tempat tertentu pada sebuah gudang penyimpanan untuk memperoleh informasi mengenai cara pemindahan barang. Hal ini sangat dibutuhkan agar penulis dapat melakukan analisis untuk membuat suatu solusi terhadap proses pemindahan barang yang ada di gudang tersebut serta menentukan rancangan pengembangan sistem yang akan dibangun agar sesuai dengan harapan penulis. Adapun pelaksanaan observasi dilakukan pada tanggal 7 – 15 April 2014 di sebuah gudang berukuran 30 x 50 m di daerah Jakarta Timur. 3.2.2 Studi Pustaka Pada tahapan pengumpulan data dengan cara studi pustaka, penulis mencari referensi – referensi yang relevan dengan objek yang akan diteliti. Pencarian referensi dilakukan di perpustakaan, toko buku, maupun secara online melalui internet. Setelah mendapatkan referensi – referensi yang relevan, kemudian penulis mencari berbagai informasi yang dibutuhkan dalam penelitian ini. Adapun informasi yang didapat digunakan dalam penyusunan landasan teori, metodologi penelitian serta pengembangan aplikasi secara langsung. 60 3.2.3 Studi Literatur Pada tahapan ini dilakukan studi literatur dengan cara manual yaitu mempelajari jurnal yang berhubungan dengan konsep, analisis dan perancangan aplikasi yang meliputi pemodelan visual melalui blok diagram sistem, pemrograman dengan menggunakan bahasa Java, serta pemrograman pada mikrokontroler. Langkah selanjutnya adalah melakukan pencarian secara online maupun manual dengan melakukan pembelajaran terhadap tiga jurnal sejenis yang berkaitan dengan penelitian ini, dari tiga jurnal tersebut diambil beberapa kesimpulan seperti mikrokontroler yang dipakai, tolak ukur pengujian, kelebihan dan kekurangan penelitian, dan sebagainya. Berikut adalah tabel hasil studi literatur dari tiga jurnal penelitian tersebut : Tabel 3.1 Hasil Studi Literatur No Judul Penelitian Penulis Asal Universitas Tahun Kelebihan Kekurangan Penelitian 1. Tekhnik Elektro, Sensor Universitas benda pada jarak sejauh 2 kesalahan Trisakti meter dengan baik. 0.82% hingga 34.40%. Ultrasonik Prawiroredjo Berbasis 2008 Sensor dapat mendeteksi Tingkat Detektor Jarak Dengan Kiki Menggunakan Mikrokontroler 4 pesentase sebesar buah Hasil pengukuran mikrokontroler, sehingga terkadang tidak akurat tidak karena ada jeda antara pembacaan jarak. interfensi gelombang lain. Menggunakan dua warna Kesalahan pengukuran LED yang berbeda sebagai penanda bahaya. terjadi karena pembulatan nilai waktu tempuh pada proses perhitungan. 2. Pembuatan Alat Hendra Pendeteksi Jarak untuk Kendaraan Roda Empat Hutama Surya Universitas Gunadarma 2011 Menggunakan inframerah menggunakan sensor Sensor cahaya, antara yang inframerah dan media photodiode yang 61 di Dalam Parkir Mikrokontroler Gedung Berbasis cahaya. dirancang kurang rapih Sensor dapat mendeteksi dan tegak perbedaan antara cahaya sehingga inframerah bantuan kendaraan Begitu terhalang atau juga tidak. lurus, dibutuhkan alat untuk meluruskannya. terhadap Buzzer akan berbunyi indikator diode pemancar secara cahaya dan alarm buzzer hingga yang mendapat masukan. digunakan untuk memberikan informasi. Tingkat keberhasilan dari hasil pengujian dapat terus menerus sensor tidak Kesensitifan pada resistor yang berubah, membuat alat harus di diperoleh nilai rata – rata atur ulang sebelum keberhasilan 95%. menjalankannya. Membutuhkan biaya perancangan yang banyak karena menggunakan 8 buah sensor dan 4 buah LED, 62 Buzzer, dan LCD. 3. memberikan Hanya Sistem Pada Kendaraan Roda Komputer, informasi secara realtime dibagian Dua Menggunakan Universitas pada pengguna kendaraan kendaraan roda dua. Ultrasonic Gunadarma roda dua. Sensor 2011 Dapat Alat Pendeteksi Jarak Arif Usman sebagai Dan kemungkinan Getar Berbasis Jaringan menggangu Nirkabel Dan pengendara Mikrokontroler Atmega depan Penggunaan Dengan Tampilan LCD Sistem diletakan ketika LCD pengingat, akan fokus roda dua penggetar berhasil digerakan oleh tengangan sensor. 63 64 Berdasarkan hasil studi literatur sejenis tersebut maka didapat beberapa informasi pendukung dan pembanding dalam penelitian ini yang dapat dijadikan sebagai bahan acuan untuk meningkatkan kelebihan penelitian ini. Adapun kelebihan yang dapat dideskripsikan dalam penelitian ini antara lain, yaitu : 1. Menggunakan sensor PING yang dapat melakukan pembacaan jarak sejauh 3 meter, sehingga jangkauan yang dapt dibaca lebih luas tanpa harus menambah jumlah sensor yang diperlukan. 2. Menggunakan dua buah micro servo yang diletakan di bawah sensor PING, sehingga sensor akan diputar oleh kedua micro servo dengan besar sudut mulai dari 450 hingga 3600. 3. Hasil dari pembacaan sensor dapat ditampilkan melalui grafik pada layar PC, sehingga memudahkan pengguna untuk mengetahui jarak dan sudut yang terdeteksi oleh sensor. 3.3 Metode Pengembangan Sistem Prototipe 3.3.1 Pemilihan Kebutuhan Pada tahapan pengumpulan kebutuhan aplikasi, penulis melakukan observasi pada sebuah gudang penyimpanan, guna mengetahui hal apa saja yang sebenarnya dibutuhkan dalam proses pemindahan barang. Setelah mengetahui kebutuhan apa saja yang diperlukan, kemudian melakukan pencarian data – data dan referensi tentang bagaimana merancang suatu prototipe alat deteksi jarak, bagaimana menggabungkan komponen – komponen sehingga dapat berjalan dengan baik. 65 3.3.2 Membangun Prototyping Tahapan selanjutnya dalam metode prototyping yaitu membangun aplikasi secara cepat (prototipe). Pada tahap ini dilakukan pembuatan aplikasi secara cepat, lebih memfokuskan pada input / output aplikasi sesuai dengan kebutuhan umum yang diketahui pada tahap pertama. Tahapan ini menghasilkan prototipe 1. Setelah prototipe 1 dihasilkan maka dilanjutkan ke tahapan berikutnya yaitu evaluasi prototyping. 3.3.3 Evaluasi Prototyping Pada tahap ini prototipe 1 di serahkan kepada user untuk di evaluasi dan untuk mendiskusikan solusi untuk kendala – kendala yang dialami pada saat pembuatan prototipe. Pada tahap penyerahan prototipe 1 didapatkan informasi baru tentang kebutuhan aplikasi yang dibangun nantinya. Jika hasil evaluasi tidak sesuai, maka tahap selanjutnya adalah mengulangi tahapan pengumpulan kebutuhan. 3.3.4 Mengkodekan Sistem Setelah mendapatkan informasi baru tentang kebutuhan aplikasi, prototipe 1 dikembangkan sesuai dengan kebutuhan baru hasil evaluasi prototipe 1 menjadi prototipe 2. Dengan menekankan proses input / output yang di butuhkan oleh user. Proses pengkodean sistem ini dilakukan dua tahapan, pertama dilakukan di dalam software arduino, kemudian dilanjutkan dengan pemrograman pada software netbeans untuk interface di Java. 66 3.3.5 Pengujian Sistem Setelah prototipe 2 dirancang, maka dilakukan pengujian sistem, hal ini di lakukan agar user dan pengembang dapat mengetahui cara kerja sistem serta kekurangan yang ada pada sistem yang telah dirancang, baik dari segi pemrograman arduino maupun pemrograman java. 3.3.6 Evaluasi Sistem Pada tahapan ini, prototipe 2 diserahkan kepada user untuk kembali di evaluasi, selanjutnya jika user setuju maka proses prototyping dinyatakan selesai. 3.3.7 Penggunaan Sistem Setelah proses evaluasi oleh user dinyatakan sesuai, maka proses prototyping sudah selesai, dan sistem dinyatakan dapat digunakan sesuai kebutuhan user. 3.4 Peralatan Penelitian Peralatan penelitian yang digunakan dalam penelitian ini antara lain berupa perangkat keras dan perangkat lunak, yaitu : 1. Perangkat keras Perangkat keras yang digunakan dalam penelitian ini berupa sebuah laptop Asus A42F, Arduino Board, Sensor Ping, Mini Servo. Berikut adalah spesifikasi dari tiap perangkat keras tersebut : a. Laptop Asus A42F 67 Laptop Asus A42F memiliki spesifikasi :Processor Intel Core i3307M processor (2.4 Ghz, Chace 3MB), DDR3 1066 MHz SDRAM, 2 x SODIMM socket for expansion up to 8GB SDRAM. b. Arduino Uno R3 Board Arduino Uno R3 memiliki spesifikasi Mikrokontroler : ATMEGA328, Tegangan Operasi : 5V, Tegangan Input (recommended) : 7 - 12 V, Tegangan Input (limit) : 6-20 V, Pin digital I/O : 14 (6 diantaranya pin PWM), Pin Analog input : 6, Arus DC per pin I/O : 40 mA, Arus DC untuk pin 3.3 V : 150 mA, Flash Memory : 32 KB dengan 0.5KB digunakan untuk bootloader, SRAM : 2 KB, EEPROM : 1 KB, Kecepatan Pewaktuan : 16 Mhz. c. Sensor Ping Sensor ping ini memiliki spesifikasi Power requirements : +5 VDC, Communication: Positive TTL pulse, Dimensions : 0.81 x 1.8 x 0.6 in (22 x 46 x 16 mm), Operating temp range: +32 to +158 °F (0 to +70 °C). d. Mini Servo Mini servo memiliki spesifikasi Speed : 0.10 detik/60 derajat (4.8 V), Tegangan operasi 4.8V - 6V 68 2. Perangkat Lunak Perangkat lunak yang digunakan adalah Arduino yang digunakan untuk pemrograman mikrokontroler Arduino, Java Netbeans IDE yang digunakan untuk proses pengkodingan interface, serta Microsoft Visio untuk pembuatan diagram. Pada sistem operasi yang penulis gunakan dalam penelitian ini adalah Microsoft Windows 7. 3.5 Kerangka Penelitian Gambar 3.1 Kerangka Penelitian BAB IV ANALISIS DAN PEMBAHASAN 4.1 Pengembangan Prototipe 4.1.1 Pengumpulan Kebutuhan Untuk mendapatkan hasil sistem yang maksimal peneliti memulai penelitian dengan menggali semua informasi tentang sistem yang sedang digunakan yaitu sistem penyimpanan dan pendistribusian barang yang ada di gudang penyimpanan. Metode yang dilakukan pertama kali adalah mencari masalah dari sistem tersebut lewat observasi pada sebuah gudang penyimpanan berukuran 30 x 50 m di daerah Jakarta Timur. Dari metode observasi, peneliti mendapat kelemahan yaitu dari sistem yang sedang dilakukan, yaitu karyawan gudang terkadang menemui kesulitan dalam menata jarak antara barang yang di simpan di gudang, serta proses kerja yang lambat, yang akhirnya menyebabkan barang – barang tersebut di tumpuk begitu saja, tanpa memperhatikan keadaan pada barang. Dari hasil observasi tersebut peneliti mencoba penelitiannya dengan menjadikan sistem pemindahan barang bisa dijalankan secara efisien dengan menggunakan alat bantu berupa mobil pengangkut yang diberi mikrokontroler serta dikombinasikan dengan sensor yang bisa mendeteksi jarak benda agar mobil penganggkut tidak mengenai barang lain yang ada di gudang. 69 70 4.1.2 Membangun Prototyping a. Diagram Blok dan Cara Kerja Untuk lebih memudahkan proses perakitan dan cara kerja masing – masing rangkaian maka akan dibuat suatu diagram blok terlebih dahulu. Hal ini sangat penting, karena dalam pembuatan suatu alat setiap rangkaian saling berhubungan dan mempengaruhi kinerja alat lainnya. Sehingga hasil yang didapat sesuai dengan keinginan dan teori yang berlaku. Berikut gambar blok diagram rancangan alat yang akan dibuat dapat dilihat seperti pada gambar 3.1 Sensor PING Arduino Uno R3 Mini Servo Buzzer Pemrograman Java Gambar 4.1 Diagram Blok Fungsi dan kegunaan masing – masing blok adalah sebagai berikut : 1. Sensor PING berfungsi sebagai pengukur jarak terhadap suatu benda dan mengirimkan sinyal ke mikrokontroler arduino. 2. Mini Servo berfungsi sebagai penggerak sensor, agar sensor dapat bergerak memutar 360 derajat, agar dapat bergerak mini servo ini dihubungkan ke mikrikontroler dan di program bersamaan dengan sensor. 3. Arduino Uno R3 berfungsi menerima sinyal dari sensor PING, dan sebagai pengendali mini servo beserta buzzer. 71 4. Buzzer berfungsi sebagai alarm yang dikirimkan oleh arduino yang bersumber dari sinyal sensor PING. 5. Pemrograman Java berfungsi sebagai indikator keluaran dari arduino pada proses pembacaan jarak dalam bentuk grafik. Berikut merupakan alur proses pembacaan jarak yang berjalan pada prototipe : Gambar 4.2 Alur Proses Pembacaan Jarak Pada Prototipe 1. Sensor PING ultrasonik memancarkan gelombang 40Khz sesuai dengan kontrol dari mikrokontroler pengendali. Gelombang ultrasonik ini melalui udara dengan kecepatan 344 meter per detik, mengenai objek dan memantul kembali ke sensor. PING mengeluarkan pulsa output high pada pin SIG setelah memancarkan gelombang ultrasonik dan setelah gelombang pantulan terdeteksi PING akan membuat output low pada pin SIG. Sensor PING ini akan membaca objek 72 secara terus menerus sesuai dengan besar sudut dengan bantuan penggerak micro servo. 2. Dua buah micro servo akan bergerak memutar 360 derajat berlawanan dengan arah jarum jam, micro servo ini akan bergerak per 45 derajat, dikarenakan sensor PING akan membaca objek setiap 45 derajat. 3. Arduino Uno R3 menerima sinyal dari pin SIG sensor, dan mengendalikan perputaran dua buah micro servo serta pengirim sinyal sensor PING ke buzzer. 4. Buzzer akan berbunyi ketika sinyal yang terdeteksi oleh sensor PING kurang dari 200 cm. 5. Hasil yang terdeteksi oleh sensor dikirim ke arduino kemudian dibaca melalui komunikasi serial port arduino dengan Java dan ditampilkan dalam bentuk grafik polar. b. Prototyping Untuk memulai sebuah proyek, peneliti membuat prototipe sederhana dengan gambar menggunakan aplikasi bernama Fritzing. Prototipe ini berupa rangkaian jalur elektronika yang membangun sistem agar bisa bekerja secara efektif. Bahan – bahan yang diperlukan dalam perancangan yaitu : Tabel 4.1 Alat dan Bahan No Nama Jumlah Tipe/ merek 1 1 unit Paralax Sensor Ultrasonik 73 2 Arduino UNO 1 unit ATMega 328P 3 Micro Servo 2 unit Tower Pro 4 Buzzer 1 unit - 5 Project Board 1 unit - 6 Kabel 1m - 7 Baterai 4 unit ABC Berikut adalah gambar prototipe awal : Gambar 4.3 Prototipe Awal 4.1.3 Evaluasi Prototyping Prototipe awal yang telah dibuat peneliti kemudian dirancang ulang menggunakan aplikasi Fritzing dengan menambahkan output berupa buzzer dan penambahan daya untuk memberikan daya pada kedua buah micro servo. Setelah prototipe baru terancang, kemudian peneliti membeli bahan – bahan untuk perancangan sistem. 74 Berikut prototipe yang telah dirancang ulang : Gambar 4.4 Rangkaian Alat 4.1.4 Mengkodekan Sistem Pada bagian ini, peneliti mulai merancang alat berdasarkan rangkaian yang telah dibuat sebelumnya. Proses ini terbagi kedalam dua tahapan, yaitu pengkodean alat, kemudian pengkodean Interface. Perangkat lunak / software yang digunakan untuk merancang alat yaitu Arduino 1.05. Aplikasi ini dirancang secara portable, yang berarti aplikasi ini ada tanpa harus melalui proses instalasi. Aplikasi ini digunakan untuk memprogram IC (Integrated Circuit) dengan bahasa pemrograman C. Sedangkan software yang digunakan untuk mengkodekan interface yaitu Netbeans, aplikasi ini menggunakan bahasa pemrograman Java. Kode program yang digunakan untuk merancang alat pada arduino adalah sebagai berikut : 75 #include <Servo.h> Servo myservo; Servo myservo2; int pos = 0; //============ const int PINGPin = 7; const int speakerPin = 8; void setup() { Serial.begin(9600); myservo.attach(9); myservo2.attach(10); } void loop() { pinMode(speakerPin, OUTPUT); digitalWrite(speakerPin, LOW); switched off // sound buzzer is defalut myservo2.write(0); delay(500); myservo.write(0); delay(500); /* servo atas dan bawah 0 derajat (depan)ambil data */ pickData(); myservo.write(90); delay(1000); /* servo atas 90 derajat (kiri)ambil data */ pickData(); myservo.write(180); delay(1000); /* servo atas 180 derajat (belakang)ambil data */ pickData(); 76 myservo2.write(90); delay(1000); /* servo bawah 90 derajat (kanan) ambil data */ pickData(); } Kode program “#include <servo.h>” merupakan library khusus agar bisa memuat kode intruksi untuk servo. Sedangkan pada kode program “servo myservo; servo myservo2;” merupakan pembeda yang mendefinisikan bahwa program ini menggunakan dua buah servo. Kode 1. const int PINGPin = 7; const int speakerPin = 8; Pada kode 1 berfungsi untuk mendefinisikan pin yang digunakan oleh sensor PING dan buzzer pada board arduino. Kode 2. void setup() { Serial.begin(9600); myservo.attach(9); myservo2.attach(10); } 77 Pada kode 2 berfungsi sebagai inisiasi yang digunakan dalam program, dalam hal ini inisiasi komunikasi serial pada 9600 bps, serta untuk dua buah servo yang menggunakan pin 9 dan pin 10. Void setup dalam pemrograman arduino merupakan fungsi wajib yang harus disertakan dalam memprogram arduino, jika tidak maka akan menghasilkan eror, isi void setup bisa juga kosong. Kode 3. void loop() { pinMode(speakerPin, OUTPUT); digitalWrite(speakerPin, LOW); switched off // sound buzzer is defalut myservo2.write(0); myservo.write(0); /* servo atas dan bawah 0 derajat (depan)ambil data */ pickData(0); delay (1000); myservo.write(45); /* servo atas 90 derajat (kiri)ambil data */ pickData(315); delay(1000); myservo.write(90); /* servo atas 180 derajat (belakang)ambil data */ pickData(270); delay(1000); myservo.write(135); /* servo atas 135 derajat (kiri)ambil data */ pickData(225); delay(1000); 78 myservo.write(180); /* servo atas 180 derajat (belakang)ambil data */ pickData(180); delay(1000); myservo2.write(45); /*servo bawah 225 derajat (kanan)ambil data */ pickData(135); delay(1000); myservo2.write(90); /*servo bawah 270 derajat (kanan)ambil data */ pickData(90); delay(1000); myservo2.write(135); /*servo bawah 315 derajat (kanan)ambil data */ pickData(45); delay(1000); } Pada kode 3 void loop () berfungsi sebagai tempat menaruh source code yang akan diproses, void loop ini akan dijalankan setelah void setup selesai. Sekali dijalankan, maka void loop ini akan berualang secara terus menerus sampai catu daya di lepaskan. Kode program “pinMode (speakerPin, OUTPUT)” berfungsi untuk mendeklarasikan bahwa pin speaker sebagai output. Ketika sebuah pin dijadikan sebagai output, pin tersebut dapat dijadikan HIGH (ditarik menjadi 5V) atau LOW 79 (diturunkan menjadi ground) dengan menuliskan kode “digitalWrite (speakerPin, HIGH). Pada kode program “myservo.write()” dan “myservo2.write()” berfungsi untuk meggerakan kedua servo sesuai sudut yang dituliskan dalam tanda (), micro servo ini dapat berputar hingga 180o. Kode program “pickData” merupakan kode program yang berfungsi untuk pengambilan data. Kode program ini di deklarasikan secara khusus di dalam “void pickData()”, di dalamnya berisi pengaturan untuk sensor dan buzzer. Untuk lebih jelasnya perhatikan source code berikut. Void pickData(long sudut){ long duration, cm; pinMode(PINGPin, OUTPUT); digitalWrite(PINGPin, LOW); delayMicroseconds(2); digitalWrite(PINGPin, HIGH); delayMicroseconds(5); digitalWrite(PINGPin, LOW); // convert the time into a distance cm = microsecondsToCentimeters(duration); 80 if(cm < 200) { pinMode(speakerPin, OUTPUT); digitalWrite(speakerPin, HIGH); delay(1000); digitalWrite(speakerPin, LOW); delay(200); pinMode(speakerPin, OUTPUT); digitalWrite(speakerPin, HIGH); delay(100); digitalWrite(speakerPin, LOW); delay(200); pinMode(speakerPin, OUTPUT); digitalWrite(speakerPin, HIGH); delay(1000); digitalWrite(speakerPin, LOW); } Serial.print(sudut); Serial.print(","); Serial.print(cm); Serial.println(); delay(100); } long microsecondsToInches(long microseconds) { } 81 Kode program “pinMode (PINGPin, OUTPUT)” berfungsi untuk mendeklarasikan bahwa pin sensor PING sebagai output. Pin tersebut ditarik menjadi menjadi 5V “digitalWrite (PINGPin, HIGH) dan diturunkan menjadi ground “digitalWrite (PINGPin, LOW). Pada kode “if (cm >200) { pinMode (speakerPin, OUTPUT) …” berfungsi untuk mengatur suara yang dihasilkan buzzer, dalam hal ini, ketika sensor ,membaca jarak kurang dari 200 cm, maka buzzer akan berbunyi sebanyak 3 kali secara continue sampai sensor berhenti membaca jarak kurang dari 200 cm. Pada kode program “serial.printIn()” berfungsi untuk mencetak hasil pada serial monitor, dalam hal ini hasil dalam serial monitor di tampilkan dalam bentuk besar sudut dan jarak yang terbaca ( dalam centimeter). Setelah alat berhasil dirancang, penulis melanjutkan penelitian dengan membuat interface (GUI) dengan menggunakan bahasa pemrograman Java menggunakan software Netbeans. Source code yang dibuat terbagi dalam dua nama file yaitu ConnectionSoket.java dan main.java. Kedua file ini disimpan dalam satu paket (package) grafikjava (source code dapat dilihat dalam lampiran). File ConnectionSoket.java di dalamnya berisi program inti yang menghubungkan antara arduino dengan program java, sehingga program ini dapat membaca hasil melalui komunikasi serial port dengan Arduino. Untuk dapat mengakses komunikasi dengan arduino, pada program ini di beri tambahan library berupa RXTX Java Library. Library ini sangat mirip dengan Java Communication 82 API. Nantinya kita dapat menyesuaikan COM port yang digunakan oleh port Arduino. Selain itu, file ini berisi beberapa perintah yang nantinya dapat diakses oleh file main.java. Pada file main.java di dalamnya berisi source code untuk menampilkan GUI (Graphical User Interface). Dalam file ini terdapat source code : public ConnectionSoket = c new ConnectionSoket (); hal ini berarti class main dapat mengakses class ConnectionSoket. File ini akan menampilkan output berupa grafik, keterangan jarak dan keterangan sudut. 4.2 Uji Coba Pengujian yang dilakukan pada sistem ini bertujuan untuk mengetahui tingkat keberhasilan suatu proyek dalam mencapai hasil yang diinginkan. Berdasarkan pengujian yang dilakukan akan diperoleh hasil data sebagai bukti bahwa sistem tersebut telah bekerja. Hasil data tersebut kemudian disusun dengan rapi sedemikian rupa sehingga penulis dapat melakukan analisa terhadap data-data tersebut dengan baik dan selanjutnya dapat digunakan sebagai bahan untuk mendapatkan kesimpulan. 4.2.1 Uji Kepekaan Sensor PING Uji kepekaan sensor PING merupakan sebuah tes untuk melihat fungsi dari sensor PING yang bekerja secara efektif. Dalam tes ini sensor akan 83 didekatkan dengan sebuah benda sebagai input , hasil pembacaan jarak pada sensor dapat dilihat dalam serial monitor, kemudian di ukur secara manual menggunakan penggaris, jarak antara benda dengan sensor, kemudian di sesuaikan dengan hasil pembacaan sensor yang ada pada serial monitor. Gambar 4.5 Sensor PING menerima input (sumber : dokumentasi pribadi) Gambar 4.6 Hasil pembacaan sensor PING pada serial monitor (sumber : capture screen) Hasil pembacaan yang ditunjukan pada serial monitor (gambar 4.8) menunjukan 6in, 15cm. Hal ini berarti jarak benda di depan sensor berjarak 6 inchi atau 15 cm. 84 Gambar 4.7 Hasil pengukuran manual menggunkan penggaris (sumber : dokumentasi pribadi) Dari gambar 4.6 didapat hasil pengukuran sejauh 15cm menggunakan penggaris, maka dengan demikian hasil pembacaan yang terlihat pada serial monitor dan hasil pengukuran secara manual adalah sama. 4.2.2 Uji Coba Interface (GUI) Gambar 4.8 Tampilan Grafik Polar (sumber : capture screen) 85 Gambar 4.9 Tampilan Keterangan Sudut dan Jarak secara digital (sumber : capture screen) Gambar 4.10 Tampilan pemilihan COM port dan tombol on/off (sumber : capture screen) 86 Gambar 4.11 Tampilan console dari data yang diambil langsung pada serial monitor Arduino (sumber : capture screen) Gambar 4.12 Tampilan keseluruhan (sumber : capture screen) 87 4.2.3 Uji Coba Keseluruhan Gambar 4.13 Pemasangan Sensor PING dengan dua buah micro servo (sumber : dokumentasi pribadi) Gambar 4.14 Tampilan Interface (GUI) saat program dijalankan (sumber : capture screen) 88 4.2.4 Uji Kecepatan Antara Forklift dan Prototipe Untuk mengetahui perbandingan kecepatan antara forklift dan prototipe, dilakukan perhitungan sebagai berikut : 1. Kecepatan rata – rata forklift pada gudang penyimpan barang adalah 5 km/jam. 2. Kecepatan rata – rata Prototipe : Prototipe = = 1,2 m = 0,3 m/s 4 detik 0,3 m/s x 3600 s = 1,08 km/jam 1000 m Jadi, perbandingan kecepatan antara Forklift dan prototipe adalah 5 : 1,08 1 : 0,126 4.3 Analisis Dari hasil pengujian yang telah dilakukan penulis memperoleh beberapa hasil mengenai penelitian ini, diantaranya : 1. Sensor ultrasonik dapat membaca jarak dengan baik sejauh 3 meter berdasarkan prinsip pemantulan gelombang ultrasonik. 2. Output yang dihasilkan berupa grafik polar dan indikator suara sebagai tanda bahwa sensor semakin mendekati benda di sekitarnya. 3. Indikator suara yang dihasilkan buzzer didapat dari hasil pembacaan sensor PING ketika membaca jarak kurang dari 200 cm. 4. Jarak minimal sensor PING mengirimkan sinyal ke buzzer adalah 200 cm, dengan delay 1 detik pada kecepatan rata – rata forklift 5 km/jam. 89 5. Perbandingan kecepatan antara forklift dengan prototipe adalah 1 : 0, 126 dengan delay 1 detik. 6. Masih terdapat jeda antara pergerakan mobil pengangkut dengan jarak yang tampil dilayar, diakibatkan karena proses kerja prototipe. BAB V PENUTUP Setelah melakukan serangkaian penelitian, maka pada bab ini peneliti akan memberikan kesimpulan beserta saran yang dapat menjadi pertimbangan untuk penelitian yang selanjutnya. 5.1 Kesimpulan Berdasarkan penelitian yang telah dilakukan, maka dapat ditarik kesimpulan bahwa perancangan prototipe alat deteksi jarak dengan menggunakan Arduino, sensor ping dan bahasa pemrograman Java telah berhasil dirancang. Dimana sensor PING ultrasonik dapat membaca jarak hingga 3m dengan menghasilkan output berupa grafik polar dan indikator suara sebagai tanda bahwa sensor semakin mendekati benda di sekitarnya. 5.2 Saran Detektor jarak yang dibuat ini masih dalam bentuk prototipe. Oleh karena itu pada penelitian selanjutnya dapat mempertimbangkan hal – hal berikut ini : 1. Pembacaan jarak dan hasil yang ditampilkan dalam grafik dapat disesuaikan dengan kecepatan rata – rata dari mobil pengangkut barang. 90 91 2. Penambahan fitur penanda bahaya pada interface, sehingga user dapat lebih memperhatikan jarak yang dibaca oleh sensor. 3. Hasil yang ditampilkan pada layar monitor dapat ditampilkan pada layar LCD yang disimpan pada mobil pengangkut. DAFTAR PUSTAKA Aji, Suhandono.2011. Desain Prototipe Jembatan Timbang Otomatis Berbasis Mikrokontroler Dengan Sensor Flexiforce Program Studi Fisika UIN Syarif Hidayatullah Jakarta : Skripsi Tidak Diterbitkan Banzi, Massimo.2011.Getting Started with Arduino.Sebastopol : O’Reolly Media Bintarto, Iwan. 2002.Metodologi Pengembangan Sistem. Yogyakarta : Andi Evans, Brian. 2011. Beginning Arduino Programming. Apress Houde, Stephanie & Hill, Charles. 2004. What do Prototypes Prototype?. USA : Apple Computer,Inc Jogiyanto HM. 2005. Analisis dan Desain Sistem Informasi : Pendekatan terstruktur teori dan praktek aplikasi bisnis. Yogyakarta : Andi Kadir, Abdul. 2013. Panduan Praktis Mempelajari Aplikasi Mikrokontroler dan Pemrogramannya Menggunakan Arduino. Yogyakarta : Andi Kurnia, Ahmad. 2007. Sistem Manajemen Gudang. STIE Swadaya Mitra. Makalah Tidak Diterbitkan Ladjamudin, Al-bahra. 2004. Analisis dan Desain Sistem Informasi. Yogyakarta : Graha Ilmu Mc Leod, Raymond. 2002. Sistem Informasi Manajemen. Jakarta : Prenhallindo Nazir, Muhammad. 2005. Metode Penelitian. Jakarta : Ghalia Indonesia Pressman, Roger S. 2002. Rekayasa Perangkat Lunak Buku 1. Yogyakarta : Andi Sasongko, Bagus H. 2006. Pemrograman Mikrokontroler Dengan Bahasa C. Yogyakarta : Andi Siallagan, Sariadin. 2009. Pemrograman Java Dasar – Dasar Pengenalan dann Pemahaman. Yogyakarta : Andi Spell, Brett. 2000. Profesional Java Programming. United States : Wrox Press Ltd Tamimi, Ahmad. Prototype Sistem Waktu Nyata Peringatan Dini Banjir Menggunakan Mikrokontroler Arduino Uno (Studi Kasus Pada Pintu Air Depok) Program Studi Teknik Informatika UIN Syarif Hidayatullah Jakarta : Skripsi Tidak Diterbitkan Tarigan, Pernatin. 2010. Sistem Tertanam (Embedded System). Usman. 2008. Teknik Antar Muka +Pemograman Mikrokontroler AT89S52. Yogyakarta : Andi Widodo. 2005. Panduan Lengkap Belajar Mikrokontroler; Perancangan Sistem dan Aplikasi. Widodo. 2007. Radio Detection Ranging. Bandung : PT. Rosdakarya William de Cooper. 1994. Instrumentasi Elektronik dan Teknik Pengukuran (Terjemahan). Jakarta : Erlangga Whitten et al. 2004. Metode Desain & Analisis Sistem Edisi 6 (Terjemahan). Yogyakarta : Andi Anonim. Arduino [online] Tersedia : www.arduino.cc diakses 12 Desember 2013 Anonim. PING Paralax [online] Tersedia : www.paralax.com diakses 15 November 2013 . 2006. Metode Penelitian Kuantitatif dan Kualitatif Lampiran 1 Source Code Program Java L–1 - ConnectionSoket.java /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package grafikjava; import gnu.io.CommPort; import gnu.io.CommPortIdentifier; import gnu.io.PortInUseException; import gnu.io.SerialPort; import java.awt.Color; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.Enumeration; import java.util.HashMap; import javax.swing.JComboBox; import javax.swing.JLabel; /** * * @author yuy */ public class ConnectionSoket { String s = "\r"; byte[] readBuffer = new byte[1]; private Enumeration ports = null; private HashMap portMap = new HashMap(); private CommPortIdentifier selectedPortIdentifier = null; private SerialPort serialPort = null; final static int TIMEOUT = 1000; final static int SPACE_ASCII = 32; final static int DASH_ASCII = 45; final static int NEW_LINE_ASCII = 10; private InputStream input = null; private OutputStream output = null; int indeks = 0; public void searchForPorts(JComboBox jb) { ports = CommPortIdentifier.getPortIdentifiers(); while (ports.hasMoreElements()) { CommPortIdentifier curPort = (CommPortIdentifier) ports.nextElement(); if (curPort.getPortType() == CommPortIdentifier.PORT_SERIAL) { jb.addItem(curPort.getName()); portMap.put(curPort.getName(), curPort); } } } public boolean initIOStream() { //return value for whather opening the streams is successful or not boolean successful = false; String a; int sudut; float jarak; String data[]; try { input = serialPort.getInputStream(); input.read(readBuffer); indeks++; a = new String(readBuffer); if (a.equals("\n")) { s = s.replaceAll("\r", ""); data = s.split(","); if (indeks > 1 && indeks < 11 && data.length == 2) { sudut = Integer.valueOf(data[0]); jarak = Float.valueOf(data[1]); main.ta_console.append("Sudut: " + sudut + " Jarak: " + jarak); main.ta_console.append("\n"); main.ta_console.setCaretPosition(main.ta_console.getDocument().get Length()); if (sudut == 0) { main.series.updateByIndex(0, jarak); main.l_depan.setText(jarak + " cm"); alretLabel(main.l_depan, jarak); } else if (sudut == 45) { main.series.updateByIndex(1, jarak); main.l_kanan_depan.setText(jarak + " cm"); alretLabel(main.l_kanan_depan, jarak); } else if (sudut == 90) { main.series.updateByIndex(2, jarak); main.l_kanan.setText(jarak + " cm"); alretLabel(main.l_kanan, jarak); } else if (sudut == 135) { main.series.updateByIndex(3, jarak); main.l_kanan_belakang.setText(jarak + " cm"); alretLabel(main.l_kanan_belakang, jarak); } else if (sudut == 180) { main.series.updateByIndex(4, jarak); main.l_belakang.setText(jarak + " cm"); alretLabel(main.l_belakang, jarak); } else if (sudut == 225) { main.series.updateByIndex(5, jarak); main.l_kiri_belakang.setText(jarak + " cm"); alretLabel(main.l_kiri_belakang, jarak); } else if (sudut == 270) { main.series.updateByIndex(6, jarak); main.l_kiri.setText(jarak + " cm"); alretLabel(main.l_kiri, jarak); } else if (sudut == 315) { main.series.updateByIndex(7, jarak); main.l_kiri_depan.setText(jarak + " cm"); alretLabel(main.l_kiri_depan, jarak); } } indeks = 0; s = "\r"; } else { s = s + a; } successful = true; return successful; } catch (IOException e) { return successful; } } void alretLabel(JLabel label, float value) { if (value < 200) { label.setForeground(Color.red); } else { label.setForeground(Color.black); } } public void disconnect() { //close the serial port try { serialPort.removeEventListener(); serialPort.close(); input.close(); } catch (Exception e) { } } public void connect(JComboBox jb) { String selectedPort = String.valueOf(jb.getSelectedItem()); selectedPortIdentifier = (CommPortIdentifier) portMap.get(selectedPort); CommPort commPort = null; try { commPort = selectedPortIdentifier.open("TigerControlPanel", TIMEOUT); serialPort = (SerialPort) commPort; serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE); } catch (PortInUseException e) { } catch (Exception e) { } } } - main.java package grafikjava; /* * To change this template, choose Tools | Templates * and open the template in the editor. package grafikjava; import import import */ import import org.jfree.chart.ChartFactory; org.jfree.chart.JFreeChart; org.jfree.chart.PolarChartPanel; org.jfree.chart.ChartFactory; org.jfree.chart.JFreeChart; import import import import import import import import org.jfree.chart.PolarChartPanel; org.jfree.chart.plot.PolarPlot; org.jfree.chart.renderer.DefaultPolarItemRenderer; org.jfree.data.xy.XYDataset; org.jfree.data.xy.XYSeries; org.jfree.data.xy.XYSeriesCollection; org.jfree.ui.ApplicationFrame; org.jfree.ui.RefineryUtilities; /** * * @author yuy */ public class main extends ApplicationFrame implements Runnable { /** * Creates new form main */ public ConnectionSoket c = new ConnectionSoket(); protected static Thread th; private volatile boolean start; public static XYSeries series = new XYSeries("Jarak"); JFreeChart chart; public main(String title) { super(title); XYDataset dataset = createDataset(); chart = createChart(dataset); initComponents(); b_off.setVisible(false); start = false; c.searchForPorts(cb_COM); } private XYDataset createDataset() { XYSeriesCollection data = new XYSeriesCollection(); series.add(0, 300); series.add(45, 300); series.add(90, 300); series.add(135, 300); series.add(180, 300); series.add(225, 300); series.add(270, 300); series.add(315, 300); data.addSeries(series); return data; } private JFreeChart createChart(final XYDataset dataset) { chart = ChartFactory.createPolarChart( "Grafik Polar Jarak Antara Alat Dengan Benda", dataset, true, true, false); final PolarPlot plot = (PolarPlot) chart.getPlot(); final DefaultPolarItemRenderer renderer = (DefaultPolarItemRenderer) plot.getRenderer(); renderer.setSeriesFilled(2, true); return chart; } /** * This method is called from within the constructor to initialize the form. * WARNING: Do NOT modify this code. The content of this method is always * regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { jPanel1 = new javax.swing.JPanel(); cb_COM = new javax.swing.JComboBox(); b_on = new javax.swing.JButton(); b_off = new javax.swing.JButton(); jLabel1 = new javax.swing.JLabel(); jPanel2 = new javax.swing.JPanel(); jPanel5 = new javax.swing.JPanel(); jPanel6 = new javax.swing.JPanel(); jPanel7 = new javax.swing.JPanel(); jLabel2 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); jLabel4 = new javax.swing.JLabel(); jLabel5 = new javax.swing.JLabel(); jLabel6 = new javax.swing.JLabel(); jLabel7 = new javax.swing.JLabel(); jLabel8 = new javax.swing.JLabel(); jLabel9 = new javax.swing.JLabel(); l_depan = new javax.swing.JLabel(); l_kanan_depan = new javax.swing.JLabel(); l_kanan = new javax.swing.JLabel(); l_kanan_belakang = new javax.swing.JLabel(); l_belakang = new javax.swing.JLabel(); l_kiri_belakang = new javax.swing.JLabel(); l_kiri = new javax.swing.JLabel(); l_kiri_depan = new javax.swing.JLabel(); jLabel11 = new javax.swing.JLabel(); jPanel8 = new javax.swing.JPanel(); jLabel10 = new javax.swing.JLabel(); jScrollPane1 = new javax.swing.JScrollPane(); ta_console = new javax.swing.JTextArea(); jPanel3 = new javax.swing.JPanel(); jPanel4 = new javax.swing.JPanel(); grafik = new PolarChartPanel(chart); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON _CLOSE); b_on.setText("On"); b_on.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { b_onActionPerformed(evt); } }); b_off.setText("Off"); b_off.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { b_offActionPerformed(evt); } }); jLabel1.setText("COM:"); javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Al ignment.LEADING) .addGroup(jPanel1Layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel1) .addGap(3, 3, 3) .addComponent(cb_COM, javax.swing.GroupLayout.PREFERRED_SIZE, 174, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement. UNRELATED) .addComponent(b_on, javax.swing.GroupLayout.PREFERRED_SIZE, 63, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement. UNRELATED) .addComponent(b_off, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap(571, Short.MAX_VALUE)) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Al ignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() .addContainerGap(16, Short.MAX_VALUE) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.Grou pLayout.Alignment.BASELINE) .addComponent(b_on) .addComponent(b_off) .addComponent(cb_COM, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jLabel1)) .addContainerGap()) ); getContentPane().add(jPanel1, java.awt.BorderLayout.PAGE_START); jPanel2.setLayout(new java.awt.BorderLayout()); javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5); jPanel5.setLayout(jPanel5Layout); jPanel5Layout.setHorizontalGroup( jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Al ignment.LEADING) .addGap(0, 21, Short.MAX_VALUE) ); jPanel5Layout.setVerticalGroup( jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Al ignment.LEADING) .addGap(0, 505, Short.MAX_VALUE) ); jPanel2.add(jPanel5, java.awt.BorderLayout.LINE_END); jPanel6.setLayout(new java.awt.BorderLayout()); jLabel2.setText("Depan"); jLabel3.setText("Kanan-depan"); jLabel4.setText("Kanan"); jLabel5.setText("Kanan-belakang"); jLabel6.setText("Belakang"); jLabel7.setText("Kiri-belakang"); jLabel8.setText("Kiri"); jLabel9.setText("Kiri-depan"); l_depan.setText("300 cm"); l_kanan_depan.setText("300 cm"); l_kanan.setText("300 cm"); l_kanan_belakang.setText("300 cm"); l_belakang.setText("300 cm"); l_kiri_belakang.setText("300 cm"); l_kiri.setText("300 cm"); l_kiri_depan.setText("300 cm"); jLabel11.setText("Keterangan :"); javax.swing.GroupLayout jPanel7Layout = new javax.swing.GroupLayout(jPanel7); jPanel7.setLayout(jPanel7Layout); jPanel7Layout.setHorizontalGroup( jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Al ignment.LEADING) .addGroup(jPanel7Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel7Layout.createParallelGroup(javax.swing.Grou pLayout.Alignment.LEADING) .addGroup(jPanel7Layout.createSequentialGroup() .addComponent(jLabel2) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement. RELATED, 150, Short.MAX_VALUE) .addComponent(l_depan)) .addGroup(jPanel7Layout.createSequentialGroup() .addComponent(jLabel9) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement. RELATED, 133, Short.MAX_VALUE) .addComponent(l_kiri_depan)) .addGroup(jPanel7Layout.createSequentialGroup() .addComponent(jLabel3) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement. RELATED, 117, Short.MAX_VALUE) .addComponent(l_kanan_depan)) .addGroup(jPanel7Layout.createSequentialGroup() .addComponent(jLabel4) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement. RELATED, 151, Short.MAX_VALUE) .addComponent(l_kanan)) .addGroup(jPanel7Layout.createSequentialGroup() .addComponent(jLabel5) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement. RELATED, 104, Short.MAX_VALUE) .addComponent(l_kanan_belakang)) .addGroup(jPanel7Layout.createSequentialGroup() .addComponent(jLabel6) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement. RELATED, 138, Short.MAX_VALUE) .addComponent(l_belakang)) .addGroup(jPanel7Layout.createSequentialGroup() .addComponent(jLabel7) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement. RELATED, 120, Short.MAX_VALUE) .addComponent(l_kiri_belakang)) .addGroup(jPanel7Layout.createSequentialGroup() .addComponent(jLabel8) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement. RELATED, 167, Short.MAX_VALUE) .addComponent(l_kiri)) .addGroup(jPanel7Layout.createSequentialGroup() .addComponent(jLabel11) .addGap(0, 152, Short.MAX_VALUE))) .addContainerGap()) ); jPanel7Layout.setVerticalGroup( jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Al ignment.LEADING) .addGroup(jPanel7Layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel11) .addGap(24, 24, 24) .addGroup(jPanel7Layout.createParallelGroup(javax.swing.Grou pLayout.Alignment.BASELINE) .addComponent(jLabel2) .addComponent(l_depan)) .addGap(18, 18, 18) .addGroup(jPanel7Layout.createParallelGroup(javax.swing.Grou pLayout.Alignment.BASELINE) .addComponent(jLabel3) .addComponent(l_kanan_depan)) .addGap(18, 18, 18) .addGroup(jPanel7Layout.createParallelGroup(javax.swing.Grou pLayout.Alignment.BASELINE) .addComponent(jLabel4) .addComponent(l_kanan)) .addGap(18, 18, 18) .addGroup(jPanel7Layout.createParallelGroup(javax.swing.Grou pLayout.Alignment.BASELINE) .addComponent(jLabel5) .addComponent(l_kanan_belakang)) .addGap(18, 18, 18) .addGroup(jPanel7Layout.createParallelGroup(javax.swing.Grou pLayout.Alignment.BASELINE) .addComponent(jLabel6) .addComponent(l_belakang)) .addGap(18, 18, 18) .addGroup(jPanel7Layout.createParallelGroup(javax.swing.Grou pLayout.Alignment.BASELINE) .addComponent(jLabel7) .addComponent(l_kiri_belakang)) .addGap(18, 18, 18) .addGroup(jPanel7Layout.createParallelGroup(javax.swing.Grou pLayout.Alignment.BASELINE) .addComponent(jLabel8) .addComponent(l_kiri)) .addGap(18, 18, 18) .addGroup(jPanel7Layout.createParallelGroup(javax.swing.Grou pLayout.Alignment.BASELINE) .addComponent(jLabel9) .addComponent(l_kiri_depan)) .addContainerGap(23, Short.MAX_VALUE)) ); jPanel6.add(jPanel7, java.awt.BorderLayout.PAGE_START); jLabel10.setText("Console:"); ta_console.setColumns(20); ta_console.setRows(5); ta_console.setCursor(new java.awt.Cursor(java.awt.Cursor.TEXT_CURSOR)); ta_console.setDragEnabled(true); ta_console.setFocusCycleRoot(true); ta_console.setOpaque(false); jScrollPane1.setViewportView(ta_console); javax.swing.GroupLayout jPanel8Layout = new javax.swing.GroupLayout(jPanel8); jPanel8.setLayout(jPanel8Layout); jPanel8Layout.setHorizontalGroup( jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Al ignment.LEADING) .addGroup(jPanel8Layout.createSequentialGroup() .addContainerGap() .addGroup(jPanel8Layout.createParallelGroup(javax.swing.Grou pLayout.Alignment.LEADING) .addComponent(jLabel10) .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 212, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(13, Short.MAX_VALUE)) ); jPanel8Layout.setVerticalGroup( jPanel8Layout.createParallelGroup(javax.swing.GroupLayout.Al ignment.LEADING) .addGroup(jPanel8Layout.createSequentialGroup() .addContainerGap() .addComponent(jLabel10) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement. RELATED) .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 153, Short.MAX_VALUE) .addContainerGap()) ); jPanel6.add(jPanel8, java.awt.BorderLayout.CENTER); jPanel2.add(jPanel6, java.awt.BorderLayout.CENTER); getContentPane().add(jPanel2, java.awt.BorderLayout.LINE_END); javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3); jPanel3.setLayout(jPanel3Layout); jPanel3Layout.setHorizontalGroup( jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Al ignment.LEADING) .addGap(0, 29, Short.MAX_VALUE) ); jPanel3Layout.setVerticalGroup( jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Al ignment.LEADING) .addGap(0, 505, Short.MAX_VALUE) ); getContentPane().add(jPanel3, java.awt.BorderLayout.LINE_START); javax.swing.GroupLayout jPanel4Layout = new javax.swing.GroupLayout(jPanel4); jPanel4.setLayout(jPanel4Layout); jPanel4Layout.setHorizontalGroup( jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Al ignment.LEADING) .addGap(0, 938, Short.MAX_VALUE) ); jPanel4Layout.setVerticalGroup( jPanel4Layout.createParallelGroup(javax.swing.GroupLayout.Al ignment.LEADING) .addGap(0, 32, Short.MAX_VALUE) ); getContentPane().add(jPanel4, java.awt.BorderLayout.PAGE_END); javax.swing.GroupLayout grafikLayout = new javax.swing.GroupLayout(grafik); grafik.setLayout(grafikLayout); grafikLayout.setHorizontalGroup( grafikLayout.createParallelGroup(javax.swing.GroupLayout.Ali gnment.LEADING) .addGap(0, 653, Short.MAX_VALUE) ); grafikLayout.setVerticalGroup( grafikLayout.createParallelGroup(javax.swing.GroupLayout.Ali gnment.LEADING) .addGap(0, 505, Short.MAX_VALUE) ); getContentPane().add(grafik, java.awt.BorderLayout.CENTER); pack(); }// </editor-fold> private void b_onActionPerformed(java.awt.event.ActionEvent evt) { c.connect(cb_COM); cb_COM.setEnabled(false); b_on.setVisible(false); b_off.setVisible(true); start = true; mulai(); // TODO add your handling code here: } private void b_offActionPerformed(java.awt.event.ActionEvent evt) { b_off.setVisible(false); b_on.setVisible(true); cb_COM.setEnabled(true); start = false; c.disconnect(); // TODO add your handling code here: } private void mulai() { th = new Thread(this); th.start(); } @Override public void run() { while (start) { c.initIOStream(); } } /** * @param args the command line arguments */ public static void main(String args[]) { main demo = new main("Grafik Polar Jarak Antara Alat Dengan Benda"); demo.pack(); RefineryUtilities.centerFrameOnScreen(demo); demo.setVisible(true); } // Variables declaration - do not modify private javax.swing.JButton b_off; private javax.swing.JButton b_on; private javax.swing.JComboBox cb_COM; private javax.swing.JPanel grafik; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel10; private javax.swing.JLabel jLabel11; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JLabel jLabel4; private javax.swing.JLabel jLabel5; private javax.swing.JLabel jLabel6; private javax.swing.JLabel jLabel7; private javax.swing.JLabel jLabel8; private javax.swing.JLabel jLabel9; private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel3; private javax.swing.JPanel jPanel4; private javax.swing.JPanel jPanel5; private javax.swing.JPanel jPanel6; private javax.swing.JPanel jPanel7; private javax.swing.JPanel jPanel8; private javax.swing.JScrollPane jScrollPane1; public static javax.swing.JLabel l_belakang; public static javax.swing.JLabel l_depan; public static javax.swing.JLabel l_kanan; public public public public public public // End } static javax.swing.JLabel l_kanan_belakang; static javax.swing.JLabel l_kanan_depan; static javax.swing.JLabel l_kiri; static javax.swing.JLabel l_kiri_belakang; static javax.swing.JLabel l_kiri_depan; static javax.swing.JTextArea ta_console; of variables declaration Lampiran 2 Source Code Program Arduino L–2 #include <Servo.h> Servo myservo; // create servo object to control a servo // a maximum of eight servo objects can be created Servo myservo2; int pos = 0; // variable to store the servo position //================================= const int pingPin = 7; const int speakerPin = 8; void setup() { // initialize serial communication: Serial.begin(9600); myservo.attach(9); object untuk atas // attaches the servo on pin 9 to the servo myservo2.attach(10); // untuk bawah } void loop() { pinMode(speakerPin, OUTPUT); digitalWrite(speakerPin, LOW); switched off // sound buzzer is defalut myservo2.write(0); myservo.write(0); /*================================ servo atas dan bawah 0 derajat (depan) ambil data ==================================*/ pickData(0); delay(1000); myservo.write(45); /*=================================== servo atas 45 derajat (kiri) ambil data ======================================*/ pickData(315); delay(1000); myservo.write(90); /*=================================== servo atas 90 derajat (kiri) ambil data ======================================*/ pickData(270); delay(1000); myservo.write(135); /*=================================== servo atas 135 derajat (kiri) ambil data ======================================*/ pickData(225); delay(1000); myservo.write(180); /*==================================== servo atas 180 derajat (belakang) ambil data ======================================*/ pickData(180); delay(1000); myservo2.write(45); /*==================================== servo bawah 225 derajat (kanan) ambil data ======================================*/ pickData(135); delay(1000); myservo2.write(90); /*==================================== servo bawah 270 derajat (kanan) ambil data ======================================*/ pickData(90); delay(1000); myservo2.write(135); /*==================================== servo bawah 315 derajat (kanan) ambil data ======================================*/ pickData(45); delay(1000); } void pickData(long sudut){ long duration, cm; pinMode(pingPin, OUTPUT); digitalWrite(pingPin, LOW); delayMicroseconds(2); digitalWrite(pingPin, HIGH); delayMicroseconds(5); digitalWrite(pingPin, LOW); // The same pin is used to read the signal from the PING))): a HIGH // pulse whose duration is the time (in microseconds) from the sending // of the ping to the reception of its echo off of an object. pinMode(pingPin, INPUT); duration = pulseIn(pingPin, HIGH); // convert the time into a distance //inches = microsecondsToInches(duration); cm = microsecondsToCentimeters(duration); if(cm < 200) { pinMode(speakerPin, OUTPUT); digitalWrite(speakerPin, HIGH); delay(1000); digitalWrite(speakerPin, LOW); pinMode(speakerPin, OUTPUT); digitalWrite(speakerPin, HIGH); delay(100); digitalWrite(speakerPin, LOW); delay(200); pinMode(speakerPin, OUTPUT); digitalWrite(speakerPin, HIGH); delay(1000); digitalWrite(speakerPin, LOW); } Serial.print(sudut); Serial.print(","); Serial.print(cm); Serial.println(); } long microsecondsToInches(long microseconds) { return microseconds / 74 / 2; } long microsecondsToCentimeters(long microseconds) { return microseconds / 29 / 2; } Lampiran 3 Tampilan Software Arduino L–3 - Tampilan logo dan label tampilan awal - Tampilan Sorce code dalam software Arduino - Tampilan Upload ke mikrokontroler - Hasil Pembacaan Sensor Pada Serial Monitor