LAPORAN PRAKTIKUM INTERNET OF THINGS
MENGENAL ESP32 DAN MODE WIFI - BLUETOOTH
IMPLEMENTASI SISTEM SERVER WEB ASYNCHRONOUS DAN KONTROL
KEAMANAN BERBASIS PASSKEY / CLASSIC BLUETOOTH MENGGUNAKAN
ESP32
Disusun oleh:
Ramdani Mulyadi 24051204137
Naufal Alif Prasetya 24051204126
Syauqi Ihsan Ramadhan 24051204110
Luthfi Fadli Zainuddin 24051204200
BAB I
PENDAHULUAN
1.1 Latar Belakang
Perkembangan
teknologi Internet of Things IoT menuntut integrasi
antara konektivitas nirkabel multi-protokol dengan efisiensi pemrosesan
waktu nyata
( real-time
processing ) .
Mikrokontroler ESP32 yang dikembangkan oleh Espressif Systems menjadi
platform populer dalam aplikasi sistem terbenam ( embedded system )
karena mengintegrasikan modul Wi-Fi 802.11 b/g/n) dan Bluetooth
Classic dan BLE dalam satu chip System-on-Chip SoC dual-core.
Pada
sebagian besar aplikasi kontrol industri dan otomasi rumah, keamanan
akses merupakan prasyarat utama. Penggunaan server web berbasis ESP32
sering kali mengalami kendala latency atau blocking
ketika menangani permintaan HTTP secara bersamaan dengan
pemrosesan kontrol keamanan nirkabel. Oleh karena itu, pendekatan
arsitektur asynchronous diperlukan agar mikrokontroler mampu menangani
antarmuka web, penyimpanan data lokal, dan komunikasi Bluetooth Serial tanpa
terjadi hambatan eksekusi ( non-blocking
) .
Praktikum
Modul IV ini berfokus pada implementasi gabungan antara mode Wi-Fi
Station STA untuk menyajikan Server Web Asynchronous, interaksi file system
FAT32 menggunakan modul SD Card via komunikasi SPI, serta mekanisme
validasi keamanan berbasis Passkey melalui Bluetooth Classic
Serial.
1.2
Rumusan Masalah
Berdasarkan
latar belakang di atas, rumusan masalah dalam praktikum ini adalah:
- Bagaimana mengonfigurasi dan
mengoperasikan mode Wi-Fi dan Bluetooth Classic secara simultan pada
mikrokontroler ESP32?
- Bagaimana mengimplementasikan
server web asynchronous yang menyajikan berkas
HTML dari kartu SD Card ?
- Bagaimana merancang mekanisme
autentikasi keamanan menggunakan perintah Passkey via
Bluetooth Serial untuk mengontrol status relay/LED secara aman?
4. Bagaimana memastikan seluruh siklus eksekusi program berjalan secara non-blocking menggunakan teknik penanganan waktu millis() ?
1.3 Tujuan Praktikum
Tujuan
dari pelaksanaan praktikum ini meliputi:
- . Memahami arsitektur
internal ESP32 terkait kapabilitas Wi-Fi dan Bluetooth
Serial.
2.
.
Mampu menghubungkan ESP32 ke jaringan Wi-Fi lokal dan mengonfigurasi
server web asynchronous berbasis pustaka
ESPAsyncWebServer .
3.
.
Mampu melakukan integrasi antarmuka SPI untuk membaca dan menampilkan
berkas situs web dari MicroSD Card terformat FAT32.
4.
.
Menerapkan logika validasi keamanan Passkey via Bluetooth Serial SPP untuk menggerakkan
aktuator/indikator.
5.
.
Menganalisis stabilitas performa sistem nirkabel hybrid Wi-Fi +
Bluetooth) pada mikrokontroler single/dual core.
1.4 Batasan Sistem
Batasan
dalam sistem yang dirancang pada praktikum ini adalah:
- Mikrokontroler yang digunakan
adalah ESP32 WROOM32 Development Board.
- Komunikasi Wi-Fi beroperasi
pada mode Station STA dengan standar 2.4 GHz.
- Protokol Bluetooth yang
digunakan adalah Bluetooth Classic Serial Port Profile SPP, bukan
Bluetooth Low Energy BLE.
- Modul penyimpanan eksternal
berupa MicroSD Adapter berbasis Antarmuka SPI dengan sistem berkas
FAT32 (maksimal ukuran partisi 32 GB.
- Indikator fisik representasi
sistem keamanan menggunakan LED/Relay terhubung pada pin GPIO
tertentu.
BAB II
DASAR TEORI
2.1
Arsitektur Mikrokontroler ESP32
ESP32
menggunakan prosesor Tensilica Xtensa Dual-Core 32-bit LX6 dengan
kecepatan clock hingga 240 MHz. Mikrokontroler ini memiliki memori SRAM
internal sebesar 520 KB dan flash eksternal berukuran 4 MB hingga 16 MB.
Keunggulan utama ESP32 terletak pada integrasi sirkuit radio RF yang
mendukung konektivitas Wi-Fi dan Bluetooth dalam satu silikon, yang
dikelola melalui tumpukan pustaka driver Espressif IoT Development
Framework ESPIDF.
2.2 Mode Operasi Wi-Fi pada ESP32
ESP32
mendukung tiga mode operasi utama Wi-Fi:
- Station STA ESP32 bertindak sebagai
klien yang terhubung ke Wi-Fi Access Point
Router/Hotspot).
- Access Point APIESP32 bertindak sebagai titik
akses yang memancarkan jaringan nirkabel sendiri, memungkinkan
klien lain terhubung kepadanya.
- Dual Mode AP + STA ESP32 beroperasi
sekaligus sebagai klien dari jaringan luar dan sebagai
pemancar titik akses lokal.
Pada
praktikum ini, mode Station STA digunakan untuk
mendapatkan alamat IP dinamis/statis dari jaringan lokal guna menyajikan
server web.
2.3 Protokol Bluetooth Classic BR/EDR dan
BLE
ESP32
mendukung dua varian Bluetooth:
1 . Bluetooth
Classic Basic Rate / Enhanced Data Rate): Menggunakan Serial
Port Profile SPP untuk emulasi antarmuka RS232/UART secara transparan.
Sangat cocok untuk transfer data streaming berkelanjutan dan komunikasi
dua arah sederhana dengan aplikasi Android/PC.
2. Bluetooth
Low Energy BLE Berfokus pada konsumsi daya sangat rendah dengan
metode komunikasi berbasis atribut ( GATT
Profiles ) .
Praktikum
ini memanfaatkan Bluetooth Classic SPP melalui
pustaka BluetoothSerial.h , yang memungkinkan pengiriman
perintah teks (seperti Passkey) secara interaktif melalui aplikasi
terminal Bluetooth di ponsel pintar.
2.4
Server Web Asynchronous dan SD Card File System
Server
HTTP konvensional (synchronous) memproses satu permintaan dari klien
hingga selesai sebelum menerima permintaan berikutnya, yang dapat
mengakibatkan kemacetan (blocking) pada loop utama program. Pustaka
ESPAsyncWebServer berbasis AsyncTCP memungkinkan penanganan
banyak koneksi HTTP secara paralel ( concurrent )
menggunakan event-driven callbacks .
Integrasi
dengan SD Card File System menggunakan protokol Serial
Peripheral Interface SPI memungkinkan pemisahan antara
kode program C++ ( firmware ) dan antarmuka pengguna HTML,
CSS, JS. File disimpannya dalam format FAT32 dan dibaca langsung oleh
server web asynchronous untuk dikirimkan ke peramban
klien.
BAB III
PERANCANGAN DAN IMPLEMENTASI
3.1 Gambaran
Sistem
Sistem
yang dibangun menggabungkan dua alur kendali:
1 . Alur
Web Server: Pengguna mengakses IP ESP32 melalui peramban
web. ESP32 membaca berkas index.html dari SD Card
melalui jalur SPI dan mengirimkannya ke klien secara asynchronous
.
2. Alur
Kontrol Keamanan Bluetooth: Pengguna terhubung ke ESP32 via
Bluetooth Serial. Pengguna memasukkan kata sandi ( Passkey )
. Jika Passkey benar, ESP32 memvalidasi data,
menyalakan indikator akses LED/Relay), dan mencatat log kejadian ke
berkas access_log.csv di SD Card.
3.2 Komponen yang Digunakan
|
3.3 Konfigurasi Pin |
||
|
Komponen Hardware |
Pin ESP32 GPIO |
Fungsi Pin |
|
MicroSD Adapter CS |
GPIO 5 |
Chip Select SPI |
|
MicroSD Adapter SCK |
GPIO 18 |
Serial Clock SPI |
|
MicroSD Adapter MOSI |
GPIO 23 |
Master Out Slave In SPI |
|
MicroSD Adapter MISO |
GPIO 19 |
Master In Slave Out SPI |
|
Indikator Terkunci Red LED |
GPIO 2 |
Indikator Akses Ditolak / Locked |
|
Indikator Terbuka Green LED /
Relay) |
GPIO 4 |
Indikator Akses Diterima / Unlocked |
3.4 Alur Kerja Program
- . Inisialisasi
Hardware:
- Konfigurasi Serial Monitor
115200 bps).
○
Inisialisasi Pin Output GPIO 2 dan GPIO 4.
○
Inisialisasi SD Card via SPI. Kembalikan eror jika SD Card tidak
terdeteksi.
○
Inisialisasi Bluetooth Serial dengan nama perangkat
"ESP32_Secure_Gate" .
○
Inisialisasi Wi-Fi Station Mode dan hubungkan ke SSID target.
2.
.
Penyajian Web Server:
- Daftarkan route /
untuk membaca dan membalas dengan berkas /index.html
dari SD Card.
○
Jalankan Server Web Async ( server.begin() ) .
3.
.
Loop Utama Non-Blocking Process):
- Periksa apakah ada data masuk
dari Bluetooth Serial Port.
○ Jika ada teks masuk, baca
hingga batas newline ( \n ).
○
Cocokkan teks masukan dengan Passkey rahasia (contoh:
"SECURE123" ) .
○
Jika Cocok :
Nyalakan LED Hijau GPIO 4, matikan LED Merah GPIO 2, kirim respon "ACCESS
GRANTED" , catat timestamp dan log pada SD
Card.
○
Jika Salah : Nyalakan LED
Merah GPIO 2, matikan LED Hijau GPIO 4, kirim respon "ACCESS
DENIED" , catat kegagalan pada SD Card.
3.5 Implementasi Program
Berikut
adalah kode sumber C++ lengkap yang diimplementasikan pada Arduino IDE
untuk ESP32#include Arduino.h>
#include
<ESPAsyncWebServer.h>
#include
<FS.h>
#include
<SD.h>
#include
<SPI.h>
#include
<BluetoothSerial.h>
#define SD_CS_PIN 5
#define LED_LOCKED 2
#define LED_UNLOCKED
4
const char* ssid =
"NAMA_WIFI_ANDA"; const char* password =
"PASSWORD_WIFI_ANDA"; const String SECRET_PASSKEY =
"SECURE123";
AsyncWebServer
server(80);
BluetoothSerial
SerialBT;
void
appendFile(fs::FS &fs, const char *path, const char *message) {
File
file = fs.open(path, FILE_APPEND); if (!file) return;
file.print(message); file.close(); }
void setup() {
Serial.begin(115200);
pinMode(LED_LOCKED, OUTPUT); pinMode(LED_UNLOCKED, OUTPUT);
digitalWrite(LED_LOCKED, HIGH); digitalWrite(LED_UNLOCKED, LOW);
if
(!SD.begin(SD_CS_PIN)) return;
SerialBT.begin("ESP32_Secure_Gate");
WiFi.mode(WIFI_STA);
WiFi.begin(ssid,
password); while (WiFi.status() != WL_CONNECTED) {
delay(500); }
server.on("/",
HTTP_GET, [](AsyncWebServerRequest *request) { if
(SD.exists("/index.html")) request->send(SD,
"/index.html", "text/html"); else
request->send(404, "text/plain", "index.html
tidak ditemukan.");
});
server.begin(); }
void loop() {
if
(SerialBT.available()) {
String
incomingData = SerialBT.readStringUntil('
');
incomingData.trim();
if
(incomingData == SECRET_PASSKEY) {
digitalWrite(LED_LOCKED, LOW); digitalWrite(LED_UNLOCKED,
HIGH); SerialBT.println("ACCESS GRANTED");
String
logData = "SUCCESS;Passkey Verified;" + String(millis()) +
"\n"; appendFile(SD,
"/access_log.csv", logData.c_str());
}
else { digitalWrite(LED_LOCKED, HIGH);
digitalWrite(LED_UNLOCKED, LOW);
SerialBT.println("ACCESS DENIED");
String
logData = "FAILED;Wrong Key;" + String(millis()) + "\n";
appendFile(SD, "/access_log.csv",
logData.c_str());
}
}
}
BAB IV
HASIL DAN ANALISIS
4.1 Hasil Pengujian
Sistem
Pengujian
dilakukan secara bertahap meliputi konektivitas jaringan, penyajian
halaman web, dan fungsionalitas validasi keamanan Bluetooth.
Gambar
2. Tampilan Antarmuka Web Otentikasi Passkey ESP32
Gambar
3. Tampilan Hasil Otentikasi Berhasil Access Granted) dan Pengujian
Buzzer
4.2
Analisis Logika Validasi dan Performa Non-Blocking
Penggunaan
pustaka ESPAsyncWebServer terbukti menjaga kestabilan sistem
secara keseluruhan. Ketika beberapa perangkat klien mengakses halaman web
secara bersamaan melalui Wi-Fi, lalu lintas data HTTP dikelola pada latar
belakang ( background task ) berbasis peristiwa ( event ).
Hal ini membuat fungsi loop() utama tetap responsif
dalam memantau buffer SerialBT.available().
Validasi
Passkey menggunakan pencocokan string secara konstan melalui
perbandingan incomingData == SECRET_PASSKEY . Proses ini
memerlukan penghapusan karakter ekstra seperti carriage return ( \r
) atau line feed ( \n )
menggunakan
metode .trim() agar terhindar dari keteledoran pembacaan data
serial.
4.3 Keterbatasan Rancangan
Meskipun
sistem bekerja sesuai spesifikasi, terdapat beberapa keterbatasan teknis:
- . Pembagian Antena RF
Coexistence Issue): Jalur Wi-Fi dan Bluetooth
Classic berbagi modul radio RF 2.4 GHz yang sama pada ESP32.
Penggunaan Bluetooth Classic berkecepatan tinggi secara kontinu
bersamaan dengan akses file web berat dapat menurunkan throughput
Wi-Fi atau menyebabkan latency jitter .
- . Keamanan Transmisi
Bluetooth Classic: Data Passkey dikirimkan
dalam bentuk teks polos ( plaintext
) melalui koneksi
Serial Port Profile SPP tanpa enkripsi tambahan pada lapisan
aplikasi, sehingga rentan terhadap aksi penyadapan ( eavesdropping ) pada jarak jangkauan radio
Bluetooth.
- . Penyimpanan FAT32 Sistem
berkas FAT32 pada SD Card tidak memiliki mekanisme proteksi
terhadap kegagalan daya ( power loss corruptions ).
Jika catu daya terputus saat fungsi appendFile()
menulis ke access_log.csv , berkas berisiko
mengalami kerusakkan struktural.
BAB V
PENUTUP
5.1
Kesimpulan
Dari
praktikum yang telah dilaksanakan, dapat disimpulkan bahwa:
- Mikrokontroler ESP32 mampu
mengoperasikan Wi-Fi Station dan Bluetooth Classic SPP secara
simultan untuk membangun antarmuka kontrol dan pemantauan
nirkabel.
- Penggunaan arsitektur
ESPAsyncWebServer dikombinasikan dengan pembacaan berkas
HTML dari MicroSD Card via SPI efektif dalam menghadirkan antarmuka
pengguna berbasis web tanpa mengganggu performa pemrosesan
utama.
- Kontrol keamanan berbasis Passkey
via Bluetooth Serial berhasil menggerakkan status
keluaran GPIO LED/Relay) dan mampu mencatat seluruh log riwayat
akses secara aman ke dalam berkas log CSV lokal di SD Card.
5.2 Saran
- . Untuk pengamanan lebih
lanjut, implementasikan enkripsi tingkat tinggi seperti hashing
SHA256pada Passkey sebelum dikirimkan via Bluetooth, atau migrasikan
ke protokol Bluetooth Low Energy BLE dengan enkripsi bawaan.
- . Pertimbangkan
penggunaan FreeRTOS Tasks untuk memisahkan
fungsi penanganan Web Server pada Core 0 dan pemrosesan Bluetooth
Keamanan pada Core 1 guna memaksimalkan performa dual-core
ESP32.
- . Tambahkan komponen
modul RTC Real Time Clock) seperti DS3231 agar timestamp log pada SD Card
menggunakan waktu nyata akurat ( real-time clock ) alih-alih waktu operasi internal ( millis()
) .
DAFTAR PUSTAKA
- . Espressif Systems.
2023. ESP32 Technical Reference Manual Version 5.1
. Espressif Documentation.
- . Kolban, N. 2018. Kolban's
Book on ESP32 . Leanpub Publishing.
- . Schwartz, M. 2016. Internet
of Things with ESP32 . Packt Publishing.
4.
Santos, R., & Santos, S. 2021. ESP32 Web Server with MicroSD Card .
Random Nerd Tutorials.
6.1
Struktur File pada SD Card FAT32
SD_CARD_ROOT/
├── index.html
└──
access_log.csv
6.2
Isi Berkas CSV (access_log.csv)
|
STATUS |
DETAILS |
TIMESTAMP_MS |
|
SUCCESS |
Passkey
Verified |
14502 |
|
FAILED |
Wrong Key: 1234 |
28910 |
|
SUCCESS |
Passkey
Verified |
45120 |
Versi
revisi ini mempertahankan topik, komponen, konfigurasi pin, alur program, hasil
pengujian, keterbatasan, dan daftar pustaka dari laporan sumber, sambil
memperbaiki tata letak, keterbacaan, konsistensi istilah, format kode, serta
ketepatan pembahasan non-blocking.
Tidak ada komentar:
Posting Komentar