Anda di halaman 1dari 98

ANALISA PEMANFAATAN ACCELEROMETER DAN GYROSCOPE

PADA TELEPON SELULER UNTUK


MENGUKUR KUALITAS JALAN

SKRIPSI

ARDI SAHPUTRA
141401077

PROGRAM STUDI S1 ILMU KOMPUTER


FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATERA UTARA
MEDAN
2019

UNIVERSITAS SUMATERA UTARA


ANALISA PEMANFAATAN ACCELEROMETER DAN GYROSCOPE
PADA TELEPON SELULER UNTUK
MENGUKUR KUALITAS JALAN

SKRIPSI

Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh ijazah Sarjana Ilmu Komputer

ARDI SAHPUTRA
141401077

PROGRAM STUDI S1 ILMU KOMPUTER


FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATERA UTARA
MEDAN
2019

UNIVERSITAS SUMATERA UTARA


ii

PERSETUJUAN

Judul : ANALISA PEMANFAATAN


ACCELEROMETER DAN GYROSCOPE PADA
TELEPON SELULER UNTUK
MENGUKUR KUALITAS JALAN

Kategori : SKRIPSI

Nama : ARDI SAHPUTRA

Nomor Induk Mahasiswa : 141401077

Program Studi : SARJANA (S1) ILMU KOMPUTER

Fakultas : ILMU KOMPUTER DAN TEKNOLOGI


INFORMASI UNIVERSITAS SUMATERA
UTARA

Komisi Pembimbing:

Pembimbing 2 Pembimbing 1

Elviwani, S.Kom, M.Kom Jos Timanta Tarigan,S.Kom., M.Sc.


NIP. 197508182017062001 NIP. 198501262015041001
Diketahui/disetujui oleh

Program Studi S1 Ilmu Komputer

Ketua,

Dr. Poltak Sihombing, M.Kom


NIP. 1962031719910311001

UNIVERSITAS SUMATERA UTARA


iii

PERNYATAAN

ANALISA PEMANFAATAN ACCELEROMETER DAN GYROSCOPE PADA


TELEPON SELULER UNTUK MENGUKUR KUALITAS JALAN

SKRIPSI

Saya mengakui bahwa skripsi ini adalah hasil karya saya sendiri, kecuali beberapa
kutipan dan ringkasan yang masing-masing telah disebutkan sumbernya.

Medan, Juli 2019

Ardi Sahputra
141401077

UNIVERSITAS SUMATERA UTARA


iv

PENGHARGAAN

Alhamdulillahirrabbil’alamin. Segala puji penulis ucapkan kepada Allah SWT


yang telah memberikan rahmat dan hidayah-Nya sehingga penulis dapat
menyelesaikan skripsi ini. Penulis ingin menyampaikan terima kasih kepada semua
pihak yang telah membantu dalam menyelesaikan skripsi ini. Penulis ingin
mengucapkan terima kasih kepada :

1. Bapak Prof. Dr. Runtung Sitepu, SH., M.Hum sebagai Rektor Universitas
Sumatera Utara.
2. Bapak Prof. Dr. Opim Salim Sitompul, M.Sc sebagai Dekan Fakultas Ilmu
Komputer dan Teknologi Informasi Universitas Sumatera Utara.
3. Bapak Dr. Poltak Sihombing, M.Kom sebagai Ketua Program Studi S1 Ilmu
Komputer Fakultas Ilmu Komputer dan Teknologi Informasi Universitas
Sumatera Utara.
4. Bapak Jos Timanta Tarigan, S.Kom., M.Sc sebagai Dosen Pembimbing I yang
telah membimbing dan memberikan dukungan kepada penulis selama
mengerjakan skripsi ini.
5. Ibu Elviwani, S.Kom, M.Kom sebagai Dosen Pembimbing II yang telah
membimbing dan memberikan dukungan kepada penulis selama mengerjakan
skripsi ini.
6. Seluruh Dosen serta staf Pegawai di Program Studi S1 Ilmu Komputer Fakultas
Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.
7. Kedua orang tua penulis Ibunda Susi Sapartinah dan Ayahanda Zainal Arifin
Sinaga yang telah memberikan dukungan semangat dan motivasi sehingga penulis
dapat menyelesaikan skripsi ini.
8. Teman-teman kom B yang selama ini banyak memberikan pelajaran hidup dan
bantuan kepada penulis, terkhususnya Sasmita Azzahra, Maya Masitha, Novianti
Artika Sari.

UNIVERSITAS SUMATERA UTARA


v

9. Kepada Cindy Pakpahan, Adib Rizkan, Farhan Rangkuti, Rizky Hakim Lubis,
Kevin Rinanda, Dianda Rizki, Muhammad Rinaldi dan teman teman stambuk
2014 yang telah memberikan banyak semangat selama mengerjakan skripsi.
10. Semua pihak yang terlibat langsung ataupun tidak langsung yang tidak dapat
penulis ucapkan satu-persatu yang telah membantu penyelesaian skripsi ini.

Semoga Allah SWT memberikan berkah, kesehatan, dan keselamatan bagi semua
pihak yang telah mendukung penulis untuk menyelesaikan skripsi ini. Semoga
penelitian ini bermanfaat kepada seluruh orang terutama kepada penulis sendiri.

Medan, Juli 2019


Penulis,

Ardi Sahputra

UNIVERSITAS SUMATERA UTARA


vi

ANALISA PEMANFAATAN ACCELEROMETER DAN GYROSCOPE PADA


TELEPON SELEULER UNTUK MENGUKUR KUALITAS JALAN

ABSTRAK

Ditengah pesatnya pembangunan infrastuktur jalan oleh pemerintah, tidak iringi


dengan pemeliharaan jalan sehingga mengakibatkan banyak jalan yang rusak sebelum
waktunya. Kondisi jalan yang rusak merupakan salah satu permasalahan serius yang
sedang dihadapi oleh pemerintah dan masyarakat. Jalan rusak dapat menyebabkan
banyak masalah salah satunya terhambatnya transportasi dan juga dapat menyebabkan
kecelakaan. Untuk membantu menyelesaikan permasalahan tersebut dikembangkan
sebuah aplikasi yang berguna untuk melaporkan kerusakan jalan dengan
memanfaatkan accelerometer, gyroscope dan GPS pada telepon seluler. Aplikasi
pendeteksi jalan rusak ini memanfaatkan accelerometer, gyroscope dan GPS untuk
mengumpulkan data jalan yang dilewati, menyimpan, kemudian menganalisa data
yang terkumpul untuk mendapatkan informasi tentang titik-titik jalan yang rusak
kemudian menandainya. Acceleromter dan Gyroscope adalah sensor yang mendeteksi
pergerakan dan juga perputaran suatu obyek. Percobaan yang dilakukan menggunakan
kendaraan roda 4 sejauh 5 km di jalanan kota Medan yang terdiri dari berbagai
kerusakan jalan seperti : berlubang, bergelombang dan retak , serta berbagai jalan
dengan polisi tidur dan persimpangan jalan. Hasil percobaan ini mendapatkan nilai
sumbu x, y, z dari Accelerometer dan Gyroscope yang kemudian akan dianalisa
perbedaan dan juga akurasinya dalam menentukan kondisi suatu jalan.

Kata Kunci : Jalan rusak, Accelerometer, Gyroscope, GPS, Pothole Patrol.

UNIVERSITAS SUMATERA UTARA


vii

ANALYSIS OF ACCELEROMETER AND GYROSCOPE UTILIZATION ON


CELULER PHONES TO MEASURE ROAD QUALITY

ABSTRACT

Amid the rapid development of road infrastructure by the government, it is not


accompanied by maintenance of roads so that many roads are damaged prematurely.
Damaged road conditions are one of the serious problems being faced by the
government and society. Damaged roads can cause many problems, one of which is
the obstruction of transportation and can also cause accidents. To help solve these
problems an application was developed that is useful for reporting road damage using
the accelerometer, gyroscope and GPS on cellular phones. This damaged road
detection application utilizes an accelerometer, gyroscope and GPS to collect road data
that is passed, save, then analyze the collected data to get information about damaged
road points then mark it. Acceleromter and Gyroscope are sensors that detect
movement and also the rotation of an object. Experiments carried out using 4-wheeled
vehicles as far as 5 km on the streets of Medan consisting of various road damage such
as: hollow, bumpy and cracked, as well as various roads with sleeping police and
crossroads. The results of this experiment get the x, y, z axis values of the
Accelerometer and Gyroscope which will then be analyzed for differences and
accuracy in determining the condition of a road.

Keyword : Damaged road, Accelerometer, Gyroscope, GPS, Pothole Patrol.

UNIVERSITAS SUMATERA UTARA


viii

DAFTAR ISI

Halaman
PERSETUJUAN ii
PERNYATAAN iii
PENGHARGAAN iv
ABSTRAK vi
ABSTRACK vii
DAFTAR ISI viii
DAFTAR TABEL xi
DAFTAR GAMBAR xii
DAFTAR LAMPIRAN xiv

BAB 1. PENDAHULUAN
1.1. Latar Belakang 1
1.1 Rumusan Masalah 2
1.2 Batasan Masalah 3
1.3 Tujuan Penelitian 3
1.4 Manfaat Penelitian 3
1.5 Metodologi Penelitian 4
1.6 Sistematika Penulisan 5

BAB 2. LANDASAN TEORI


2.1 Sensor Accelerometer 6
2.2 Sensor Gyroscope 7
2.3 Google Maps Api 8
2.4 Algoritma Pendeteksi Jalan Berlubang 10
2.5 Penelitian yang Relevan 11

BAB 3. ANALISIS PERANCANGAN


3.1 Analisis Sistem 12
3.1.1 Analisis Masalah 12
3.1.2 Analisis Kebutuhan 12

UNIVERSITAS SUMATERA UTARA


ix

3.1.2.1 Kebutuhan Fungsional 13


3.1.2.2 Kebutuhan Non-Fungsional 13
3.1.3 Diagram Umum Sistem 14
3.1.4 Pemodelan Sistem 14
3.1.4.1 Use Case Diagram 15
3.1.4.2 Activity Diagram 16
3.1.4.3 Sequence Diagram 17
3.1.5 Flowchart 18
3.1.5.1 Flowchart Sistem 18
3.2 Perancangan Interface 19
3.2.1 Interface Halaman Splash 20
3.2.2 Interface Halaman Utama 21
3.2.3 Interface Halaman Utama Lanjutan 22

BAB 4. IMPLENTASI DAN PENGUJIAN


4.1 Impelementasi Sistem 23
4.1.1 Halaman Splashscreen 23
4.1.2 Halaman Home 24
4.2 Pengujian Sistem 25
4.2.1 Pengujian Getaran Mobil 25
4.2.2 Pengujian Lubang 27
4.2.2.1 Pengujian Lubang 1 dengan kecepatan 20 Km/Jam 27
4.2.2.2 Pengujian Lubang 1 dengan kecepatan 40 Km/Jam 29
4.2.2.3 Pengujian Lubang 2 dengan kecepatan 20 Km/Jam 31
4.2.2.4 Pengujian Lubang 2 dengan kecepatan 40 Km/Jam 33
4.2.2.5 Pengujian Lubang 3 dengan kecepatan 20 Km/Jam 34
4.2.2.6 Pengujian Lubang 3 dengan kecepatan 40 Km/Jam 37
4.2.3 Pengujian Polisi Tidur 38
4.2.4 Pengujian Jalan Datar 40
4.2.4.1 Pengujian Jalan Datar Dengan Kecepatan
20Km/Jam 40
4.2.4.2 Pengujian Jalan Datar Dengan Kecepatan
40Km/Jam 43
4.2.5 Tabel Perbandingan Grafik Kecepatan 20 Km/Jam dengan
40 Km/Jam 45
4.2.6 Analisa Hasil Percobaan 46

UNIVERSITAS SUMATERA UTARA


x

BAB 5. KESIMPULAN DAN SARAN


5.1 Kesimpulan 47
5.2 Saran 48

Daftar Pustaka 49

UNIVERSITAS SUMATERA UTARA


xi

DAFTAR TABEL

Halaman
Tabel 4.1 Hasil Uji Lubang 1 45
Tabel 4.2 Hasil Uji Lubang 2 45
Tabel 4.3 Hasil Uji Lubang 3 45
Tabel 4.4 Hasil Uji Jalan Datar 46

UNIVERSITAS SUMATERA UTARA


xii

DAFTAR GAMBAR

