1
APLIKASI PEMANTAUAN LALU LINTAS MOBIL DENGAN MENGGUNAKAN
SENSOR GERAK DAN MIKROKONTROLER ARDUINO
Ade Pramono
1, Ary Mazharuddin
2, Hudan Studiawan
3Jurusan Teknik Informatika, Fakultas Teknologi Informasi
Institut Teknologi Sepuluh Nopember Surabaya
Email:
[email protected]
1ABSTRAK
Pada paper ini, pengumpulan data lalu lintas didapatkan dengan menggunakan mikrokontroler Arduino yang menggunakan sensor gerak. Sensor gerak akan mendeteksi pergerakan diatas jalan yang kemudian diproses oleh mikrokontroler Arduino. Oleh mikrokontroler Arduino data tersebut dikirimkan secara periodik ke data server. Pengiriman data tersebut menggunakan metode GET pada server berbasis PHP. Pengiriman data tersebut terlebih dahulu dienkripsi dengan RC4. Enkripsi dilakukan menggunakan private key yang selalu berubah setiap terjadi pengiriman data. Private key tersebut dikirimkan oleh server setelah berhasil menerima data yang dikirimkan oleh mikrokontroler Arduino. Server akan mendekripsi data yang dikirimkan mikrokontroler Arduino yang kemudian akan disimpan pada database MySQL. Hasil uji coba dibedakan berdasarkan kategori jalan yaitu kepadatan rendah, sedang dan ramai. Hasil pengujian menunjukkan bahwa sensor gerak belum mampu dalam membedakan kendaraan sepeda motor dan mobil. Namun keakuratan yang didapatkan oleh mikrokontroler Arduino secara keseluruhan sebesar 90%, 82% dan 91% untuk masing-masing kategori.
Kata Kunci: data lalu lintas mobil, mikrokontroler arduino, aplikasi android, enkripsi dekripsi rc4 pada mikrokontroler arduino
1. Latar Belakang
Data kepadatan lalu lintas merupakan data yang penting sebagai informasi mengenai kondisi lalu lintas suatu jalan. Menurut penelitian di 34 titik jalan arteri di Jakarta yang dilakukan Departemen Perhubungan RI pada tahun 2000 menunjukkan ada 32 titik (94%) ruas jalan arteri di Jakarta yang melebihi kapasitas [1]. Berdasarkan data tersebut, informasi kepadatan lalu
lintas dibutuhkan tidak hanya untuk statistik
pengembangan jalan tersebut. Namun, data tersebut akan menjadi informasi yang berguna bagi pengguna jalan tersebut. Data kepadatan lalu lintas saat ini didapatkan dengan dua cara, yaitu penghitungan manual dan menggunakan detektor. Pada penghitungan manual pengumpulan data kepadatan arus lalu lintas
dengan menempatkan surveyor pada ruas jalan
tertentu. Cara kedua adalah dengan menggunakan detektor. Penggunaan detektor ini ditanamkan pada aspal jalan yang membuat biaya pengadaan dan pemeliharaan detektor ini menjadi mahal.
Perkembangan mikrokontroler dewasa ini
membuat mikrokontroler yang dilengkapi sensor gerak dapat menggantikan detektor. Sebagai contohnya adalah mikrokontroler Arduino bisa menghidupkan kran air jika ada pergerakan manusia di dekatnya dan akan mematikan kran air jika tidak terdapat gerakan di dekatnya. Dengan pendekatan tersebut sensor gerak ini dapat digunakan sebagai alternatif penghitung data kepadatan lalu lintas dengan mendeteksi pergerakan kendaraan yang melintas. Data dari sensor akan dikirim ke mikrokontroler untuk di enkripsi dengan
algoritma RC4 yang kemudian dikirim ke server. Para
pengguna jalan dapat mendapatkan informasi
kepadatan lalu lintas tersebut dengan mengakses ke server melalui aplikasi berbasis Android.
Perkembangan sistem operasi Android sebagai
salah satu sistem operasi untuk perangkat mobile telah
menyebabkan membanjirnya perangkat-perangkat
mobile berbasis Android di pasaran. Didukung teknologi terbaru dan berbagai fitur serta kemudahan dalam komunikasi terutama koneksi internet membuat
perangkat mobile ini diminati banyak pengguna. Hal
ini yang menjadi alasan dipilihnya Android sebagai aplikasi klien.
Dengan kombinasi teknologi mikrokontroler dan Android informasi kepadatan lalu lintas tidaklah susah didapatkan. Oleh karena itu, dalam paper ini dikembangkan sistem penghitungan kepadatan arus lalu lintas mobil yang dilengkapi enkripsi untuk mengamankan data.
2. Tinjauan Pustaka 2.1 Ardunio
Arduino adalah sebuah mikrokontroler
single-board yang bersifat open-source seperti pada Gambar
2.1. Hardware mikrokontroler Arduino diprogram
dengan menggunakan bahasa pemrograman
wiring-based yang berbasiskan syntax dan library.
Pemrograman wiring-based ini tidak berbeda dengan
C/C++, tetapi dengan beberapa penyederhanaan dan modifikasi. Untuk memudahkan dalam pengembangan
aplikasinya, mikrokontroler Arduino juga
menggunakan Integerated Development Environment
(IDE) berbasis processing [2].
Mikrokontroler Arduino dapat dipasangkan
2
Adapun sensor dan aktuator yang dapat dipasangkan pada Arduino seperti sensor gerak, ultrasonik, panas, suara, Ethernet Shield, LED Display dan yang lainnya.
Gambar 2.1 Mikrokontroler Arduino Uno
Dengan adanya sensor dan aktuator ini membuat mikrokontroler Arduino dapat berinteraksi dengan lingkungan sekitarnya. Penggunaan sensor maupun aktuator disesuaikan dengan kebutuhan dan tujuannya. Sebagai contoh adalah aplikasi Line Tracker, pada
aplikasi ini hardware yang digunakan yaitu sensor line
tracker dan motor. Sehingga mikrokontroler Arduino dapat mengikuti jejak garis yang dilacak.
2.2 Sensor Gerak
Sensor gerak merupakan sensor yang dapat mendeteksi gerakan yang terjadi disekitar sensor.
Sensor gerak memiliki bentuk yang kecil,
membutuhkan daya listrik yang rendah, dan mudah dalam pengaplikasiannya dalam kehidupan sehari-hari.
Sensor gerak dibuat dari sebuah pyroelectric sensor
yang memiliki kristal pada tengahnya yang berfungsi
untuk mendeteksi tingkat radiasi dari infrared. Sensor
gerak ini memiliki 2 bagian yang sensitif terhadap
radiasi infrared. Ketika suatu gerakan melewati sensor,
bagian pertama akan menghasilkan tingkat radiasi
infrared yang lebih tinggi dibandingkan bagian kedua, sehingga sensor akan menghasilkan positif diferensial. Kemudian ketika gerakan tersebut akan meninggalkan sensor, bagian pertama akan menghasilkan tingkat
radiasi infrared yang lebih rendah daripada bagian
kedua, sehingga sensor akan menghasilkan negatif diferensial. Ketika sensor menghadapi positif dan negatif diferensial, sensor akan mendeteksinya sebagai
sebuah gerakan dan akan memberikan sinyal HIGH.
Namun jika tidak terjadi gerakan atau dalam kondisi
idle, sensor akan menghasilkan sinyal LOW. Proses ini
dapat ditunjukkan pada Gambar 2.2. Sensor gerak memiliki bingkai lensa berwarna putih yang terletak seperti setengah bola. Bingkai lensa tersebut berfungsi
untuk menyebarkan kepekaan sensor pyroelectric
sehingga memiliki jangkauan pendeteksian yang lebih luas seperti yang digambarkan pada Gambar 2.3.
Gambar 2.2 Cara Kerja Sensor Gerak
Gambar 2.3 Penyebaran Sensitifitas Sensor Pyroelectric 2.3 PHP CodeIgniter
CodeIgniter adalah sebuah open-source
framework PHP yang menerapkan disain
Model-View-Controller pada framework-nya. CodeIgniter
diciptakan oleh Rick Ellis pada versi pertamanya menggunakan PHP 4. Dokumentasi yang baik, dukungan komunitas yang besar, fleksibelitas dalam pengembangannya membuat CodeIgniter menjadi
framework yang popular diantara framework PHP lainnya.
Keunggulan utama CodeIgniter dibandingkan
framework lainnya adalah CodeIgniter memiliki kesederhanaan dalam pengembangannya, sehingga mudah untuk dipelajari. Selain itu keunggulan lainnya
adalah CodeIgniter merupakan sebuah framework yang
ringan dan tidak membebani server ketika menangani
load yang besar dari client. Maka dari itu, CodeIgniter
memiliki performa yang lebih baik diantara framework
lainnya.
Aplikasi CodeIgniter adalah aplikasi yang
menerapkan konsep tiga tingkat. Tingkat-tingkat itu diantaranya Model-View-Controller. Controller adalah layer dimana fungsi-fungsi logika dijalankan. Model merupakan layer yang menghubungkan basis data dengan aplikasi. Sedangkan View merupakan tempat
dimana interface diimplementasikan.
2.4 ARCFOUR (RC4)
ARCFOUR (RC4) adalah sebuah stream cipher
yang didisain pada tahun 1987 oleh Ron Rives untuk
perusahaan RSA Security. RC4 adalah variabel
key-size stream cipher dengan menerapkan operasi yang
3
adalah sebuah simetrik key cipher dimana byte dari
plaintext dikombinasikan dengan pseudorandom cipher. Sedangkan cipher adalah sebuah algoritma yang digunakan untuk melakukan enkripsi dan dekripsi [3]. RC4 yang memiliki kecepatan dan algoritma yang sederhana membuat RC4 diterapkan pada berbagai aplikasi. Keefesienannya dalam implementasinya baik
dalam software membuat RC4 mudah untuk
dikembangkan.
Dalam implementasinya, algoritma RC4
membutuhkan sebuah key untuk menghasilkan
pseudorandom byte pada saat enkripsi maupun dekripsi seperti yang ditunjukkan pada Gambar 2.11.
Key yang digunakan haruslah rahasia dan hanya
diketahui oleh pengirim dan penerima dari ciphertext
yang dikirim.
Gambar 2.4 Stream Cipher Diagram
Seperti pada stream cipher lainnya, pseudorandom
stream bit atau keystream ini dapat digunakan sebagai
enkripsi dengan menggabungkan plaintext dengan
menggunakan bit-wise exclusive-or atau XOR. Sedangkan dekripsinya menggunakan cara yang sama
karena RC4 adalah operasi simetrik. Untuk
menghasilkan keystream, cipher membuat inisialisasi
awal yang terdiri dari 2 bagian, yaitu:
1. Permutasi dari 256 kemungkinan
(dipresentasikan oleh array "S")
2. index pointer 8-bit (dipresentasikan oleh "i" dan "j").
Permutasi awal diinisialisasikan dari panjang key
yang akan digunakan, biasanya 40 bit hingga 256 bit dengan menggunakan algoritma Key-Scheduling
(KSA). Setelah proses ini selesai, stream dari bit akan
dihasilkan dengan menggunakan algoritma Pseudo-Random Generation (PRGA).
1 for i from 0 to 255 2 S[i] := i 3 Endfor 4 j := 0 5 for i from 0 to 255 6
j := (j + S[i] + key[i mod keylength]) mod 256
7 swap values of S[i] and S[j] 8 Endfor
Gambar 2.5 Pseudocode Algoritma Key-Scheduling
1 i := 0 2 j := 0
3 while GeneratingOutput: 4 i := (i + 1) mod 256 5 j := (j + S[i]) mod 256 6 swap values of S[i] and S[j] 7 K := S[(S[i] + S[j]) mod 256]
8 output K 9 Endwhile
Gambar 2.6 Pseudocode Algoritma Pseudo-random Generation
2.5 Android
Pada platform Android, SDK yang digunakan adalah Eclipse. Untuk mengembangkan aplikasi
Android dibutuhkan plugin bernama Android
Development Tools (ADT) [4]. ADT ini berfungsi untuk mengemulasikan sebuah aplikasi yang dibuat seakan-akan ketika aplikasi dijalankan, aplikasi tersebut berjalan pada hardware yang sebenarnya. Dalam mengembangkan aplikasi Android dengan menggunakan SDK, terdapat bagian penting terdapat pada aplikasi itu sendiri yaitu Activity Class, Android Manifest, Android UI, dan R.java.
Activity Class merupakan class dtulis dengan menggunakan bahasa Java. Activity Class ini berisi halaman yang akan tampil pada layar ketika aplikasi berjalan. Pada Activity Class inilah logika untuk mengimplementasikan interface diterapkan. Untuk setiap layout memiliki pengaturan letak setiap elemen.
Pada aplikasi Android setiap layout dipresentasikan
dengan file Extensible Markup Language (XML).
Untuk Activity Class yang bernama Main, akan terdapat file XML bernama Main.xml. Untuk
menjembatani antara class dan layout terdapat sebuah
file bernama R.java. R.java merupakan class yang
secara otomatis dihasilkan ketika membangun sebuah aplikasi. File R.java ini akan selalu ada disetiap aplikasi Android. Setiap aplikasi Android mutlak memiliki sebuah Android Manifest yang umumnya terdapat pada file AndroidManifest.xml. Pada manifest ini terdapat informasi mengenai spesifikasi dari
aplikasi yang diciptakan. Pada manifest tersebut
terdapat versi, label, intent yang digunakan, akses aplikasi yang diberikan, dan banyak lagi. Setiap
aplikasi Android memiliki file manifest yang berbeda
yang bergantung pada akses yang akan digunakan oleh aplikasi tersebut.
3. Perancangan Perangkat Lunak 3.1 Arsitektur Sistem
Ide awal dari sistem ini adalah setiap
mikrokontroler Arduino pada setiap jalan yang akan
dipantau mengirimkan datanya ke sebuah server pusat,
dimana server tersebut akan menyimpan semua
informasi mengenai data dari mikrokontroler Arduino
itu sendiri maupun data jumlah kendaraan. Server
pusat tersebut juga akan menjadi sumber data bagi
aplikasi client. Arsitektur sistem ini dapat digambarkan
seperti pada Gambar 3.1.
Setiap mikrokontroler Arduino akan mengirimkan
datanya ke server menggunakan perangkat GSM
Shield, dimana GSM Shield ini adalah berupa modem GSM yang memiliki koneksi internet. Namun karena
keterbatasan hardware pada paper ini sistem yang
diimplementasikan menggunakan Ethernet Shield atau
4
tidak akan mempengaruhi kinerja dari sistem ini, karena baik Ethernet Shield maupun GSM Shield tetap menggunakan protokol HTTP sebagai komunikasi datanya.
Pada paper ini menggunakan sebuah
mikrokontroler Arduino yang dilengkapi dengan dua buah sensor gerak saja. Seperti pada Gambar 3.1 arsitektur umum sistem ini terdiri dari 3 bagian penting, yaitu: pengumpul data, pengolah data, dan client.
Pada pengumpulan data dilakukan oleh
mikrokontroler Arduino dengan menggunakan sensor geraknya. Sensor gerak pada mikrokontroler Arduino akan bekerja jika terjadi gerakan disekitarnya. Sensor
gerak akan bernilai HIGH jika mendeteksi adanya
gerakan dan akan bernilai LOW jika tidak terdeteksi
adanya gerakan. Setiap jalur jalan membutuhkan dua
buah sensor gerak, dimana untuk menghilangkan error
rate dari gerakan yang bukan mobil. Mikrokontroler
Arduino akan mendeteksi adanya satu kendaraan mobil yang lewat dengan menggunakan syarat bahwa kedua
sensor harus dalam keadaan HIGH. Dengan jarak
antara kedua sensor yang lebih panjang dari panjang kendaraan roda dua, maka kendaraan roda dua tidak akan dihitung oleh mikrokontroler Arduino. Proses pengumpulan data berhenti sampai disini. Data akan
dikirimkan mikrokontroler Arduino ke server melalui
koneksi internet dengan menggunakan protokol HTTP. Proses selanjutnya adalah pengolahan data yang
dilakukan oleh server. Server mendapatkan data dari
Arduino yang mengirimkan data secara berkala. Data yang dikirimkan melalui tahap enkripsi terlebih dahulu. Enkripsi yang digunakan adalah enkripsi RC4
yang menggunakan private key berbeda-beda di setiap
transaksi datanya. Setiap data yang diterima akan
disimpan pada database jika data yang diterima valid.
Untuk menentukan valid atau tidaknya data yang
diterima, data tersebut akan disesuaikan dengan format
data yang sudah ditentukan oleh server.
3.2 Proses Penghitungan Kendaraan
Untuk mendeteksi kendaraan yang bergerak digunakan 2 buah sensor gerak. Sensor menandakan
terjadinya gerakan dengan sebuah sinyal HIGH, dan
menandakan sinyal LOW jika tidak terjadi gerakan.
Ketika sebuah sensor menandakan sinyal HIGH tetapi
sensor lainnya menandakan sinyal LOW, maka tidak
akan ada penghitungan jumlah kendaraan. Namun, jika
kedua buah sensor menandakan sinyal HIGH maka
akan dianggap terjadi satu gerakan kendaraan yang melintas. Proses ini digambarkan pada diagram alir yang ditunjukkan pada Gambar 3.2. Sedangkan ilustrasi sensor mendeteksi kendaraan yang melintas digambarkan pada Gambar 3.3.
Start Sensor 1 == HIGH Sensor 2 == HIGH Jumlah Kendaraan + 1 Tidak Tidak Finish
Gambar 3.2 Proses Penghitungan Kendaraan Gambar 3.1 Arsistektur Umum Sistem
5
Gambar 3.3 Arsitektur Sensor Gerak 3.3 Proses Enkripsi Dekripsi RC4
Data jumlah kendaraan yang sudah dihitung akan
dikirim secara berkala ke server. Namun sebelum data
tersebut dikirim ke server, data tersebut diolah terlebih
dahulu lalu kemudian dienkripsi dengan menggunakan
private key yang sudah ditentukan. Setelah menjadi
sebuah ciphertext yang terenkripsi, mikrokontroller
Arduino akan melakukan sambungan dengan server.
Kemudian mikrokontroler Arduino akan mengirimkan
ciphertext tersebut menggunakan protokol HTTP
dengan fungsi GET. Namun, jika server tidak dapat
terhubung akan dilakukan pengiriman pada periode selanjutnya. Proses ini dapat digambarkan seperti Gambar 3.4.
Setelah terjadi transaksi data antara
mikrokontroler Arduino dengan server, server akan
mengirimkan sebuah privatekey baru sebagai tanda
data telah diterima. Private key tersebut dikirimkan
dalam bentuk ciphertext yang sudah terenkripsi.
Ciphertext tersebut akan didekripsi dengan
menggunakan private key sebelumnya. Setelah
didekripsi, mikrokontroler Arduino akan mengganti
private key lama dengan private key yang baru. Prosesnya dapat digambarkan seperti diagram alir pada Gambar 3.5. Start Plaintext = Data Enkripsi RC4 Private Key milis() == periode Menghubungkan Server Server Terhubung Kirim Ciphertext (HTTP GET method) Finish Ya Ya Tidak
Gambar 3.4 Proses Enkripsi dan Mengirimkan Data
Start Server Terhubung Ciphertext Masuk Ciphertext Dekripsi RC4 Private Key Private Key Baru Finish Ya Tidak Tidak Ya
Gambar 3.5 Proses Menerima Data dan Dekripsi 3.4 Rancangan Antar Muka Aplikasi Android
Pada sistem tidak terdapat banyak antar muka dikarenakan sistem ini berjalan secara otomatis. Konfigurasi dan penyetelan alat seperti mikrokontroler
Arduino dan server hanya ketika pertama kali
dijalankan. Bagian sistem yang memiliki antar muka
bagi user-nya adalah aplikasi Android. Aplikasi ini
merupakan aplikasi client yang ditujukan bagi
pengguna jalan. Sehingga aplikasi pada Android ini disajikan dalam bentuk peta dengan informasi yang cukup.
Gambar 3.6 Rancangan Antar Muka
Gambar 3.6 kiri merupakan antar muka ketika
aplikasi client dijalankan. Sedangkan Gambar 3.6
kanan merupakan antar muka ketika sebuah ruas jalan yang lebih spesifik dipilih. Antar muka tersebut akan menampilkan informasi yang lebih jelas seperti jumlah kendaraan dan terakhir data diperbarui. Ketika aplikasi pertama kali dijalankan, aplikasi akan secara otomatis
bergerak ke poisisi pada peta dimana client sedang
berada. Posisi ini didapat dari bantuan GPS yang tertanam pada perangkat Android. Setelah itu aplikasi akan menampilkan data jumlah kendaraan pada setiap
6
4. Implementasi Perangkat Lunak 4.1 Mikrokontroler Arduino
Pada paper ini dibuat sebuah prototype dari
rancangan sistem yang sebenarnya. Prototype
menggunakan mikrokontroler Arduino yang dilengkapi dengan Ethernet Shield, 2 buah sensor gerak dan lampu LED.
Pada implementasi prototype ini, mikrokontroler
Arduino diletakkan pada sebuah proyek board yang
memiliki jalur pin yang menyebar seperti pada Gambar 4.1. Sehingga sensor gerak dan lampu LED dapat
dipasangkan dengan mudah. Sedangkan Ethernet
Shield adalah aktuator yang khusus dibuat untuk
mikrokontroler Arduino sehingga untuk
pemasangannya Ethernet Shiled ditancapkan pada
bagian atas mikrokontroler Arduino seperti yang ditunjukkan pada Gambar 4.2.
Gambar 4.1 Mikrokontroler Arduino pada Proyek Board
Gambar 4.2 Mikrokontroler Arduino dan Ethernet Shield
Gambar 4.3 Rancangan Mikrokontroler Arduino dengan 2 Sensor Gerak
Sensor gerak bertugas untuk mendeteksi gerakan kendaraan. Sensor gerak ini diletakkan sejauh 1 meter ke kiri dan 1 meter ke kanan dari mikrokontroler Arduino seperti yang ditunjukkan pada Gambar 4.3. Sehingga jumlah panjang sensor gerak satu dengan
sensor gerak lainnya sepanjang 2 meter dengan mikrokontroler Arduino berada ditengahnya.
Dari sensor gerak kabel hijau akan dihubungkan
dengan mikrokontroler Arduino melalui proyek board.
Kemudian dari proyek board diteruskan ke
mikrokontroler Arduino menggunakan kabel hijau yang masuk ke pin nomer 8 dan 9 pada mikrokontroler Arduino. Pin nomer 8 dan 9 akan dibaca sebagai tempat masuknya input dari sensor gerak dalam perangkat lunak.
Ketika mikrokontroler Arduino mendeteksi
adanya kendaraan yang melintas, mikrokontroler Arduino akan menyalakan indikator berupa lampu LED berwarna biru dan akan mati ketika kendaraan sudah melintas. Dari mikrokontroler Arduino lampu LED berada pada pin 7. Dimana pada gambar lampu LED dan mikrokontroler Arduino disambungkan dengan menggunakan kabel berwarna kuning.
Untuk mendeteksi kendaraan yang melintas, mikrokontroler Arduino ini dibantu oleh 2 buah sensor gerak. Dimana sensor 1 diinisialisasikan sebagai “pirPin1” dan sensor 2 diinisialisasikan sebagai “pirPin2”. Seperti pada Gambar 4.5 baris 1 dan 2 merupakan kondisi dimana sensor 1 dan sensor 2 harus
bernilai HIGH atau yang berarti sensor sedang
mendeteksi adanya gerakan sehingga pada baris 4 jumlah kendaraan akan bertambah.
1 If pirPin1 = HIGH do 2 If pirPin2 = HIGH do 3 ledPin = HIGH 4 objectCounter + 1 5 Wait 50 ms 6 endIf 7 endIF
Gambar 4.5 Pseudocode Mendeteksi Kendaraan
1 for i from 0 to 255 2 S[i] := i 3 Endfor 4 j := 0 5 for i from 0 to 255 6
j := (j + S[i] + key[i mod keylength]) mod 256
7 swap values of S[i] and S[j] 8 i := 0
9 j := 0
10 while GeneratingOutput: 11 i := (i + 1) mod 256 12 j := (j + S[i]) mod 256 13 swap values of S[i] and S[j] 14 K := S[(S[i] + S[j]) mod 256] 15 Ciphertext = data XOR S[(S[i]+S[j])%256])
16 output Ciphertext 17 Endwhile
Gambar 4.6 Pseudocode Enkripsi RC4
Seperti yang sudah dijelaskan pada Bab 2 mengenai enkripsi RC4, terdapat 2 bagian dalam
pengimplementasian enkripsi RC4, yaitu
key-scheduling dan pseudo-random generation. Key-scheduling ditunjukkan dengan Gambar 4.6 pada baris
1-7. Sedangkan pseudo-random generation
ditunjukkan pada baris 8-17. Baris 15 merupakan
7
4.2 Server
Setelah menjadi karakter, ciphertext tersebut akan
didekripsi dengan menggunakan algoritma RC4
dengan private key yang sudah tercatat pada database.
Seperti yang sudah dijelaskan pada Bab 2, algoritma
RC4 terdiri dari key-scheduling dan pseudo-random
generation, dimana enkripsi ini diimplementasikan tidak jauh berbeda dengan yang diimplementasikan
pada mikrokontroler Arduino. Sedangkan
implementasi keseluruhan dari server dapat
digambarkan pada alur proses Gambar 4.7 dan Gambar 4.8.
Gambar 4.7 Alur Proses Server untuk Mikrokontroler Arduino
Gambar 4.8 Alur Proses Server untuk Aplikasi Android 4.3 Android
Implementasi pada Android dilakukan dengan 3 proses. Proses pertama mendapatkan posisi GPS dan menampilkan peta. Proses kedua meminta data ke server berdasarkan posisi yang didapat pada GPS. Sedangkan proses ketiga yaitu menampilkan informasi
yang dikirimkan server pada peta sesuai dengan
lokasinya. Proses ini berlangsung berulang-ulang yang dapat digambarkan pada Gambar 4.9. Sedangkan Gambar 4.10 merupakan tampilan antar muka yang sudah diimplementasikan.
Gambar 4.9 Implementasi pada Android 5. Uji Coba dan Hasil
Uji coba dilakukan untuk mengetahui seberapa besar tingkat kesuksesan sistem ini. Uji coba akan dilakukan untuk mengetahui tingkat keakuratan dalam mendeteksi kendaraan. Kecepatan aplikasi Android
mengakses data ke server. Dan kecepatan
mikrokontroler Arduino mengirimkan data ke server.
5.1 Uji Coba Performa Keakuratan Penghitungan
Pada uji coba ini dilakukan di 3 kategori tempat. Dimana kategori rendah yang memiliki kriteria kurang dari 3 kendaraan/menit. Sedang memiliki kriteria 5-10
Gambar 4.10 Implementasi Antar Muka Aplikasi
kendaraan/menit dan tinggi dengan kriteria lebih dari 10 kendaraan/menit. Pada uji coba ini dilakukan evaluasi dari jarak antar sensor. Pada hasil pengujian, kendaraan sepeda motor masih dapat dideteksi. Sehingga untuk evaluasi jarak antar sensor diperlebar menjadi 3 meter. Akan terdapat 2 hasil, sebelum evaluasi dan sesudah evaluasi. Sedangkan nilai keakuratan dihitung dari:
1. Kepadatan rendah
Pengujian pada kategori ini dilakukan di dalam perumahan Wisma Permai I. Uji coba dilakukan pada pukul 13.00. Dimana lokasi ini merupakan jalan utama dari perumahan ini. Hasil uji coba ditunjukkan pada Tabel 5.1.
Dari hasil uji coba tersebut didapatkan hasil yang akurat. Jika dihitung rasio keakuratannya didapatkan keakuratan sebesar 70%. Namun pada 2 uji coba kendaraan sepeda motor masih dideteksi oleh sensor
yang menghasilkan error rate sebesar 30%.
Tabel 5.1 Keakuratan Kepadatan Rendah
Uji Coba ke
Keakuratan(%)
Sebelum evaluasi Setelah Evaluasi
1 100 100 2 100 100 3 50 50 4 0 100 5 100 100 Rata-rata 70 90 2. Kepadatan sedang
Pengujian pada kategori ini dilakukan di dalam area ITS, di Jalan Teknik Sipil. Jalan ini memiliki 2 jalur yang dibatasi oleh taman. Karena keterbatasan
hardware pengujian dilakukan hanya pada satu jalur. Proses pengujian dilakukan pada sore hari pukul 16.30 WIB, dimana merupakan jam-jam sibuk. Dari hasil pengujian didapatkan data sebagi berikut.
Menerima
Data Melakukan Dekripsi Cek Validasi Ke Database Menyimpan Mengrimkan Key Baru
Menerima Permintaan Data Mengumpulkan Data Mengirimkan Data Mendapatkan Posisi GPS Meminta Data ke Server Menampilkan Data dalam Peta Terdeteksi Jumlah Mobil Kendaraan Jumlah absolute 1(%) Keakuratan Terdeteksi Jumlah Kendaraan Jumlah absolute 2(%) Keakuratan
8
Tabel 5.2 Keakuratan Kepadatan Sedang
Uji Coba ke
Keakuratan(%)
Sebelum evaluasi Setelah Evaluasi
1 34.09 25.86 2 20.00 17.78 3 21.15 41.18 4 25.71 28.85 5 30.00 24.19 Rata-rata 26.19 27.57
Tabel 5.3 Keakuratan Seluruh Kendaraan Kepadatan Sedang
Uji Coba ke
Keakuratan(%)
Sebelum evaluasi Setelah Evaluasi
1 100.00 100.00 2 92.11 95.74 3 94.23 86.44 4 88.57 89.66 5 88.89 85.48 Rata-rata 92.76 91.46
Dari hasil pengujian didapatkan 2 buah tabel, yaitu Tabel 5.1 yang memberikan keakuratan dalam mendeteksi mobil dan Tabel 5.2 memberikan keakuratan dalam mendeteksi semua kendaraan. Dari hasil keakuratan pendeteksian mobil didapatkan sebesar 26.19% dan setelah evaluasi sebesar 27.57%. Hasil ini masih jauh dari yang diharapkan. Namun, jika dihitung secera keselurhan hasil yang didapatkan sebesar 92.76% dan setelah evaluasi 91.46%.
3. Kepadatan tinggi
Pengujian ketegori ini dilakukan di Jalan Raya ITS. Jalan ini merupakan jalan protokol yang memiliki 2 jalur dan total 4 lajur. Proses pengujian hanya dilakukan pada 1 jalur dan 1 lajur saja. Proses pengujian dilakukan pada pukul 17.30 WIB.
Sama seperti uji coba pada kepadatan sedang, hasil uji coba pada Tabel 5.4 tidak sesuai harapan. Dimana sepeda motor yang melintas masih tetap dihitung oleh mikrokontroler Arduino. Jika rasio keakuratan dihitung berdasarkan kendaraan mobil saja akan didapatkan hasil sebesar 53.43% dan 60.47% setelah evaluasi. Sedangkan jika dihitung secara keseluruhan didapatkan 86.55% dan 82.15% setelah evaluasi.
Tabel 5.4 Keakuratan Kepadatan Tinggi
Uji Coba ke
Keakuratan(%)
Sebelum evaluasi Setelah Evaluasi
1 63.72 85.54 2 60.00 63.55 3 38.02 38.89 4 52.50 60.44 5 52.94 53.92 Rata-rata 53.43 60.47
Tabel 5.5 Keakuratan Seluruh Kendaraan Kepadatan Tinggi
Uji Coba ke
Keakuratan(%)
Sebelum evaluasi Setelah Evaluasi
1 83.70 60.14 2 83.33 74.83 3 76.03 96.30 4 95.24 85.05 5 94.44 94.44 Rata-rata 86.55 82.15
5.2 Uji Coba Kecepatan Pengiriman Data
Uji coba ini dilakukan untuk mengetahui tingkat
kesuksesan mikrokontorler Arduino dalam
mengirimkan data ke server. Mikrokontroler Arduino
akan diuji dengan melakukan pengiriman sebanyak 30 kali. Hasil yang didapatkan dapad dilihat pada Tabel 5.6. Dimana kesuksesan berhasil 100% dengan
rata-rata kecepatan transfer 509 milidetik.
Tabel 5.6 Uji Coba Pengiriman Data Uji
Coba Data dikirim Data diterima
Wakt u (mili detik) 1 010228007176204139 015243002226252214 474 2 050183217124056164 039182216057020241 460 3 221078245181178077 221085227237129007 472 …… ……….. ……… …… 27 118182021019239042 112165011071194107 675 28 099109125200219008 106126119158229072 465 29 105074255198075061 125086255130120118 444 30 010003208022236054 006024216067214116 529 Rata-rata 509
5.3 Uji Coba Aplikasi Android
Uji coba dilakukan untuk mengetahui seberapa cepat akses yang diberikan oleh aplikasi Android ketika aplikasi dijalankan. Uji coba dilakukan pada 2 jenis jaringan, yaitu 3G dan CDMA. Uji coba dilakukan sebanyak 5 kali untuk mengetahui hasil rata-rata kecepatan akses aplikasi. Hasil uji coba menunjukkan kecepatan rata-rata dari jaringan 3G sebesar 2.9 detik dan pada CDMA 2.5 detik. Hasil ini menunjukkan baik pada jaringan 3G maupun CDMA aplikasi masih layak untuk digunakan.
Tabel 5.7 Hasil Uji Coba Aplikasi Android
Jaringan 3G Jaringan CDMA
Uji coba ke Waktu (detik) Uji Coba ke Waktu (detik)
1 3.3 1 2.4 2 3.3 2 2.7 3 2.5 3 2.6 4 3.7 4 2.6 5 1.7 5 2.3 Rata-rata 2.9 Rata-rata 2.5 5.4 Hasil Analisa
Dari hasil uji coba didapatkan bahwa sensor gerak belum mampu membedakan pendeteksian antara mobil dan sepeda motor. Evaluasi yang dilakukan tidak juga
dapat membantu mengurangi error rate yang dibuat
oleh sepeda motor. Pemberian halangan pada sensor gerak tidak juga dapat memberikan ruang pendeteksian yang lebih fokus. Sepeda motor masih menempati ruang sensitif sensor seperti pada Gambar 5.8.
9
Gambar 5.8 Analisa Pendeteksian Sensor
Sedangkan pendeteksian pada kategori kepadatan tinggi yang memberikan hasil tidak lebih akurat daripada pada kepadatan sedang dikarenakan ketika mobil dan sepeda motor berjalan beriringan sensor tidak dapat membedakan kendaraan tersebut. Ilustrasi ini ditunjukkan pada Gambar 5.9.
Gambar 5.9 Analisa Keakuratan Penghitungan Kendaraan
6. Penutup 6.1 Kesimpulan
Dari hasil pengamatan selama perancangan, pengimplementasian, dan proses uji coba sistem didapatkan kesimpulan sebagai berikut.
1. Perangkat keras yang dibuat sudah dapat
mendeteksi gerakan kendaraan, namun perangkat keras tersebut tidak dapat membedakan kendaraan sepeda motor dan mobil yang melintas.
2. Perangkat lunak yang dibuat juga sudah dapat
melakukan enkripsi dan mengirimkan data
tersebut ke server. Perangkat lunak ini dapat
menerima private key dan melakukan dekripsi dari
ciphertext yang dikirimkan server.
3. Perangkat lunak yang diimplementasikan pada
server sudah dapat menangani pengiriman data
yang dilakukan mikrokontroler Arduino. Server
dapat melakukan enkripsi dan dekripsi untuk
mengamankan data. Server juga dapat menangani
permintaan data oleh aplikasi Android dengan
response yang cepat.
4. Perangkat lunak yang dibuat pada perangkat
Android sudah dapat menampilkan peta dan
informasi yang diberikan oleh server dalam
bentuk JSON. Perangkat lunak ini juga sudah
dapat menampilkan titik-titik lokasi
mikrokontroler Arduino pada peta dengan benar.
6.2 Saran
Setelah melakukan perancangan,
pengimplementasian dan pengujian, ditemui
kekurangan pada sistem yang sudah dibuat. Ada
beberapa saran yang dapat dilakukan untuk
mengurangi kekurangan tersebut.
1. Mengganti sensor gerak dengan sebuah sensor
yang lebih fokus dalam mendeteksi gerakan seperti laser.
2. Mengganti mikrokontroler Arduino dengan versi
yang lebih cepat sehingga proses penghitungan kendaraan, enkripsi dekripsi data dapat dilakukan
secara realtime.
7. Daftar Pustaka
[1] PDAT, 2006. Masalah Kemacetan Jakarta,
<URL:http://www.pdat.co.id/hg/political_pdat/20 06/03/17/pol,20060317-01,id.html>. [diakses terakhir 5 September 2011].
[2] Margelis, Michael. 2011. Arduino Cookbook.
USA : O’Reilly Media, Inc.
[3] Stallings, Wiliiam. 2005. Cryptography and
Network Security Principles and Practices, Fourth Edition. Prentice Hall.
[4] Meier, Reto. 2009. Professional Android™
Application Development . Wiley Publishing, Inc.