Senin, 05 Oktober 2026

IMPLEMENTASI SISTEM SERVER WEB ASYNCHRONOUS DAN KONTROL KEAMANAN BERBASIS PASSKEY / CLASSIC BLUETOOTH MENGGUNAKAN ESP32

 

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: 

  1. Bagaimana mengonfigurasi dan mengoperasikan mode Wi-Fi dan Bluetooth  Classic secara simultan pada mikrokontroler ESP32? 
  2. Bagaimana mengimplementasikan server web  asynchronous  yang menyajikan  berkas HTML dari kartu SD  Card ? 
  3. 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: 

  1. .  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 ESPIDF. 

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 

  1. .  Inisialisasi Hardware: 
    1. 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: 

    1. 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): 

    1. 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: 

  1. .  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 . 
  2. .  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. 
  3. .  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: 

  1. Mikrokontroler ESP32 mampu mengoperasikan Wi-Fi Station dan Bluetooth  Classic SPP secara simultan untuk membangun antarmuka kontrol dan  pemantauan nirkabel. 
  2. 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. 
  3. 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 

  1. .  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. 
  2. .  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. 
  3. .  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

  1. .  Espressif Systems. 2023.  ESP32 Technical Reference  Manual Version 5.1 .  Espressif Documentation. 
  2. .  Kolban, N. 2018. Kolban's Book on ESP32             . Leanpub  Publishing. 
  3. .  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