Halaman
Gambar 2.1 Sumbu XYZ Accelerometer pada Telepon Seluler 6
Gambar 2.2 Ilustrasi Sensor Gyroscope pada Telepon Seluler 7
Gambar 2.3 Cara Kerja API (Application Programming Interface) 9
Gambar 3.1 Diagram Umum Sitem 14
Gambar 3.2 Use Case Diagram Penelitian 15
Gambar 3.3 Activity Diagram 16
Gambar 3.4 Sequence Diagram Sistem 17
Gambar 3.5 Flowchart Sistem 18
Gambar 3.6 Rancangan Interface Halaman Splash 20
Gambar 3.7 Rancangan Interface Halaman Utama 21
Gambar 3.8 Rancangan Interface Halaman Utama Lanjutan 22
Gambar 4.1 Halaman Splashscreen 23
Gambar 4.2 Halaman Home 24
Gambar 4.3 Grafik Accelerometer Getaran Mobil 26
Gambar 4.4 Grafik Gyroscope Getaran Mobil 26
Gambar 4.5 Pengujian Lubang 1 27
Gambar 4.6 Gambar Lubang 1 28
Gambar 4.7 Grafik Accelerometer Lubang 1 28
Gambar 4.8 Grafik Gyroscope Lubang 1 29
Gambar 4.9 Grafik Accelerometer Lubang 1 (40 Km/Jam) 30
Gambar 4.10 Grafik Gyroscope Lubang 1 (40 Km/Jam) 30
Gambar 4.11 Pengujian Lubang 2 31
Gambar 4.12 Gambar Lubang 2 32
Gambar 4.13 Grafik Accelerometer Lubang 2 32
Gambar 4.14 Grafik Gyroscope Lubang 2 33

UNIVERSITAS SUMATERA UTARA


xiii

Gambar 4.15 Grafik Accelerometer Lubang 2 (40 Km/Jam) 33


Gambar 4.16 Grafik Gyroscope Lubang 2 (40 Km/Jam) 34
Gambar 4.17 Pengujian Lubang 3 35
Gambar 4.18 Gambar Lubang 3 35
Gambar 4.19 Grafik Accelerometer Lubang 3 36
Gambar 4.20 Grafik Gyroscope Lubang 3 36
Gambar 4.21 Grafik Acclerometer Lubang 3 (40 Km/Jam) 37
Gambar 4.22 Grafik Gyroscope Lubang 3 (40 Km/Jam) 37
Gambar 4.23 Pengujian Polisi Tidur 38
Gambar 4.24 Gambar Polisi Tidur 39
Gambar 4.25 Grafik Accelerometer Polisi Tidur 39
Gambar 4.26 Grafik Gyroscope Polisi Tidur 40
Gambar 4.27 Pengujian Jalan Datar (20 Km/Jam) 41
Gambar 4.28 Jalan Datar (20 Km/Jam) 41
Gambar 4.29 Grafik Accelerometer Jalan Datar (20 Km/Jam) 42
Gambar 4.30 Grafik Gyroscope Jalan Datar (20 Km/Jam) 42
Gambar 4.31 Pengujian Jalan Datar (40 Km/Jam) 43
Gambar 4.32 Grafik Accelerometer Jalan Datar (40 Km/Jam) 44
Gambar 4.33 Grafik Gyroscope Jalan Datar (40 Km/Jam) 44

UNIVERSITAS SUMATERA UTARA


xiv

DAFTAR LAMPIRAN

Halaman
Lampiran 1 Listing Program A-1
Lampiran 2 Curriculum Vitae B-1

UNIVERSITAS SUMATERA UTARA


BAB 1

PENDAHULUAN

1.1. Latar Belakang

Dewasa ini pembangunan infrastruktur jalan raya oleh pemerintah sangat


pesat. Pembangunan jalan raya tersebut dilakukan sebagai prasarana untuk
memudahkan mobilitas masyarakat dan juga sebagai penunjang pertumbuhan
ekonomi dan perdagangan suatu wilayah. Namun, pembangunan jalan raya tersebut
terkadang tidak diikuti dengan pemeliharaan dan perawatan jalan yang baik, sehingga
banyak jalan raya yang rusak.
Kerusakan jalan ini tersebut berupa retak-retak, berupa gelombang, dan juga
berupa lubang-lubang yang tentu dapat membahayakan para pengguna jalan.
Kerusakan jalan seperti ini biasanya disebabkan oleh berbagai faktor misalnya, akibat
beban roda kendaraan berat yang lalu lalang (berulang-ulang), kondisi muka air tanah
yang tinggi, akibat dari salah pada waktu pelaksanaan, dan juga bisa akibat kesalahan
perencanaan. Pengawasan, perbaikan dan pemeliharaan jalan harus dilakukan secara
efektif oleh pemerintah agar jalan tetap dalam kondisi baik dan memberikan
kenyamanan kepada pengguna.
Ada beberapa metode pemantauan jalan yang dapat dilakukan selain dengan
metode manual. Secara umum sistem pemantauan kondisi jalan dibedakan menjadi
tiga jenis metode yaitu metode gambar dua dimensi, metode getaran, dan metode 3D
reconstruction .
Di Indonesia, penelitian penilaian kondisi jalan dilakukan salah satunya
dengan menggunakan metode gambar dua dimensi, dengan memanfaatkan metode
template macthing. Template matching adalah metode image processing yang
membandingkan kecocokan gambar baru dengan gambar pembanding. Metode ini
dapat menilai kondisi kerusakan jalan dengan akurasi 75% . Namun kekurangan dari

UNIVERSITAS SUMATERA UTARA


2

teknik ini adalah pengambilan gambar dilakukan secara manual, sehingga penilaian
kondisi jalan akan memerlukan waktu yang lama, meskipun hasil yang dicapai
cukup baik. Sehingga informasi kerusakan tersebut akan kurang bermanfaat bagi
pengendara secara cepat.
Sistem pemantauan yang dilakukan di Amerika Serikat, melalui sebuah
sistem yang dikembangkan bernama Pothole Patrol. Pothole patrol merupakan
sistem pamantauan jalan berlubang secara otomatis memanfaatkan metode getaran
yang didapat dari akselerometer sebagai sensor getaran. Tujuan dari sistem ini
untuk menurunkan tingkat kecelakaan dan klaim asuransi akibat kerusakan jalan
yang tinggi di Amerika. Sistem diuji di area kota Boston dengan jarak mencapai ±
1000 KM. Sistem ini menghasilkan akurasi 92% dalam mendeteksi jalan rusak.
Sistem ini juga dilengkapi dengan data lokasi yang bersumber dari sensor GPS,
sehingga setiap lokasi yang berhasil dideteksi oleh sistem akan diketahui titik
lokasinya secara jelas. Namun sistem ini memanfaatkan dua alat sensor untuk
menggumpulkan data, yaitu akselerometer sebagai sensor untuk data getaran dan
GPS Tracker yang membutuhkan biaya yang mahal dan kurang praktis.
Selain itu sistem pemantauan jalan secara otomatis juga dilakukan di Sri
Lanka yang menggunakan akselerometer sebagai alat ukur getaran dan GPS
sebagai alat untuk mendapatkan data lokasi. Sistem ini dibangun untuk mengatasi
permasalahan pelaporan jalan berlubang. Namun kekurangan pada sistem ini adalah
lokasi kerusakan jalan yang sulit dikenali, karena alat yang digunakan untuk
mengumpulkan data getaran yang mengindikasikan jalan rusak dan data lokasi
yang berbeda, sehingga terdapat jarak penggambilan data yang tidak sama, serta
kekurangan juga terdapat pada algoritma yang digunakan untuk mendeteksi jalan
rusak.

1.2. Rumusan Masalah

Sering kali kondisi jalan yang rusak membahayakan pengguna jalan sehingga
diperlukan sebuah aplikasi menggunakan sensor Accelerometer dan Gyroscope
yang dapat mencatat dan menandai jalan yang kurang baik secara cepat dan akurat.

UNIVERSITAS SUMATERA UTARA


3

1.3. Batasan Masalah

Batasan masalah penelitian sebagai berikut:


1. Jalan yang dilalui adalah jalan Karya Wisata – AH Nasution – Jamin
Ginting-Dr Mansyur – Jalan Universitas .
2. Perekaman data menggunakan kendaraan roda 4 Mitsubishi Mirage, dengan
kekuatan mesin mobil 1193, tenaga mobil 76 Horse Power, suspensi depan
mobil MacPherson strut suspension with Coil Spring dan suspensi belakang
mobil Torsion beam suspension with Coil Spring serta ukuran ban mobil
175/55r15.
3. Telepon seluler diletakan pada tempat yang datar.
4. Menggunakan Google Maps API untuk Android.
5. Pengaplikasian menggunakan bahasa pemograman java .
6. Pengaplikasian menggunakan software android studio 3.1.2.
7. Pengaplikasian menggunakan OS Android 7.0 dengan RAM 3 Gb.
8. Parameter untuk menentukan jalan berlubang adalah sumbu Z
Accelerometer melebihi nilai 11.5.

1.4. Tujuan Penelitian

Tujuan Penelitian ini adalah untuk menganalisa, mencatat dan menandai lokasi
jalan dengan kondisi jalan yang kurang baik ke dalam Google Maps dengan
menggunakan sensor Accelerometer, Gyroscope dan GPS pada telepon seluler.

1.5. Manfaat Penelitian

Adapun Manfaat penilitan ini adalah :


1. Penelitian ini diharapkan mampu memberikan kemudahan kepada pemerintah
untuk mengecek jalan yang kurang baik untuk segera diperbaiki.
2. Penelitian ini diharapkan mampu memberikan kemudahan bagi masyarakat
untuk menghindari jalan yang rusak.
3. Sebagai bahan referensi bagi peneliti lain yang ingin membahas topik yang
terkait dengan penelitian ini.

UNIVERSITAS SUMATERA UTARA


4

1.6. Metodologi Penelitian

Metode penelitian yang dilakukan dalam penelitian ini adalah :


1. Studi Literatur
Pada tahap ini merupakan tahapan mengumpulkan referensi yang berkaitan
dengan penelitian. Hal ini dilakukan untuk memperoleh informasi dan data
yang terkait dengan metode pendeteksian jalan rusak. Referensi yang
digunakan berupa buku, jurnal, tesis, skripsi, artikel yang berkaitan dengan
penelitian ini.
2. Analisis dan Perancangan
Tahap ini digunakan untuk mengolah data dari hasil studi literatur yang
kemudian dilakukan analisis dan perancangan aplikasi. Proses ini meliputi
pembuatan algoritma program, flowchart sistem, flowchart algoritma,
rancangan aplikasi, dan pembuatan User Interface aplikasi.
3. Implementasi
Pada tahap ini, perancangan sistem dibuat menggunakan aplikasi berbasis
android dengan melihat diagram alir(flowchart) yang telah dibuat.
4. Pengujian
Pada tahap ini, sistem yang telah dirancang dilakukan uji coba
menggunakan kendaraan roda 4.
5. Dokumentasi
Pada tahap ini dilakukan pendokumentasian penelitian yang telah dilakukan
mulai dari tahap analisa sampai kepada pengujian dalam bentuk skripsi.

UNIVERSITAS SUMATERA UTARA


5

1.7. Sistematika Penulisan


Sistematika penulisan skripsi ini terdiri dari beberapa bagian utama yaitu :
BAB 1 PENDAHULUAN
Bab ini berisi latar belakang dari penelitian yang akan
dilakukan berjudul “Analisa Pemanfaatan Accelerometer dan
Gyroscope pada telepon seluler untuk mengukur kualitas jalan”,
rumusan masalah, batasan masalah, tujuan penelitian, manfaat
penelitian, metode penelitian dan sistematika penelitian.
BAB 2 LANDASAN TEORI
Bab ini berisi penjelasan secara umum mengenai
Accelerometer, Gyroscope, dan Google Maps API, algoritma
yang digunakan yaitu algoritma High Pass Filter, Penelitian
yang relevan dan beberapa teori yang mendukung dalam
penelitian.
BAB 3 ANALISA DAN PERANCANGAN
Bab ini berisi analisis terhadap masalah penelitian dan
perancangan sistem yang akan dibangun sebagai solusi dari
masalah tersebut.
BAB 4 IMPLEMENTASI DAN PENGUJIAN
Bab ini berisi implementasi dari kombinasi antara algoritma
High Pass Filter , Sensor Accelerometer , Gyroscope dan
Google Maps API serta pengujian terhadap sistem yang telah
dibangun dengan beberapa kondisi jalan serta pembahasan hasil
pengujian dan analisisnya.
BAB 5 KESIMPULAN DAN SARAN

Bab ini berisi kesimpulan dan uraian setiap bab sebelumnya dan
saran berdasarkan hasil pengujian yang diharapkan dapat
bermanfaat untuk pengembangan sistem selanjutnya.

UNIVERSITAS SUMATERA UTARA


BAB 2

LANDASAN TEORI

2.1 Sensor Accelerometer

Accelerometer adalah sensor yang digunakan untuk mengukur percepatan


suatu objek. Accelometer mengukur percepatan dynamic dan static. Pengukuran
dynamic adalah pengukuran percepatan pada objek bergerak, sedangkan pengukuran
static adalah pengukuran terhadap gravitasi bumi. Untuk mengukur sudut kemiringan.
Sensor accelerometer mengukur percepatan dari 3 sumbu gerakan akibat gerakan
benda yang melekat padanya.

Gambar 2.1 Sumbu XYZ Accelerometer pada Telepon Seluler

