Page 1
1
APLIKASI PEMANTAUAN LALU LINTAS MOBIL DENGAN MENGGUNAKAN
SENSOR GERAK DAN MIKROKONTROLER ARDUINO
Ade Pramono1, Ary Mazharuddin
2, Hudan Studiawan
3
Jurusan Teknik Informatika, Fakultas Teknologi Informasi
Institut Teknologi Sepuluh Nopember Surabaya
Email: [email protected]
ABSTRAK
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
dengan bermacam-macam sensor dan aktuator lainnya.
Page 2
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
berorientasi pada tiap byte datanya. Stream cipher
Page 3
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
Ethernet Card. Penggunaan interface yang berbeda ini
Page 4
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
Page 5
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 RC4Private 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
CiphertextDekripsi RC4Private Key
Private Key Baru
Finish
YaTidak
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
jalan yang berada disekitar client berada.
Page 6
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
proses terakhir dimana ciphertext dibentuk.
Page 7
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 Menyimpan Ke Database
Mengrimkan Key Baru
Menerima Permintaan Data
Mengumpulkan Data
Mengirimkan Data
Mendapatkan Posisi GPS
Meminta Data ke Server
Menampilkan Data dalam
Peta
TerdeteksiJumlah
MobilKendaraan Jumlah absolute 1(%)Keakuratan
TerdeteksiJumlah
KendaraanJumlah absolute 2(%)Keakuratan
Page 8
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.
Page 9
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.