Anda di halaman 1dari 82

SISTEM MONITORING LAHAN PARKIR BERBASIS

BLUETOOTH LOW ENERGY (BLE)

SKRIPSI

Untuk memenuhi sebagian persyaratan


memperoleh gelar Sarjana Teknik

Disusun oleh:
Muhammad Faza Ramadhana
NIM: 165150307111011

PROGRAM STUDI TEKNIK KOMPUTER


JURUSAN TEKNIK INFORMATIKA
FAKULTAS ILMU KOMPUTER
UNIVERSITAS BRAWIJAYA
MALANG
2020
PERNYATAAN ORISINALITAS

Saya menyatakan dengan sebenar-benarnya bahwa sepanjang pengetahuan


saya, di dalam naskah skripsi ini tidak terdapat karya ilmiah yang pernah diajukan
oleh orang lain untuk memperoleh gelar akademik di suatu perguruan tinggi, dan
tidak terdapat karya atau pendapat yang pernah ditulis atau diterbitkan oleh orang
lain, kecuali yang secara tertulis disitasi dalam naskah ini dan disebutkan dalam
daftar referensi.
Apabila ternyata didalam naskah skripsi ini dapat dibuktikan terdapat unsur-
unsur plagiasi, saya bersedia skripsi ini digugurkan dan gelar akademik yang telah
saya peroleh (sarjana) dibatalkan, serta diproses sesuai dengan peraturan
perundang-undangan yang berlaku (UU No. 20 Tahun 2003, Pasal 25 ayat 2 dan
Pasal 70).

Malang, 1 Juni 2020

Muhammad Faza Ramadhana


NIM: 165150307111011

iii
PRAKATA

Puji syukur penulis ucapkan kepada Allah SWT, karena atas berkat rahmat
dan hidayah-Nya sehingga penulis dapat menyelesaikan laporan skripsi yang
berjudul “Sistem Monitoring Lahan Parkir Berbasis Bluetooth Low Energy (BLE)”.
Laporan skripsi ini dibuat sebagai salah satu syarat untuk memperoleh gelar
sarjana. Dalam penyusunan laporan skripsi ini kami ingin mengucapkan terima
kasih kepada :
1. Allah SWT yang selalu memberikan petunjuk dan hikmah dalam penulisan
laporan skripsi ini.
2. Ayahanda dan Ibunda dan seluruh keluarga besar atas segala nasehat, kasih
sayang, perhatian dan kesabarannya di dalam membesarkan dan mendidik
penulis, serta yang senantiasa tiada henti-hentinya memberikan doa dan
semangat demi terselesaikannya laporan ini.
3. Bapak Wijaya Kurniawan, S.T,M.T dan Bapak Mochammad Hannats Hanafi
Ichsan, S.ST., M.T. selaku dosen pembimbing.
4. Bapak Achmad Basuki, S.T., M.MG., Ph.D. selaku Ketua Jurusan Teknik
Informatika Fakultas Ilmu Komputer Universitas Brawijaya Malang.
5. Bapak Dahnial Syauqy, S.T., M.T., M.Sc. selaku Ketua Program Studi Teknik
Komputer Fakultas Ilmu Komputer Universitas Brawijaya Malang.
6. Seluruh civitas akademika Teknik Komputer Fakultas Ilmu Komputer Universitas
Brawijaya Malang yang telah banyak memberikan bantuan dan dukungan
selama penyelesaian laporan skripsi ini.
Penulis menyadari bahwa dalam penyusunan laporan ini masih banyak
kekurangan, sehingga saran dan kritik yang membangun sangat penulis harapkan.
Akhir kata penulis berharap skripsi ini dapat membawa manfaat bagi semua pihak
yang menggunakannya.

Malang, 1 Juni 2020

Penulis
Email: mfazarmd@student.ub.ac.id

iv
ABSTRAK
Muhammad Faza Ramadhana, Sistem Monitoring Lahan Parkir Berbasis
Bluetooth Low Energy (BLE)
Pembimbing : Wijaya Kurniawan, S.T,M.T dan Mochammad Hannats Hanafi
Ichsan, S.ST., M.T.
Mobilitas kendaraan di perkotaan maupun daerah yang semakin tinggi
menimbulkan permasalahan dalam penyediaan lahan parkir. Sebuah pemberian
informasi mengenai lahan parkir diperlukan untuk mengatasi masalah tersebut.
Sebuah sistem monitoring diperlukan untuk menginformasikan kepada
pengendara lokasi parkir yang kosong. Sistem monitoring merupakan salah satu
dari konsep Internet of things (IoT), yaitu sebuah sistem pengamatan yang
dilakukan secara real-time menggunakan koneksi internet melalui suatu protokol.
Salah satu protokol yang bisa digunakan adalah Bluetooth Low Energy (BLE) dapat
digunakan untuk komunikasi antar perangkat yang hemat daya, jangkauan
konektifitas yang luas dan transfer data yang lebih kecil. Oleh karena itu peneliti
melakukan penelitian dengan mengimplementasikan Bluetooth Low Energy (BLE)
yang diterapkan pada sistem monitoring lahan parkir. Berdasarkan hasil pengujian
didapatkan kesimpulan bahwa ESP32 mampu saling berkomunikasi satu sama lain
menggunakan teknologi Bluetooth Low Energy (BLE). Tingkat akurasi sensor yang
di dapat dari pengujian sensor ultrasonik sebesar 95.12% dengan jarak halangan
5cm hingga 300cm dan sensor infrared mampu membaca halangan dan bekerja
dengan baik. Pada pengujian delay pengiriman data berdasarkan jarak 1 meter, 3
meter, 5 meter, 7 meter dan 9 meter didapatkan rata – rata delay berturut – turut
sebesar 2049.65 ms, 2086.25 ms, 2108.05 ms, 2449.15ms dan 2612.77ms.
Tampilan webserver yang dibuat mampu menampilkan informasi mengenai
ketersediaan lahan parkir dan jumlah masuk dan keluar mobil.

Kata Kunci : Parkir, Sistem Monitoring, Internet of Things (IoT), Bluetooth Low
Energy (BLE), ESP32, Sensor

v
ABSTRACT
Muhammad Faza Ramadhana, Parking Area Monitoring System Based on
Bluetooth Low Energy (BLE)
Supervisors : Wijaya Kurniawan, S.T,M.T and Mochammad Hannats Hanafi
Ichsan, S.ST., M.T.
Vehicle mobility in urban areas or areas which are increasingly large,
causing problems in the provision of parking lots. Information about parking slot
availability is needed to overcome this problem. A monitoring system is needed
for motorists to slot availability in parking area. The monitoring system is one of
the concepts of the Internet of Things (IoT), which is a collection system that is
carried out in real-time using an internet connection through a protocol. One
protocol that can be used is Bluetooth Low Energy (BLE) which can be used for
communication between devices that are power efficient, extensive connectivity
connections and smaller data transfers. Therefore researchers conducted
research by applying Bluetooth Low Energy (BLE) which is applied to the parking
lot monitoring system. Based on the results obtained from the conclusions of
ESP32 that can communicate with each other using Bluetooth Low Energy (BLE)
technology. The acceptance level sensor that can test the ultrasonic sensor is
95.12% with a barrier distance of 5cm to 300cm and the infrared sensor is able to
read obstructions and work properly. In the test of delay in sending data based on
a distance of 1 meter, 3 meters, 5 meters, 7 meters and 9 meters the average delay
received was 2049.65 ms, 2086.25 ms, 2108.05 ms, 2449.15ms and 2612.77ms.
The webserver display is made capable of containing information about parking
and the number of cars entering and leaving.

Keyword : Parking, Monitoring System, Internet of Things (IoT), Bluetooth Low


Energy (BLE), ESP32, Sensor

vi
DAFTAR ISI
PENGESAHAN ...........................................................................................................ii
PERNYATAAN ORISINALITAS ................................................................................... iii
PRAKATA.................................................................................................................. iv
ABSTRAK ...................................................................................................................v
ABSTRACT ................................................................................................................ vi
DAFTAR ISI .............................................................................................................. vii
DAFTAR TABEL ......................................................................................................... ix
DAFTAR GAMBAR ..................................................................................................... x
DAFTAR LAMPIRAN ................................................................................................. xi
BAB 1 PENDAHULUAN............................................................................................. 1
1.1 Latar Belakang ............................................................................................... 1
1.2 Rumusan Masalah ......................................................................................... 2
1.3 Tujuan............................................................................................................ 2
1.4 Manfaat ......................................................................................................... 3
1.5 Batasan Masalah ........................................................................................... 3
1.6 Sistematika Pembahasan .............................................................................. 3
BAB 2 LANDASAN KEPUSTAKAAN ........................................................................... 5
2.1 Kajian Pustaka ............................................................................................... 5
2.2 Dasar Teori .................................................................................................... 7
2.2.1 Protokol Komunikasi Internet of Things (IoT) ........................................ 7
2.2.2 Bluetooth Low Energy (BLE) ................................................................... 7
2.2.3 ESP32 ...................................................................................................... 8
2.2.4 NodeMCU ESP8266 ................................................................................ 9
2.2.5 Sensor Ultrasonik ................................................................................. 10
2.2.6 Sensor Infrared ..................................................................................... 11
2.2.7 Webserver ............................................................................................ 12
2.2.8 Arduino IDE .......................................................................................... 12
BAB 3 METODOLOGI ............................................................................................. 14
3.1 Tipe Penelitian ............................................................................................. 14
3.2 Strategi dan Rancangan Penelitian ............................................................. 14
3.2.1 Lokasi Penelitian................................................................................... 14
3.2.2 Teknik Pengumpulan Data ................................................................... 14

vii
3.3 Metode atau Teknik Lain............................................................................. 14
3.3.1 Metode Secara Umum ......................................................................... 14
3.3.2 Studi Literatur ...................................................................................... 15
3.3.3 Analisis Kebutuhan ............................................................................... 15
3.3.4 Metode Perancangan Sistem ............................................................... 16
3.3.5 Metode Implementasi Sistem .............................................................. 17
3.3.6 Metode Pengujian ................................................................................ 17
3.3.7 Metode Pengambilan Kesimpulan ....................................................... 17
BAB 4 ANALISIS KEBUTUHAN ................................................................................ 18
4.1 Gambaran Umum Sistem ............................................................................ 18
4.2 Analisis Kebutuhan ...................................................................................... 18
4.2.1 Kebutuhan Fungsional.......................................................................... 18
4.2.2 Kebutuhan Non Fungsional .................................................................. 19
4.3 Batasan Desain dan Implementasi Sistem .................................................. 20
BAB 5 PERANCANGAN DAN IMPLEMENTASI ........................................................ 21
5.1 Perancangan ................................................................................................ 21
5.1.1 Perancangan Perangkat Keras ............................................................. 22
5.1.2 Perancangan Perangkat Lunak ............................................................. 24
5.2 Implementasi............................................................................................... 28
5.2.1 Implementasi Perangkat Keras ............................................................ 28
5.2.2 Implementasi Perangkat Lunak............................................................ 30
BAB 6 PENGUJIAN ................................................................................................. 42
6.1 Pengujian ..................................................................................................... 42
6.1.1 Pengujian Delay BLE Berdasarkan Jarak Antar Klien dan Server ......... 42
6.1.2 Pengujian Akurasi Sensor ..................................................................... 47
6.1.3 Pengujian Webserver ........................................................................... 51
BAB 7 PENUTUP .................................................................................................... 56
7.1 Kesimpulan .................................................................................................. 56
7.2 Saran............................................................................................................ 56
DAFTAR REFERENSI ............................................................................................... 57
LAMPIRAN ............................................................................................................. 59
1. Kode Progam BLE Server ............................................................................... 59
2. Kode Progam BLE Klien ................................................................................. 62

viii
DAFTAR TABEL
Tabel 2.1 Tinjauan Pustaka ..................................................................................... 6
Tabel 5.1 Konfigurasi pin ESP32 dengan dua sensor ultrasonik ........................... 22
Tabel 5.2 Konfigurasi pin ESP32 dengan dua sensor infrared .............................. 23
Tabel 5.3 Inialisasi Library BLE Server ................................................................... 30
Tabel 5.4 Inialisasi BLE server ............................................................................... 31
Tabel 5.5 Pengiriman data server ......................................................................... 32
Tabel 5.6 Inialisasi Library BLE Klien ..................................................................... 33
Tabel 5.7 Koneksi ke server................................................................................... 34
Tabel 5.8 Pencocokan service UUID...................................................................... 35
Tabel 5.9 Pembacaan data server ......................................................................... 36
Tabel 5.10 Inialisasi BLE klien ................................................................................ 37
Tabel 6.1 Pengujian Jangkauan Bluetooth Low Energy ......................................... 43
Tabel 6.2 Pengujian Pada Jarak 1m ....................................................................... 43
Tabel 6.3 Pengujian Pada Jarak 3m ....................................................................... 44
Tabel 6.4 Pengujian Pada Jarak 5m ....................................................................... 45
Tabel 6.5 Pengujian Pada Jarak 7m ....................................................................... 45
Tabel 6.6 Pengujian Pada Jarak 9m ....................................................................... 46
Tabel 6.7 Pengujian Sensor Ultrasonik ................................................................. 48
Tabel 6.8 Pengujian Sensor Ultrasonik ................................................................. 49
Tabel 6.9 Hasil pengujian sensor ultrasonik ......................................................... 50
Tabel 6.10 Pengujian Sensor Infrared ................................................................... 51
Tabel 6.11 Hasil pengujian sensor infrared........................................................... 51
Tabel 6.12 Hasil pengujian webserver dengan metode black box ....................... 52
Tabel 6.13 Pengujian Delay Webserver................................................................. 54

ix
DAFTAR GAMBAR
Gambar 2.1 Konsep Klien dan Server...................................................................... 8
Gambar 2.2 ESP32 ................................................................................................... 9
Gambar 2.3 NodeMCU ESP8266 ........................................................................... 10
Gambar 2.4 Sensor HC-SR04 ................................................................................. 10
Gambar 2.5 Prinsip Kerja Sensor Ultrasonik ......................................................... 10
Gambar 2.6 Sensor FC-51 ...................................................................................... 11
Gambar 2.7 Cara Kerja Webserver ........................................................................ 12
Gambar 2.8 Arduino IDE ....................................................................................... 13
Gambar 3.1 Waterfall Diagram Penelitian ............................................................ 15
Gambar 3.2 Perancangan Sistem .......................................................................... 16
Gambar 5.1 Perancangan Sistem .......................................................................... 21
Gambar 5.2 Perancangan ESP32 dengan Dua Sensor Ultrasonik ......................... 22
Gambar 5.3 Perancangan ESP32 dengan Dua Sensor Infrared ............................. 23
Gambar 5.4 Perancangan Sistem Secara Keseluruhan ......................................... 24
Gambar 5.5 Predifined Process Read Sensor Ultrasonik ....................................... 25
Gambar 5.6 Predifined Process Read Sensor Infrared........................................... 26
Gambar 5.7 Flowchart Klien .................................................................................. 27
Gambar 5.8 Perancangan Tampilan Webserver ................................................... 28
Gambar 5.9 Implementasi ESP32 dengan Dua Sensor Ultrasonik ........................ 29
Gambar 5.10 Implementasi ESP32 dengan Dua Sensor Infrared ......................... 29
Gambar 5.11 Implementasi keseluruhan.............................................................. 30
Gambar 5.12 Implementasi Webserver ................................................................ 41
Gambar 6.1 Diagram Success Ratio Pengiriman Dari Sensor Node Ke Gateway .. 43
Gambar 6.2 Diagram Delay Pengiriman dari Sensor Node ke Gateway ............... 46
Gambar 6.3 Rata - Rata Persentase Error Tiap Sensor ......................................... 50
Gambar 6.4 Kondisi Saat Lahan Parkir Kosong ..................................................... 53
Gambar 6.5 Kondisi Saat Lahan Parkir Penuh ....................................................... 54
Gambar 6.6 Grafik Pengujian Delay Webserver .................................................... 55

x
DAFTAR LAMPIRAN
1. Kode Progam BLE Server ................................................................................... 59
2. Kode Progam BLE Klien ..................................................................................... 62

xi
BAB 1 PENDAHULUAN

1.1 Latar Belakang


Laju pertumbuhan kendaraan, jumlah mobilitas kendaraan yang tinggi dan
tidak seimbang dengan infrastuktur yang tersedia, tentunya menimbulkan
masalah. Diantaranya terbatasnya lahan parkir yang tersedia, menyebabkan
antrian pada kendaraan yang parkir. Diperlukan peningkatan pelayanan parkir
untuk memberikan kenyamanan dan kemudahan bagi pengguna dan pengelola.
Umumnya pemberian informasi dari sebuah lahan parkir dilakukan secara manual.
Perlu dilakukan pengecekan pada setiap slot parkir, sehingga cara ini tidak efektif.
Sebuah sistem monitoring diperlukan untuk menginformasikan kepada
pengendara lokasi parkir yang kosong. Sistem monitoring merupakan salah satu
dari konsep Internet of things, yaitu sebuah sistem pengamatan yang dilakukan
secara real-time menggunakan koneksi internet.
Internet Of Things (IoT) sudah menjadi topik pembicaraan yang jauh
berkembang sejak ide ini dikenalkan. IoT adalah sebuah konsep yang mampu
untuk mengirimkan data secara nirkabel menggunakan koneksi tanpa melibatkan
korelasi manusia (H. V. Bhatnagar, 2018). Konsep dari IoT pada dasarnya
menghubungkan antar perangkat apapun dengan internet. Perangkat yang
dihubungkan agar bisa berkomunikasi menggunakan sebuah protokol. Umumnya
pada sistem monitoring berbasis IoT dilakukan secara real time untuk penggunaan
secara optimal dan diperlukan sebuah protokol hemat energi untuk penggunaan
konsumsi daya yang rendah. Protokol Bluetooth Low Energy (BLE) cocok digunakan
untuk mengatasi permasalahan hemat energi dan dapat diterapkan pada
teknologi IoT.
Bluetooth Low Energy (BLE) adalah peningkatan dari infrastruktur
sebelumnya yaitu bluetooth classic. BLE merupakan salah satu protokol
komunikasi yang hemat energi. Perbedaan BLE dengan bluetooth classic adalah
konsumsi daya dan transmisi data yang jauh lebih kecil dan jangkauan konektifitas
yang luas. BLE memiliki banyak keunggulan dibandingkan dengan protokol IoT
lainnya seperti metode transmisi data dan konfigurasi yang mudah. BLE atau
Bluetooth Low Energy (BLE) juga memiliki biaya yang rendah sehingga bisa
menghemat penggunaan daya dan cocok diterapkan pada sistem monitoring yang
dlakukan secara real time.
Salah satu media untuk sebuah sistem monitoring adalah webserver.
Webserver merupakan suatu tempat dari server yang dipakai untuk menyimpan
halaman web. Webserver berperan sebagai penerima permintaan yang dikirimkan
melalui HTTP atau HTTPS atau disebut juga sebuah web browser. Untuk
menanggapi kembali permintaan pengguna dikembalikan dalam bentuk halaman
web atau lebih umumnya dalam berwujud dokumen HTML (Zulfikri, 2017). HTTP
(Hypertext Transfer Protocol) adalah protokol yang dipakai oleh webserver untuk
dapat berkomunikasi satusama lain. Sementara itu, HTTPS (Hypertext Transfer
Protocol Secure) adalah versi yang lebih aman dari HTTP.