Percepatan merupakan suatu keadaan berubahnya kecepatan terhadap waktu.


Bertambahnya suatu kecepatan dalam suatu rentang waktu disebut juga percepatan
(acceleration). Jika kecepatan semakin berkurang daripada kecepatan sebelumnya,
disebut deceleration. Percepatan juga bergantung pada arah/orientasi karena
merupakan penurunan kecepatan yang merupakan besaran vektor. Berubahnya arah
pergerakan suatu benda akan menimbulkan percepatan pula.

UNIVERSITAS SUMATERA UTARA


7

2.2 Sensor Gyroscope

Secara mekanis, gyroscope berbentuk seperti sebuah roda berputar atau


cakram dimana poros bebas untuk mengambil setiap orientasi. Gyroscope berfungsi
untuk mengukur dan menentukan orientasi suatu benda atau Microelectromechanical
System(MEMS) berdasarkan pada ketetapan momentum sudut. Sensor gyroscope juga
berfungsi untuk menentukan gerakan sesuai dengan gravitasi yang dilakukan oleh
pengguna. Prinsip kerja gyroscope ini, pada saat gyroscopeberotasi maka gyroscope
akan memiliki nilai keluaran. Apabila gyroscope berotasi searah dengan jarum jam
pada sumbu Z maka tegangan output yang dihasilkan akan mengecil (-Z), sedangkan
jika gyroscopeberotasi melawan arah dengan jarum jam pada sumbu Z makan
tegangan output yang dihasilkan akan membesar (+Z). Pada saat gyroscope tidak
sedang berotasi atau berada pada keadaan diam maka tegangan outputnya akan sesuai
dengan nilai offset gyrosensor tersebut.

Gambar 2.2 Ilustrasi Sensor Gyroscope pada Telepon Seluler

UNIVERSITAS SUMATERA UTARA


8

2.3 Google Maps API

Google Maps adalah layanan pemetaan web yang dikembangkan oleh Google.
Layanan ini memberikan citra satelit, peta jalan, panorama 360 derajat, kondisi lalu
lintas, dan perencanaan rute untuk bepergian dengan berjalan kaki, mobil, sepeda, atau
angkutan umum. Google Maps dimulai sebagai program desktop C++, dirancang oleh
Lars dan Jens Eilstrup Rasmussen pada Where 2 Technologies. Pada Oktober 2004,
perusahaan ini diakuisisi oleh Google, yang diubah menjadi sebuah aplikasi web.
Setelah akuisisi tambahan dari perusahaan visualisasi data geospasial dan analisis lalu
lintas, Google Maps diluncurkan pada Februari 2005. Layanan ini menggunakan
Javascript, XML, dan AJAX.
Google Maps menyediakan layanan berupa pemetaan jalan, rute, dan navigasi
untuk berbagai rute perjalanan sehingga dapat digunakan untuk mempercepat
pencarian sebuah lokasi dalam waktu yang singkat, dan juga menunjukkan jalan mana
saja yang harus ditempuh untuk mencapai tujuan. Teknologi Google Maps
menggunakan citra satelit untuk melakukan pemetaan objek yang ada di permukaan
bumi secara realtime , dalam hal ini peta yang ada pada Google Maps di update dalam
kurun waktu tertentu.
Google Maps dapat ditambahkan dalam web, blog maupun aplikasi mobile
dengan menggunakan Google Maps API . Dalam implementasinya Google Maps juga
dapat disesuaikan dengan kebutuhan aplikasi yang akan dibuat sehingga aplikasi dapat
menggunakan fitur fitur yang tersedia didalam Google Maps.
API adalah singkatan dari Application Programming Interface, dan
memungkinkan developer untuk mengintegrasikan dua bagian dari aplikasi atau
dengan aplikasi yang berbeda secara bersamaan. API terdiri dari berbagai elemen
seperti function, protocols, dan tools lainnya yang memungkinkan developers untuk
membuat aplikasi.
Tujuan penggunaan API adalah untuk mempercepat proses development
dengan menyediakan function secara terpisah sehingga developer tidak perlu membuat
fitur yang serupa.

UNIVERSITAS SUMATERA UTARA


9

Gambar 2.3. Cara Kerja API(Application Programming Interface).

Keuntungan memprogram dengan menggunakan API adalah:

 Portabilitas. Programmer yang menggunakan API dapat menjalankan


programnya dalam sistem operasi mana saja asalkan sudah ter- install API
tersebut.
 Lebih Mudah Dimengerti. API menggunakan bahasa yang lebih terstruktur dan
mudah dimengerti.Hal ini sangat penting dalam hal editing dan pengembangan.

Google Maps API adalah library javascript yang dibuat oleh Google Maps
untuk membantu para develepor menggunakan fungsi yang terdapat didalam Google
Maps sehingga mempermudah developer dalam membangun aplikasinya.
Google maps API terbagi menjadi 4 Platform yaitu Android, iOS, Web dan
Webservice. Untuk Webservice sendiri merupakan layanan yang sifatnya Platform
netral karena output dari webservice adalah JSON. Artinya kita bisa membangun
aplikasi mobile, web,desktop bahkan embeded system (Seperti GPS tracker di mobil)
dengan Google Maps API Webservice.

UNIVERSITAS SUMATERA UTARA


10

2.4 Algoritma Pendeteksi Jalan Berlubang

Pathole Patrol mengembangkan sistem filter untuk mengenali jalan berlubang.


Proses filter diterapkan pada data akselerometer dan GPS. Berikut adalah penjelasan
detail proses filter yang diterapkan :

a) Kecepatan: tahap pertama melalui seleksi berdasarkan kecepatan, jika


kecepatan nol atau mobil berjalan sangat pelan, maka data tersebut dibuang.
Modul ini akan membuang kejadian seperti berhenti dan memasuki area
trotoar.
b) High-pass filter: High-pass filter akan menghapus sinyal dengan frekuensi
rendah pada percepatan setiap sumbu x dan z yang masuk. Beberapa kejadian
yang menghasilkan frekuensi rendah diantaranya, tarikan gas, tikungan,
belokan, pengereman dan beberapa perubahan kecil yang disebabkan orientasi
perangkat (smartphone).
c) Puncak sumbu Z (tz): menentukan nilai batas sumbu Z yang akan menjadi
acuan identifikasi jalan berlubang. jika data yang masuk lebih besar dari pada
tz maka sistem secara otomatis akan membuang data tersebut.
d) Kecepatan dan rasio z: tahap filter yang terakhir identifikasi kerusakan jalan
dengan membandingkan data kecepatan dengan sumbu Z. Karena tingginya
nilai z yang dihasilkan berbanding lurus dengan laju kendaraan. Jika kendaraan
melaju dengan kecepatan tinggi, maka nilai Z yang dihasilkan akan semakin
tinggi. Jadi untuk membuang data dengan nilai Z yang tinggi karena efek
kecepatan dapat diatasi menggunakan rumus 𝑍 < 𝑡𝑠 × 𝑠𝑝𝑒𝑒𝑑.

Jika semua data telah difilter maka akan didapatkan nilai yang menunjukan
apakah jalan tersebut berlubang atau tidak. Jika nilai terdeteksi sebagai jalan yang
berlubang maka sistem akan otomatis mencatat dan menandai koordinat jalan tersebut
kedalam Google Maps menggunakan GPS dan Google Maps API.

UNIVERSITAS SUMATERA UTARA


11

2.5 Penelitian yang Relevan


Beberapa penelitian terdahulu yang relevan dengan penelitian yang akan
dilakukan oleh penulis antara lain adalah sebagai berikut:

- Rudi Hartano, dkk (2015). “Damropa (Damage Roads Patrol): Aplikasi


Pendeteksi Jalan Rusak Memanfaatkan Accelerometer pada Smartphone”
mendeteksi jalan rusak dengan menggunakan GPS dan Accelerometer.
- Jakob Eriksson, dkk (2008). “The Pothole Patrol: Using a Mobile Sensor Network
for Road Surface Monitoring” mendeteksi jalan rusak dengan metode Pothole
Patrol.
- Daru, Setiyono C (2014). “Sistem Deteksi Kerusakan Permukaan Jalan Raya
dengan Metode Template Matching” menggunakan metode Template Matching
untuk mendeteksi sebuah jalan rusak atau tidak.
- D., Girisha De Silva, dkk(2008). “Automated Pothole Detection System”
Mendeteksi jalan berlubang secara otomatis.

UNIVERSITAS SUMATERA UTARA


BAB 3

ANALISIS PERANCANGAN

3.1. Analisis Sistem

Langkah pertama yang harus dilakukan dalam membuat suatu sitem yaitu
menganalisis sistem yang akan dibuat. Analisis sitem diperlukan untuk mengetahui
berbagai hambatan atau masalah yang akan terjadi pada sistem sehingga dapat
dilakukan perbaikan atau penanggulangan. Ada beberapa tahap dalam melakukan
analisis sitem yaitu melakukan identifikasi terhadap masalah dan menganalisa
kebutuhan yang akan dibuat dalam sistem.

3.1.1 Analisis Masalah

Pada tahap analisis sistem akan dilakukan analisis masalah terlebih dahulu. Pada tahap
analisis masalah akan dilakukan identifikasi penyebab terhadap masalah yang terjadi.
Saat ini pembangunan infrastruktur jalan di Indonesia sedang berkembang pesat.
Faktor keamanan dan kenyamanan dalam berkendara di jalan merupakan salah satu
poin penting dalam pembangunan infrastruktur jalan. Namun kurangnya pengawasan
kondisi jalan menimbulkan suatu masalah baru yaitu kondisi jalan yang kurang baik
dan kurang nyaman dilalui oleh masyarakat. Salah satu cara untuk meningkatkan
pengawasan kondisi jalan adalah dengan menggunakan alat yang cepat, efektif dan
terintegrasi langsung sehingga akan lebih mudah menangani permasalahan jalan yang
kurang baik tersebut. Masalah dalam sistem ini adalah bagaimana memanfaatkan
sensor Accelerometer dan Gyroscope yang ada pada telepon seluler sebagai sarana
untuk mendeteksi kondisi jalan.

UNIVERSITAS SUMATERA UTARA


13

3.1.2 Analisis Kebutuhan

Setelah dilakukan analisis terhadap masalah maka akan dilakukan analisis kebutuhan .
Analisis kebutuhan dibagi menjadi dua bagian, yaitu kebutuhan fungsional dan
kebutuhan nonfungsional. Kebutuhan fungsional mendeskripsikan aktivitas yang
disediakan suatu sistem. Sedangkan kebutuhan nonfungsional mendeskripsikan fitur,
karakteristik dan batasan lainnya.

3.1.2.1 Kebutuhan Fungsional

Sistem yang akan dibangun harus memiliki beberapa fungsi fungsi wajib untuk
mencapai tujuan sistem. Dengan dibuatnya kebutuhan fungsional sistem, akan terlihat
hal-hal yang harus dapat dilakukan oleh sistem yang akan dibangun. Kebutuhan
fungsional yang dapat dilakukan oleh sistem yaitu :
- Sistem dapat merekam nilai Accelerometer dan Gyroscope pada telepon
seluler.
- Sistem dapat merekam nilai latitude dan longitude GPS pada telepon
seluler.
- Sistem dapat menandai lokasi pada Google Maps.
- Sistem dapat menganalisa kondisi jalan berdasarkan nilai Accelerometer dan
Gyroscope yang sudah terekam.

3.1.2.2 Kebutuhan Non-fungsional

Kebutuhan non-fungsional yaitu kebutuhan yang digunakan untuk mendukung


kinerja dari sistem. Kebutuhan non-fungsional dari sistem ini adalah sebagai
berikut :

1. Efektif dan Efisien


Sistem yang akan dibangun memiliki waktu yang relatif singkat untuk
proses perekaman dan Analisa.
2. Kontrol
Sistem yang akan dibangun akan menampilkan pesan error untuk setiap
inputan yang tidak sesuai.

UNIVERSITAS SUMATERA UTARA


14

3.1.3 Diagram Umum Sistem

Diagram umum sistem pada penelitian ini dijelaskan pada gambar 3.1 berikut:

Gambar 3.1 Diagram Umum Sistem

Adapun penjelasan dari gambar 3.1 bahwa pengguna mengendarai mobil dan
meletakkan smartphone didalam mobil, kemudian mobil dijalankan dan pengguna
menekan tombol start yang terdapat didalam aplikasi smartphone . Seiring berjalannya
mobil data akan tercatat di smartphone dan disimpan kedalam database.

3.1.4 Pemodelan Sistem

Pemodelan sistem dilakukan bertujuan untuk menentukan fungsi dan tujuan dari
sistem yang akan dibangun. . Pemodelan sistem yang dilakukan dengan melakukan
pembuatan Use Case Diagram, Activity Diagram dan Sequence Diagram. Pemodelan
sistem dapat memudahkan dalam menganalisa kebutuhan user dan memperoleh
gambaran umum kerja dari sistem yang akan dibangun.

UNIVERSITAS SUMATERA UTARA


