Capstone Project
K2A — Team 1
Repository komputer edge gateway
https://github.com/arvin-mf/capstone
Sistem Pemantauan Kelelahan Berbasis HRV Dan Suhu Tubuh dengan Implementasi pada Wearable Device
Deskripsi Proyek
Sistem ini melakukan deteksi kelelahan berdasarkan sinyal ECG dari tubuh serta temperatur tubuh. Kondisi kelelahan dideteksi dengan algoritma Support Vector Machine (SVM). Perangkat sistem memberikan peringatan dari buzzer setiap kali subyek terdeteksi mengalami kelelahan. Data-data numerik terkait kondisi subyek disimpan pada sebuah basis data dan ditampilkan dalam sebuah dashboard untuk monitoring.
Fitur Utama
1. Deteksi Kelelahan Real-TimeMenggunakan algoritma Support Vector Machine (SVM) yang ditanamkan langsung pada ESP32 untuk mengklasifikasikan kondisi kelelahan berdasarkan data HRV (dari sinyal ECG) dan suhu tubuh. |
2. Wearable DevicePerangkat wearable dilengkapi dengan sensor ECG AD8232 dan sensor suhu MLX90614, memungkinkan pemantauan kondisi tubuh secara terus-menerus tanpa mengganggu aktivitas pengguna. |
3. Peringatan Otomatis via BuzzerSaat pengguna terdeteksi mengalami kelelahan, sistem akan secara otomatis mengaktifkan buzzer sebagai bentuk peringatan langsung di lapangan. |
4. Visualisasi Data di Dashboard GrafanaSetiap perangkat wearable terhubung dengan sistem monitoring yang menampilkan grafik data kondisi tubuh pengguna secara real-time melalui Grafana. |
5. Manajemen Perangkat dan Subjek KerjaSistem dilengkapi dengan interface pengelola data untuk mengatur alokasi perangkat terhadap subjek (pekerja), serta menampilkan status keaktifan masing-masing wearable secara interaktif. |
|
Latar Belakang dan Tujuan
-
-
- Latar Belakang
- Sebanyak 27,8% kecelakaan kerja di Indonesia dipicu oleh kelelahan (Kemnaker).
- Data ILO tahun 2021 mencatat bahwa 2 juta pekerja meninggal setiap tahun karena kecelakaan yang berhubungan dengan kelelahan.
- Di Jawa Barat saja, terdapat 46.027 kasus kecelakaan kerja (BPJS Ketenagakerjaan, 2022), menunjukkan urgensi pengawasan kondisi pekerja.
- Tujuan
- Merancang sistem monitoring kondisi pekerja secara real-time untuk mendeteksi tanda-tanda kelelahan.
- Mengembangkan sistem notifikasi dini yang efektif untuk meminimalisir risiko kecelakaan kerja akibat kelelahan.
- Latar Belakang
-
Alat yang Digunakan
-
-
- Mikrokontroler, Sumber Daya, Sensor, dan Aktuator
- Mikrokontroler: ESP32
- Sensor ECG: AD82
- Sensor Suhu: MLX90614
- Baterai dan Modul Charger
- Buzzer
- Mikrokontroler, Sumber Daya, Sensor, dan Aktuator
-
-
Grafana
Grafana dipasang pada komputer dashboard dan diakses melalui port3000(default) sebagai penampil visualisasi data-data yang tersimpan pada database. -
Docker
Container-container yang akan diperlukan terdapat pada yaml docker-compose pada repositori program komputer edge gateway, antara lain:
-
- InfluxDB
Digunakan sebagai penyimpanan data time series historikal dari pembacaan sensor-sensor pada setiap perangkat. - Mosquitto
Digunakan sebagai broker MQTT untuk menangani publish data dari ESP32 dan subscribe oleh komputer dashboard. - MySQL
Digunakan sebagai penyimpanan data relasional seputar alat/perangkat dengan subyek yang bekerja di tempat terkait. - Migrate
Digunakan untuk melakukan migrasi database antar komputer yang ingin menjadi komputer dashboard. - Redis
Digunakan untuk penyimpanan data sementara terkait status keaktifan perangkat.
- InfluxDB
-
-
Arsitektur Sistem
Arsitektur sistem dapat diamati dari gambar berikut.
Sistem dapat terdiri dari satu komputer dashboard dan beberapa/banyak perangkat wearable pada subyek.
Pada masing-masing perangkat pada subyek terdapat satu buah mikrokontroler ESP32, sensorAD8232, sensor MLX90614, serta buzzer. Sensor AD8232 dan buzzer melayani input/output kepada ESP32 melalui pin-pin GPIO. Sensor MLX90614 mengirimkan data input digital ke ESP32 melalui protokol I2C.
Berikut adalah wiring diagram dan casing perangkat keras pada setiap perangkat pada subyek. 
Pada ESP32, terdapat bagian program yang melakukan inferensi status kelelahan dengan sejumlah parameter yang diproses dari masukan-masukan sensor. Bagian program tersebut merupakan implementasi dari bobot-bobot dan bias yang didapatkan dari algoritma SVM.
ESP32 sebagai pusat pemrosesan di setiap perangkat pada subyek melakukan publish data ke broker MQTT pada server, atau pada proyek ini yaitu komputer yang menjadi edge gateway. Komputer edge gateway melakukan subscribe topik-topik dari semua ESP32 yang ada (menggunakan wildcard). Data yang diterima pada topik MQTT di-bind pada program di komputer edge gateway untuk diproses/disesuaikan dan disimpan ke database.
Komputer edge gateway dipasangi Grafana untuk penampilan grafik besaran-besaran yang didapatkan dari setiap sensor pada perangkat yang digunakan oleh para subyek. Dashboard pada Grafana tersebut membaca data dari basis data InfluxDB yang menyimpan data time series.
Algoritma Machine Learning
Support Vector Machine
Support Vector Machines (SVM) merupakan algoritma machine learning yang mengklasifikasikan data dengan mencari hyperplane sebagai garis optimal yang membedakan kelas yang ada pada data. Dalam pembentukannya, hyperplane paling optimal ditentukan dengan memaksimalkan margin yaitu jarak antara titik data terdekat dari kelas yang berlawanan.
Data yang digunakan
Berikut adalah gambar contoh pengambilan data pada coolterm.
Data untuk training dan pengujian terletak pada folder /notebooks
Visualisasi data berupa scatter
Gambar berikut menunjukkan visualisasi scatter dari data yang telah dinormalisasi.
Training Model dan Pengujian
Training model dilakukan dengan menggunakan 80% dari jumlah baris data keseluruhan dan 20% dari baris digunakan untuk pengujian. Berikut adalah hasil performa model pada data uji:
Model menunjukkan performa yang sangat baik secara keseluruhan, dengan akurasi tinggi dan F1-score yang stabil. Recall pada kelas minoritas (kelas 1) sedikit lebih rendah.
Edge Gateway
Broker MQTT
Sistem ini menggunakan Mosquitto sebagai broker MQTT yang dijalankan pada komputer edge gateway. Broker dijalankan berupa container Docker dengan image eclipse-mosquitto:2 dengan port 1883.
Topik-topik
Nama-nama topik yang digunakan pada sistem ini antara lain,
-
-
esp32/{MAC_ADDRESS}/discrete
-
untuk transmisi data pengukuran suhu dan hasil perhitungan bpm
-
-
esp32/{MAC_ADDRESS}/continue
-
untuk transmisi data sinyal raw ECG
-
-
esp32/{MAC_ADDRESS}/status
-
untuk transmisi data status keaktifan perangkat
Contoh penerimaan data dari subskripsi topik:
Interface Pengelola Data dari Sensor
Program interface melakukan tugas-tugas antara lain,
-
-
- melakukan subscribe terhadap topik-topik MQTT yang mendapatkan publish dari semua perangkat wearable di tempat
- menerima, mengubah, dan menyediakan data alokasi perangkat terhadap subyek/pekerja dari dashboard status
- melakukan penyesuaian data yang didapatkan dari subskripsi topik MQTT untuk kemudian menyimpannya pada database
-
Program interface ditulis dengan bahasa Go.
Kode program dapat diakses pada repositori ini.
Dashboard
Dashboard Alokasi Perangkat dan Status Kelelahan
Dashboard utama untuk supervisor memantau status kelelahan setiap pekerja dan mengelola perangkat yang digunakan.
Dashboard Monitoring Kondisi Tubuh dan Lingkungan
Visualisasi data historis dari sensor (seperti BPM dan suhu) ditampilkan melalui Grafana untuk analisis tren.