1
Pada penelitian terdahulu oleh Nataliana et al. (2014) dapat melakukan
implementasi sistem monitoring lahan parkir mengunakan sensor infrared
berbasis raspberry pi yang memiliki kemampuan untuk menginformasikan
ketersediaan lahan parkir menggunakan LED sebagai indikator ketersediaan lahan
parkir. Kemudian pada penelitian sebelumnya oleh Indrayana et al. (2018) dapat
melakukan implementasi Bluetooth Low Energy (BLE) sebagai media komunikasi
antar BLE dengan raspberry pi dengan data yang diambil berupa pengamatan
tekanan darah. Pengujian yang dilakukan pada penelitian tersebut adalah
pengujian delay berdasarkan jarak dan berdasarkan connection interval, yang
keduanya bisa mempengaruhi kinerja BLE.
Berdasarkan deskripsi yang telah dijabarkan sebelumnya, maka penulis
melakukan penelitian dengan judul “Sistem Monitoring Lahan Parkir Berbasis
Bluetooth Low Energy (BLE)”. Sistem monitoring lahan parkir yang dimaksud
mengimplementasikan Bluetooth Low Energy (BLE) sebagai media komunikasi
transmisi data, menggunakan ESP 32 sebagai mikrokontroler serta menggunakan
sensor ultrasonik dan infrared untuk mengetahui ketersediaan lahan parkir dan
menghitung jumlah masuk dan keluar mobil. Masing – masing Sensor dan
mikrokontroler sebagai server mengirim data menggunakan BLE ke
mikrorontroler klien, kemudian klien mengirimkannya ke webserver untuk
ditampilkan pada web browser. Diharapkan penelitian ini dapat dijadikan
pemecahan masalah kurangnya informasi ketersediaan slot parkir dan bisa
dijadikan pertimbangan untuk memanfaatkan teknologi BLE.

1.2 Rumusan Masalah


1. Bagaimana merancang sistem komunikasi data BLE dan webserver untuk
monitoring lahan parkir?
2. Bagaimana mengimplementasikan sistem komunikasi data BLE dan webserver
untuk monitoring lahan parkir?
3. Bagaimana performa sistem komunikasi BLE dan webserver pada sistem
monitoring lahan parkir?

1.3 Tujuan
1. Merancang sistem komunikasi data BLE dan webserver untuk sistem
monitoring lahan parkir.
2. Mengimplementasikan sistem komunikasi data BLE dan webserver untuk
sistem monitoring lahan parkir.
3. Untuk mengetahui kinerja protokol komunikasi BLE pada sistem monitoring
lahan parkir.

2
1.4 Manfaat
Manfaat yang diharapkan oleh penulis dan bagi pembaca, antara lain :
1. Bagi Penulis
Penelitian ini bermanfaat dalam pengembangan implementasi Bluetooth
Low Energy (BLE) pada bidang pengelolaan lahan parkir dan meningkatkan
efisiensi pengelolaan dengan integrasi sistem web berbasis webserver.
2. Bagi Pembaca
Penelitian ini bermanfaat sebagai referensi pengembangan penelitian yang
berkaitan dengan integrasi komunikasi Bluetooth Low Energy dan Internet
of Things.

1.5 Batasan Masalah


Batasan masalah dari sistem yang diteliti, antara lain :
1. Sensor node terdiri dari enam sensor ultrasonik dan dua sensor infrared.
2. Sistem monitoring ditampilkan melalui web dengan koneksi internet yang
stabil.
3. Protokol komunikasi Bluetooth Low Energy (BLE) yang digunakan untuk
trasnmisi data dari server ke klien bersifat nirkabel.
4. Dalam penelitian ini tidak memperhatikan aspek keamanan jaringan.

1.6 Sistematika Pembahasan


Sistematika pembahasan dari penelitian ini, antaralain :
BAB I : PENDAHULUAN
Menjelaskan latar belakang, rumusan masalah, tujuan, manfaat,
batasan masalah dan sistematika pembahasan.
BAB II : LANDASAN KEPUSTAKAAN
Menjelaskan penelitian terdahulu dan teori terkait dengan sistem
monitoring lahan parkir berbasis Bluetooth Low Energy (BLE).
BAB III : METODOLOGI
Menjelaskan tentang metode dan langkah – langkah dalam
penulisan yang terdiri dari diagram alir, analisis kebutuhan,
perancangan sistem, implementasi sistem, pengujian dan
pengambilan kesimpulan.
BAB IV : ANALISIS KEBUTUHAN
Menjelaskan tentang analisis kebutuhan sistem monitoring lahan
parkir berbasis Bluetooth Low Energy (BLE).

3
BAB V : PERANCANGAN DAN IMPLEMENTASI
Menjelaskan tentang proses-proses perancangan dan
implementasi sistem monitoring lahan parkir berbasis Bluetooth
Low Energy (BLE).
BAB VI : PENGUJIAN
Menjelaskan tentang hasil pengujian dan pembahasan cara kerja
dari sistem monitoring lahan parkir parkir berbasis Bluetooth Low
Energy (BLE).
BAB VII : PENUTUP
Menjelaskan tentang kesimpulan dan saran yang diperoleh dari
hasil pengujian yang dilakukan pada sistem monitoring lahan
parkir parkir berbasis Bluetooth Low Energy (BLE)

4
BAB 2 LANDASAN KEPUSTAKAAN

2.1 Kajian Pustaka


Penelitian yang pertama adalah penelitian dari Arief Sukma Indrayana
pada tahun 2018 berjudul “Rancang Bangun Sistem Komunikasi Bluetooth Low
Energy (BLE) Pada Sistem Pengamatan Tekanan Darah”. Dalam penelitian ini
dibuat sebuah sistem pengamatan tekanan darah berbasis IoT. Penelitian ini
memanfaatkan protokol Bluetooth Low Energy (BLE) sebagai komunikasi antar
klien dan server. Data yang diambil merupakan nilai tekanan sistolik dan diastolik
yang diolah oleh raspberry pi dan datanya dikirim ke klien melalui BLE. Pengujian
yang dilakukan pada penelitian tersebut adalah pengujian delay berdasarkan jarak
dan berdasarkan connection interval, yang keduanya bisa mempengaruhi kinerja
BLE. Hasil yang didapatkan dalam penelitian ini adalah BLE menunjukkan bahwa
jarak dan connection interval dapat mempengaruhi performansi Bluetooth Low
Energy dengan rata-rata delay pengiriman berturut-turut bernilai 2.81 detik dan
2.6 detik.
Selanjutnya pada penelitian yang kedua oleh Decy Nataliana pada tahun
2014 berjudul “Sistem Monitoring Parkir Mobil Menggunakan Sensor Infrared
Berbasis Raspberry Pi”. Dalam penelitian ini dibuat sebuah sistem monitoring
lahan parkir berbasis raspberry pi. Sensor yang digunakan adalah sensor infrared
disertai dengan kamera sebagai kemanan kendaraan yang parkir dan LED sebagai
indikator ketersediaan lahan parkir. Hasil dari pengujian model sistem perpakiran
ini dapat memperlihatkan keadaan dari tiap-tiap slot parkir yang ditampilkan oleh
layar dan LED berhasil menjadi indikator ada tidaknya lahan parkir yang masih
kosong.
Selanjutnya pada penelitian yang ketiga oleh Mikhaylov et al, pada tahun
2013 berjudul “Performance Analysis and Comparison of Bluetooth Low Energy
with IEEE 802.15.4 and SimpliciTI” . Penelitian ini membandingkan performansi
Bluetooth Low Energy (BLE) dengan 802.15.4 dan SimpliciTi. Pengujian yang
dilakukan adalah penggunaan daya pada transceiver, throughput dan minimum
turnaround time. Hasil yang didapatkan dalam penelitian ini adalah BLE mampu
menghasilkan throughput sebesar 320 kbit/s, sekitar 70% lebih tinggi dibanding
protokol lainnya. Sedangkan untuk penggunaan minimum turnaround time BLE
sebesar kurang dari 1 ms, lebih kecil dibanding protokol lainnya. Hal ini
menunjukkan BLE menggunakan daya yang lebih rendah dan hemat energi.
Berdasarkan penelitian – penelitian terdahulu dikembangkan dan
diimplementasikan sebuah sistem monitoring lahan parkir berbasis Bluetooth Low
Energy (BLE). Sistem monitoring lahan parkir yang dimaksud meng-
implementasikan Bluetooth Low Energy (BLE) sebagai media komunikasi
pengiriman data, menggunakan ESP 32 sebagai mikrokontroler serta
menggunakan sensor ultrasonik dan sensor infrared untuk mengetahui
ketersediaan lahan parkir dan menghitung jumlah masuk dan keluar mobil. Masing

5
– masing sensor terhubung ke mikrokontroler sebagai server mengirim data
menggunakan protokol komunikasi hemat energi Bluetooth Low Energy (BLE) ke
mikrorontroler klien, kemudian klien mengirimkannya ke webserver untuk
ditampilkan pada web browser.
Pada Tabel 2.1 ditunjukan perbandingan tinjauan pustaka dengan
penelitian sebagai berikut :
Tabel 2.1 Tinjauan Pustaka
No Nama Penulis Persamaan Perbedaan
[Tahun], Judul
Penelitian Rencana
terdahulu penelitian
1 Arief Sukma Menggunakan Merancang Merancang
Indrayana BLE sebagai sistem sistem monitoring
[2018], media pengamatan untuk lahan parkir
Rancang pengiriman darah
Bangun Sistem dari klien ke
Komunikasi server
Bluetooth Low
Energy (BLE)
Pada Sistem
Pengamatan
Tekanan Darah
2 Decy Nataliana Membuat Sistem Sistem
[2014], Sistem sebuah sistem monitoring monitoring
Monitoring pengamatan menggunakan menggunakan
Parkir Mobil pada lahan LED sebagai webserver
Menggunakan parkir indikator sebagai pemberi
Sensor Infrared ketersediaan informasi
Berbasis lahan parkir ketersediaan
Raspberry Pi lahan parkir
3 Konstantin Penggunaan Perbandingan Pengimplementas
Mikhaylov BLE sebagai performansi BLE -ian BLE pada
[2013], protokol dengan 802.15.4 prototype lahan
Performance hemat energi dan SimpliciTi parkir
Analysis and
Comparison of
Bluetooth Low
Energy with
IEEE 802.15.4
and SimpliciTI

6
2.2 Dasar Teori
Dasar teori mengandung tentang teori yang mendukung dalam
penyelesaian penelitian. Dasar teori pada penelitian ini antara lain:

2.2.1 Protokol Komunikasi Internet of Things (IoT)


Internet of Things adalah sebuah konsep dimana perangkat yang
terhubung ke internet dapat saling berkomunikasi atau bertukar informasi.
Konsep ini tidak memerlukan hubungan antar manusia dengan manusia atau
manusia dengan komputer. Konsep ini sudah sudah dilakukan secara otomatis.
Untuk menjalankan konsep IoT dibutuhkan suatu protokol komunikasi agar IoT
dapat berfungsi dengan baik.
Menurut (Anisa, 2019) terdapat 4 protokol komunikasi utama yang
digunakan pada IoT. Protokol pertama yaitu protokol HTTP (HyperText Tranfer
Protocol). HTTP adalah protokol IoT yang paling umum. Protokol HTTP mampu
memberikan berbagai macam data melalui web dan data yang dikirimkan dijamin
tidak rusak karena dibangun diatas TCP (Transmission Control Protocol). Protokol
kedua yaitu Long Range Wide Area Network (LoRaWan). LoRaWAN adalah
protokol media access control (MAC) yang dirancang untuk jaringan publik skala
besar dengan satu operator. LoRaWan menghubungkan hal-hal yang dioperasikan
dengan baterai secara wireless ke Internet secara private network dan global
network. Kemudian protokol yang ketiga yaitu Bluetooth Low energy (BLE). BLE
sangat cocok untuk digunakan untuk penggunaan daya yang rendah, biaya rendah,
transmisi jarak pendek dan komunikasi antar perangkat secara wireless.
Selanjutnya protokol keempat yaitu ZigBee. ZigBee digunakan dengan aplikasi
yang mendukung transfer data kecepatan rendah dengan jarak yang dekat. ZigBee
beroperasi pada frekuensi 2.4 Ghz, frekuensi ini sangat ideal untuk industri dimana
pada umumnya data yang ditransfer melalui trafik yang rendah diantara bangunan
atau rumah.

2.2.2 Bluetooth Low Energy (BLE)


Salah satu protokol komunikasi IoT yang sedang berkembang adalah
Bluetooth Low energy. BLE merupakan protokol komunikasi nirkabel yang
dikembangkan oleh Bluetooth Special Interest Group (SIG). BLE telah dirancang
sebagai protokol berdaya rendah untuk aplikasi kontrol dan pengamatan atau
pemantauan. BLE adalah fitur khusus dari spesifikasi bluetooth 4.0 (Gomez Carles,
2012). Fitur – fitur BLE :
1. Bekerja dengan dengan jumlah node komunikasi yang tinggi dengan
persyaratan latensi yang terbatas.
2. Konsumsi daya yang sangat rendah.
3. Daya tahan sama dengan bluetooth klasik.
4. Waktu dari mode sleep ke mode wake up singkat.
5. Mendukung perangkat smartphone dan tablet.

7
Gambar 2.1 Konsep Klien dan Server
BLE bekerja pada frekuensi radio 2.4 Ghz dan memungkinkan perangkat
dual-mode, sehingga bisa digunakan untuk mengirim dan menerima dengan satu
antena radio. BLE bekerja dengan model klien dan server seperti pada Gambar 2.1.
klien sebagai penerima data menghubungkan dan mengakses satu atau beberapa
server sebagai penyedia data. Klien biasanya beroperasi dalam peran sentral dan
server beroperasi dalam peran periferal. Biasanya, sensor atau aksesori adalah
server atau periferal dan komputer, ponsel, atau tablet adalah perangkat klien
atau sentral. Dalam konteks gateway, gateway biasanya mengambil peran klien
atau sentral (Adersson, 2014).

2.2.3 ESP32
ESP32 adalah sebuah mini pc mikrokontroller yang mendukung jaringan
wifi dan bluetooth 4.2 konsumsi daya rendah dan dapat dikonfigurasi untuk
terhubung ke internet, sehingga sangat cocok untuk digunaan dalam Internet of
Things (IoT). ESP32 memiliki 30 pin GPIO, pin diberi label di bagian atas papan,
sehingga mudah untuk mengidentifikasi pin ke perangkat lain. ESP32 dilengkapi
dengan tombol RESET (EN) dan BOOT on-board. Selain itu, ESP32 memiliki
antarmuka USB-ke-UART, sehingga mudah untuk diprogam menggunakan Arduino
IDE atau software lainnya, dan dilengkapi dengan rangkaian regulator tegangan.
Board ESP32 dapat diberi daya menggunakan konektor micro-USB, atau pin VIN
atau 3.3V tetapi tidak dilengkapi dengan konektor baterai. Berikut ini adalah
gambar mikrokontroller ESP32 yang ditunjukkan pada Gambar 2.2.

ESP32 memiliki spesifikasi sebagai berikut :


1. Memori : 448 KB ROM, 512 KB writeable SRAM
2. Processor : Xtensa® Dual-Core 32-bit LX6 microprocessors
3. Frekuensi : 2.4 GHz
4. Bluetooth : Bluetooth v4.2/BLE
5. Wireless protocols : 802.11 b/g/n/e/i HT40
6. Power input : 2.3V – 3.6V
7. USB port : Micro USB
8. Dimensi : 26.0mm x 18.0mm

8
Gambar 2.2 ESP32
Sumber : https://articulo.mercadolibre.com

2.2.4 NodeMCU ESP8266


NodeMCU adalah sebuah mini pc mikrokontroller yang dilengkapi dengan
modul WiFi ESP8266 yang dapat dikonfigurasi untuk terhubung ke internet,
sehingga sangat cocok untuk untuk digunaan pada Internet of Things (IoT).
NodeMCU memiliki 128 KB RAM dan 4MB memori flash. NodeMCU
mengintegrasikan transceiver Wi-Fi 802.11b / g / n HT40, sehingga tidak hanya
dapat terhubung ke jaringan WiFi dan berinteraksi dengan Internet, tetapi juga
dapat mengatur jaringan sendiri, yang memungkinkan perangkat lain langsung
terkoneksi. NodeMCU memiliki empat pin daya yaitu. satu pin VIN dan tiga pin
3.3V, serta memiliki 17 pin GPIO yang dapat ditetapkan untuk berbagai fungsi
seperti I2C, I2S, UART, PWM, Remote Control IR, Lampu LED dan tombol yang
dapat diprogam. Berikut ini adalah gambar dari NodeMCU ESP8266 yang
ditunjukkan pada Gambar 2.3.

NodeMCU ESP8266 memiliki spesifikasi sebagai berikut :


1. Vendor : LoLin
2. Tipe ESP : ESP-12E
3. Power input : 5 V dan 3.3 V
4. USB port : Micro USB
5. Usb to serial converter : CH340g
6. Dimensi : 57 x 30 mm

9
Gambar 2.3 NodeMCU ESP8266
Sumber : www.lastminuteengineers.com

2.2.5 Sensor Ultrasonik

Gambar 2.4 Sensor HC-SR04


Sumber : www.nn-digital.com
Sensor ultrasonik adalah sensor yang memanfaatkan pantulan gelombang
suara untuk diubah menjadi besaran listrik maupun sebaliknya untuk mengetahui
adanya suatu objek atau benda tertentu yang dideteksi oleh gelombang suara
pada frekuensi 20 kHz sampai 2000 kHz (Bakhtiyar Arasada, 2017).

Gambar 2.5 Prinsip Kerja Sensor Ultrasonik

10
Sensor ultrasonik memiliki 2 komponen utama, yaitu transmitter atau
pemancar dan receiver atau penerima. Cara kerja dari sensor ultrasonik adalah
unit sensor transmitter memantulkan gelombang ultrasonik jika terdapat objek
tertentu dan pantulan gelombang tersebut diterima oleh unit sensor penerima.
Lalu sensor menghitung selisih antara waktu pengiriman gelombang dan waktu
penerimaan pantulan gelombang dan gelombang sinyal tersebut diproses untuk
menghitung jarak benda tersebut. Sensor ultrasonik HC-SR04 dapat mengukur
jarak dalam rentang antara 3 cm – 400 cm dengan output panjang pulsa yang
sebanding dengan jarak objek, sehingga jarak sensor dengan objek dapat
ditentukan persamaan 2.1:
𝑣.𝑡
𝑆= (2.1)
2
Sensor ultrasonik HCSR-04 memiliki spesifikasi sebagai berikut :
1. Tegangan DC : 5 V
2. Dimensi : 45*20*15mm
3. Frekuensi : 40Hz
4. Jarak : 3cm – 400cm
5. Sudut : 15 derajat

2.2.6 Sensor Infrared

Gambar 2.6 Sensor FC-51


Sumber : www.surtrtech.com
Sensor Infrared adalah sensor yang memanfaatkan sinar inframerah untuk
mendeteksi objek. Sensor infared terdiri dari 2 komponen utama, yaitu led
infrared sebagai pemancar dan fototransistor sebagai penerima cahaya infared.
Prinsip kerja sensor ini adalah frekuensi inframerah dipancarkan hingga mengenai
suatu objek, lalu sinar tersebut dipantulkan kembali dan diterima oleh unit
penerima inframerah. Kemudian diproses oleh rangkaian pembanding dan lampu
pada sensor inframerah menyala dan sinyal digital yang dihasilkan rendah (LOW).
Sensor infrared FC-51 memiliki spesifikasi sebagai berikut :
1. Tegangan : 3.3V-23 mA at 5.0V-43 mA
2. Dimensi : 3.2 x 1.4cm
3. Jarak : 2 – 30 cm
4. Sudut : 35 derajat
5. Tipe output : output digital (0 dan1)