15

3.1.4.1 Use Case Diagram

Use case diagram dibuat bertujuan untuk mengetahui hal apa saja yang dapat
dilakukan oleh pengguna serta gambaran kebutuhan sistem secara fungsional sehingga
dapat memudahkan pengguna untuk mengetahui kegunaan dari sistem yang akan
dibangun. Use case diagram pada penelitian ini dapat dilihat pada gambar 3.2

Gambar 3.2 : Use case Diagram Penelitian

Pada gambar 3.2 dapat dijelaskan bahwa pengguna (user) dapar melakukan proses
pengecekan jalan dan menampilkan hasil dengan melakukan pembacaan data dan perangkat.
Pembacaan data dan perangkat menggunakan sistem gyroscope, accelerometer dan GPS. Data
GPS diambil melalui Google Maps API dan menampilkan data untuk user.

UNIVERSITAS SUMATERA UTARA


16

3.1.4.2 Activity Diagram

Activity diagram dibuat bertujuan untuk menggambarkan alur ataupun proses dari
aktifitas antara user dan sistem secara sistematis. Pada sistem ini terdapat sebuah
activity yang dapat dilihat pada gambar 3.3 :

Gambar 3.3 Activity Diagram

Pada gambar 3.3 menjelaskan activity digram yang menjelaskan aktivitas alur
antara pengguna dengan sistem. Dapat dilihat pada gambar 3.3 hal pertama yang
dilakukan pengguna setelah menekan aplikasi akan muncul halaman utama dimana
pengguna harus mengetikkan nama file yang akan dibuat lalu tekan tombol start.
Setelah menekan tombol start sistem akan melakukan reading accelerometer dan
gyroscope serta koordinat gps. Jika Z accelerometer lebih besar dari 11,5 maka akan
dilakukan mark koordinat gps atau menandakan adanya jalan berlubang jika tidak

UNIVERSITAS SUMATERA UTARA


17

maka akan dilakukan read accelorometer kembali. Jika ingin berhenti maka tekan
button stop jika tidak maka sitem akan melakukan read accelerometer kembali.

3.1.4.3 Sequence Diagram

Sequence diagram digunakan untuk menggambarkan rangkaian antara objek yang ada
serta interaksi antara satu objek dengan objek lainnya. Berikut Sequence Diagram dari
sistem yang akan dibangun.

Gambar 3.4 Sequence Diagram Sistem

Pada gambar 3.4 menjelaskan sequence diagram sistem dimana pada sistem
terdapat 4 aktivitas yang akan dilakukan yaitu meletakkan perangkat, inputan,
merekam nilai dan output. Pada aktivitas pertam actor meletakkan perangkat didalam
mobil dan menjalankan mobil. Kemudian actor melakukan input nama file . Setelah
selesai input nama file lalu actor menekan tombol start dan sistem mulai merekam
nilai. Setelah selesai melakukan rekam nilai maka akan didapatkan hasil jalan
berlubang dan hasilnya dapat dilihat dengan adanya tanda yang terdapat di gps.

UNIVERSITAS SUMATERA UTARA


18

3.1.5 Flowchart

Flowchart adalah gambaran yang memiliki bentuk diagram alir yang saling
berhubungan satu dengan yang lain atau proses-proses yang saling terkait yang
menyatakan arah alur program tersebut. Digram alur ini memberikan solusi untuk
membantu menyelesaikan dan memberikan solusi pada suatu permasalahan. Flowchart
yang dibuat pada penelitian ini yaitu: flowchart sistem.

3.1.5.1 Flowchart Sistem

Gambar 3.5 Flowchart Sistem

UNIVERSITAS SUMATERA UTARA


19

Pada gambar 3.5 Flowchart Sitem menunjukan langkah-langkah yang akan


dilakukan sistem secara logis dan berurutan. Sistem memiliki dua halaman utama
yaitu halaman splashscreen dan halaman home. Proses yang terjadi yaitu ketika
aplikasi dibuka (start) akan muncul halaman splashscreen beberapa detik kemudian
akan muncul halaman home. Pada halaman home ketikan nama file yang akan dibuat
lalu tekan tombol start untuk mulai melakukan pengecekan jalan dengan fungsi
accelerometer, gyroscope dan koordinat. Setelah selesai melakukan pengecekan jalan
maka klik tombol stop. Hasil analisa jalan berlubang berupa koordinat jalan berlubang
dan grafik akan muncul di halaman home.

3.2 Perancangan Interface

Perancangan Interface merupakan hal yang harus dilakukan sebelum membuat


aplikasi. Perancangan interface dilakukan untuk memudahkan user dalam
menggunakan sistem. Interface yang dibuat haruslah user friendly agar user dapat
menggunakan sistem dengan mudah. Pada penelitian ini sistem dibuat dengan
menggunakan bahasa pemogaman java dengan software Android Studio dimana
interface hanya memiliki dua halaman utama saja yaitu halaman splashscreen dan
halaman home.

UNIVERSITAS SUMATERA UTARA


20

3.2.1 Interface Halaman Splashscreen

Gambar 3.6 Rancangan Interface Halaman Splashscreen

Keterangan gambar :
1. Textview untuk menampilkan judul skripsi.
2. Textview untuk menampilkan kata “Skripsi”.
3. Textview untuk menampilkan identitas penulis.
4. Imageview untuk menampilkan logo USU.
5. Textview untuk menampilkan nama program studi.
6. Textview untuk menampilkan nama fakultas.
7. Textview untuk menampilkan nama universitas.
8. Textview untuk menampilkan kota universitas.
9. Textview untuk menampilkan tahun.

UNIVERSITAS SUMATERA UTARA


21

3.2.2 Interface Halaman Utama

Gambar 3.7 Rancangan Interface Halaman Utama

Keterangan gambar :
- EditText untuk menginput nama file yang ingin disimpan.
- Button untuk menjalankan perekaman aplikasi.
- Textview untuk menampilkan Latitude.
- Textview untuk menampilkan Longitude.
- Google Maps API untuk menampilkan Google Maps.
- Textview untuk menampilkan kecepatan.
- Textview untuk menampilkan nilai x Accelerometer.
- Textview untuk menampilkan nilai y Accelerometer.
- Textview untuk menampilkan nilai z Accelerometer.
- Fragment Graphic Accelerometer untuk menampilkan grafik Accelerometer.
- Textview untuk menampilkan kata “Acclerometer”.

UNIVERSITAS SUMATERA UTARA


22

3.2.3 Interface Halaman Utama Lanjutan

Gambar 3.8 Rancangan Interface Halaman Utama Lanjutan

Keterangan gambar :
1. Textview untuk menampilkan nilai x Gyroscope.
2. Textview untuk menampilkan nilai y Gyroscope.
3. Textview untuk menampilkan nilai z Gyroscope.
4. Fragment Graphic Gyroscope untuk menampilkan grafik Gyroscope.
5. Textview untuk menampilkan kata “Gyroscope”.

UNIVERSITAS SUMATERA UTARA


BAB 4

IMPLEMENTASI DAN PENGUJIAN

4.1. Implementasi Sistem

Pada penelitian kali ini implementasi sitem dilakukan dengan menggunakan bahasa
java dengan software Android Studio. Implementasi sitem terbagi menjadi 3 halaman
yaitu : halaman splashscreen, halaman utama dan halaman bantuan.

4.1.1. Halaman Splashscreen

Halaman splashscreen memberikan informasi judul penelitian yang akan di bahas


serta informasi peneliti. Berikut halaman splashscreen yang dapat dilihat pada gambar
4.1 :

Gambar 4.1. Halaman Splashscreen

UNIVERSITAS SUMATERA UTARA


24

4.1.2. Halaman Home

Pada halaman utama terdapat kolom isian yang digunakan untuk membuat file baru
untuk mencatat hasil kualitas jalan yang akan disimpan kedalam database. Disebelah
kolom isian terdapat tombol start yang digunakan untuk memulai mencatat kualitas
jalan. Pada bagian bawah tombol start dan kolom isian terdapat halaman google maps
yang akan menunjukan alur jalan yang dilalui pengguna. Pada bagian bawah setelah
tampilan gmaps terdapat tampilan data Accelorometer dan gyroscope. Setelah tombol
start ditekan maka tombol akan berubah tulisan menjadi “Stop” Berikut halaman
Home yang ditampilkan pada gambar 4.2. :

Gambar 4.2. Halaman Home

UNIVERSITAS SUMATERA UTARA


25

4.2. Pengujian Sistem

Pengujian sistem dilakukan untuk menguji sistem dapat berjalan dengan baik dan hasil
yang didapatkan setelah proses melihat data jalan berlubang atau tidak. Pengujian
dilakukan di beberapa titik jalan. Kriteria pengujian sebagai berikut :

1. Jalan yang dilalui adalah jalan Karya Wisata – AH Nasution – Jamin Ginting-
Dr Mansyur – Jalan Universitas .
2. Perekaman data menggunakan kendaraan roda 4 Mitsubishi Mirage, dengan
kekuatan mesin mobil 1193, tenaga mobil 76 Horse Power, suspensi depan
mobil MacPherson strut suspension with Coil Spring dan suspensi belakang
mobil Torsion beam suspension with Coil Spring serta ukuran ban mobil
175/55r15.
3. Telepon seluler diletakan pada tempat yang datar.
4. Menggunakan Google Maps API untuk Android.
5. Pengaplikasian menggunakan bahasa pemograman java .
6. Pengaplikasian menggunakan software android studio 3.1.2.
7. Pengaplikasian menggunakan OS Android 7.0 dengan RAM 3 Gb.
8. Parameter untuk menentukan jalan berlubang adalah sumbu Z Accelerometer
melebihi nilai 11.5.

4.2.1. Pengujian Getaran Mobil

Pada bagian ini pengujian dilakukan dengan melakukan perekaman data pada saat
mobil dihidupkan dan dalam kondisi tidak berjalan atau diam. Hasil Rekaman terlihat
pada gambar 4.3, gambar 4.4 dan gambar 4.5.

UNIVERSITAS SUMATERA UTARA


26

12

10

8
ACC X
6
ACC Y
4
ACC Z
2

-2

Gambar 4.3. Grafik Accelerometer Getaran Mobil

Terlihat pada Gambar 4.3 grafik Accelerometer getaran mobil menunjukan pola grafik
getaran yang terlihat seperti bergelombang dan konsisten karena kondisi mobil yang
tidak bergerak.

0.05
0.04
0.03
0.02
GYRO X
0.01
GYRO Y
0
GYRO Z
-0.01
-0.02
-0.03
-0.04

Gambar 4.4. Grafik Gyroscope Getaran Mobil

Terlihat pada gambar 4.4. Grafik getaran gyroscope pada pengujian getaran mobil.
Dikarenakan mobil tidak bergerak, nilai getaran yang dihasilkan tidak tinggi dan
cenderung konsisten pola getarannya.

UNIVERSITAS SUMATERA UTARA


27

4.2.2. Pengujian Lubang

Pada bagian pengujian lubang akan dibagi pada 3 bentuk lubang yang berbeda,
masing-masing bentuk lubang akan menampilkan grafik yang bebeda pula. Pada tahap
Pengujian lubang akan dilakukan perekaman data dengan kecepatan 20 km/jam dan 40
km/jam.

4.2.2.1. Pengujian Lubang 1 dengan Kecepatan 20 Km/Jam

Pada halaman utama user melakukan input nama file yang akan disimpan datanya.
Kemudian klik start dibagian sebelah kanan. Lokasi akan berjalan ketika mobil
bejalan. Ketika ada lubang maka program akan melakukan mark pada lokasi seperti
pada gambar 4.5. :

Gambar 4.5. Pengujian Lubang 1

Terlihat pada gambar 4.5. lokasi pengujian lubang 1 di tandai dengan tanda merah
pada google maps.

UNIVERSITAS SUMATERA UTARA


28

Gambar 4.6. Gambar Lubang 1

Terlihat pada gambar 4.6 adanya lubang di lokasi pada gambar 4.6. Maka pada layar
utama aplikasi akan menunjukan grafik accelerometer dan gyroscope akan begerak
ketika mobil melintasi jalan berlubang. Pergerakan grafik akan ditunjukanpada
gambar 4.7 dan gambar 4.8.

20

15

10
SUMBU X
5
SUMBU Y
0 SUMBU Z

-5

-10

Gambar 4.7. Grafik Accelerometer Lubang 1

Dapat dilihat pada gambar 4.7. nilai Accelerometer pada sumbu Z melebihi 11,5
dengan nilai tertinggi melebihi angka 15 yang menandakan adanya getaran yang tinggi
ketika kendaraan melewati lubang 1.

UNIVERSITAS SUMATERA UTARA


29

0.6

0.4

0.2
SUMBU X
0
SUMBU Y
-0.2
SUMBU Z
-0.4

-0.6

-0.8

Gambar 4.8. Grafik Gyroscope Lubang 1

Dapat dilihat pada grafik gyroscope pada gambar 4.10 menunjukkan adanya
pergerakan pada sumbu X,Y,Z yang menandakan adanya getaran yang terjadi pada
kendaraan dikarenakan adanya lubang yang dilalui.

4.2.2.2. Pengujian Lubang 1 dengan Kecepatan 40 Km/Jam

Pada pengujian lubang 1 dengan kecepatan 40 km/jam dilakukan ditempat dan lubang
yang sama dengan pengujian lubang 1 dengan kecepatan 20 km/jam.Pengujian ini
dilakukan untuk mengetahui apakah ada pengaruh kecepatan kendaraan pada saat
perekaman.

UNIVERSITAS SUMATERA UTARA


30

35
30
25
20
15 SUMBU X
10 SUMBU Y
5 SUMBU Z
0
-5
-10
-15

Gambar 4.9. Grafik Accelerometer Lubang 1 (40 Km/Jam)

Dapat dilihat pada gambar 4.9. nilai Accelerometer pada sumbu Z melebihi 11,5
dengan nilai tertinggi melebihi angka 30 yang menandakan adanya getaran yang tinggi
ketika kendaraan melewati lubang 1. Nilai ini sangat jauh dibandingk an dengan
perekaman pada saat kecepatan 20Km/Jam yang nilai tertingginya adalah 15.

1.5

1
SUMBU X
0.5
SUMBU Y
0
SUMBU Z
-0.5

-1

-1.5

Gambar 4.10. Grafik Gyroscope Lubang 1 (40 Km/Jam)

Dapat dilihat pada grafik gyroscope pada gambar 4.10. menunujukan adanya
pergerakan grafik yang tinggi dikarenakan faktor benturan terhadap lubang. Grafik ini
sangat berbeda dengan grafik lubang 1 dengan kecepatan 20 Km/Jam, ini dikarenakan
pengaruh kecepatan kendaraan pada saat berbenturan dengan lubang.

UNIVERSITAS SUMATERA UTARA


31

4.2.2.3. Pengujian Lubang 2 dengan Kecepatan 20 Km/Jam.

Pada pengujian lubang 2 terdapat perbedaan bentuk lubang yang akan diuji. Cara
melakukan pengujian sama dengan cara pengujian pada lubang 1. Pada halaman
utama user melakukan input nama file yang akan disimpan datanya. Kemudian klik
start dibagian sebelah kanan. Lokasi akan berjalan ketika mobil bejalan. Ketika ada
lubang maka program akan melakukan mark pada lokasi seperti pada gambar 4.11. :

Gambar 4.11. Pengujian Lubang 2

Terlihat pada gambar 4.11. lokasi perekaman lubang 2 yang ditandai dengan warna
lingkaran biru.

UNIVERSITAS SUMATERA UTARA


32

Gambar 4.12. Gambar Lubang 2

Terlihat pada gambar 4.12. adanya lubang yang terdapat pada lokasi gambar 4.11.
Maka pada layar utama aplikasi akan menunjukan grafik accelerometer dan gyroscope
akan begerak ketika mobil melintasi jalan berlubang. Pergerakan grafik akan
ditunjukan pada gambar 4.13 dan gambar 4.14.

20

15

10
SUMBU X
5 SUMBU Y
SUMBU Z
0

-5

-10

Gambar 4.13. Grafik Accelerometer Lubang 2

Terlihat pada Gambar 4.13. sumbu Z yang melewati nilai batas yaitu 11,5 dan hampir
menyentuh angka 15.

UNIVERSITAS SUMATERA UTARA


33

0.4
0.3
0.2
0.1
0 SUMBU X
-0.1 SUMBU Y
-0.2 SUMBU Z
-0.3
-0.4
-0.5
-0.6

Gambar 4.14. Grafik Gyroscope Lubang 2

Terlihat pada gambar 4.14. pergerakan sumbu X,Y,Z yang dinamis dikarenakan
kondisi jalan yang memiliki banyak lubang.

4.2.2.4. Pengujian Lubang 2 dengan Kecepatan 40 Km/Jam.

Pada pengujian lubang 1 dengan kecepatan 40 km/jam dilakukan ditempat dan lubang
yang sama dengan pengujian lubang 1 dengan kecepatan 20 km/jam.

20

15

10
SUMBU X
5 SUMBU Y
SUMBU Z
0

-5

-10

Gambar 4.15. Grafik Accelerometer Lubang 2 (40 Km/Jam)

Terlihat pada gambar 4.15. adanya pergerakan sumbu Accelerometer X,Y,Z yang
dinamis dan tinggi. Sumbu Z yang merukapan sumbu penentu memiliki angka
melebihi 15 yang lebih tinggi dari pada percobaan dengan kecepatan 20Km/Jam.

UNIVERSITAS SUMATERA UTARA


34

3
2.5
2
1.5
1
SUMBU X
0.5
SUMBU Y
0
SUMBU Z
-0.5
-1
-1.5
-2
-2.5

Gambar 4.16. Grafik Gyroscope Lubang 2 (40 Km/Jam)

Terlihat pada gambar 4.16. adanya pergerakan grafik gyroscope yang naik turun
secara cepat hal ini terjadi dikarenakan benturan pada saat kendaraan melewati lubang
2.

4.2.2.5. Pengujian Lubang 3 dengan Kecepatan 20 Km/Jam.

Pada pengujian lubang 3 terdapat perbedaan bentuk lubang yang akan diuji. Cara
melakukan pengujian sama dengan cara pengujian pada lubang 1 dan 2. Pada halaman
utama user melakukan input nama file yang akan disimpan datanya. Kemudian klik
start dibagian sebelah kanan. Lokasi akan berjalan ketika mobil bejalan. Ketika ada
lubang maka program akan melakukan mark pada lokasi seperti pada gambar 4.17. :

UNIVERSITAS SUMATERA UTARA


35

Gambar 4.17. Pengujian Lubang 3

Terlihat pada gambar 4.17. lokasi pengujian lubang 3 yang ditandai dengan tanda
warna merah karena berhasil diidentifikasi sebagai lubang oleh sistem.

Gambar 4.18. Gambar Lubang 3

UNIVERSITAS SUMATERA UTARA


36

Terlihat pada gambar 4.18. adalah lubang yang terdapat pada lokasi pada gambar 4.17.
Maka pada layar utama aplikasi akan menunjukan grafik accelerometer dan gyroscope
akan begerak ketika mobil melintasi jalan yang berlubang. Pergerakan grafik akan
ditunjukan pada gambar 4.19. dan gambar 4.20.

14
12
10
8
6 SUMBU X
4 SUMBU Y
2 SUMBU Z
0
-2
-4
-6

Gambar 4.19. Grafik Accelerometer Lubang 3

Terlihat pada gambar 4.19. hasil dari perekaman Accelerometer pada lubang 3 dengan
kecepatan 20Km/Jam.

0.3

0.2

0.1
SUMBU X
0 SUMBU Y
SUMBU Z
-0.1

-0.2

-0.3

Gambar 4.20. Grafik Gyroscope Lubang 3


Terlihat pada gambar 4.20. hasil perekaman Gyroscope dengan kecepatan 20 Km/Jam.

UNIVERSITAS SUMATERA UTARA


37

4.2.2.6 Pengujian Lubang 3 dengan Kecepatan 40 Km/Jam.

Pada pengujian lubang 1 dengan kecepatan 40 km/jam dilakukan ditempat dan lubang
yang sama dengan pengujian lubang 1 dengan kecepatan 20 km/jam.

20

15

10 SUMBU X
SUMBU Y
5 SUMBU Z

-5

Gambar 4.21. Grafik Accelerometer Lubang 3 (40 Km/Jam)

Terlihat pada gambar 4.21. Nilai Sumbu X,Y,Z Accelerometer yang berbeda jauh pada
saat percobaan lubang 3 dengan kecepatan 20 Km/Jam.

0.8

0.6

0.4 SUMBU X
0.2 SUMBU Y

0 SUMBU Z

-0.2

-0.4

-0.6

Gambar 4.22. Grafik Gyrocope Lubang 3 (40 Km/Jam)

Terlihat pada gambar 4.22. sumbu pada gyroscope bergerak secara tidak menentu
dikarenakan benturan yang kuat saat melewati lubang dengan kecepatan 40 Km/Jam.

UNIVERSITAS SUMATERA UTARA


38

4.2.3. Pengujian Polisi Tidur

User melakukaan input nama file pada halaman utama aplikasi lalu klik start untuk
memulai menjalankan aplikasi. Kendaraan akan melakukan mark pada lokasi yang
terdapat polisi tidur. Lokasi yang terdapat polisi tidur pada pengujian aplikasi ini
terdapat pada gambar 4.23.

Gambar 4.23. Pengujian Polisi Tidur

Terlihat pada gambar 4.23. adanya tanda merah pada peta yang menunjukkan lokasi
polisi tidur yang teridentifikasi sebagai jalan yang kuran baik.

UNIVERSITAS SUMATERA UTARA


39

Gambar 4.24. Gambar Polisi Tidur

Terlihat pada gambar 4.23. adanya polisi tidur di lokasi pada gambar 4.24. Maka pada
layar utama aplikasi akan menunjukan grafik accelerometer dan gyroscope akan
begerak ketika mobil melintasi jalan polisi tidur. Pergerakan grafik akan ditunjukan
pada gambar 4.25. dan gambar 4.26.

20

15

10

5 SUMBU X
SUMBU Y
0 SUMBU Z

-5

-10

-15

Gambar 4.25. Grafik Accelerometer Polisi Tidur

Terlihat pada gambar 4.25. Nilai Sumbu Z Accelerometer yang melewati angka 11.5
meskipun tidak ada lubang yang dilalui kendaraan saat perekaman. Sehingga Polisi
tidur dideteksi sebagai jalan yang kurang baik oleh sistem.

UNIVERSITAS SUMATERA UTARA


40

0.3

0.2

0.1
SUMBU X
0 SUMBU Y
SUMBU Z
-0.1

-0.2

-0.3

Gambar 4.26. Grafik Gyoscope Polisi Tidur

Dapat dilihat pada grafik groscope pada gambar 4.26 menunjukan adanya pergerakan
pada sumbu X,Y,Z yang menandakan adanya getaran yang terjadi pada kendaraan
dikarenakan melewati polisi tidur.

4.2.4. Pengujian Jalan Datar

Pada bagian pengujian jalan datar akan dibagi menjadi 2 kecepatan yang berbeda yaitu
Jalan datar dengan kecepatan 20 Km/Jam dan jalan datar dengan kecepatan 40
Km/Jam. masing-masing kecepatan akan menampilkan grafik yang bebeda pula.

4.2.4.1. Pengujian Jalan Datar Dengan Kecepatan 20 Km/Jam

User melakukaan input nama file pada halaman utama aplikasi lalu klik start untuk
memulai menjalankan aplikasi. Kendaraan akan melakukan pengecekan jalan yang
tidak berlubang dan tidak terdapat tanjakan ataupun polisi tidur . Lokasi pengujian
aplikasi ini terdapat pada gambar 4.27.

UNIVERSITAS SUMATERA UTARA


41

Gambar 4.27. Pengujian Jalan Datar

Terlihat pada gambar 4.28. lokasi pengujian jalan datar dengan kecepatan 20 Km/Jam.
Pengujian ini dilakukan untuk mengetahui bagaimana grafik Accelerometer dan
Gyroscope pada saat melewati jalan yang baik tanpa ada lubang atau polisi tidur.

Gambar 4.28. Jalan Datar

UNIVERSITAS SUMATERA UTARA


42

Terlihat pada gambar 4.28 tidak ada jalan yang rusak maupun jalan yang menanjak.
Maka pada layar utama aplikasi akan menunjukan grafik accelerometer dan gyroscope
akan begerak ketika mobil melintasi jalan datar. Pergerakan grafik akan ditunjukan
pada gambar 4.29. dan gambar 4.30.

12
10
8
6
4 SUMBU X
SUMBU Y
2
SUMBU Z
0
-2
-4
-6

Gambar 4.29. Grafik Accelerometer Jalan Datar (20 Km/Jam)

Terlihat pada gambar 4.29. Nilai sumbu Z Accelerometer tidak ada yang melebihi
angka 11.5. yang menandakan tidak ada nya jalan yang kurang baik.

0.2

0.15

0.1
SUMBU X
0.05
SUMBU Y
0
SUMBU Z
-0.05

-0.1

-0.15

Gambar 4.30. Grafik Gyroscope Jalan Datar (20Km/Jam)

Terlihat pada gambar 4.30 grafik gyroscope menunjukkan adanya pergerakan grafik
meskipun kondisi jalan tidak rusak. Hal ini dikarenakan beberapa faktor yaitu getaran

UNIVERSITAS SUMATERA UTARA


43

pada kendaraan saat berjalan dan juga perilaku pengemudi dalam berkendara yang
menyebabkan getaran pada accelerometer dan gyroscope.

4.2.4.2. Pengujian Jalan Datar Dengan Kecepatan 40 Km/Jam