11
2.2.7 Webserver
Webserver merupakan sebuah software yang berfungsi sebagai tempat
yang menyimpan, memproses, dan mengirimkan halaman web ke web client. Web
client tidak lain adalah web browser pada laptop dan smartphone. Komunikasi
antara klien dan server berlangsung menggunakan protokol khusus yang disebut
Hypertext Transfer Protocol (HTTP). Webserver menerima permintaan pengguna
yang dikirimkan melalui HTTP atau sebuah web browser dan untuk mengirimkan
tanggapan permintaan kembali dalam bentuk halaman web atau lebih umumnya
dalam berwujud dokumen HTML (Zulfikri, 2017). Webserver berfungsi untuk
memproses data hasil permintaan yang diterima dari web browser oleh pengguna
melalui protokol komunikasi yang digunakan. Halaman web dapat berupa tulisan
atau teks, gambar, video dan lain – lain.

Gambar 2.7 Cara Kerja Webserver


Gambar 2.7 ditunjukkan cara kerja dari webserver. Dalam protokol ini, klien
memulai komunikasi dengan membuat permintaan untuk halaman web tertentu
menggunakan HTTP dan server merespons dengan konten halaman web tersebut
atau pesan kesalahan jika tidak dapat melakukannya (seperti Kesalahan 404
terkenal). Halaman yang dikirimkan oleh server sebagian besar adalah dokumen
HTML.

2.2.8 Arduino IDE


Arduino Intergrated Development Environment (IDE) Arduino adalah
sebuah software pemrogaman yang digunakan dengan menggunakan bahasa
pemrograman c++. Arduino IDE digunakan untuk menulis program, mengkompile
progam dan mengupload ke board arduino atau mikrokontroler (Arduino, 2017).
Tampilan dari progam arduino ditunjukkan Pada Gambar 2.7.

12
Gambar 2.8 Arduino IDE
Toolbar atau pilihan menu yang ada pada IDE :
1. Verify : digunakan untuk memverifikasi kode.
2. Upload : yaitu memasukan kode pemrogaman ke board Arduino.
3. New : untuk membuat file baru
4. Open : untuk membuka proyek Arduino yang ada.
5. Save : untuk menyimpan kode yang sedang berjalan.
6. Serial Monitor : sebagai terminal independen dan memainkan peran vital
untuk mengirim dan menerima data serial. Serial monitor juga membantu
untuk men-debug sketsa tertulis di mana bisa mengetahui bagaimana
program beroperasi. Modul arduino harus terhubung ke komputer dengan
kabel USB untuk mengaktifkan serial monitor.

13
BAB 3 METODOLOGI

3.1 Tipe Penelitian


Pada penelitian ini dengan judul “Sistem Monitoring Lahan Parkir Berbasis
Bluetooth Low Energy (BLE)” merupakan penelitian dengan tipe perancangan
implementatif. Penelitian ini mengembangkan penelitian sebelumnya yang
berjudul “Rancang Bangun Sistem Komunikasi Bluetooth Low Energy (BLE) Pada
Sistem Pengamatan Tekanan Darah” dan “Sistem Monitoring Parkir Mobil
Menggunakan Sensor Infrared Berbasis Raspberry Pi”. Penelitian tersebut
dikembangkan yaitu merancang sistem monitoring berbasis komunikasi Bluetooth
Low Energy (BLE). Perbedaan dengan penelitian terdahulu adalah kemampuan
sistem memberikan informasi menggunakan webserver dan menggunakan
teknologi komunikasi wireless terbarukan yaitu Bluetooth Low Energy (BLE).

3.2 Strategi dan Rancangan Penelitian


Strategi dan rancangan penelitian dibuat dengan tujuan agar penelitian lebih
teratur. Pada bagian ini terdiri dari lokasi penelitian dan teknik pengumpulan data.

3.2.1 Lokasi Penelitian


Penelitian dilakukan pada rumah tinggal peneliti yang terletak di Jalan KH
Ramli no 6, Menteng Dalam, Jakarta Selatan. Alasan pemilihan lokasi penelitian
tersebut, yaitu mempermudah penulis untuk melakukan penelitian dan minimnya
halangan yang dapat mempengaruhi kinerja sistem sehingga sistem dapat berjalan
secara maksimal.

3.2.2 Teknik Pengumpulan Data


Pengumpulan data dilakukan dengan melakukan pengujian skenario variasi
jarak. Pengujian dilakukan dengan cara menempatkan gateway dan sensor node
pada rentang jarak tertentu. Kinerja sistem kemudian diukur berdasarkan delay
data yang dikirim dan rasio tingkat keberhasilan data yang dikirim.

3.3 Metode atau Teknik Lain

3.3.1 Metode Secara Umum


Implementasi tipe penelitian ini adalah implementatif. Tahap ini
membantu mengambarkan tentang tahapan dalam penyusunan laporan skripsi.
Diagram waterfall digunakan untuk menjelaskan langkah-langkah yang dilakukan
dalam penelitian yang dengan diawali dari pencarian referensi studi literatur
penelitan terdahulu, kemudian menganalisa kebutuhan dari sistem, lalu membuat
perancangan sistem, implementasi sistem, pengujian analisis dan yang tahap
terakhir pengambilan kesimpulan.tahapan ini dapat dilihat pada Gambar 3.1.

14
Gambar 3.1 Waterfall Diagram Penelitian

3.3.2 Studi Literatur


Studi literatur dilakukan untuk mengumpulkan teori – teori dasar dan
memberikan pengetahuan yang cukup dalam pembuatan dan
pengimplementasian dari sistem. Dasar teori pada penelitian ini antara lain:
1. IoT
2. Bluetooth Low Energy
3. ESP32
4. NodeMCU ESP8266
5. Sensor Infrared
6. Sensor Ultrasonik
7. Arduino ide

3.3.3 Analisis Kebutuhan


Analisis kebutuhan bertujuan untuk menganalisis apa saja yang dibutuhkan
oleh sistem. Kebutuhan pada sistem ini terdiri dari kebutuhan hardware dan
software.
3.3.3.1 Kebutuhan Perangkat Keras
1. ESP32
2. NodeMCU ESP8266
3. Laptop
4. Sensor Infrared
5. Sensor Ultrasonik

15
3.3.3.2 Kebutuhan Perangkat Lunak
1. Sistem operasi Windows 10
2. Arduino ide
4. Sublime text

3.3.4 Metode Perancangan Sistem


Tahap perancangan sistem ini dilaksanakan sebelum melakukan tahap
implementasi. Pada tahapan ini mempersiapkan segala sesuatu yang dibutuhkan
dalam melaksanakan penelitian.

Gambar 3.2 Perancangan Sistem


Pada Gambar 3.2 menunjukkan ilustrasi perancangan sistem. Sistem
memiliki 4 node sensor yang berperan sebagai server untuk penyedia data dan 1
sink node yang berperan sebagai klien untuk penerima data. Komunikasi antara
server dan klien menggunakan protokol komunikasi Bluetooth Low Energy (BLE).
Terdapat dua sensor yang digunakan, yaitu sensor infrared dan sensor ultrasonik.
Tiga node sensor masing – masing terhubung dengan dua sensor ultrasonik dan
satu node sensor terhubung dengan dua sensor infrared. Sensor ultrasonik
digunakan sebagai pengukur jarak antar objek yang dapat memberikan informasi
ketersediaan lahan parkir. Sedangkan sensor infrared digunakan sebagai
pendeteksi objek yang dapat menghitung jumlah masuk dan keluar mobil. Masing
– masing data yang sudah diolah oleh node sensor atau ESP32 BLE server
dikirimkan ke sink node atau ESP32 BLE klien dengan protokol komunikasi BLE
sebagai media pengiriman data. Kemudian data yang sudah diolah oleh ESP32 BLE
klien dikirim ke NodeMCU ESP8266 melalui komunikasi serial dan dikirim ke web
melalui wifi yang terhubung ke internet. Perangkat lunak untuk sistem ini dibuat
dengan menggunakan Arduino IDE dan ditulis menggunakan bahasa
pemrograman C dan html untuk pemrogaman web. Kebutuhan interface dalam
program ini merupakan kebutuhan hardware berupa smart device. Smart device
yang disarankan yaitu memiliki sistem operasi windows (komputer) atau android
(smartphone) agar bisa mengakses webserver.

16
3.3.5 Metode Implementasi Sistem
Tahap implementasi sistem dilakukan berdasarkan desain yang telah
dibuat, yang terbagi menjadi dua bagian, yaitu implementasi perangkat keras dan
implementasi perangkat lunak.
3.3.5.1 Implementasi Perangkat Keras
Tahapan awal implementasi dimulai dengan menghubungkan pin - pin
ESP32 sebagai mikrokontroller ke masing – masing sensor yang digunakan. Pin –
pin sensor ultrasonik dan sensor infrared dihubungkan ke pin analog ESP32 dan
ESP32 dihubungkan ke NodeMCU ESP8266 secara serial.
3.3.5.2 Implementasi Perangkat Lunak
Tahap implementasi perangkat lunak meliputi pemrogaman sensor oleh
arduino ide dan pembuatan web dengan bahasa pemrogaman web html pada
aplikasi editor sublime text. Kemudian arduino ide dikoneksikan dengan bahasa
pemrogaman web html.

3.3.6 Metode Pengujian


Pada metode ini dilakukan dengan menguji performa sistem, pada metode
ini dilakukan pengujian sistem apakah sistem yang dibuat bekerja sesuai dengan
tujuan. Pengujian yang dilakukan antara lain :
a. Pengujian komunikasi data antar mikrokontroller dengan webserver
b. Pengujian protokol BLE berdasarkan performansi pengiriman data dan
delay
c. Pengujian keakuratan sensor pada sistem monitoring lahan parkir

3.3.7 Metode Pengambilan Kesimpulan


Pada metode ini dilakukan setelah tahap perancangan, tahap
implementasi, tahap pengujian dan analisis terhadap sistem yang dikerjakan.
Kesimpulan dibuat berdasarkan dari tahap pengujian dan analisis sistem. Terdapat
pemberian saran yang membangun pada sistem untuk pengembangan dan
perbaikan pada penelitian terkait.

17
BAB 4 ANALISIS KEBUTUHAN

4.1 Gambaran Umum Sistem


Sistem yang dibuat pada penelitian ini merupakan implementasi sistem
monitoring lahan parkir yang berkomunikasi menggunakan protokol Bluetooth
Low Energy (BLE) dan Wi-Fi. Sistem ini terdiri dari empat node sensor yang
terintegrasi dengan BLE dan satu gateway yang terintegrasi dengan BLE dan Wi-
Fi. Tampilan antar muka webserver digunakan sebagai media untuk menampilkan
hasil monitoring kepada pengguna. ESP32 dan NodeMCU ESP8266 digunakan
sebagai mikrokontroler karena sudah terdapat modul BLE dan Wi-Fi. Pada sistem
ini menggunakan empat ESP32 sebagai node sensor dan satu ESP32 sebagai sink
node. Pada tiga ESP 32 masing – masing terpasang dua sensor ultrasonik yang
digunakan sebagai pendeteksi ada atau tidaknya mobil dan satu ESP32 terpasang
dua sensor infrared yang digunakan sebagai penghitung jumlah masuk dan keluar
mobil. Komunikasi antar node sensor dengan sink node menggunakan protokol
komunikasi BLE sedangkan transmisi data dari node sensor ke webserver
menggunakan komunikasi Wi-Fi. Cara kerja sistem ini adalah masing – masing
node sensor mengirimkan data ke sink node secara terus menerus. Kemudian sink
node mengolah data tersebut dan dikirimkan ke nodeMCU esp8266 melalui
komunikasi serial dan nodeMCU esp8266 mengirimkan data ke webserver untuk
ditampilkan pada web browser. Webserver menampilkan informasi tentang
ketersediaan slot lahan parkir dan jumlah masuk keluar mobil.

4.2 Analisis Kebutuhan


Analisis kebutuhan merupakan sebuah proses untuk menganalisis dan
mengetahui kebutuhan sistem yang diinginkan klien atau pengguna. Setelah
mendapat informasi dari klien atau pengguna, dianalisis dan dijadikan acuan
untuk melakukan pemodelan sistem. Pada tahapan analisa kebutuhan ini terbagi
menjadi 2 antara lain :

4.2.1 Kebutuhan Fungsional


Kebutuhan fungsional merupakan kebutuhan yang berisi tentang apa saja
yang dikerjakan oleh sistem. Kebutuhan fungsional dari sistem ini meliputi:
1. Sistem dapat mengakuisisi data ketersediaan lahan parkir dan jumlah
masuk dan keluar mobil.
Fungsi ini didapatkan dengan menggunakan sensor ultrasonik dan
sensor infrared. Sensor ultrasonik diprogram untuk mendeteksi
ketersediaan lahan parkir dengan cara mengukur jarak mobil dengan sensor
dan sensor infrared berfungsi sebagai pendeteksi objek yang lewat untuk
memberikan informasi berupa jumlah masuk dan keluar mobil.

18
2. Sistem memproses akuisi data dari node sensor kemudian mengirim hasil
data ke sink node.
Sistem memiliki 4 node sensor yang berfungsi mengambil data dari
sensor, node tersebut bertindak sebagai BLE server dan 1 sink node yang
bertindak sebagai BLE klien, hasil data sensor tersebut dikirimkan dari BLE
server dan diterima oleh BLE klien melalui protokol komunikasi Bluetooth
Low Energy.
3. Sistem dapat menampilkan hasil monitoring melalui webserver
BLE klien yang telah memiliki hasil sensor dari BLE server, mengirimkan
datanya ke ESP8266 melalui komunikasi serial untuk dikoneksikan ke Wi-Fi
yang memiliki jaringan internet agar dapat ditampilkan pada webserver.
Sistem monitoring dilakukan secara real-time sehingga dapat menampilkan
data hasil monitoring sensor ke webserver dengan akurat.

4.2.2 Kebutuhan Non Fungsional


Kebutuhan non fungsional adalah kebutuhan yang menitikberatkan pada
property perilaku yang dimiliki oleh sistem. Kebutuhan non fungsional dari sistem
ini meliputi :
4.2.2.1 Kebutuhan Perangkat Keras
1. ESP32
ESP32 digunakan sebagai mikrokontroler tempat pemrosesan utama dari
sistem. Mikrokontroler ini dilengkapi modul BLE dan WiFi yang digunakan
sebagai media komunikasi.
2. Nodemcu ESP8266
Nodemcu ESP8266 digunakan sebagai mikrokontroler tempat pengiriman
data ke webserver. Mikrokontroler ini dilengkapi modul WiFi yang
digunakan sebagai media komunikasi.
3. Sensor ultrasonik
Sensor ultrasonik adalah sensor yang pengukur jarak yang memiliki
jangkauan sekitar 3 cm – 400 cm. Pada penelitian ini, sensor ultrasonik
berfungsi untuk mengukur jarak antara mobil dengan sensor dan
menyediakan informasi berupa ketersediaan lahan parkir.
4. Sensor infrared
Sensor infrared adalah sensor yang memanfaatkan sinar inframerah untuk
mendeteksi objek. Pada penelitian ini, sensor infrared berfungsi untuk
mendeteksi mobil yang lewat dan menyediakan informasi berupa jumlah
masuk dan keluar mobil.
5. Komputer atau Laptop
Komputer atau laptop digunakan untuk melakukan compile program dan
digunakan admin untuk dapat mengakses webserver.

19
4.2.2.2 Kebutuhan Perangkat Lunak
1. Arduino IDE
Pada penelitian ini, perangkat lunak Arduino IDE digunakan untuk Arduino
ide digunakan sebagai tempat pemrogaman dan untuk memasukkan
progam pada mikrokontroler.
2. Sublime text
Sublime text merupakan aplikasi untuk membuat pemrogaman web. Pada
penelitian ini digunakan untuk melakukan text editing pada file html.

4.3 Batasan Desain dan Implementasi Sistem


Batasan desain sistem dijelaskan pada sub bab ini agar perancangan sistem
yang dilakukan lebih terarah, berikut batasan desain dan implementasi sistem
antara lain :
1. Mikrokontroler ESP32 devkit digunakan sebagai sensor node atau BLE
server sebagai penyedia data dan sink node atau BLE klien sebagai penerima
data.
2. NodeMCU ESP8266 digunakan sebagai pembuat webserver dan tempat
pengiriman data ke webserver.
3. Sensor ultrasonik dan infrared digunakan untuk mengakuisisi data
ketersediaan lahan parkir dan jumlah masuk keluar mobil.
4. Komunikasi sensor node dan sink node menggunakan protokol komunikasi
Bluetooth Low Energy (BLE).
5. Dalam penelitian ini menggunakan hotspot smartphone android untuk
konektivitas internet.
6. Hasil data pembacaan sensor yang telah diterima oleh sink node atau BLE
klien dikirimkan secara serial ke ESP8266 untuk ditampilkan pada web.
7. Maket lahan parkir memiliki enam slot tempat parkir dan satu gerbang
pintu masuk dan 1 gerbang pintu keluar.

20
BAB 5 PERANCANGAN DAN IMPLEMENTASI

5.1 Perancangan
Pada bab ini dijelaskan perancangan dari sistem komunikasi Bluetooth Low
Energy (BLE) pada sistem monitoring lahan parkir dengan menggunakan ESP 32.
Perancangan sistem secara umum dapat dilihat pada Gambar 5.1.

Gambar 5.1 Perancangan Sistem


Pada Gambar 5.1 dijelaskan bahwa ESP 32 sebagai otak dari pemrosesan
dan media komunikasi antar node sensor dan sink node via Bluetooth Low Energy
(BLE). Terdapat dua sensor yang digunakan, yaitu sensor infrared dan sensor
ultrasonik. Tiga node sensor masing – masing terhubung dengan dua sensor
ultrasonik dan satu node sensor terhubung dengan dua sensor infrared. Sensor
ultrasonik digunakan sebagai pengukur jarak antar objek yang dapat memberikan
informasi ketersediaan lahan parkir. Sedangkan sensor infrared digunakan sebagai
pendeteksi objek yang dapat menghitung jumlah masuk dan keluar mobil. Masing
– masing data yang sudah diolah oleh node sensor atau ESP32 BLE server
dikirimkan ke sink node atau ESP32 BLE klien dengan protokol komunikasi BLE
sebagai media pengiriman data. Kemudian data yang sudah diolah oleh ESP32 BLE
klien dikirim ke NodeMCU ESP8266 melalui komunikasi serial dan dikirim ke web
melalui wifi yang terhubung ke internet. Pengguna dapat memonitoring melalui
webserver yang dapat diakses dengan web browser. Data yang ditampilkan melalui
webserver meliputi ketersediaan lahan parkir dan jumlah masuk dan keluar mobil.