Pengujian jalan datar dengan kecepatan 40 Km/Jam dilakukan ditempat yang sama
dengan pengujian jalan datar dengan kecepatan 20 Km/Jam. Hal ini bertujuan agar
dapat diketahui pengaruh faktor kecepatan dalam analisa accelerometer dan
gyroscope.

Gambar 4.31. Pengujian Jalan Datar (40 Km/Jam)

Terlihat pada gambar 4.31. lokasi pengujian jalan datar dengan kecepatan 40 Km/Jam
sama dengan lokasi pengujian jalan datar dengan kecepatan 20 Km/Jam.

UNIVERSITAS SUMATERA UTARA


44

20

15

10 SUMBU X
SUMBU Y
5 SUMBU Z

-5

Gambar 4.32. Grafik Accelerometer Jalan Datar (40 Km/Jam)

Terlihat pada gambar 4.32. Nilai Sumbu Z Accelerometer menunjukkan angka yang
melebihi ambang batas jalan baik yaitu 11.5. Hal ini menyebabkan sistem
mengidentifikasi jalan baik ini sebagai jalan yang kurang baik. Hal ini disebabkan oleh
kecepatan yang cukup tinggi pada saat perekaman yang membuat getaran pada
kendaraan semakin kuat.

0.25
0.2
0.15
0.1
0.05 SUMBU X
0
SUMBU Y
-0.05
-0.1 SUMBU Z
-0.15
-0.2
-0.25
-0.3

Gambar 4.33. Grafik Gyroscope Jalan Datar (40Km/Jam)

Terlihat pada gambar 4.32. dan gambar 4.33. terdapat perbedaan grafik yang cukup
signifikan dengan 4.29. dan gambar 4.30. Hal ini terjadi karena adanya perbedaan
kecepatan pada saat perekaman yang menyebabkan grafik accelerometer dan
gyroscopenya berbeda.

UNIVERSITAS SUMATERA UTARA


45

4.2.5 Tabel Perbandingan Grafik Kecepatan 20 Km/Jam dengan 40 Km/Jam

Tabel perbandingan grafik kecepatan 20 Km/Jam dengan 40 Km/Jam adalah tabel


yang membandingkan antara masing masing sumbu X, Y, Z Accelerometer dan X, Y,
Z Gyroscope yang memiliki nilai sumbu tertinggi.

Tabel 4.1. Hasil Uji Lubang 1

Lubang 1
Accelerometer Gyroscope
KecepatanSumbu X Sumbu Y Sumbu Z Sumbu X Sumbu Y Sumbu Z
20Km/Jam 2.488098 3.005661 15.474747 0.313995 0.453812 0.101364
40Km/Jam 4.216721 7.595352 30.284363 0.658524 1.485443 0.76976

Pada Tabel 4.1. Hasil uji lubang 1 dengan kecepatan 40 Km/Jam memiliki nilai sumbu
Accelerometer dan Gyroscope yang lebih besar dibandingkan kecepatan 20 Km/Jam.

Tabel 4.2. Hasil Uji Lubang 2

Lubang 2
Accelerometer Gyroscope
KecepatanSumbu X Sumbu Y Sumbu Z Sumbu X Sumbu Y Sumbu Z
20Km/Jam 2.976517 4.585831 14.315948 0.277451 0.31842 0.124237

40Km/Jam 5.701126 8.507538 16.442062 1.797287 2.308884 0.882675

Pada Tabel 4.2. Hasil uji lubang 2 juga menunjukkan perbedaan antara hasil uji
dengan kecepatan 40 Km/jam dengan 20 Km/Jam.

Tabel 4.3. Hasil Uji Lubang 3

Lubang 3
Accelerometer Gyroscope
KecepatanSumbu X Sumbu Y Sumbu Z Sumbu X Sumbu Y Sumbu Z
20Km/Jam 2.5336 1.274658 12.996735 0.272446 0.194946 0.198303
40Km/Jam 2.253479 3.00087 17.347 0.310181 0.267838 0.807037

Pada Tabel 4.3. Hasil uji lubang 3 juga mengalami perbedaan yang cukup besar antara
kecepatan 40 Km/Jam dengan 20 Km/Jam.

UNIVERSITAS SUMATERA UTARA


46

Tabel 4.4. Hasil Uji Jalan Datar

Jalan Datar
Accelerometer Gyroscope
KecepatanSumbu X Sumbu Y Sumbu Z Sumbu X Sumbu Y Sumbu Z
20Km/Jam 2.301361 0.752716 10.781265 0.14418 0.117737 0.063034
40Km/Jam 2.31572 1.315353 14.349472 0.095169 0.193375 0.057709

Pada tabel 4.3. diatas menunjukan bahwa meskipun jalan yang dilalu bukan jalan yang
berlubang, perbedaan nilai antara kecepatan 40 Km/Jam dengan 20 Km/Jam masih
cukup besar dilihat dari sumbu Z Accelerometer. Hal ini menunjukkan semakin cepat
kendaraan berjalan saat perekaman maka getaran terhadap sumbu X, Y, Z pada
Accelerometer dan sumbu X, Y, Z pada Gyroscope semakin tinggi pula.

4.2.6 Analisa Hasil Percobaan

Berdasarkan grafik Accelerometer dan Gyroscope pada gambar 4.7, 4.8, 4.13,
4.14, 4.19 dan 4.20, sensor Gyroscope menghasilkan nilai yang sangat kecil
dibandingkan sensor Accelerometer, yang menyebabkan sulitnya proses identifikasi
jalan menggunakan sensor Gyroscope. Sumbu sumbu sensor Gyroscope menghasilkan
nilai yang kecil dan tidak berubah terlalu signifikan karena sensor gyroscope tidak
terlalu terpengaruh oleh getaran yang dihasilkan saat melewati jalan rusak. Sensor
Gyroscope akan bekerja maksimal ketika telepon seluler berotasi, bergerak vertikal
atau horizontal. Sehingga dapat disimpulkan kalau sensor Gyroscope tidak berperan
dalam pendeteksian jalan berlubang ini.

UNIVERSITAS SUMATERA UTARA


BAB 5

KESIMPULAN DAN SARAN

5.1. Kesimpulan

Berdasarkan penilitian di atas dapat disimpulkan bahwa :

1. Berdasarkan percobaan yang telah dilakukan pada sistem , terdapat titik


dengan kondisi jalan baik namun terdeteksi sebagai jalan rusak, yaitu pada saat
percobaan jalan datar dengan kecepatan 40 Km/Jam.
2. Perilaku pengendara seperti mengerem mendadak dan menginjak gas secara
berlebihan saat proses perekaman kondisi jalan dapat mempengaruhi hasil
perekaman.
3. Berdasarkan percobaan yang telah dilakukan kecepatan kendaraan saat
perekaman berpengaruh terhadap hasil percobaan. Semakin cepat kendaraan
saat pengujian maka semakin besar pula getaran kendaraan yang dihasilkan.
4. Berdasarkan percobaan yang telah dilakukan sensor Accelerometer sangat
mampu dalam pendeteksian kondisi jalan, sedangkan sensor Gyroscope belum
dapat mendeteksi kondisi jalan.
5. Koordinat GPS dalam menandai jalan cukup baik dengan keakuratan
(+-10 meter).

UNIVERSITAS SUMATERA UTARA


48

5.2. Saran

Berikut saran yang dapat dipertembangkan untuk memperbaiki penelitian ini untuk
dilakukan di penelitian selanjutnya, yaitu :

1. Penelitian ini hanya dapat dilakukan dengan mengendarai roda 4. Diharapkan


penelitan selanjutnya dapat menggunakan jenis kendaraan lain seperti
kendaraan roda 2.
2. Penelitian ini hanya dapat merekam dan menandai jalan yang rusak.
Diharapkan aplikasi selanjutnya dapat mengindentifikasi jenis kerusakan jalan
seperti berlubang, bergelombang atau retakan.
3. Aplikasi ini belum dapat mengirimkan data kerusakan jalan kepada pemerintah
atau masyarakat. Diharapkan aplikasi selanjutnya dapat terintegrasi dengan
sistem pemerintah dan telepon seluler masyarakat.
4. Penelitian ini dibangun berbasis android, diharapkan untuk penelitian
selanjutnya dapat dibangun di perangkat lainnya IOS dan memperbaiki
tampilan sehingga dapat digunakan oleh masyarakat awam.

UNIVERSITAS SUMATERA UTARA


49

DAFTAR PUSTAKA

D., Girisha De Silva, S., Ravin Perera, M., Nayanajith. 2008. “Automated Pothole
Detection System”. University of Colombo School of Computing. Sri Lanka:
Colombo.

Daru, Setiyono C. 2014. “Sistem Deteksi Kerusakan Permukaan Jalan Raya dengan
Metode Template Matching”. Fakultas Teknik Universitas Merdeka Madiun.

Eriksson, Jacob, dkk. 2008. “The Pothole Patrol: Using a Mobile Sensor Network for
Road Surface Monitoring”. Breckenridge, U.S.A.

Kim, Taehyeong dan Ryu, Seung-ki. 2014. “Review and Analysis of Pothole
Detections Methods. Journal of Emerging Trends in Computing and Reformation
Sciences”. Volume 5 , No. 8.

Rudi Hartano, dkk.2015. “Damropa (Damage Roads Patrol): Aplikasi Pendeteksi


Jalan Rusak Memanfaatkan Accelerometer pada Smartphone” mendeteksi jalan rusak
dengan menggunakan GPS dan Accelerometer. Departemen Ilmu Komputer,
Universitas Pendidikan Indonesia.

UNIVERSITAS SUMATERA UTARA


A-1

LAMPIRAN 1

LISTING PROGRAM

1. Main Activity.java
package detector.app.spj;

import android.Manifest;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Color;
import android.hardware.Sensor; import
android.hardware.SensorEvent; import
android.hardware.SensorEventListener; import
android.hardware.SensorManager; import
android.location.Location;
import android.location.LocationListener; import
android.location.LocationManager; import
android.support.annotation.NonNull; import
android.support.v4.app.ActivityCompat; import
android.support.v4.content.ContextCompat; import
android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log; import
android.view.Menu; import
android.view.MenuInflater; import
android.view.MenuItem; import
android.view.View; import
android.widget.Button; import
android.widget.EditText; import
android.widget.TextView;

UNIVERSITAS SUMATERA UTARA


A-2

import android.widget.Toast;

import com.google.android.gms.location.FusedLocationProviderClient;
import com.google.android.gms.location.LocationServices;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng; import
com.google.android.gms.maps.model.Polyline; import
com.google.android.gms.tasks.OnCompleteListener; import
com.google.android.gms.tasks.Task;
import com.google.android.gms.maps.model.PolylineOptions;
import com.google.android.gms.maps.model.MarkerOptions;
import com.google.android.gms.maps.model.Polyline;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Locale;

public class MainActivity extends AppCompatActivity implements


OnMapReadyCallback,SensorEventListener {

static MainActivity mainActivity;


Polyline route;
ArrayList<LatLng> points;
ArrayList<LatLng> temp;
ArrayList<LatLng> biru;

UNIVERSITAS SUMATERA UTARA


A-3

public double lat;


public double lang;
ProgressDialog dialog;
TextView move;
public ArrayList<Float> acc;
Button mulai;
EditText simpan;
SensorManager manager;
boolean jalan;
final String TAG = "SensorLog";
FileWriter writer;

//accelerometer
public final static short TYPE_ACCELEROMETER
= Sensor.TYPE_ACCELEROMETER; public
Boolean tekan=false;

//gyroscope
public final static short TYPE_GYROSCOPE
= Sensor.TYPE_GYROSCOPE;

//google maps
String Fine = Manifest.permission.ACCESS_FINE_LOCATION;
String Course =
Manifest.permission.ACCESS_COARSE_LOCATION;
public static Boolean izin_lokasi = false;
private static final int kode_izin_lokasi = 1234;
GoogleMap mMap;
private FusedLocationProviderClient fusedLocationProviderClient;
TextView latlang;
Boolean maju=false;
LocationManager locManager;

UNIVERSITAS SUMATERA UTARA


A-4

LocationListener li;
public String namafile;
public float kecepatan=0;

@Override
public boolean onCreateOptionsMenu(Menu menu) {
Inflate the menu; this adds items to the action bar if it is
present. MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.optionmenu, menu);
//getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}

public boolean onOptionsItemSelected(MenuItem item) {


if (item.getItemId()==R.id.tentang){
startActivity(new Intent(this, tentang.class));
} else if (item.getItemId() == R.id.bantuan) {
startActivity(new Intent(this, bantuan.class));
}
return true;
}
@Override
protected void onCreate(Bundle savedInstanceState)
{ super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dialog=new ProgressDialog(this);
move = findViewById(R.id.move);

latlang=findViewById(R.id.latlang);

UNIVERSITAS SUMATERA UTARA


A-5

manager = (SensorManager)
getSystemService(Context.SENSOR_SERVICE);
simpan=findViewById(R.id.savename);
mulai=findViewById(R.id.start_btn); mainActivity
= MainActivity.this; points = new
ArrayList<LatLng>();
temp=new ArrayList<LatLng>();
biru=new ArrayList<LatLng>();
acc=new ArrayList<Float>();
jalan=false;
getLocationPermission();
locManager=(LocationManager)getSystemService(Context.LOCATI
ON_SERVICE);
li=new speed();
locManager.requestLocationUpdates(LocationManager.NETWORK_
PROVIDER, 0, 0, li);
mulai.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {

Log.d("nilai",mulai.getText().toString());

if (mulai.getText().toString().equals("start"))
{
if (!simpan.getText().toString().equals(""))
{
namafile=simpan.getText().toString();
mulai.setText("STOP");

Log.d(TAG, "Writing to " + getStorageDir());


try {

UNIVERSITAS SUMATERA UTARA


A-6

writer = new FileWriter(new File(getStorageDir(),


namafile+ ".csv"));
} catch (IOException e) {
e.printStackTrace();
}

manager.registerListener(MainActivity.this,
manager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), 100);
manager.registerListener(MainActivity.this,
manager.getDefaultSensor(Sensor.TYPE_GYROSCOPE), 100);
jalan=true;
}
}
else
{

save();
mulai.setText("start");
manager.flush(MainActivity.this);
manager.unregisterListener(MainActivity.this);
jalan=false;
try {
writer.close();
} catch (IOException e) {
e.printStackTrace();

MarkerOptions markerOptions = new MarkerOptions();

// PolylineOptions options = new


PolylineOptions().width(5).color(Color.BLUE).geodesic(true);

UNIVERSITAS SUMATERA UTARA


A-7

// options.addAll(temp);
for (int i=0;i<acc.size();i++)
{
// points.add(temp.get(i));

if (acc.get(i)>11.5)
{
markerOptions.position(temp.get(i));
mMap.addMarker(markerOptions);

options.color(Color.RED);

markerOptions.position(temp.get(i));
mMap.addPolyline(options);

}
else
{
// options.color(Color.BLUE);
// PolylineOptions options2 = new
PolylineOptions().width(5).color(Color.BLUE).geodesic(true);
// options2.addAll(biru);
// // markerOptions.position(temp.get(i));
// mMap.addPolyline(options2);
}
// mMap.addPolyline(options);
}

// points.add(latLng);

UNIVERSITAS SUMATERA UTARA


A-8

options.addAll(points);
markerOptions.position(latLng);
mMap.addPolyline(options);
}
}
});

private String getStorageDir() {


return this.getExternalFilesDir(null).getAbsolutePath();
// /storage/emulated/0/Android/data/detector.app.spj/files
}