21
5.1.1 Perancangan Perangkat Keras
Perancangan hardware dilakukan untuk menghubungkan semua perangkat
yang ada dengan tujuan memudahkan tahapan implementasi. Dalam
perancangannya meliputi tiga bagian, yaitu bagian input, proses dan output. Pada
bagian input digunakan sensor ultrasonik dan sensor infrared, bagian proses
digunakan ESP32 yaitu sebuah mini pc mikrokontroller yang mendukung jaringan
WiFi dan bluetooth low energy dan pada bagian output digunakan webserver
untuk menampilkan sistem monitoring. ESP32 dapat dikonfigurasi dan digunakan
seperti arduino. Dalam sistem ini digunakan lima ESP32, meliputi empat ESP32
sebagai node slave dan satu ESP32 sebagai node master.
Untuk perancangan bagian input digunakan tiga ESP32 yang terhubung
dengan sensor ultrasonik dan satu ESP32 yang terhubung dengan sensor infrared
melalui koneksi pin yang sesuai. Data sensor tersebut diolah oleh masing – masing
ESP32 server (penyedia data) lalu dikirimkan ke ESP32 klien (penerima data)
dengan media pengiriman BLE. Kemudian data hasil pengolahan ESP32 klien
dikirimkan secara serial ke nodeMCU esp8266 dan data dikirimkan secara nirkabel
ke webserver melalui modul WiFi yang terdapat pada nodeMCU ESP8266. Berikut
adalah perancangan digital pin ESP32 dengan sensor ultrasonik dan sensor
infrared:
Tabel 5.1 Konfigurasi pin ESP32 dengan dua sensor ultrasonik
ESP32 Sensor ESP32 Sensor
Ultrasonik 1 Ultrasonik 2
Vin VCC 3v3 VCC
GND GND GND GND
D13 Trig D15 Trig
D12 Echo D2 Echo

Gambar 5.2 Perancangan ESP32 dengan Dua Sensor Ultrasonik

22
Gambar 5.2 menunjukan skematik hubungan dari pin pada ESP32 dengan
dua sensor ultrasonik. Pada sensor ultrasonik terdapat empat pin yaitu pin vcc,
trig, echo dan ground. Pin tersebut masing – masing dihubungkan ke pin ESP 32.
Tabel 5.1 menunjukan hubungan pin antara ESP32 dengan sensor ultrasonik
dengan penjelasan sebagai berikut, untuk pin voltase ultrasonik dihubungkan ke
pin vin dan pin 3v3 pada ESP32, kemudian untuk pin ground ultrasonik
dihubungkan ke pin ground pada ESP32, selanjutnya pin trigger dan echo
ultrasonik satu dihubungkan ke pin D13 dan D12, sedangkan pin trigger dan echo
ultrasonik dua dihubungkan ke pin D15 dan D2.
Tabel 5.2 Konfigurasi pin ESP32 dengan dua sensor infrared
ESP32 Sensor ESP32 Sensor
Infrared 1 Infrared 2
Vin VCC 3v3 VCC
GND GND GND GND
D13 Out D15 Out

Gambar 5.3 Perancangan ESP32 dengan Dua Sensor Infrared


Gambar 5.3 menunjukan skematik hubungan dari pin pada ESP32 dengan
dua sensor infrared. Pada sensor infrared terdapat tiga pin yaitu pin vcc, ground
dan out. Pin tersebut masing – masing dihubungkan ke pin ESP 32. Tabel 5.2
menunjukan hubungan pin antara ESP32 dengan sensor infrared dengan
penjelasan sebagai berikut, untuk pin voltase infrared dihubungkan ke pin vin dan
pin 3v3 pada ESP32, kemudian untuk pin ground infrared dihubungkan ke pin
ground pada ESP32, selanjutnya pin out infrared satu dihubungkan ke pin D13 dan
pin out infrared dua dihubungkan ke pin D15.

23
5.1.2 Perancangan Perangkat Lunak
Perancangan perangkat lunak dilakukan untuk menjelaskan bagaimana
merancang perangkat lunak. Pada bagian ini dijelaskan perancangan kode pada
Arduino IDE. Perancangan sistem dimulai dari perancangan server dan
perancangan klien. Pada Gambar 5.4 dijelaskan perancangan sistem secara
keseluruhan.

Gambar 5.4 Perancangan Sistem Secara Keseluruhan

24
Pada Gambar 5.4 merupakan flowchart progam secara keseluruhan. Pada
flowchart progam dijelaskan pertama dikonfigurasi ESP32 server, sensor
ultrasonik, sensor infrared, ESP32 klien dan nodeMCU ESP8266. Setelah
dikonfigurasi masing – masing sensor terus membaca sesuai dengan perintah
yang telah diberikan, sensor ultrasonik mengukur jarak antar sensor dengan objek
dan memberikan informasi berupa ketersediaan slot parkir, sensor infrared
mendeteksi objek yang lewat dan memberikan informasi berupa jumlah masuk
dan keluar mobil. Kemudian ESP32 server mengelola hasil sensor tersebut dan di-
advertise melalui jaringan BLE. Kemudian saat BLE klien mendeteksi jaringan BLE
server, agar terkoneksi dengan server dilakukan dengan cara mencocokan service
UUID server dengan service UUID klien jika service UUIDnya sama, maka BLE klien
berhasil terkoneksi dengan BLE server. Kemudian BLE klien mencoba untuk
membaca data server dengan mencocokan characteristic UUID server dengan
characteristic UUID klien, jika sama maka BLE klien dapat membaca data ynag
dikirimkan oleh server. Kemudian data yang telah diterima oleh BLE klien
dikirimkan secara serial ke nodeMCU ESP8266 dan mencoba mengkoneksi ke WiFi
yang terhubung ke internet. Apabila nodeMCU ESP8266 sudah mendapatkan
koneksi internet maka nodeMCU ESP8266 mengirimkan data berupa kode progam
html untuk dikirimkan ke webserver dan ditampilkan pada web browser. Data
yang ditampilkan pada web browser meliputi denah parkir, ketersediaan lahan
parkir dan jumlah masuk dan keluar mobil.
5.1.2.1 Perancangan BLE Server
Pada bagian ini dijelaskan perancangan BLE server. Server pada BLE
berfungsi sebagai penyedia data. Pada BLE server data yang dikirimkan adalah
data sensor ultrasonik dan data sensor infrared.Pada bagian ini Perancangan
server pada pengiriman data sensor ultrasonik dijelaskan melalui Gambar 5.5 :

Gambar 5.5 Predifined Process Read Sensor Ultrasonik

25
Pada Gambar 5.5 merupakan flowchart progam predifined ultrasonik
server. Dijelaskan pertama dikonfigurasi ESP32 server dan sensor ultrasonik.
Setelah dikonfigurasi masing – masing sensor terus membaca sesuai dengan
perintah yang telah diberikan, sensor ultrasonik mengukur jarak antar sensor
dengan objek dan memberikan informasi berupa ketersediaan slot parkir. Jika
jarak antar sensor dengan mobil kurang dari 10 cm, maka slot lahan parkir terisi,
jika tidak maka slot lahan parkir kosong. Kemudian ESP32 server mengelola hasil
sensor tersebut dan dikirimkan ke ESP32 klien melalui komunikasi bluetooth low
energy.
Pada bagian ini perancangan server pada pengiriman data sensor infrared
dijelaskan melalui Gambar 5.6 :

Gambar 5.6 Predifined Process Read Sensor Infrared


Pada Gambar 5.6 merupakan flowchart progam predifined infrared server.
Dijelaskan pertama dikonfigurasi ESP32 server dan sensor infrared. Setelah
dikonfigurasi masing – masing sensor terus membaca sesuai dengan perintah
yang telah diberikan, sensor infrared mendeteksi objek yang lewat dan
memberikan informasi berupa jumlah masuk dan keluar mobil. Apabila sensor
infrared 1 dan sensor infrared 2 berkondisi ‘HIGH’ maka masing – masing sensor
menambah jumlah mobil dan mengurangi jumlah mobil. Kemudian ESP32 server
mengelola hasil sensor tersebut dan dikirimkan ke ESP32 klien melalui komunikasi
bluetooth low energy.
5.1.2.2 Perancangan BLE Klien
Pada bagian ini dijelaskan perancangan BLE klien. Klien pada BLE berfungsi
sebagai penerima data. Perancangan klien dijelaskan melalui Gambar 5.7 :

26
Gambar 5.7 Flowchart Klien
Pada Gambar 5.7 merupakan flowchart progam untuk klien dijelaskan
pertama dikonfigurasi ESP32 klien. Kemudia klien melakukan scanning jaringan
bluetooth low energy. Jika terdapat jangkauan BLE, maka klien mencoba
melakukan koneksi ke server dengan cara mencocokan service UUID server
dengan service UUID klien. Jika service UUIDnya sama, maka ESP32 klien
terkoneksi dan mencoba mengambil data yang dikirimkan oleh ESP32 server
dengan cara mencocokan characteristic UUID server dengan klien. Apabila
characteristic UUIDnya sama maka data berhasil didapatkan. Kemudian ESP32
klien mengirimkan data secara serial ke nodeMCU esp8266 dan mencoba
mengkoneksi ke WiFi yang terhubung ke internet. Apabila nodeMCU esp8266
sudah mendapatkan koneksi internet maka nodeMCU esp8266 mengirimkan data
berupa kode progam html untuk dikirimkan ke webserver dan ditampilkan pada
web browser.

27
Gambar 5.8 Perancangan Tampilan Webserver

Webserver berfungsi sebagai media interface pengamatan atau


monitoring. NodeMCU ESP8266 mencoba koneksi ke WiFi yang terhubung ke
internet, kemudian webserver membaca data php yang dikirimkan oleh NodeMCU
ESP8266. Pada tampilan atau interface ditampilkan fitur ketersediaan lahan parkir
dan jumlah masuk dan keluar mobil seperti yang ditunjukan pada Gambar 5.8.
Aplikasi editor yang digunakan adalah Sublime text karena file yang dibuat
mencakup HTML.

5.2 Implementasi
Implementasi perancangan merupakan tahap implementasi sistem sesuai
dengan perancangan yang telah dibuat dan dapat dioperasikan sesuai dengan
yang direncanakan dan diharapkan.

5.2.1 Implementasi Perangkat Keras


Implementasi hardware pada sistem ini yaitu penjelasan tentang koneksi
antar perangkat yang berhubungan dengan sensor dan mikrokontroler yang
digunakan. Sensor yang digunakan adalah sensor ultrasonik dan sensor infrared
serta mikrokontroler yang digunakan adalah ESP32. Pada proses implementasi
perangkat keras digunakan empat ESP32 sebagai server, satu ESP32 sebagai klien,
enam sensor ultrasonik dan dua sensor infrared. Tiga ESP32 server masing –
masing dihubungkan dengan dua sensor ultrasonik dan satu ESP32 dihubungkan
dengan dua sensor infared. Implementasi ESP32 dengan sensor ultrasonik
ditunjukan pada Gambar 5.9.

28
Gambar 5.9 Implementasi ESP32 dengan Dua Sensor Ultrasonik
Gambar 5.9 merupakan implementasi antara mikrokontroler ESP32 server
dengan sensor ultrasonik sebagai pendeteksi adanya slot kosong pada lahan
parkir. ESP32 mengolah data sensor ultrasonik dan dikirim ke ESP32 klien via
bluetooth low energy untuk ditampilkan pada webserver. Selanjutnya ditunjukan
implementasi ESP32 dengan dua sensor infrared pada Gambar 5.9.

Gambar 5.10 Implementasi ESP32 dengan Dua Sensor Infrared


Gambar 5.10 merupakan implementasi antara mikrokontroler ESP32
server dengan sensor infrared sebagai penghitung jumlah masuk dan keluar pada
lahan parkir. ESP32 mengolah data sensor infrared dan dikirim ke ESP32 klien via
bluetooth low energy untuk ditampilkan pada webserver. Selanjutnya ditunjukan
implementasi sistem monitoring lahan parkir secara keseluruhan pada Gambar
5.11.

29
Gambar 5.11 Implementasi keseluruhan

5.2.2 Implementasi Perangkat Lunak


Implementasi software pada sistem ini yaitu penjelasan tentang
pembuatan progam dan source code yang diaplikasikan pada perangkat keras,
sehingga sistem dapat berjalan sesuai harapan yang diinginkan. Aplikasi arduino
ide dan sublime digunakan dalam pembuatan progam dan source code. Pada
tahap ini dijelaskan pengimplementasian kode progam BLE sebagai media
komunikasi antar perangkat.
5.2.2.1 Implementasi Perangkat Lunak BLE Sebagai Server
Implementasi source code pada BLE server mengacu pada perancangan.
Proses pembuatan source code dilakukan di Arduino IDE. Langkah pertama yang
dilakukan adalah inisialisasi BLE sebagai server (tempat penyedia data). Potongan
source code program inisialisasi BLE ditunjukan pada Tabel 5.3.

Tabel 5.3 Inialisasi Library BLE Server


Kode Progam BLE server
1 #include <BLEDevice.h>
2 #include <BLEServer.h>
3 #include <BLEUtils.h>
4 //#include <BLE2902.h>
5 //#include <BLECharacteristic.h>
6
7 // defines pins numbers

30
Tabel 5.3 (Lanjutan)
8 const uint8_t PIN_TRIGGER_1 = 15;
9 const uint8_t PIN_ECHO_1 = 2;
10 const uint8_t PIN_TRIGGER_2 = 13;
11 const uint8_t PIN_ECHO_2 = 12;
12 ..........
13 #define SERVICE_UUID "4fafc201-1fb5-459e-8fcc-c5c9c331912b"
14 #define CHARACTERISTIC_UUID_1"beb5483e-36e1-4688-b7f5-ea07361b2628"
// Ultrasonik 1
15 #define CHARACTERISTIC_UUID_2"c6e484a0-42a5-4559-a27c-3311bd77ff2d"
// Ultrasonik 2
16 ..............................

Penjelasan source code :


Baris 1-3 Menginialisasi library Bluetooth Low Energy Server
Baris 8-11 Mendeklarasikan pin – pin sensor ultrasonik
Baris 13 Mendeklarasikan service UUID untuk server
Baris 14-15 Mendeklarasikan characteristic UUID sensor ultrasonik
Pada Tabel 5.3 merupakan library yang digunakan untuk menginialisasi
penggunaan bluetooth low energy server sebagai penyedia data. Data yang
diberikan berupa data sensor ultrasonik dan sensor infrared. Pada baris 1 - 3
merupakan inialisasi masing – masing pin ultrasonik dan infrared dengan ESP32.
Untuk membedakan server satu dengan lainnya maka diperlukan sebuah identitas
pada masing – masing server. Pada BLE untuk membedakannya diperlukan sebuah
UUID, yaitu kumpulan karakter tipe yang dibuat secara random dengan
menggunakan metode khusus sehingga masing – masing data berbeda atau unik.
Maksud dari service UUID sebagai identitas server agar bisa berkomunikasi dengan
klien, sedangkan characteristic UUID sebagai identitas data yang dikirimkan ke
klien. Pada Tabel 5.3 baris 13 sampai 14 merupakan service UUID dan
characteristic UUID server.

Tabel 5.4 Inialisasi BLE server


Kode Progam BLE server
1 ..............................
2 BLEDevice::init("SERVER_1");
3 Server = BLEDevice::createServer();
4 pService=pServer->createService(SERVICE_UUID);
5
6 // Membuat ble karakteristik (Ultrasonik 1)
7 pCharacteristic1=pService->createCharacteristic(
8 CHARACTERISTIC_UUID_1,
9 BLECharacteristic::PROPERTY_READ|
10 BLECharacteristic::PROPERTY_WRITE
11 );
12
13 // Membuat ble karakteristik (Ultrasonik 2)
14 pCharacteristic2=pService->createCharacteristic(
15 CHARACTERISTIC_UUID_2,
16 BLECharacteristic::PROPERTY_READ|
17 BLECharacteristic::PROPERTY_WRITE
18 );
19
20

31
Tabel 5.4 (Lanjutan)
21
22 pService->start();
23
24
25 pAdvertising = BLEDevice::getAdvertising();
26 pAdvertising->addServiceUUID(SERVICE_UUID);
27 pAdvertising->setScanResponse(true);
28 pAdvertising->setMinPreferred(0x06);
29 pAdvertising->setMinPreferred(0x12);
30 BLEDevice::startAdvertising();
31 Serial.println("STARTING\n\n");
32 ..............................

Penjelasan source code :


Baris 2-4 Menginialisasi pembuatan server BLE dengan nama “SERVER_1”
Baris 7-11 Mendeklarasikan characteristic untuk sensor ultrasonik 1
Baris 14-18 Mendeklarasikan characteristic untuk sensor ultrasonik 2
Baris 22 Memulai service server
Baris 25-30 Menginialisasi server untuk di-advertise
Pada Tabel 5.4 ditampilkan bagaimana BLE diinialisasi. Pertama pada baris
2 dilakukan pemberian nama pada BLE server untuk mempermudah membedakan
masing – masing server. Kemudian pada baris 3 sampai 4 dibuat sebuah server
sesuai dengan nama dan service UUID yang telah diinialisasi. Pada baris 7 sampai
11 dan 14 sampai 18 merupakan inialisasi characteristic pembacaan data sehingga
bisa dikirim dan dibaca oleh BLE klien. Untuk mengumumkan atau meng-advertise
server perlu diinialisasikan seperti baris 25 sampai 31.

Tabel 5.5 Pengiriman Data Server


Kode Progam BLE server
1 ..............................
2 void loop() {
3 Serial.print("\n\nULTRASONIK 1");
4 readUltrasonik(propUltrasonik1);
5 delay(100);
6
7 Serial.print("ULTRASONIK 2");
8 readUltrasonik(propUltrasonik2);
9 delay(100);
10
11 pCharacteristic1->setValue(propUltrasonik1.distanceCM);
12 delay(100);
13 pCharacteristic2->setValue(propUltrasonik2.distanceCM);
14 delay(100);
15
16 //pAdvertising->stop();
17 delay(100);
18 pAdvertising->start();
19 }
Penjelasan source code :
Baris 3-9 Pembacaan sensor ultrasonik
Baris 11-14 Pengiriman data sensor ultrasonik
Baris 18 Memulai advertise