class speed implements LocationListener{


@Override
public void onLocationChanged(Location loc) {
Float thespeed=loc.getSpeed();

move.setText("Kecepatan : "+thespeed+" m/s");


kecepatan=thespeed;

}
@Override
public void onProviderDisabled(String arg0) {}
@Override
public void onProviderEnabled(String arg0) {}
@Override
public void onStatusChanged(String arg0, int arg1, Bundle arg2) {}

UNIVERSITAS SUMATERA UTARA


A-9

private void getLocationPermission() {


String [] izin = {Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION};

if
(ContextCompat.checkSelfPermission(this.getApplicationContext(),Fine)
1. PackageManager.PERMISSION_GRANTED)
{

if(ContextCompat.checkSelfPermission(this.getApplicationContext(),Cour
se) == PackageManager.PERMISSION_GRANTED)
{
izin_lokasi=true;
initMap();

}
else
{
ActivityCompat.requestPermissions(this,izin,kode_izin_lokasi );
}
}
else
{
ActivityCompat.requestPermissions(this,izin,kode_izin_lokasi );
}
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;

UNIVERSITAS SUMATERA UTARA


A-10

if (izin_lokasi) {
getDeviceLocation(true);

if (ActivityCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_FINE_LOCATION) !=
PackageManager.PERMISSION_GRANTED &&
ActivityCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_COARSE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {

return;
}
mMap.setMyLocationEnabled(true);
mMap.setOnMyLocationButtonClickListener(new
GoogleMap.OnMyLocationButtonClickListener() {
@Override
public boolean onMyLocationButtonClick() {
Log.d("TES","AAA");
tekan=true;
getDeviceLocation(tekan);
return false;
}
});
mMap.setOnMyLocationChangeListener(new
GoogleMap.OnMyLocationChangeListener() {
@Override
public void onMyLocationChange(Location location) {

getDeviceLocation(false);
}
});

UNIVERSITAS SUMATERA UTARA


A-11

}
private void getDeviceLocation(final Boolean tekan)
{
fusedLocationProviderClient =
LocationServices.getFusedLocationProviderClient(this);

try
{
if(izin_lokasi)
{
final Task lokasi =
fusedLocationProviderClient.getLastLocation();
lokasi.addOnCompleteListener(new OnCompleteListener()
{ @Override
public void onComplete(@NonNull Task task) {
if (task.isSuccessful())
{
Location clocation =(Location)
task.getResult(); float default_zoom =18;
lat=clocation.getLatitude();
lang=clocation.getLongitude();
MoveCamera(new
LatLng(clocation.getLatitude(),clocation.getLongitude()),default_zoom,te
kan);
latlang.setText("Lat = "+clocation.getLatitude()+" Long =
"+clocation.getLongitude());

}
else
{

UNIVERSITAS SUMATERA UTARA


A-12

2.Toast.makeText(Map.this,"Gagal
Menandai Lokasi",Toast.LENGTH_SHORT).show();
}
}
});
}
}catch (SecurityException e )
{

}
}
private void MoveCamera(LatLng latLng, float default_zoom,Boolean
tekan) {
if (tekan)
{

mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng,defa
ult_zoom));
}

else
{
mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
}

Log.d("latlang",""+latLng);
2. MarkerOptions markerOptions = new MarkerOptions();
3. PolylineOptions options = new

2. points.add(latLng);
3. options.addAll(points);
4. markerOptions.position(latLng);

UNIVERSITAS SUMATERA UTARA


A-13

// mMap.addPolyline(options);
// mMap.addMarker(markerOptions);

}
private void initMap()
{
SupportMapFragment mapFragment = (SupportMapFragment)
getSupportFragmentManager().findFragmentById(R.id.map);

mapFragment.getMapAsync(MainActivity.this);
}

@Override
public void onSensorChanged(SensorEvent evt) {

Log.d("kecepatan",""+kecepatan);

4. Log.d("jalan",""+loc.hasSpeed());
if (jalan) {
try {
switch (evt.sensor.getType()) {
case Sensor.TYPE_ACCELEROMETER:
LatLng tes = new LatLng(lat, lang);
Log.d("acc", "" + evt.values[2]);
Log.d("lat", "" + tes);
acc.add(evt.values[2]);

UNIVERSITAS SUMATERA UTARA


A-14

temp.add(tes);

// if (evt.values[2] > 11.5) {


// temp.add(tes);
// } else if (evt.values[2] <= 11.5){
// biru.add(tes);
// }

writer.write(String.format("%d; ACC; %f; %f;


%f;\n", evt.timestamp, evt.values[0], evt.values[1], evt.values[2]));
break;
case Sensor.TYPE_GYROSCOPE:
writer.write(String.format("%d; GYRO; %f; %f; %f;\n",
evt.timestamp, evt.values[0], evt.values[1], evt.values[2]));
break;
}
writer.write(String.format("%d; Latlang; %s; %f; %f;\n",
evt.timestamp, latlang.getText().toString(), 0.f, 0.f));
} catch (IOException e) {
e.printStackTrace();
}
}

@Override
public void onAccuracyChanged(Sensor sensor, int i) {

}
}

UNIVERSITAS SUMATERA UTARA


A-15

2. Dynamic Line Plot.java


package detector.app.spj;

import android.content.Context; import


android.content.res.Resources; import
android.graphics.Color; import
android.graphics.Paint; import
android.util.SparseArray; import
android.util.TypedValue;

import com.androidplot.ui.SizeLayoutType; import


com.androidplot.ui.SizeMetrics; import
com.androidplot.ui.XLayoutStyle; import
com.androidplot.ui.YLayoutStyle; import
com.androidplot.xy.BoundaryMode; import
com.androidplot.xy.LineAndPointFormatter;
import com.androidplot.xy.PointLabelFormatter;
import com.androidplot.xy.SimpleXYSeries;
import com.androidplot.xy.XYPlot;
import com.androidplot.xy.XYStepMode;

import java.text.DecimalFormat;
import java.util.LinkedList;

public class DynamicLinePlot


{
private static final int VERTEX_WIDTH =
4; private static final int LINE_WIDTH = 4;

private int maxPoints = 50;


private double maxRange = 10;
private double minRange = -10;

UNIVERSITAS SUMATERA UTARA


A-16

private String yTitle;

Context context;

private XYPlot plot;


private SparseArray<SimpleXYSeries> series; private
SparseArray<LinkedList<Number>> history;

public DynamicLinePlot(XYPlot plot, Context context, String title)


{
this.plot = plot;
this.context = context;
this.yTitle = title;
series = new SparseArray<SimpleXYSeries>();
history = new
SparseArray<LinkedList<Number>>(); initPlot();
}

public double getMaxRange()


{
return maxRange;
}

public double getMinRange()


{
return minRange;
}

public int getWindowSize()


{

UNIVERSITAS SUMATERA UTARA


A-17

return maxPoints;
}

public void setMaxRange(double maxRange)


{
this.maxRange = maxRange;
plot.setRangeBoundaries(minRange, maxRange,
BoundaryMode.FIXED);
}

public void setMinRange(double minRange)


{
this.minRange = minRange;
plot.setRangeBoundaries(minRange, maxRange,
BoundaryMode.FIXED);
}

public void setWindowSize(int windowSize)


{
this.maxPoints = windowSize;
}

public void setData(double data, int key)


{
if (history.get(key).size() > maxPoints)
{
history.get(key).removeFirst();
}

history.get(key).addLast(data);

series.get(key).setModel(history.get(key),

UNIVERSITAS SUMATERA UTARA


A-18

SimpleXYSeries.ArrayFormat.Y_VALS_ONLY);
}
public synchronized void draw()
{
plot.redraw();
}
public void addSeriesPlot(String seriesName, int key, int color)
{
history.append(key, new LinkedList<Number>());

series.append(key, new SimpleXYSeries(seriesName));

LineAndPointFormatter formatter = new


LineAndPointFormatter(Color.rgb(
0, 153, 204), Color.rgb(0, 153, 204), Color.TRANSPARENT,
new PointLabelFormatter(Color.TRANSPARENT));

Paint linePaint = new Paint();


linePaint.setAntiAlias(true);
linePaint.setStyle(Paint.Style.STROKE);
linePaint.setColor(color);
linePaint.setStrokeWidth(LINE_WIDTH);

formatter.setLinePaint(linePaint);

Paint vertexPaint = new Paint();


vertexPaint.setAntiAlias(true);
vertexPaint.setStyle(Paint.Style.STROKE);
vertexPaint.setColor(color);
vertexPaint.setStrokeWidth(VERTEX_WIDTH);

formatter.setVertexPaint(vertexPaint);

UNIVERSITAS SUMATERA UTARA


A-19

plot.addSeries(series.get(key), formatter);

public void removeSeriesPlot(int key)


{
plot.removeSeries(series.get(key));

history.get(key).removeAll(history.get(key));
history.remove(key);

series.remove(key);
}

private void initPlot()


{
this.plot.getGraphWidget().setDomainLabelPaint(null);
this.plot.setDomainBoundaries(0, maxPoints,
BoundaryMode.FIXED);
this.plot.setDomainStep(XYStepMode.INCREMENT_BY_VAL,
10);

this.plot.setRangeBoundaries(minRange,
maxRange, BoundaryMode.FIXED);
this.plot.setRangeLabel(this.yTitle);
this.plot.getRangeLabelWidget().pack();
this.plot.setRangeStep(XYStepMode.INCREMENT_BY_VAL,
2); this.plot.setRangeValueFormat(new DecimalFormat("#"));

UNIVERSITAS SUMATERA UTARA


A-20

this.plot.setGridPadding(0, 0, 0, 0);

plot.getLegendWidget().setVisible(false);

//Colours
Paint blackPaint = new Paint();
blackPaint.setColor(Color.rgb(0, 0, 0));

this.plot.getGraphWidget().setGridBackgroundPaint(null);
this.plot.getGraphWidget().setBackgroundPaint(null);
this.plot.getGraphWidget().setBorderPaint(null);
this.plot.getGraphWidget().setDomainOriginLinePaint(blackPaint);
this.plot.getGraphWidget().setRangeOriginLinePaint(blackPaint);

this.plot.setBorderPaint(null);
this.plot.setBackgroundPaint(null);

plot.getRangeLabelWidget().getLabelPaint().setColor(Color.BLACK);

plot.getGraphWidget().getRangeLabelPaint().setColor(Color.BLACK);

//Size and position


Resources r = context.getResources();
float px =
TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
12, r.getDisplayMetrics());

plot.getGraphWidget().getRangeLabelPaint().setTextSize(px);
plot.getRangeLabelWidget().getLabelPaint().setTextSize(px);
plot.getRangeLabelWidget().pack();

UNIVERSITAS SUMATERA UTARA


A-21

plot.getGraphWidget().setMarginBottom(10);
plot.getGraphWidget().setMarginTop(40);
plot.getGraphWidget().setMarginLeft(10);
plot.getGraphWidget().setMarginRight(10);
plot.getGraphWidget().position(0.03f,
XLayoutStyle.RELATIVE_TO_LEFT,
0.0f, YLayoutStyle.RELATIVE_TO_TOP);
plot.getGraphWidget().setSize(
new SizeMetrics(1.0f, SizeLayoutType.RELATIVE,
0.98f, SizeLayoutType.RELATIVE));

this.plot.redraw();
}
}

3. Accelerometer Fragment.java
package detector.app.spj;

import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.Fragment;
import android.support.v4.content.ContextCompat;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

UNIVERSITAS SUMATERA UTARA


A-22

import com.androidplot.xy.XYPlot;

public class AccelerometerFragment extends Fragment implements


SensorEventListener {

SensorManager sensorManager;
Sensor sensor;
Sensor accelerometer;
Sensor magnetic;
Sensor gravity;
Handler handler;
Runnable runnable;
TextView textViewXAxis;
TextView textViewYAxis;
TextView textViewZAxis;
float[] accData;
float[] gravData;
float[] magData;
float[] plotData;
XYPlot plot;
DynamicLinePlot dynamicPlot;
public AccelerometerFragment() {
// Required empty public constructor
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup
container,
Bundle savedInstanceState) {

// Inflate the layout for this fragment

UNIVERSITAS SUMATERA UTARA


A-23

View view = inflater.inflate(R.layout.fragment_accelerometer,


container, false);

//Set the nav drawer item highlight


MainActivity mainActivity = (MainActivity) getActivity();
//
mainActivity.navigationView.setCheckedItem(R.id.nav_accelerometer);

//Set actionbar title


mainActivity.setTitle("Pendeteksi Jalan Berlubang");

//Get text views


textViewXAxis = (TextView)
view.findViewById(R.id.value_x_axis);
textViewYAxis = (TextView)
view.findViewById(R.id.value_y_axis);
textViewZAxis = (TextView)
view.findViewById(R.id.value_z_axis);

//Get checkboxes

//Sensor manager
sensorManager = (SensorManager)
getContext().getSystemService(Context.SENSOR_SERVICE);
accelerometer =
sensorManager.getDefaultSensor(MainActivity.TYPE_ACCELEROMET
ER);

//Create graph
accData = new float[3];

UNIVERSITAS SUMATERA UTARA


A-24

gravData = new float[3];


magData = new float[3];
plotData = new float[3];

plot = (XYPlot) view.findViewById(R.id.plot_sensor);


dynamicPlot = new DynamicLinePlot(plot, getContext(), "Accelerasi
(m/s^2)");
dynamicPlot.setMaxRange(18);
dynamicPlot.setMinRange(-10);
dynamicPlot.addSeriesPlot("X", 0,
ContextCompat.getColor(getContext(), R.color.graphX));
dynamicPlot.addSeriesPlot("Y", 1,
ContextCompat.getColor(getContext(), R.color.graphY));
dynamicPlot.addSeriesPlot("Z", 2,
ContextCompat.getColor(getContext(), R.color.graphZ));

//Handler for graph plotting on background thread


handler = new Handler();

//Runnable for background plotting


runnable = new Runnable()
{
@Override
public void run() {
handler.postDelayed(this, 10);
plotData();
updateAccelerationText();
}
};

return view;
}

UNIVERSITAS SUMATERA UTARA


A-25

@Override
public void onResume() {
super.onResume();
sensorManager.registerListener(this, accelerometer,
SensorManager.SENSOR_DELAY_FASTEST);
sensorManager.registerListener(this, magnetic,
SensorManager.SENSOR_DELAY_FASTEST);
sensorManager.registerListener(this, gravity,
SensorManager.SENSOR_DELAY_FASTEST)
; handler.post(runnable);
}

@Override
public void onPause() {
super.onPause();
sensorManager.unregisterListener(this);
handler.removeCallbacks(runnable);
}

@Override
public void onSensorChanged(SensorEvent event)
{ sensor = event.sensor;

int i = sensor.getType();

if (i == MainActivity.TYPE_ACCELEROMETER) {
accData = event.values;
}
}

@Override

UNIVERSITAS SUMATERA UTARA


A-26

public void onAccuracyChanged(Sensor sensor, int accuracy) {


//Safe not to implement
}

private float[] calcLinearAcc(float[] accData, float[] gravData){


float[] data = new float[3];

data[0] = accData[0] - gravData[0];


data[1] = accData[1] - gravData[1];
data[2] = accData[2] - gravData[2];

return data;
}

private float[] calcWorldAcc(float[] accData, float[] magData, float[]


gravData){
float[] data = new float[3];
float[] rotationMatrix = new float[9];

SensorManager.getRotationMatrix(rotationMatrix, null, gravData,


magData);

data[0] = rotationMatrix[0] * accData[0] + rotationMatrix[1] *


accData[1] + rotationMatrix[2] * accData[2];
data[1] = rotationMatrix[3] * accData[0] + rotationMatrix[4] *
accData[1] + rotationMatrix[5] * accData[2];
data[2] = rotationMatrix[6] * accData[0] + rotationMatrix[7] *
accData[1] + rotationMatrix[8] * accData[2];

return data;
}

UNIVERSITAS SUMATERA UTARA


A-27

private void plotData(){

plotData = accData;

dynamicPlot.setData(plotData[0], 0);
dynamicPlot.setData(plotData[1], 1);
dynamicPlot.setData(plotData[2], 2);

dynamicPlot.draw();
}

protected void updateAccelerationText(){


// Update the acceleration data
textViewXAxis.setText(String.format("%.2f", plotData[0]));
textViewYAxis.setText(String.format("%.2f", plotData[1]));
textViewZAxis.setText(String.format("%.2f", plotData[2]));
}

4. Gyroscope Fragment.java
package detector.app.spj;

import android.content.Context;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.Fragment;

UNIVERSITAS SUMATERA UTARA


A-28

import android.support.v4.content.ContextCompat;
import android.view.LayoutInflater; import
android.view.View;
import android.view.ViewGroup;
import android.widget.RadioButton;
import android.widget.TextView;

import com.androidplot.xy.XYPlot;

public class GyroscopeFragment extends Fragment implements


SensorEventListener {

SensorManager sensorManager;
Sensor sensor;
Sensor gyroscope;
Handler handler;
Runnable runnable;
TextView textViewXAxis;
TextView textViewYAxis;
TextView textViewZAxis;
RadioButton gyroCalibrated;
RadioButton gyroUncalibrated;

float[] gyroData;

XYPlot plot;
DynamicLinePlot dynamicPlot;

public GyroscopeFragment() {
// Required empty public constructor
}

UNIVERSITAS SUMATERA UTARA


A-29

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup
container,
Bundle savedInstanceState) {

// Inflate the layout for this fragment


View view = inflater.inflate(R.layout.fragment_gyroscope, container,
false);

//Set the nav drawer item highlight


MainActivity mainActivity = (MainActivity) getActivity();
//
mainActivity.navigationView.setCheckedItem(R.id.nav_gyroscope);

//Set actionbar title


mainActivity.setTitle("");

//Get text views


textViewXAxis = (TextView)
view.findViewById(R.id.value_x_axis);
textViewYAxis = (TextView)
view.findViewById(R.id.value_y_axis);
textViewZAxis = (TextView)
view.findViewById(R.id.value_z_axis);

//Get radio buttons


// gyroCalibrated = (RadioButton)
view.findViewById(R.id.gyro_select_calibrated);
// gyroUncalibrated = (RadioButton)
view.findViewById(R.id.gyro_select_uncalibrated);

// gyroCalibrated.setChecked(true);

UNIVERSITAS SUMATERA UTARA


A-30

//Sensor manager
sensorManager = (SensorManager)
getContext().getSystemService(Context.SENSOR_SERVICE);
gyroscope =
sensorManager.getDefaultSensor(MainActivity.TYPE_GYROSCOPE);

//Create graph
gyroData = new float[3];

plot = (XYPlot) view.findViewById(R.id.plot_sensor);


dynamicPlot = new DynamicLinePlot(plot, getContext(), "Rotasi
(rad/sec)");
dynamicPlot.setMaxRange(10);
dynamicPlot.setMinRange(-10);
dynamicPlot.addSeriesPlot("X", 0,
ContextCompat.getColor(getContext(), R.color.graphX));
dynamicPlot.addSeriesPlot("Y", 1,
ContextCompat.getColor(getContext(), R.color.graphY));
dynamicPlot.addSeriesPlot("Z", 2,
ContextCompat.getColor(getContext(), R.color.graphZ));

//Handler for graph plotting on background thread


handler = new Handler();

//Runnable for background plotting


runnable = new Runnable()
{
@Override
public void run() {
handler.postDelayed(this, 10);
plotData();

UNIVERSITAS SUMATERA UTARA


A-31

updateGyroText();
}
};

return view;
}

@Override
public void onResume() {
super.onResume();
sensorManager.registerListener(this, gyroscope,
SensorManager.SENSOR_DELAY_FASTEST)
; sensorManager.registerListener(this,
sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE_UNCALI
BRATED), SensorManager.SENSOR_DELAY_FASTEST);

handler.post(runnable);
}

@Override
public void onPause() {
super.onPause();
sensorManager.unregisterListener(this);
handler.removeCallbacks(runnable);
}

@Override
public void onSensorChanged(SensorEvent event)
{ sensor = event.sensor;

int i = sensor.getType();
gyroData = event.values;

UNIVERSITAS SUMATERA UTARA


A-32

// if(gyroCalibrated.isChecked() & i ==
MainActivity.TYPE_GYROSCOPE){
// gyroData = event.values;
// } else if(gyroUncalibrated.isChecked() & i ==
Sensor.TYPE_GYROSCOPE_UNCALIBRATED){
// gyroData = event.values;
// }
}

@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
//Safe not to implement
}

private void plotData(){


dynamicPlot.setData(gyroData[0], 0);
dynamicPlot.setData(gyroData[1], 1);
dynamicPlot.setData(gyroData[2], 2);

dynamicPlot.draw();
}

protected void updateGyroText(){


// Update the gyroscope data
textViewXAxis.setText(String.format("%.2f", gyroData[0]));
textViewYAxis.setText(String.format("%.2f", gyroData[1]));
textViewZAxis.setText(String.format("%.2f", gyroData[2]));
}

UNIVERSITAS SUMATERA UTARA


B-1

CURRICULUM VITAE
DATA DIRI

Nama Lengkap : Ardi Sahputra


Nama Panggilan : Ardi
Tempat/Tanggal Lahir : P.Siantar/ 1 April 1997
Jenis Kelamin : Laki-Laki
Agama : Islam
Kebangsaan : Indonesia
Alamat : Perumahan Luxor Blok A Nomor
17 Kelurahan Gedung Johor,
Kecamatan Medan Johor.
Nomor HP :+6287868120489
E-mail : ardysyahputra01@gmail.com

RIWAYAT PENDIDIKAN

S1 Ilmu Komputer
Universitas Sumatera Utara, Medan
2014

Sekolah Menengah Atas


SMA PLUS AL-AZHAR MEDAN
2011-2014

Sekolah Menengah Pertama


SMP NEGERI 1 PERDAGANGAN
2008-2011

Sekolah Dasar
Dr. CIPTO MK PERDAGANGAN
2002-2008

UNIVERSITAS SUMATERA UTARA


B-2

SEMINAR /WORKSHOP /PELATIHAN

No Nama Kegiatan Jenis Kegiatan Tahun


1 Pelatihan Dasar Organisasi Pelatihan 2015
2 Seminar Nasional Literasi
Seminar 2014
Informasi (SENARAI)
3 What Will You be? Seminar 2014
4 Seminar Nasional Artechno Seminar 2017

KEAHLIAN

Bahasa Pemrograman : Java, C++, C#


DMBS : MySQL, Firebase
Software : Android Studio, Construct 2, Office Application

PENGALAMAN ORGANISASI & KEPANITIAAN

No Organisasi Posisi Tahun


Pemerintahan Mahasiswa Anggota Departemen
1 2015 - 2016
Fasilkom-TI USU Riset dan Teknologi
Pemerintahan Mahasiswa Kepala Departemen
2 2016 - 2017
Fasilkom-TI USU Riset dan Teknologi
Science Competion
3 Ketua Panitia 2016
Universitas Sumatera Utara
4 Artechno Ketua Pelaksana 2017
Koordinator Hubungan dan
PMB IMILKOM 2016
5 Masyarkat

UNIVERSITAS SUMATERA UTARA

Anda mungkin juga menyukai