32
Pada Tabel 5.5 ditunjukan source code bagaimana data sensor dikirimkan
melalui media komunikasi BLE. Kode progam diletakkan pada fungsi void loop agar
dikirimkan secara berulang. Pertama pada baris 4 dan 7 dilakukan pembacaan
sensor. Kemudian pada baris 11 dan 13 characteristic UUID yang sudah
dikonfigurasi diberi nilai dari sensor yang telah dibaca berupa data ultrasonik dan
diumumkan atau di-advertise secara continous pada baris 18.
5.2.2.2 Implementasi Perangkat Lunak BLE Sebagai Klien
Implementasi source code pada sensor node mengacu pada perancangan.
Proses pembuatan source code dilakukan di Arduino IDE. Langkah pertama yang
dilakukan adalah inisialisasi BLE sebagai klien (tempat penerima data). Potongan
source code program inisialisasi BLE klien ditunjukan pada Tabel 5.6.
Tabel 5.6 Inialisasi Library BLE Klien
Kode Progam BLE Klien
1 #include "BLEDevice.h"
2 #include "BLEScan.h"
3
4 const uint8_t NUMBER_OF_SERVERS = 4;
5 const uint8_t NUMBER_OF_DATA = 4;
6 const uint8_t SCAN_TIME = 5; // In seconds
7 ..............................
8
9
10 static BLEUUID serviceUUID_1("4fafc201-1fb5-459e-8fcc-
c5c9c331912b"); // Server 1
11 static BLEUUID serviceUUID_2("6fd92e07-8b82-4b0e-8d6a-
6d3232f7cb28"); // Server 2
12 static BLEUUID serviceUUID_3("b2f8bec5-2d21-4851-95cc-
3c708aee0921"); // Server 3
13
14 static BLEUUID serviceUUID_4("548bd48b-a78e-4974-bffb-
be7fccfb8d27"); // Server 4
15 BLEUUID serviceUUIDArr[4] = { serviceUUID_1, serviceUUID_2,
serviceUUID_3, serviceUUID_4 };
16
17
static BLEUUID charUUID_Data_1("beb5483e-36e1-4688-b7f5-
18 ea07361b2628"); // Data Ultrasonik 1
static BLEUUID charUUID_Data_2("c6e484a0-42a5-4559-a27c-
19 3311bd77ff2d"); // Data Ultrasonik 2
static BLEUUID charUUID_Data_3("5f973250-794e-4bf2-a42a-
20 2ab667d71924"); // Data Infrared 1
static BLEUUID charUUID_Data_4("7f4b38d1-49c3-4ad2-a5b6-
21 5458bacf152a"); // Data Infrared 2
BLEUUID charUUIDArr[4] = { charUUID_Data_1, charUUID_Data_2,
22 charUUID_Data_3, charUUID_Data_4 };
..............................

Penjelasan source code :


Baris 1-2 Menginialisasi library Bluetooth Low Energy klien
Baris 4-6 Mendeklarasikan jumlah server, jumlah data dan lama waktu scan
Baris 10-14 Mendeklarasikan service UUID untuk setiap server yang terhubung
Baris 17-21 Mendeklarasikan characteristic UUID untuk setiap data yang
dibaca

33
Pada Tabel 5.6 merupakan library yang digunakan untuk menginialisasi
penggunaan bluetooth low energy klien sebagai penerima data. Fungsi dari library
tersebut, BLE klien memindai perangkat – perangkat yang menggunakan
teknologi bluetooth. Pada baris 4 sampai 6 diinialisasi bahwa jumlah server dan
jumlah data yang dibaca empat dan dilakukan pemindaian setiap 5 detik. Pada
baris 10 sampai 21 ditunjukan inialisasi service UUID dan characteristic UUID BLE
klien. Fungsi dari penginialisasian ini adalah agar BLE klien hanya terkoneksi
dengan server yang memiliki service UUID dan characteristic yang sama dengan
klien. Pada baris 10 sampai 14 merupakan inialisasi service UUID server yang
terhubung ke klien. sedangkan pada baris 17 sampai 21 merupakan inialisasi
characteristic UUID server yang terhubung ke klien.

Tabel 5.7 Koneksi ke Server


Kode Progam BLE Klien
1 ..............................
2 bool connectToServer(uint8_t serverType) {
3 Serial.print("conecting to ");
4 Serial.println(myDevice->getAddress().toString().c_str());
5
6 pClient = BLEDevice::createClient();
7 Serial.print(" – klien created ");
8 printNamaServer(serverType);
9 pClient->setClientCallbacks(pMyClientCallback);
10
11 if (pClient->isConnected()) {
12 pClient->disconnect();
13 delay(50);
14 pClient->connect(myDevice);
15 }
16 else {
17 pClient->connect(myDevice);
18 }
19 delay(50);
20 while (isDisconnected) {
21 pClient->connect(myDevice);
22 delay(50);
23 }
24 ..............................

Penjelasan source code :


Baris 2 Menginialisasi fungsi method bool conecTtoServer()
Baris 3-4 Memindai jaringan BLE dan ditampilkan pada serial monitor
Baris 6-9 Pembuatan klien untuk masing – masing server BLE yang
terhubung ke BLE klien
Baris 11-23 Percobaan koneksi ke server
Pada Tabel 5.7 ditunjukan bagaimana koneksi antara klien dan server.
Pertama pada baris 3 sampai 4 melalui fungsi bool connectToServer() dilakukan
pemindaian pada jaringan bluetooth sekitar dan ditulis nama serta alamat server
yang terpindai. Kemudian pada baris 6 sampai 9 dilakukan pembuatan klien untuk
masing – masing server yang terpindai. Pada baris 11 sampai 24 dilakukan
percobaan koneksi antara klien dengan server yang terjangkau oleh BLE klien.

34
Tabel 5.8 Pencocokan Service UUID
Kode Progam BLE Klien
1 ..............................
2 bool isDeviceScanned(BLEScanResults & scannedDev,uint8_t
tipeServer) {
3
4 int count = scannedDev.getCount();
5 for (int16_t i = 0; i < count; i++) {
6 if (scannedDev.getDevice(i).haveServiceUUID()) {
7 switch (tipeServer) {
8 case NONE:
9 break;
10 case SERVER_1:
11 if (scannedDev.getDevice(i).isAdvertisingService(serviceUUID_1)) {
12 //BLEDevice::getScan()->stop();
13 myDevice = new BLEAdvertisedDevice(scannedDev.getDevice(i));
14 serverConnected = SERVER_1;
15 Serial.print("Terkoneksi ke ");
16 printNamaServer(serverConnected);
17 return true;
18 }
19 break;
20 case SERVER_2:
21 if (scannedDev.getDevice(i).isAdvertisingService(serviceUUID_2)) {
22 myDevice = new BLEAdvertisedDevice(scannedDev.getDevice(i));
23 serverConnected = SERVER_2;
24 Serial.print("Terkoneksi ke ");
25 printNamaServer(serverConnected);
26 return true;
27 }
28 break;
29 case SERVER_3:
30 if (scannedDev.getDevice(i).isAdvertisingService(serviceUUID_3)) {
31 myDevice = new BLEAdvertisedDevice(scannedDev.getDevice(i));
32 serverConnected = SERVER_3;
33 Serial.print("Terkoneksi ke ");
34 printNamaServer(serverConnected);
35 return true;
36 }
37 break;
38 case SERVER_4:
39 if (scannedDev.getDevice(i).isAdvertisingService(serviceUUID_4)) {
40 myDevice = new BLEAdvertisedDevice(scannedDev.getDevice(i));
41 serverConnected = SERVER_4;
42 Serial.print("Terkoneksi ke ");
43 printNamaServer(serverConnected);
44 return true;
45 }
46 break;
47 default:
48 break;
49 }
50 Serial.print("\nDevice yang ke-");
51 Serial.print(i);
52 Serial.println(" tidak memiliki serviceUUID yang diinginkan.");
53 }
54 else {
55 Serial.print("\nDevice yang ke-");
56 Serial.print(i);
57 Serial.println(" tidak memiliki serviceUUID.");
58 }
59 }
60 Serial.print("\nTipe Server : ");
61 printNamaServer(tipeServer);

35
Tabel 5.8 (Lanjutan)
62 Serial.println("\tTIDAK TERDETEKSI PADA JANGKAUAN BLUETOOTH.");
63 return false;
64 }
65 ..............................

Penjelasan source code :


Baris 2 Menginialisasi fungsi method bool isDeviceScanned()
Baris 4-7 Perulangan for untuk mengetahui kondisi tiap server
Baris 10-19 Percobaan koneksi ke server 1 dengan membandingkan service
UUID server dengan klien
Baris 20-28 Percobaan koneksi ke server 2 dengan membandingkan service
UUID server dengan klien
Baris 29-37 Percobaan koneksi ke server 3 dengan membandingkan service
UUID server dengan klien
Baris 38-46 Percobaan koneksi ke server 4 dengan membandingkan service
UUID server dengan klien
Baris 50-53 Apabila service UUID server tidak sesuai dengan klien, gagal
terhubung ke klien
Baris 54-58 Apabila UUID server tidak terdaftar pada service UUID klien, maka
gagal terhubung ke klien
Baris 60-64 Apabila jangkauan server tidak terdeteksi oleh klien, maka tidak
terkoneksi ke server
Setelah klien memindai perangkat yang memiliki jaringan BLE, BLE klien
mencocokan service UUIDnya dengan server yang dipindai. Apabila service UUID
klien dan server sama maka terjalin koneksi antara keduanya, sedangkan jika
service UUID antara klien dan server yang dipindai berbeda maka klien tidak
terhubung ke server tersebut. Pada Tabel 5.8 baris 6 sampai baris 64 merupakan
kode progam untuk mencocokan service UUID setiap server dengan service UUID
yang sudah diinialisasi oleh klien.

Tabel 5.9 Pembacaan data server


Kode Progam BLE Klien
1 ..............................
2 // Menggapai karakteristik data pada BLE serverType
3 for (uint8_t i = 0; i < NUMBER_OF_DATA; i++) {
4 pRemoteCharacteristic=
pRemoteService->getCharacteristic(charUUIDArr[i]);
5 if (pRemoteCharacteristic==nullptr) {
6 Serial.print("Gagak koneksi ke karakteristik UUID : ");
7 Serial.println(charUUIDArr[i].toString().c_str());
8 printNamaData(i);
9 pClient->disconnect();
10 return true;
11 }
12 else {
13 Serial.print("Sukses koneksi ke karakteristik UUID ::");
14 printNamaData(i);
15 if (pRemoteCharacteristic->getUUID().equals(charUUIDArr[i])) {
16 // Jika karakteristik sesuai dengan karakterisik yang diinginkan

36
Tabel 5.9 (Lanjutan)
17 Serial.print("-Ketemu karakteristik");
18 printNamaData(i);
19 // Baca Data
20 if (pRemoteCharacteristic->canRead()) {
21 uint32_t value=pRemoteCharacteristic->readUInt32();
22 Serial.print("The characteristic value was: ");
23 Serial.println(value);
24 kirimData(serverType, i, value);
25 }
26 }
27 }
28 }
29
30 if (pRemoteCharacteristic->canNotify()) {
31 Serial.println("\n\ncanNotify() connectToServer()");
32 pRemoteCharacteristic->registerForNotify(notifyCallback);
33 }
34
35 return true;
36 }
37 ..............................

Penjelasan source code :


Baris 3-4 Perulangan for untuk melakukan pengambilan data
Baris 5-11 Kondisi apabila characteristic UUID tidak ada, maka gagal
melakukan pengambilan data
Baris 12-18 Kondisi apabila characteristic UUID sesuai, maka berhasil
melakukan pengambilan data
Baris 20-28 Pembacaan data oleh klien yang diberikan dari server
Baris 30-33 Pemberitahuan kepada klien untuk pembacaan data
Baris 35 Pengembalian kondisi menjadi true agar pembacaan dilooping
Pada Tabel 5.9 adalah pembacaan data yang dikirimkan oleh BLE server.
Pada baris 4 sampai 11 merupakan kode progam untuk melakukan pembacaan
characteristic UUID tiap server. Apabila server tidak memiliki characteristic UUID
maka gagal untuk melakukan pembacaan data. Pada baris 12 sampai 24 Jika
memiliki characteristic UUID maka dilakukan pencocokan characteristic UUID
server dan klien , jika characteristic UUID antara keduanya sudah sama maka klien
berhasil membaca data pemberian dari server. Pada baris 30 sampai 33
merupakan fungsi untuk menotifikasi klien bahwa data berhasil dikirim.

Tabel 5.10 Inialisasi BLE klien


Kode Progam BLE Klien
1 ..............................
2 void setup() {
3 Serial.begin(115200);
4
5 Serial.println("Memulai Klien...");
6 BLEDevice::init("KLIEN");
7
8 // callback

9 // detected

37
Tabel 5.10 (Lanjutan)
10 pBLEScan = BLEDevice::getScan();
11 pBLEScan->setAdvertisedDeviceCallbacks(new
12 MyAdvertisedDeviceCallbacks());
13 pBLEScan->setInterval(1349);
14 pBLEScan->setWindow(449);
15 pBLEScan->setActiveScan(true);
16 } // End of setup
17 ...............................

Penjelasan source code :


Baris 2-3 Inialisasi nilai baudrate agar terbaca pada serial monitor
Baris 5-6 Pemberian nama klien BLE sebagai “KLIEN”
Baris 10-16 Mendeklarasikan agar BLE klien melakukan pemindaian
Pada Tabel 5.10 ditampilkan bagaimana BLE klien diinialisasi. Pertama pada
baris 6 BLE klien diinialisasi dan dilakukan pemberian nama pada BLE klien.
Kemudian pada baris 10 sampai 15 diinialisasi pemanggilan getscan() untuk
memindai perangkat yang terjangkau oleh klien. Kode progam tersebut diletakkan
pada fungsi void setup() yang dipanggil ketika progam dijalankan.

Tabel 5.11 Pengiriman serial


Kode Progam BLE Klien
1 ..............................
2 void kirimData(uint8_t nomorServer, uint8_t nomorData, uint32_t
data) {
3 switch (nomorServer) {
4 case SERVER_1:
5 if (nomorData == DATA_ULTRASONIK_1) {
6 if (data > SERV1_ULTRA1_MIN && data < SERV1_ULTRA1_MAX)
7 {
8 dataSlot[1] = '1';
9 }
10 else {
11 dataSlot[1] = '0';
12 }
13 }
14 else if (nomorData == DATA_ULTRASONIK_2) {
15 if (data > SERV1_ULTRA2_MIN && data < SERV1_ULTRA2_MAX)
16 {
17 dataSlot[2] = '1';
18 }
19 else {
20 dataSlot[2] = '0';
21 }
22 }
23 break;
24 case SERVER_2:
25 if (nomorData == DATA_ULTRASONIK_1) {
26 if (data > SERV2_ULTRA1_MIN && data < SERV2_ULTRA1_MAX)
27 {
28 dataSlot[3] = '1';
29 }
30 else {
31 dataSlot[3] = '0';
32 }
33 }

38
Tabel 5.11 (Lanjutan)
34 else if (nomorData == DATA_ULTRASONIK_2) {
35 if (data > SERV2_ULTRA2_MIN && data < SERV2_ULTRA2_MAX)
36 {
37 dataSlot[4] = '1';
38 }
39 else {
40 dataSlot[4] = '0';
41 }
42 }
43 break;
44 case SERVER_3:
45 if (nomorData == DATA_ULTRASONIK_1) {
46 if (data > SERV3_ULTRA1_MIN && data < SERV3_ULTRA1_MAX)
47 {
48 dataSlot[5] = '1';
49 }
50 else {
51 dataSlot[5] = '0';
52 }
53 }
54 else if (nomorData == DATA_ULTRASONIK_2) {
55 if (data > SERV3_ULTRA2_MIN && data < SERV3_ULTRA2_MAX)
56 {
57 dataSlot[6] = '1';
58 }
59 else {
60 dataSlot[6] = '0';
61 }
62 }
63 break;
64 case SERVER_4:
65 if (nomorData == DATA_INFRARED_1) {
66 if (data == 1) {
67 dataSlot[7] = '0';
68 }
69 else {
70 dataSlot[7] = '1';
71 }
72 }
73 else if (nomorData == DATA_INFRARED_2) {
74 if (data == 1) {
75 dataSlot[8] = '0';
76 }
77 else {
78 dataSlot[8] = '1';
79 }
80 }
81 break;
82 default:
83 break;
84 }
85
86 //Serial2.begin(9600);
87 while (!Serial2) {};
88 for (uint8_t i = 0; i < 10; i++) {
89 Serial2.write(dataSlot[i]);
90 }
91 //Serial2.end();
92 }
...............................

39
Penjelasan source code :
Baris 2 Menginialisasi fungsi method kirimData()
Baris 3 Seleksi kondisi switch case
Baris 4 - 13 Pada server 1, saat seleksi kondisi if jika kondisi data sesuai dengan
jarak pada sensor ultrasonik 1, maka dikirimkan data 1 atau 0
Baris 14 – 22 Seleksi kondisi if jika kondisi data sesuai dengan jarak pada sensor
ultrasonik 2, maka dikirimkan data 1 atau 0
Baris 24 - 33 Pada server 2, saat seleksi kondisi if jika kondisi data sesuai dengan
jarak pada sensor ultrasonik 1, maka dikirimkan data 1 atau 0
Baris 34 – 42 Seleksi kondisi if jika kondisi data sesuai dengan jarak pada sensor
ultrasonik 2, maka dikirimkan data 1 atau 0
Baris 44 – 53 Pada server 3, saat seleksi kondisi if jika kondisi data sesuai dengan
jarak pada sensor ultrasonik 1, maka dikirimkan data 1 atau 0
Baris 54 – 62 Seleksi kondisi if jika kondisi data sesuai dengan jarak pada sensor
ultrasonik 2, maka dikirimkan data 1 atau 0
Baris 64 – 73 Pada server 4, saat seleksi kondisi if jika kondisi data sesuai dengan
jarak pada sensor infrared 1, maka dikirimkan data 1 atau 0
Baris 74 – 82 Seleksi kondisi if jika kondisi data sesuai dengan jarak pada sensor
infrared 2, maka dikirimkan data 1 atau 0
Baris 87 – 91 Perulangan while untuk me-looping komunikasi serial

Pada Tabel 5.11 ditunjukkan kode progam bagaimana BLE klien


mengirimkan data secara serial ke esp8266. Pengiriman data ke esp8266 ini
bertujuan agar data yang telah diterima oleh BLE klien dapat ditampilkan pada
webserver. Pertama pada baris 2 dibuat fungsi method kirimData(). Kemudian
pada baris 3 dibuat seleksi kondisi switch case pada masing – masing server untuk
mengirimkan data secara serial. Kemudian pada baris 4 - 22 pada server 1
diinialisasi seleksi kondisi if untuk pengiriman data serial sesuai dengan kondisi
yang telah ditentukan. Kemudian pada baris 24 - 42 pada server 2 diinialisasi
seleksi kondisi if untuk pengiriman data serial sesuai dengan kondisi yang telah
ditentukan. Kemudian pada baris 44 - 62 pada server 3 diinialisasi seleksi kondisi
if untuk pengiriman data serial sesuai dengan kondisi yang telah ditentukan.
Kemudian pada baris 64 - 82 pada server 4 diinialisasi seleksi kondisi if untuk
pengiriman data serial sesuai dengan kondisi yang telah ditentukan. Dan pada
baris 87 – 91 merupakan kode progam untuk mengulang fungsi pengiriman serial.

40
Gambar 5.12 Implementasi Webserver

Pada Gambar 5.12 ditunjukan interface dari halaman utama website sistem
monitoring lahan parkir. Dari halaman website menampilkan fitur – fitur yang
tersedia. Dari halaman website tersebut menampilkan fitur denah parkir yang
menunjukan ketersediaan lahan parkir, jumlah slot parkir dan jumlah slot parkir
yang kosong dan terisi.

41
BAB 6 PENGUJIAN

6.1 Pengujian
Pengujian bertujuan untuk mengetahui fungsionalitas dan performa
sistem, dan mengetahui apakah sistem bekerja sesuai harapan dan spesifikasi
yang telah ditentukan sebelumnya. Sub bab pengujian sistem terbagi menjadi
beberapa tahapan yaitu pengujian delay sistem, pengujian keakuratan sensor dan
pengujian webserver.

6.1.1 Pengujian Delay BLE Berdasarkan Jarak Antar Klien dan Server
Pengujian sistem bertujuan untuk menguji performansi pengiriman data
Bluetooh Low Energy (BLE) pada jarak yang berbeda. Pengujian BLE dilakukan
dengan melakukan tes koneksi jangkauan BLE seberapa jauh jangkauan yang bisa
dilakukan oleh BLE server dan BLE klien. Kemudian pengujian delay dilakukan
dengan cara menghitung timestamp dari komunikasi pengiriman data server ke
klien.
6.1.1.1 Tujuan Pengujian
Untuk mengetahui nilai rata-rata delay sistem dalam melakukan
komunikasi ketika melakukan percobaan data pada lingkungan nyata.
6.1.1.2 Prosedur Pengujian
1. Siapkan IDE Arduino
2. Sambungkan ESP32 dengan PC/laptop
3. Upload program klien dan server pada Arduino IDE
4. Node sensor diletakkan pada variasi jarak 1 meter, 3 meter, 5 meter, 7
meter, 9 meter dan 10 meter. Alat ukur meteran digunakan sebagai alat
bantu dalam pengukuran jarak.
5. Node sensor dan sink node diaktifkan hingga terdeteksi jaringan BLE
pada sink node.
6.Diamati serial monitor pada Arduino IDE untuk melihat data yang dikirim,
waktu pengiriman data dan success ratio pengiriman data.
7.Prosedur diulangi pada masing – masing variasi jarak.

42
6.1.1.3 Hasil Pengujian
Tabel 6.1 Pengujian Jangkauan Bluetooth Low Energy
No Jarak Jangkauan Status
1 1 Meter Berhasil
2 3 Meter Berhasil
3 5 Meter Berhasil
4 7 Meter Berhasil
5 9 Meter Berhasil
6 10 Meter Gagal

Succes Ratio
100%
8% 12%
90% 24%
80%
48%
70% 60%
60%
50% 100%
92% 88%
40% 76%
30%
52%
20% 40%
10%
0% 0
1 meter 3 meter 5 meter 7 meter 9 meter 10 meter

Succes Fail

Gambar 6.1 Diagram Success Ratio Pengiriman Dari Sensor Node Ke Gateway
Pada Tabel 6.1 merupakan pengujian koneksi jangkaun antara BLE klien
dan BLE server pada variasi jarak 1 meter, 3 meter, 5 meter, 7 meter, 9 meter dan
10 meter. Bluetooth Low Energy digunakan sebagai protokol komunikasi yang
berfungsi untuk mengirimkan data secara wireless antar server dengan klien. Pada
pengujian yang sudah dilakukan, Bluetooth Low Energy tidak dapat mencapai jarak
10 meter dan dapat terdeteksi dengan jarak maksimal 9 meter dengan posisi tanpa
halangan. Gambar 6.1 merupakan grafik hasil pengujian success ratio pengiriman
dari sensor node menuju gateway pada variasi jarak 1 meter, 3 meter, 5 meter, 7
meter, 9 meter dan 10 meter. Pada jarak 1 meter nilai success ratio adalah 92%,
lalu pada jarak 3 meter nilai success ratio yang diperoleh adalah 88%. Selanjutnya
pada jarak 5 meter diperoleh nilai success ratio sebesar 76%, lalu pada jarak 7
meter diperoleh nilai success ratio sebesar 52%. Terakhir pada jarak 9 meter
memperoleh nilai success ratio sebesar 40% dan pada jarak 10 meter memperoleh
nilai success ratio sebesar 0%. Dapat disimpulkan semakin besar jaraknya semakin
kecil tingkat keberhasilan pengiriman data dan semakin besar tingkat kegagalan
pengiriman data.

43
Tabel 6.2 Pengujian Pada Jarak 1m
No Server 1 (ms) Server 2 (ms) Server 3 (ms) Server 4 (ms)
1 2060 2057 2079 2063
2 2039 2054 2083 2056
3 2092 2058 2066 2057
4 2110 2094 1805 2040
5 2046 2056 2022 2046
6 2019 2037 2031 2054
7 2028 2075 2057 2039
8 2083 2034 2025 2026
9 2063 2066 2073 2079
10 2045 2081 2051 2037
Rata - rata 2058.5 2061.2 2029.2 2049.7
Rata – rata delay keseluruhan 2049.65 ms

Tabel 6.3 Pengujian Pada Jarak 3m


No Server 1 (ms) Server 2 (ms) Server 3 (ms) Server 4 (ms)
1 2101 2092 2166 2096
2 2098 2118 2186 2127
3 2026 2096 2103 2040
4 2072 2065 2048 2081
5 2087 2142 2094 2079
6 2049 2088 2098 2091
7 2060 2085 2100 2084
8 2055 2084 2106 2078
9 2065 2097 2102 2107
10 2059 2079 2101 2083
Rata - rata 2067.2 2094.6 2096.5 2086.6
Rata – rata delay keseluruhan 2086.25 ms

44
Tabel 6.4 Pengujian Pada Jarak 5m
No Server 1 (ms) Server 2 (ms) Server 3 (ms) Server 4 (ms)
1 2133 2051 2173 2102
2 2105 2114 2141 2082
3 2058 2132 2076 2136
4 2213 2137 2106 2117
5 2084 2095 2152 2111
6 2080 2084 2090 2064
7 2086 2067 2133 2120
8 2101 2091 2156 2080
9 2063 2105 2114 2123
10 2094 2153 2084 2116
Rata - rata 2101.7 2102.9 2122.5 2105.1
Rata – rata delay keseluruhan 2108.05 ms

Tabel 6.5 Pengujian Pada Jarak 7m


No Server 1 (ms) Server 2 (ms) Server 3 (ms) Server 4 (ms)
1 2412 2463 2402 2486
2 2455 2446 2485 2492
3 2398 2476 2475 2476
4 2456 2454 2407 2424
5 2383 2419 2491 2410
6 2391 2461 2474 2452
7 2457 2448 2439 2470
8 2487 2493 2459 2432
9 2411 2486 2441 2416
10 2401 2496 2481 2461
Rata - rata 2425.1 2464.2 2455.4 2451.9
Rata – rata delay keseluruhan 2449.15

45
Tabel 6.6 Pengujian Pada Jarak 9m
No Server 1 (ms) Server 2 (ms) Server 3 (ms) Server 4 (ms)
1 2570 2598 2581 2631
2 2572 2618 2565 2625
3 2638 2647 2620 2609
4 2570 2595 2649 2608
5 2616 2613 2640 2650
6 2597 2588 2566 2644
7 2571 2642 2618 2579
8 2584 2643 2609 2564
9 2590 2629 2651 2583
10 2643 2153 2561 2592
Rata - rata 2595.1 2614.5 2606 2608.5
Rata – rata delay keseluruhan 2612.77

DELAY
Sensor Node 1 Sensor Node 2 Sensor Node 3 Sensor Node 4
2614.5

2608.5
2595.1

2606
2464.2
2455.4
2451.9
2425.1
2122.5
2105.1
2102.9
2101.7
2096.5
2094.6

2086.6
2067.2
2061.2
2058.5

2048.7
2029.2

1 METER 3 METER 5 METER 7 METER 9 METER

Gambar 6.2 Diagram Delay Pengiriman dari Sensor Node ke Gateway


Gambar 6.2 ditunjukan hasil pengujian delay antara BLE server dengan BLE
klien pada variasi jarak 1 meter, 3 meter, 5 meter, 7 meter dan 9 meter. Dari hasil
pengujian diatas dapat disimpulkan bahwa nilai delay maksimum yang didapatkan
dari pengujian delay adalah sebesar 2651 ms pada jarak 9 meter yang diterima
oleh sensor node 3, dan nilai minimum yang diperoleh dari pengujian delay adalah
sebesar 1805 ms pada jarak 1 meter yang diterima oleh sensor node 3. Kemudian
nilai rata-rata delay pada jarak satu meter sebesar 2049.65 ms, pada jarak tiga

46
meter nilai rata-rata delay sebesar 2086.25 ms, pada jarak lima meter nilai rata-
rata delay sebesar 2103.95 ms, pada jarak tujuh meter sebesar nilai rata-rata delay
2449.15 ms dan pada jarak sembilan meter nilai rata-rata delay sebesar 2612.77
ms. Hasil pengujian tersebut menunjukan bahwa delay dari performansi
komunikasi bluetooth low energy antara klien dengan server dengan rentang satu
sampai lima meter memiliki nilai delay yang rendah. Dapat disimpulkan semakin
besar jaraknya semakin besar delay yang didapatkan.

6.1.2 Pengujian Akurasi Sensor


Pengujian sensor dilakukan untuk mengetahui seberapa besar nilai
keakuratan sensor yang digunakan dengan percobaan dengan pembacaan
manual. Pengujian sensor dilakukan pada dua sensor, yaitu sensor ultrasonik dan
sensor infrared. Pengujian sensor Ultrasonik dilakukan dengan mengukur jarak
antar sensor dengan halangan dan dibandingkan dengan alat ukur meteran. Cara
menghitung persentase error yang didapatkan dari pengukuran sensor dan alat
ukur jarak dapat dihitung dengan menggunakan persamaan 6.1 :
𝐽𝑎𝑟𝑎𝑘 𝑠𝑒𝑛𝑠𝑜𝑟−𝐽𝑎𝑟𝑎𝑘 𝑎𝑙𝑎𝑡 𝑢𝑘𝑢𝑟
𝑃𝑒𝑟𝑠𝑒𝑛𝑡𝑎𝑠𝑒 𝑒𝑟𝑟𝑜𝑟 = × 100% (6.1)
𝐽𝑎𝑟𝑎𝑘 𝑎𝑙𝑎𝑡 𝑢𝑘𝑢𝑟

Sensor infrared digunakan untuk mendeteksi adanya objek atau tidak dan diuji
respon dari sensor tersebut.
6.1.2.1 Tujuan Pengujian
Untuk mengetahui tingkat akurasi sensor dalam membaca jarak dan dapat
berfungsi dengan sebaik-baiknya ketika melakukan percobaan data pada
lingkungan nyata.
6.1.2.2 Prosedur Pengujian
1. Siapkan IDE Arduino
2. Sambungkan ESP32 dengan sensor ultrasonik
3. Sambungkan ESP32 dengan sensor infrared
4. Upload program pada Arduino IDE
5. Menguji nilai output sensor ultrasonik dan infrared
6. Menguji nilai output sensor ultrasonik dengan pembacaan manual
dengan membandingkan dengan alat ukur sebenarnya, alat ukur yang
digunakan meteran.
7. Pengujian dilakukan hingga sensor tidak dapat melakukan pembacaan
jarak.
8. Menguji nilai output sensor infrared pada kondisi ‘HIGH’ dan pada
kondisi ‘LOW’.
9. Pengujian dilakukan hingga sensor tidak dapat melakukan pembacaan
jarak.
6.1.2.3 Hasil Pengujian

47
Tabel 6.7 Pengujian Sensor Ultrasonik
No Sensor 1 Sensor 2 Sensor 3
Sensor Manu Error Sensor Manual Error Sensor Manual Error
al
(cm) (%) (cm) (cm) (%) (cm) (cm) (%)
(cm)
1 5 5 0 5 5 0 5 5 0
2 5 5 0 5 5 0 5 5 0
3 7 7 0 7 7 0 7 7 0
4 7 7 0 7 7 0 7 7 0
5 9 9 0 9 9 0 9 9 0
6 9 9 0 9 9 0 9 9 0
7 11 11 0 11 11 0 11 11 0
8 11 11 0 11 11 0 11 11 0
9 15 15 0 15 15 0 15 15 0
10 15 15 0 15 15 0 15 15 0
11 20 20 0 20 20 0 20 20 0
12 20 20 0 20 20 0 20 20 0
13 40 40 0 40 40 0 40 40 0
14 40 40 0 40 40 0 40 40 0
15 61 60 1.67 60 60 0 60 60 0
16 81 80 1.25 80 80 0 82 80 2.5
17 102 100 2 100 100 0 101 100 1
18 102 100 2 101 100 1 101 100 1
19 153 150 2 151 150 0.67 152 150 1.33
20 151 150 0.67 151 150 0.67 151 150 0.67
21 201 200 0.5 201 200 0.5 202 200 1
22 202 200 1 202 200 1 202 200 1
23 273 300 9 296 300 1.33 276 300 8
24 0 350 100 0 350 100 100 350 100
25 0 400 100 0 400 100 100 400 100
Rata – rata 5 Rata – rata error 4.38 Rata – rata error 4.85
error sensor 1 sensor 2 sensor 3

48
Tabel 6.8 Pengujian Sensor Ultrasonik
No Sensor 4 Sensor 5 Sensor 6
Sensor Manual Error Sensor Manual Error Sensor Manual Error
(cm) (cm) (%) (cm) (cm) (%) (cm) (cm) (%)
1 5 5 0 5 5 0 5 5 0
2 5 5 0 5 5 0 5 5 0
3 7 7 0 7 7 0 7 7 0
4 7 7 0 7 7 0 7 7 0
5 9 9 0 9 9 0 9 9 0
6 9 9 0 9 9 0 9 9 0
7 11 11 0 11 11 0 11 11 0
8 11 11 0 11 11 0 11 11 0
9 15 15 0 15 15 0 15 15 0
10 15 15 0 15 15 0 15 15 0
11 20 20 0 20 20 0 20 20 0
12 20 20 0 20 20 0 20 20 0
13 40 40 0 40 40 0 40 40 0
14 40 40 0 40 40 0 40 40 0
15 61 60 1.67 62 60 3.33 61 60 1.67
16 79 80 1.25 80 80 0 81 80 1.25
17 100 100 0 101 100 1 101 100 1
18 100 100 0 101 100 1 102 100 2
19 153 150 2 152 150 1.33 150 150 0
20 152 150 1.33 152 150 1.33 151 150 0.67
21 201 200 0.5 204 200 2 202 200 1
22 201 200 0.5 203 200 1.5 202 200 1
23 269 300 10.33 262 300 12.67 268 300 10.67
24 0 350 100 0 350 100 0 350 100
25 0 400 100 0 400 100 0 400 100
Rata – rata error 4.9 Rata – rata error 5.17 Rata – rata error 4.97
sensor 4 sensor 5 sensor 6

49
Tabel 6.9 Hasil Pengujian Sensor Ultrasonik
Sensor Ultrasonik Rata - Rata
ke- Persentase Error
1 5
2 4.38
3 4.85
4 4.9
5 5.17
6 4.97
Rata – rata 4,88%

Rata - Rata Persentase Error


5.4
5.17
5.2
5 4.97
5 4.85 4.9

4.8
Dalam %

4.6
4.38
4.4
4.2
4
3.8
1 2 3 4 5 6
Sensor ke -

Gambar 6.3 Rata - Rata Persentase Error Tiap Sensor


Pengujian sensor ultrasonik dilakukan dengan melakukan 24 kali pengujian
sensor yang hasilnya dibandingkan dengan alat ukur meteran. Pengujian sensor
ultrasonik dilakukan dari rentang jarak 5 cm hingga 400 cm. Pada tabel 6.9
merupakan hasil rekapitulasi sensor ultrasonik yang memiliki rata – rate error
keseluruhan sebesar 4.88%. Dari Gambar 6.3 dapat disimpulkan bahwa pada
sensor ultrasonik 1 memperoleh rata-rata nilai error sebesar 5%, sensor ultrasonik
2 memperoleh rata-rata nilai error sebesar 4.38%, sensor ultrasonik 3
memperoleh rata-rata nilai error sebesar 4.85%, sensor ultrasonik 4 memperoleh
rata-rata nilai error sebesar 4.9%, sensor ultrasonik 5 memperoleh rata-rata nilai
error sebesar 5.17% dan sensor ultrasonik 6 memperoleh rata-rata nilai error
sebesar 4.97%. Dari pengujian tersebut semakin jauh jarak yang dihitung sensor
ultrasonik semakin rendah tingkat akurasinya. Hal ini menunjukkan bahwa setiap
sensor ultrasonik memiliki persentase nilai error yang rendah dan tingkat akurasi
yang tinggi sehingga dapat meningkatkan performa sistem.

50
Tabel 6.10 Pengujian Sensor Infrared
No Nama Infrared Kondisi Awal Kondisi
Infrared Sesudah
1 Infrared 1 HIGH HIGH
2 Infrared 1 HIGH HIGH
3 Infrared 1 HIGH HIGH
4 Infrared 1 LOW LOW
5 Infrared 1 LOW LOW
6 Infrared 1 LOW LOW
7 Infrared 2 HIGH HIGH
8 Infrared 2 HIGH HIGH
9 Infrared 2 HIGH HIGH
10 Infrared 2 LOW LOW
11 Infrared 2 LOW LOW
12 Infrared 2 LOW LOW

Tabel 6.11 Hasil Pengujian Sensor Infrared


Sensor Kondisi Tidak Kondisi Terhalang
Infrared ke- Terhalang
1 HIGH LOW
2 HIGH LOW

Pengujian sensor infrared dapat dilihat pada Tabel 6.10, pengujian


dilakukan 12 kali masing – masing sensor diuji pada keadaan HIGH dan pada
keadaan LOW, hasilnya yang didapatkan tiap sensor infrared dalam keadaan valid.
Pada Tabel 6.11 Ketika sensor dalam keadaan normal (tidak terhalang) maka
tegangan yang dihasilkan adalah high, sedangkan ketika sensor diberi objek
penghalang, tegangan yang dihasilkan adalah low. Karena prinsip kerja dari
rangkaian ini adalah aktif low, maka dapat diambil kesimpulan bahwa setiap
sensor bekerja dengan baik dan siap digunakan.

6.1.3 Pengujian Webserver


Pengujian webserver dilakukan untuk menguji fungsi fitur – fitur yang
terdapat pada halaman web, apakah web mampu menampilkan informasi sistem
monitoring atau tidak. Pengujian dilakukan dengan meletakkan mobil mainan
pada prototype lahan parkir dan dilakukan pengamatan dari halaman web.

51
Metode pengujian yang dilakukan adalah dengan menguji sistem dengan
pengujian black box. Dimana fungsional sistem diuji satu persatu sesuai dengan
perancangan sistem yang telah dibuat. Dengan begitu sistem dapat dinyatakan
berhasil jika hasil pengujian valid terhadap analisis yang telah ditentukan.
6.1.3.1 Tujuan Pengujian
Pengujian bertujuan untuk memastikan apakah webserver berfungsi
dengan semestinya ketika melakukan percobaan data pada lingkungan nyata.
6.1.3.2 Prosedur Pengujian
1. Siapkan IDE Arduino
2. Sambungkan ESP32 dan ESP8266 dengan PC/laptop
3. Upload program pada Arduino IDE
4. Buka web yang sudah diberikan pada alamat ip
5. Menguji respon sensor ultrasonik dengan meletakkan mobil mainan
pada jarak tertentu dan dilihat pada webserver.
6. Menguji respon sensor infrared dengan meletakkan mobil mainan pada
jangkauan sensor dan dilihat pada webserver.
7. Menguji delay pada webserver saat dilakukan pengiriman data.
8. Pengujian delay webserver dilakukan dengan melihat timestamp pada
tampilan serial monitor.

6.1.3.3 Hasil Pengujian

Tabel 6.12 Hasil Pengujian Webserver Dengan Metode Black Box


No Nama Percobaan Hasil yang Hasil
Pengujian diharapkan
1 Pengujian fitur Pengujian Slot lahan parkir Sesuai harapan
ketersediaan dilakukan dengan terisi
lahan parkir meletakkan mobil
pada jangkauan
tertentu pada
sensor ultrasonik
Pengujian Slot lahan parkir Sesuai harapan
dilakukan dengan kosong
memindahkan
mobil pada
jangkauan
tertentu pada
sensor ultrasonik

52
Tabel 6.12 (Lanjutan)
2 Pengujian fitur Pengujian Slot terisi Sesuai harapan
jumlah mobil dilakukan dengan bertambah dan
masuk dan mobil melewati slot tersedia
mobil keluar pintu masuk pada berkurang
sensor infrared
Pengujian Slot tersedia Sesuai harapan
dilakukan dengan bertambah &
mobil melewati Slot terisi
pintu keluar pada berkurang
sensor infrared

Hasil pengujian ini menunjukan pada saat sensor ultrasonik terhalang


mobil, tampilan denah parkir pada webserver berubah dari kosong menjadi
penuh. Dan sensor infrared yang diletakkan pada masing – masing pintu masuk
dan pintu keluar untuk mendeteksi jumlah mobil mampu mengitung jumlah
masuk dan keluar mobil dan ditampilkan pada slot terisi dan slot tersedia.
Halaman utama webserver dimuat ulang setiap 5 detik sehingga data yang sudah
didapatkan dapat merubah kondisi masing – masing fitur pada webserver. Pada
Gambar 6.4 merupakan tampilan awal webserver saat lahan parkir kosong, dan
pada Gambar 6.5 merupakan tampilan webserver saat lahan parkir penuh. Pada
Tabel 6.12 ditunjukan bahwa sistem berjalan sesuai harapan.

Gambar 6.4 Kondisi Saat Lahan Parkir Kosong

53
Gambar 6.5 Kondisi Saat Lahan Parkir Penuh

Tabel 6.13 Pengujian Delay Webserver


Percobaan Waktu Pesan Dikirim Waktu Pesan Diterima
Ke-
1 13:45:58 13:46:02
2 13:46:08 13:46:10
3 13:46:35 13:46:36
4 13:47:21 13:47:22
5 13:47:43 13:47:45
6 13:48:18 13:48:20
7 13:48:23 13:48:25
8 13:49:58 13:49:59
9 13:50:34 13:50:35
10 13:51:14 13:51:15

54
Pengujian Delay Webserver
4.5
4
3.5
3
Delay (s)

2.5
2
1.5
1
0.5
0
1 2 3 4 5 6 7 8 9 10
Percobaan Ke-

Gambar 6.6 Grafik Pengujian Delay Webserver


Pada Tabel 6.13 ditunjukkan waktu pengiriman data dari klien menuju
webserver, pengiriman data dilakukan secara serial dari ESP32 klien ke Nodemcu
ESP8266. Tabel 6.13 dari sepuluh kali percobaan menunjukkan rata – rata delay
total yang dibutuhkan dari pengiriman data klien sampai diterima oleh webserver
adalah 17 detik. Sedangkan, delay rata-rata yang dihasilkan dalam proses
transmisi data dari klien ke webserver adalah 1.7 detik. Pada Gambar 6.6
ditunjukan hasil pengujian delay webserver dalam bentuk grafik. Dari hasil
pengujian tersebut dapat disimpulkan bahwa performansi pengiriman pada dari
klien ke webserver memiliki delay yang rendah.

55
BAB 7 PENUTUP

7.1 Kesimpulan
Kesimpulan yang didapat setelah proses proses perancangan
,implementasi dan pengujian adalah :
1. ESP32 server dapat mengirimkan data sensor ultrasonik dan sensor
infrared serta berhasil mengirimkan datanya ke ESP32 klien melalui
Bluetooh Low Energy (BLE). Tahap transmisi data melalui BLE mencakup
tahap pemindaian perangkat BLE, tahap pembuatan koneksi antara ESP32
klien dan ESP32 server serta tahap transmisi data secara serial dari ESP32
klien ke ESP8266 dan dapat ditampilkan melalui webserver. Webserver
yang telah dibuat dengan bahasa pemrogaman html dapat digunakan
sebagai interface untuk sistem monitoring lahan parkir. Informasi yang
diberikan oleh webserver berjalan dengan baik. Sensor ultrasonik dapat
memberikan informasi berupa ketersediaan lahan parkir dan sensor
infrared dapat memberikan informasi berupa jumlah mobil masuk dan
mobil keluar.
2. Pengujian pengiriman data pada parameter delay dapat disimpulkan
bahwa kinerja dari ESP32 server menuju ESP32 klien menggunakan
transmisi BLE dapat dipengaruhi oleh jarak, rata – rata nilai delay terbaik
yang didapatkan dari pengujian delay adalah sebesar 2049.65 ms pada
jarak 1 meter, dan rata – rata nilai terburuk yang diperoleh dari pengujian
delay adalah sebesar 2612.77 ms pada jarak 9 meter. Dari hasil yang telah
dilakukan dapat disimpulkan semakin besar jaraknya semakin besar delay
yang didapatkan.
3. Sensor ultrasonik HC-SR04 yang ditempatkan pada masing – masing slot
parkir dapat membaca halangan dengan rata-rata error keseluruhan
sebesar 4,88% dan tingkat akurasi sensor sebesar 95,12% dengan jarak
halangan 5cm hingga 300 cm. Sensor infrared yang ditempatkan pada
pintu masuk dan pintu keluar dapat mendeteksi objek dengan baik.

7.2 Saran
Saran yang dapat disampaikan oleh peneliti untuk pengembangan
penelitian berikutnya :
1. Sistem ditambahkan dengan palang pintu otomatis pada gerbang masuk
dan gerbang keluar.
2. Platform framework website sistem dapat menggunakan bootstrap agar
interface website lebih menarik.
3. Dapat diimplementasikan ke dunia nyata untuk penerapan sistem
monitoring lahan parkir dengan menambahkan antena tambahan agar
jangkauan BLE lebih luas.

56
DAFTAR REFERENSI
Adersson, M., 2014. Use case possibilities with Bluetooth low energy in IoT
applications. [Online] Tersedia di: www.u-blox.com
[Diakses 06 Februari 2020].
Anisa, N., 2019. Jenis IoT Network Protocols. [Online]
Tersedia di: https://sis.binus.ac.id/2019/11/15/jenis-iot-network-protocols/
[Diakses 6 Febuari 2020].
Arasada, B., 2017. Aplikasi Sensor Ultrasonik Untuk Deteksi Posisi Jarak Pada
Ruang Menggunakan Arduino Uno. Jurnal Teknik Elektro, 6(2), pp. 137-145.
[Online] Tersedia di: https://jurnalmahasi-swa.unesa.ac.id/index.php/jurnal-
teknik-elektro/article/view/19511 [Diakses 6 Febuari 2020].
Arduino, 2017. IDE Arduino. [Online] Tersedia di:
https://www.arduino.cc/en/Guide/Envi-ronment
[Diakses 07 Februari 2020].
Arief Sukma Indrayana, R. P. K. A., 2018. Rancang Bangun Sistem Komunikasi
Bluetooth Low Energy (BLE) Pada Sistem Pengamatan Tekanan Darah. Jurnal
Pengembangan Teknologi Informasi dan Ilmu Komputer, 2(8), p. 2462 – 2472.
[Online] Tersedia di: http://jptiik.ub.ac.id/index.php/jptiik/article/view/1800
[Diakses 4 Febuari 2020].
Balakrishnan, P. &. R., 2018. IoT based Monitoring and Control System for Home
Automation. International Journal of Research, 5(12), pp. 4120-4124. [Online]
Tersedia di: https://www.researchgate.net/publication/324888417_IOT_Ba-
sed-_Monitoring_and_Control_System_for_Home_Automation
[Diakses 1 Febuari 2020].
Bayu Widyo Harimurti, W. K. H. N., 2018. Sistem Pengelolaan Parkir Dengan NFC.
Jurnal Pengembangan Teknologi Informasi dan Ilmu Komputer, 2(6), pp. 2038-
2045. [Online] Tersedia di: http://jptiik.ub.ac.id/index.php/jptiik/art-
icle/view/1599 [Diakses 29 Januari 2020].
Decy Nataliana, I. S. G. G., 2014. Sistem Monitoring Parkir Mobil Menggunakan
Sensor Infrared Berbasis Raspberry Pi. Jurnal Institut Teknologi Nasional
Bandung, 2(1), pp. 68-64. [Online] Tersedia di: https://ejurnal.itenas.a-
c.id/index-.php/elkomika/article/view/819 [Diakses 29 Januari 2020].
Gomez Carles, J. O. J. P., 2012. Overview and Evaluation of Bluetooth Low Energy:
An Emerging Low-Power Wireless Technology. Sensors, 12(9), p. 11734–
11753. [Online] Tersedia di: www.mdpi.com/journal/sensors
[Diakses 6 Febuari 2020].
H. V. Bhatnagar, P. K. S. R. a. T. C., 2018. Implementation model of Wi-Fi based
Smart Home System. 2018 International Conference on Advances in
Computing and Communication Engineering (ICACCE), 23 Agustus, pp. 23-28.
[Online] Tersedia di: https://ieeexplore.ieee.org-/stamp/stamp.jsp?tp=&arn-
umber=8441-703 [Diakses 1 Febuari 2020].

57
Harsono, E., 2019. Pengertian, Cara Kerja, dan Penerapan pada Internet of Things.
[Online] Tersedia di: https://www.kompasiana.com/mudamudi/5d6654b20-
d82-3006-540bdba3/pengertian-cara-kerja-dan-penerapan-pada-internet-
of-things [Diakses 6 Februari 2020].
Konstantin Mikhaylov, N. P. J. T., 2013. Performance Analysis and Comparison of
Bluetooth Low Energy with IEEE 802.15.4 and SimpliciTI. Journal of Sensor and
Actuator Network, 2(3), pp. 589-613. [Online] Tersedia di:
https://www.researchgate.net/publication/259333192_Performance_Analys
is_and_Comparison_of_Bluetooth_Low_Energy_with_IEEE_802154_and_Si
mpliciTI [Diakses 11 Mei 2020].
Zulfikri, M. I. S. F. S., 2017. Implementasi Sensor Arus Dan Rtc (Real Time Clock)
Pada Sistem Pengontrol Penerangan Rumah Dengan Memanfaatkan Iot (
Internet Of Things ). Jurnal Teknik Terapan, 3(3), p. 1762 – 1766. [Online]
Tersedia di: https://openlibrary.telkomuniversity.ac.id/pustaka/137366/im-
plementasi-sens-or-arus-dan-rtc-real-time-clock-pada-sistem-pengontrol-
penerangan-rumah-den-gan-memanfaatkan-iot-internet-of-things-.html
[Diakses 1 Februari 2020].

58
LAMPIRAN
1. Kode Progam BLE Server
BLE Ultrasonik
1 // SERVER 1
2 // DATA ULTRASONIK
3
4 #include <BLEDevice.h>
5 #include <BLEServer.h>
6 #include <BLEUtils.h>
7
8 // defines pins numbers
9 const uint8_t PIN_TRIGGER_1 = 15;
10 const uint8_t PIN_ECHO_1 = 2;
11 const uint8_t PIN_TRIGGER_2 = 13;
12 const uint8_t PIN_ECHO_2 = 12;
13
14 typedef struct {
15 uint8_t pinTrigger;
16 uint8_t pinEcho;
17 int distanceCM;
18 double distanceM;
19 double distanceInch;
20 }ULTRASONIC_PROPERTIES;
21 ULTRASONIC_PROPERTIES propUltrasonik1 = { PIN_TRIGGER_1,
PIN_ECHO_1, 0, 0, 0 };
22 ULTRASONIC_PROPERTIES propUltrasonik2 = { PIN_TRIGGER_2,
PIN_ECHO_2, 0, 0, 0 };
23
24 BLEServer* pServer = NULL;
25 BLEService* pService = NULL;
26 BLECharacteristic* pCharacteristic1 = NULL;
27 BLECharacteristic* pCharacteristic2 = NULL;
28 BLEAdvertising* pAdvertising = NULL;
29
30 // https://www.uuidgenerator.net/
#define SERVICE_UUID "4fafc201-1fb5-459e-8fcc-
31 c5c9c331914b"
#define CHARACTERISTIC_UUID_1 "beb5483e-36e1-4688-b7f5-
32 ea07361b26a8" // Ultrasonik 1
#define CHARACTERISTIC_UUID_2 "c6e484a0-42a5-4559-a27c-
3311bd77ff6d" // Ultrasonik 2
33
34 void readUltrasonik(ULTRASONIC_PROPERTIES& properti) {
35 long duration = 0;
36 digitalWrite(properti.pinTrigger, LOW);
37 delayMicroseconds(2);
38
39 // Sets the trigPin on HIGH state for 10 micro seconds
40 digitalWrite(properti.pinTrigger, HIGH);
41 delayMicroseconds(10);
42 digitalWrite(properti.pinTrigger, LOW);
43
44 // Reads the echoPin, returns the sound wave travel time in
microseconds
45 duration = pulseIn(properti.pinEcho, HIGH);
46
47 // Calculating the distance
48 properti.distanceCM = duration * 0.034 / 2;
49 properti.distanceM = (double)properti.distanceCM / 100;
50 properti.distanceInch = ((double)properti.distanceCM) / 2.54;
61
62 // Prints the distance on the Serial Monitor
63 Serial.print("\nDistance in cm: ");

59
64 Serial.print(properti.distanceCM);
65 Serial.println(" cm\n");
66 }
67
68 void setup(){
69 pinMode(PIN_TRIGGER_1, OUTPUT);
70 pinMode(PIN_ECHO_1, INPUT);
71 pinMode(PIN_TRIGGER_2, OUTPUT);
72 pinMode(PIN_ECHO_2, INPUT);
73
74 Serial.begin(115200);
75 Serial.println("Starting BLE SERVER 1");
76
77 BLEDevice::init("SERVER_1");
78 pServer = BLEDevice::createServer();
79 pService = pServer->createService(SERVICE_UUID);
80
81 // Create a BLE Characteristic (Ultrasonik 1)
82 pCharacteristic1 = pService->createCharacteristic(
83 CHARACTERISTIC_UUID_1,
84 BLECharacteristic::PROPERTY_READ |
85 BLECharacteristic::PROPERTY_WRITE
86 );
87 // Create a BLE Characteristic (Ultrasonik 2)
88 pCharacteristic2 = pService->createCharacteristic(
89 CHARACTERISTIC_UUID_2,
90 BLECharacteristic::PROPERTY_READ |
91 BLECharacteristic::PROPERTY_WRITE
92 );
93
94 // Start the service
95 pService->start();
96
97 // Start advertising
98 pAdvertising = BLEDevice::getAdvertising();
99 pAdvertising->addServiceUUID(SERVICE_UUID);
100 pAdvertising->setScanResponse(true);
101 pAdvertising->setMinPreferred(0x06); // functions that help
with iPhone connections issue
102 pAdvertising->setMinPreferred(0x12);
103 BLEDevice::startAdvertising();
104 Serial.println("STARTING\n\n");
105
106 }
107 void loop() {
108 Serial.print("\n\nULTRASONIK 1");
109 readUltrasonik(propUltrasonik1);
110 delay(100);
111 Serial.print("ULTRASONIK 2");
112 readUltrasonik(propUltrasonik2);
113 delay(100);
114
115 pCharacteristic1->setValue(propUltrasonik1.distanceCM);
116 delay(100);
117 pCharacteristic2->setValue(propUltrasonik2.distanceCM);
118 delay(100);
119
120 //pAdvertising->stop();
121 delay(100);
122 pAdvertising->start();
123 }

60
BLE Infrared
1 //SERVER 4
2 #include <BLEDevice.h>
3 #include <BLEServer.h>
4 #include <BLEUtils.h>
5
6 // defines pins numbers
7 const uint8_t PIN_IR_1 = 2;
8 const uint8_t PIN_IR_2 = 3;
9
10 int statusIR1 = -1;
11 int statusIR2 = -1;
12
13 BLEServer* pServer = NULL;
14 BLEService* pService = NULL;
15 BLECharacteristic* pCharacteristic3 = NULL;
16 BLECharacteristic* pCharacteristic4 = NULL;
17
18 // https://www.uuidgenerator.net/
19
20 #define SERVICE_UUID "548bd48b-a78e-4974-bffb-
be7fccfb8d47"
21 #define CHARACTERISTIC_UUID_3 "5f973250-794e-4bf2-a42a-
2ab667d719d4" // Infrared 1
22 #define CHARACTERISTIC_UUID_4 "7f4b38d1-49c3-4ad2-a5b6-
5458bacf15fa" // Infrared 2
23
24 class MyServerCallbacks : public BLEServerCallbacks {
25 void onConnect(BLEServer* pServer) {
26 deviceConnected = true;
27 };
28
29 void onDisconnect(BLEServer* pServer) {
30 deviceConnected = false;
31 }
32 };
33
34 // return 0 if object detected
35 // return 1 if no object detected
36 int readInfrared(uint8_t pinSensor) {
37 if (digitalRead(pinSensor) == HIGH) { // ada objek
38 return 0;
39 }
40 else {
41 return 1;
42 }
43 }
44
45 void setup() {
46 pinMode(PIN_IR_1, INPUT);
47 pinMode(PIN_IR_2, INPUT);
48
49 Serial.begin(115200);
50 Serial.println("Starting BLE SERVER 4");
61
62 BLEDevice::init("SERVER_4");
63 pServer = BLEDevice::createServer();
64 pService = pServer->createService(SERVICE_UUID);
65
66 // Create a BLE Characteristic (Infrared 1)
67 pCharacteristic3 = pService->createCharacteristic(
68 CHARACTERISTIC_UUID_3,
69 BLECharacteristic::PROPERTY_READ |
70 BLECharacteristic::PROPERTY_WRITE
71 );

61
72
73 // Create a BLE Characteristic (Infrared 2)
74 pCharacteristic4 = pService->createCharacteristic(
75 CHARACTERISTIC_UUID_4,
76 BLECharacteristic::PROPERTY_READ |
77 BLECharacteristic::PROPERTY_WRITE
78 );
79
80 // Start the service
81 pService->start();
82
83 // Start advertising
84 BLEAdvertising* pAdvertising = BLEDevice::getAdvertising();
85 pAdvertising->addServiceUUID(SERVICE_UUID);
86 pAdvertising->setScanResponse(true);
87 pAdvertising->setMinPreferred(0x06); // functions that help
with iPhone connections issue
88 pAdvertising->setMinPreferred(0x12);
89 BLEDevice::startAdvertising();
90 Serial.println("STARTING\n\n");
91
92 }
93 void loop() {
94 statusIR1 = readInfrared(PIN_IR_1);
95 delay(10);
96 statusIR2 = readInfrared(PIN_IR_2);
97 delay(10);
98 pCharacteristic3->setValue(statusIR1);
99 delay(100);
100 pCharacteristic4->setValue(statusIR2);
101 delay(100);
102
103 delay(100);
104 }

2. Kode Progam BLE Klien


BLE Kliem
1 #include "BLEDevice.h"
2 #include "BLEScan.h"
3
4 const uint8_t NUMBER_OF_SERVERS = 4;
5 const uint8_t NUMBER_OF_DATA = 4;
6 const uint8_t SCAN_TIME = 3; // In seconds
7
8 // SERVER TYPE
9 const uint8_t NONE = 0;
10 const uint8_t SERVER_1 = 1;
11 const uint8_t SERVER_2 = 2;
12 const uint8_t SERVER_3 = 3;
13 const uint8_t SERVER_4 = 4;
14
15 // DATA TYPE
16 const uint8_t DATA_ULTRASONIK_1 = 0;
17 const uint8_t DATA_ULTRASONIK_2 = 1;
18 const uint8_t DATA_INFRARED_1 = 2;
19 const uint8_t DATA_INFRARED_2 = 3;
20
21 // BATAS NILAI, MENGINDIKASIKAN APAKAH ADA MOBIL ATAU TIDAK
22 const uint8_t SERV1_ULTRA1_MAX = 10; // cm
23 const uint8_t SERV1_ULTRA1_MIN = 1; // cm
24 const uint8_t SERV1_ULTRA2_MAX = 10; // cm
25 const uint8_t SERV1_ULTRA2_MIN = 1; // cm
26

62
27 const uint8_t SERV2_ULTRA1_MAX = 10; // cm
28 const uint8_t SERV2_ULTRA1_MIN = 1; // cm
29 const uint8_t SERV2_ULTRA2_MAX = 10; // cm
30 const uint8_t SERV2_ULTRA2_MIN = 1; // cm
31
32 const uint8_t SERV3_ULTRA1_MAX = 10; // cm
33 const uint8_t SERV3_ULTRA1_MIN = 1; // cm
34 const uint8_t SERV3_ULTRA2_MAX = 10; // cm
35 const uint8_t SERV3_ULTRA2_MIN = 1; // cm
36
37
38 uint8_t serverConnected = NONE;
39
40 bool isDisconnected = false;
41
42 char dataSlot[10] = { 'a',
'0', '0', '0', '0',
'0', '0', '0', '0',
'z' };

43 // https://www.uuidgenerator.net/
44
45 // The remote service we wish to connect to.
46 //static BLEUUID serviceUUID("4fafc201-1fb5-459e-8fcc-
c5c9c331914b");
47 static BLEUUID serviceUUID_1("4fafc201-1fb5-459e-8fcc-
c5c9c331914b"); // Server 1
48 static BLEUUID serviceUUID_2("6fd92e07-8b82-4b0e-8d6a-
6d3232f7cb38"); // Server 2
49 static BLEUUID serviceUUID_3("b2f8bec5-2d21-4851-95cc-
3c708aee09d1"); // Server 3
50 static BLEUUID serviceUUID_4("548bd48b-a78e-4974-bffb-
be7fccfb8d47"); // Server 4
61 BLEUUID serviceUUIDArr[4] = { serviceUUID_1, serviceUUID_2,
serviceUUID_3, serviceUUID_4 };
62
63 // The characteristic of the remote service we are interested in.
64 //static BLEUUID charUUID("beb5483e-36e1-4688-b7f5-
ea07361b26a8");
65 static BLEUUID charUUID_Data_1("beb5483e-36e1-4688-b7f5-
ea07361b26a8"); // Data Ultrasonik 1
66 static BLEUUID charUUID_Data_2("c6e484a0-42a5-4559-a27c-
3311bd77ff6d"); // Data Ultrasonik 2
67 static BLEUUID charUUID_Data_3("5f973250-794e-4bf2-a42a-
2ab667d719d4"); // Data Infrared 1
68 static BLEUUID charUUID_Data_4("7f4b38d1-49c3-4ad2-a5b6-
5458bacf15fa"); // Data Infrared 2
69 BLEUUID charUUIDArr[4] = { charUUID_Data_1, charUUID_Data_2,
charUUID_Data_3, charUUID_Data_4 };
70
71 //static boolean doConnect = false;
72 //static boolean connected = false;
73 //static boolean doScan = false;
74
75 static BLERemoteCharacteristic* pRemoteCharacteristic;
76 static BLEAdvertisedDevice* myDevice;
77 BLEClient* pClient;
78 BLEScan* pBLEScan;
79 BLEScanResults scannedDevices;
80
81 typedef struct {
82 String namaServerPengirimData;
83 String dataUltrasonik_1;

63
84 String dataUltrasonik_2;
85 String dataIR_1;
86 String dataIR_2;
87 }SERVER_DATA;
88 SERVER_DATA sd1;
89
90 typedef struct {
91 bool firstConnect;
92 uint8_t firstConnectCounter;
93 uint16_t idClient;
94 }CLIENT_DATA;
95 CLIENT_DATA dataClient_0 = { true, 0, 0 };
96
97 bool pertamaConnect = true;
98 uint16_t currentConnId;
99
100
101 std::map<uint16_t, BLEAddress> listPeer;
102
103 static void notifyCallback(
104 BLERemoteCharacteristic* pBLERemoteCharacteristic,
105 uint8_t* pData,
106 size_t length,
107 bool isNotify) {
108 Serial.print("Notify callback for characteristic ");
109 Serial.print(pBLERemoteCharacteristic-
110 >getUUID().toString().c_str());
111 Serial.print(" of data length ");
112 Serial.println(length);
113 Serial.print("data: ");
114 Serial.println((char*)pData);
115 }
116
117
118 class MyClientCallback : public BLEClientCallbacks {
119 void onConnect(BLEClient* pclient) {
120 Serial.println("onConnect");
121 isDisconnected = false;
122 }
123
124 void onDisconnect(BLEClient* pclient) {
125 //connected = false;
126 Serial.println("onDisconnect");
127 isDisconnected = true;
128 }
129 };
130
131 MyClientCallback* pMyClientCallback;
132
133 void printNamaData(uint8_t dataType) {
134 switch (dataType) {
135 case DATA_ULTRASONIK_1:
136 Serial.println("DATA ULTRASONIK 1");
137 break;
138 case DATA_ULTRASONIK_2:
139 Serial.println("DATA ULTRASONIK 2");
140 break;
141 case DATA_INFRARED_1:
142 Serial.println("DATA INFRARED 1");
143 break;
144 case DATA_INFRARED_2:
145 Serial.println("DATA INFRARED 2");
146 break;
147 default:
148 break;

64
149 }
150 }
151
152 void printNamaServer(uint8_t serverType) {
153 switch (serverType) {
154 case NONE:
155 Serial.println("SERVER_NONE");
156 break;
157 case SERVER_1:
158 Serial.println("SERVER_1");
159 break;
160 case SERVER_2:
161 Serial.println("SERVER_2");
162 break;
163 case SERVER_3:
164 Serial.println("SERVER_3");
165 break;
166 case SERVER_4:
167 Serial.println("SERVER_4");
168 break;
169 default:
170 break;
171 }
172 }
173
174 bool connectToServer(uint8_t serverType) {
175 Serial.print("Forming a connection to ");
176 Serial.println(myDevice->getAddress().toString().c_str());
177
178 pClient = BLEDevice::createClient();
179 Serial.print(" - Created client of ");
180 printNamaServer(serverType);
181 pClient->setClientCallbacks(pMyClientCallback);
182
183 if (pClient->isConnected()) {
184 pClient->disconnect();
185 delay(1000);
186 pClient->connect(myDevice);
187 }
188 else {
189 pClient->connect(myDevice);
190 }
191 delay(1000);
192
193 while (isDisconnected) {
194 pClient->connect(myDevice);
195 delay(50);
196 }
197 delay(1000);
198
199 //Serial.println("FLAG_1");
200
201 // Memastikan koneksi ke Server sesuai dengan serverType
202 BLERemoteService* pRemoteService = NULL;
203 switch (serverType) {
204 case NONE:
205 Serial.println("\n\n--------- ERROR NONE ---------\n\n");
206 return false;
207 break;
208 case SERVER_1:
209 pRemoteService = pClient->getService(serviceUUID_1);
210 if (pRemoteService == nullptr) { // Jika tidak menemukan
211 server 1
212 Serial.print("Failed to find our serviceUUID_1: ");
213 Serial.println(serviceUUID_1.toString().c_str());

65
214 pClient->disconnect();
215 return false;
216 }
217 Serial.print(" - Found our service on ");
218 printNamaServer(serverType);
219 break;
220 case SERVER_2:
221 pRemoteService = pClient->getService(serviceUUID_2);
222 if (pRemoteService == nullptr) { // Jika tidak menemukan
223 server 2
224 Serial.print("Failed to find our serviceUUID_2: ");
225 Serial.println(serviceUUID_2.toString().c_str());
226 pClient->disconnect();
227 return false;
228 }
229 Serial.print(" - Found our service on ");
230 printNamaServer(serverType);
231 break;
232 case SERVER_3:
233 pRemoteService = pClient->getService(serviceUUID_3);
234 if (pRemoteService == nullptr) { // Jika tidak menemukan
235 server 3
236 Serial.print("Failed to find our serviceUUID_3: ");
237 Serial.println(serviceUUID_3.toString().c_str());
238 pClient->disconnect();
239 return false;
240 }
241 Serial.print(" - Found our service on ");
242 printNamaServer(serverType);
243 break;
244 case SERVER_4:
245 pRemoteService = pClient->getService(serviceUUID_4);
246 if (pRemoteService == nullptr) { // Jika tidak menemukan
247 server 4
248 Serial.print("Failed to find our serviceUUID_4: ");
249 Serial.println(serviceUUID_4.toString().c_str());
250 pClient->disconnect();
251 return false;
252 }
253 Serial.print(" - Found our service on ");
254 printNamaServer(serverType);
255 break;
256 default:
257 Serial.println("\n\n--------- ERROR DEFAULT ---------
258 \n\n");
259 return false;
260 }
261
262 //Serial.println("FLAG_2");
263
264 Serial.print("CONNECTION ID : "); Serial.println(pClient-
265 >getConnId());
266
267 uint8_t kegagalanMembacaData = 0;
268 // Menggapai karakteristik data pada BLE serverType
269 for (uint8_t i = 0; i < NUMBER_OF_DATA; i++) {
270 pRemoteCharacteristic = pRemoteService-
271 >getCharacteristic(charUUIDArr[i]);
272 if (pRemoteCharacteristic == nullptr) {
273 Serial.print("Failed to find our characteristic UUID :
274 ");
275 Serial.println(charUUIDArr[i].toString().c_str());
276 printNamaData(i);
277 kegagalanMembacaData++;
278 }

66
279 else {
280 Serial.print("Succeed to find our characteristic UUID
281 : ");
282 printNamaData(i);
283 if (pRemoteCharacteristic-
284 >getUUID().equals(charUUIDArr[i])) { // Jika karakteristik sesuai
285 dengan karakterisik yang diinginkan
286 Serial.print(" - Found our characteristic value ");
287 printNamaData(i);
288 // Baca Data
289 if (pRemoteCharacteristic->canRead()) {
290 //std::string value = pRemoteCharacteristic-
291 >readValue();
292 uint32_t value = pRemoteCharacteristic-
293 >readUInt32();
294 Serial.print("The characteristic value was: ");
295 //Serial.println(value.c_str());
296 Serial.println(value);
297 kirimData(serverType, i, value);
298 }
299 }
300 }
301 }
302
303 if (kegagalanMembacaData > 2) {
304 Serial.println("\n\n\npClient->disconnect(); di
305 kegagalanMembacaData\n\n\n");
306 pClient->disconnect();
307 return false;
308 }
309 else {
310 Serial.println("\n\n\npClient->disconnect(); di ELSE
311 kegagalanMembacaData\n\n\n");
312 pClient->disconnect();
313 return true;
314 }
315
316 if (pRemoteCharacteristic->canNotify()) {
317 Serial.println("\n\ncanNotify() connectToServer()");
318 pRemoteCharacteristic->registerForNotify(notifyCallback);
319 }
320
321 return true;
322 }
323
324 void kirimData(uint8_t nomorServer, uint8_t nomorData, uint32_t
325 data) {
326 switch (nomorServer) {
327 case SERVER_1:
328 if (nomorData == DATA_ULTRASONIK_1) {
329 if (data > SERV1_ULTRA1_MIN && data < SERV1_ULTRA1_MAX)
330 {
331 dataSlot[1] = '1';
332 }
333 else {
334 dataSlot[1] = '0';
335 }
336 }
337 else if (nomorData == DATA_ULTRASONIK_2) {
338 if (data > SERV1_ULTRA2_MIN && data < SERV1_ULTRA2_MAX)
339 {
340 dataSlot[2] = '1';
341 }
342 else {
343 dataSlot[2] = '0';

67
344 }
345 }
346 break;
347 case SERVER_2:
348 if (nomorData == DATA_ULTRASONIK_1) {
349 if (data > SERV2_ULTRA1_MIN && data < SERV2_ULTRA1_MAX)
350 {
351 dataSlot[3] = '1';
352 }
353 else {
354 dataSlot[3] = '0';
355 }
356 }
357 else if (nomorData == DATA_ULTRASONIK_2) {
358 if (data > SERV2_ULTRA2_MIN && data < SERV2_ULTRA2_MAX)
359 {
360 dataSlot[4] = '1';
361 }
362 else {
363 dataSlot[4] = '0';
364 }
365 }
366 break;
367 case SERVER_3:
368 if (nomorData == DATA_ULTRASONIK_1) {
369 if (data > SERV3_ULTRA1_MIN && data < SERV3_ULTRA1_MAX)
370 {
371 dataSlot[5] = '1';
372 }
373 else {
374 dataSlot[5] = '0';
375 }
376 }
377 else if (nomorData == DATA_ULTRASONIK_2) {
378 if (data > SERV3_ULTRA2_MIN && data < SERV3_ULTRA2_MAX)
379 {
380 dataSlot[6] = '1';
381 }
382 else {
383 dataSlot[6] = '0';
384 }
385 }
386 break;
387 case SERVER_4:
388 if (nomorData == DATA_INFRARED_1) {
389 if (data == 1) {
390 dataSlot[7] = '0';
391 }
392 else {
393 dataSlot[7] = '1';
394 }
395 }
396 else if (nomorData == DATA_INFRARED_2) {
397 if (data == 1) {
398 dataSlot[8] = '0';
399 }
400 else {
401 dataSlot[8] = '1';
402 }
403 }
404 break;
405 default:
406 break;
407 }
408

68
409 //Serial2.begin(9600);
410 while (!Serial2) {};
411 for (uint8_t i = 0; i < 10; i++) {
412 Serial2.write(dataSlot[i]);
413 }
414 //Serial2.end();
415 }
416
417
418 /**
419 * Scan for BLE servers and find the first one that advertises the
420 service we are looking for.
421 */
422 class MyAdvertisedDeviceCallbacks : public
423 BLEAdvertisedDeviceCallbacks {
424 /**
425 * Called for each advertising BLE server.
426 */
427 void onResult(BLEAdvertisedDevice advertisedDevice) {
428 Serial.print("BLE Advertised Device found: ");
429 Serial.println(advertisedDevice.toString().c_str());
430 }
431 };
432
433 bool isDeviceScanned(BLEScanResults& scannedDev, uint8_t
434 tipeServer) {
435
436 int count = scannedDev.getCount();
437 for (int16_t i = 0; i < count; i++) {
438 if (scannedDev.getDevice(i).haveServiceUUID()) { //
439 Apakah device yang ke-i memiliki service UUID ?
440 switch (tipeServer) {
441 case NONE:
442 break;
443 case SERVER_1:
444 if
445 (scannedDev.getDevice(i).isAdvertisingService(serviceUUID_1)) {
446 // Apakah service UUID device yang ke-i sama serperti serviceUUID_1
447 //BLEDevice::getScan()->stop();
448 myDevice = new
449 BLEAdvertisedDevice(scannedDev.getDevice(i));
450 serverConnected = SERVER_1;
451 Serial.print("Terkoneksi ke ");
452 printNamaServer(serverConnected);
453 return true;
454 }
455 break;
456 case SERVER_2:
457 if
458 (scannedDev.getDevice(i).isAdvertisingService(serviceUUID_2)) { //
459 Apakah service UUID device yang ke-i sama serperti serviceUUID_2
460 myDevice = new
461 BLEAdvertisedDevice(scannedDev.getDevice(i));
462 serverConnected = SERVER_2;
463 Serial.print("Terkoneksi ke ");
464 printNamaServer(serverConnected);
465 return true;
466 }
467 break;
468 case SERVER_3:
469 if
470 (scannedDev.getDevice(i).isAdvertisingService(serviceUUID_3)) { //
471 Apakah service UUID device yang ke-i sama serperti serviceUUID_3
472 myDevice = new
473 BLEAdvertisedDevice(scannedDev.getDevice(i));

69
474 serverConnected = SERVER_3;
475 Serial.print("Terkoneksi ke ");
476 printNamaServer(serverConnected);
477 return true;
478 }
479 break;
480 case SERVER_4:
481 if
482 (scannedDev.getDevice(i).isAdvertisingService(serviceUUID_4)) { //
483 Apakah service UUID device yang ke-i sama serperti serviceUUID_4
484 myDevice = new
485 BLEAdvertisedDevice(scannedDev.getDevice(i));
486 serverConnected = SERVER_4;
487 Serial.print("Terkoneksi ke ");
488 printNamaServer(serverConnected);
489 return true;
490 }
491 break;
492 default:
493 break;
494 }
495 Serial.print("\nDevice yang ke-");
496 Serial.print(i);
497 Serial.println(" tidak memiliki serviceUUID yang
498 diinginkan.");
499 }
500 else {
501 Serial.print("\nDevice yang ke-");
502 Serial.print(i);
503 Serial.println(" tidak memiliki serviceUUID.");
504 }
505 }
506 Serial.print("\nTipe Server : ");
507 printNamaServer(tipeServer);
508 Serial.println("\tTIDAK TERDETEKSI PADA JANGKAUAN BLUETOOTH.");
509 return false;
510 }
511
512
513 void setup() {
514 Serial.begin(115200);
515 Serial2.begin(9600);
516
517 Serial.println("Starting Arduino BLE Client application...");
518 BLEDevice::init("CLIENT");
519
520
521
522 // Retrieve a Scanner and set the callback we want to use to be
523 informed when we
524 // have detected a new device. Specify that we want active
525 scanning.
526 pBLEScan = BLEDevice::getScan();
527 pBLEScan->setAdvertisedDeviceCallbacks(new
528 MyAdvertisedDeviceCallbacks());
529 pBLEScan->setInterval(1349);
530 pBLEScan->setWindow(449);
531 pBLEScan->setActiveScan(true);
532 //pBLEScan->start(5, false);
533
534 pertamaConnect = true;
535 } // End of setup.
536
537
538 // This is the Arduino main loop function.

70
539 void loop() {
540 Serial.print("\n\n\n\nSTART SCANNING in ");
541 Serial.print(SCAN_TIME);
542 Serial.println(" SECONDS");
543 scannedDevices = pBLEScan->start(SCAN_TIME, false);
544 Serial.println("STOP SCANNING\n\n");
545
546 Serial.print("Devices found: ");
547 Serial.println(scannedDevices.getCount());
548 Serial.println("Scan done!\n\n");
549
550 for (uint8_t i = SERVER_1; i <= NUMBER_OF_SERVERS; i++) {
561 if (isDeviceScanned(scannedDevices, i)) {
562 Serial.println("\nisDeviceScanned is TRUE.\n");
563
564 // Jika berhasil terkoneksi dengan server yang
diinginkan dan membaca datanya
565 if (connectToServer(serverConnected)) {
Serial.print("BERHASIL TERKONEKSI KE- DAN BERHASIL
MENGAMBIL DATA DARI ");
566 printNamaServer(serverConnected);
567 }
568 else {// Jika gagal terkoneksi dengan server yang
diinginkan dan membaca datanya
569 Serial.print("GAGAL TERKONEKSI KE- DAN GAGAL
MENGAMBIL DATA DARI ");
570 printNamaServer(serverConnected);
571 }
572 }
573 }
574
575 pBLEScan->stop();
576
577 pBLEScan->clearResults();
578 delay(1000);
579 }

71

Anda mungkin juga menyukai