Sistem Absensi Edge AI Berbasis Arduino UNO Q dengan Deteksi Anti-Spoofing
Ringkasan Proyek
Proyek ini membuat sistem absensi otomatis berbasis pengenalan wajah menggunakan Arduino UNO Q dan teknologi Edge AI. Sistem memanfaatkan model AI YuNet untuk mendeteksi wajah, SFace untuk mengenali identitas, serta MiniFASNet untuk mendeteksi wajah palsu dari foto atau layar smartphone. Dengan optimasi OpenCV, sistem mampu memproses satu siklus deteksi dan verifikasi dalam sekitar 0,12 detik, menggunakan RAM hanya sekitar 200 MB, serta menyimpan catatan kehadiran secara otomatis dalam file CSV.
Bahan & Komponen
Daftar perangkat keras, modul, dan tools yang dibutuhkan untuk merakit proyek ini.
Daftar Komponen & Perangkat Keras
- 1x Arduino UNO Q (Board utama yang menggabungkan Qualcomm Dragonwing QRB2210 MPU berbasis Linux dan STM32 MCU untuk pemrosesan AI serta pengendalian perangkat keras secara real-time).
- 1x Camera (Generic) (Kamera untuk menangkap gambar wajah pengguna secara langsung).
- 1x ILI9341 TFT LCD Display (Layar untuk menampilkan hasil pengenalan wajah, peringatan spoof, dan informasi cooldown).
- Kabel USB untuk Arduino UNO Q (Digunakan untuk menghubungkan board ke komputer dan menyediakan daya sesuai kebutuhan board).
- Kabel jumper dan konektor pendukung (Untuk menghubungkan LCD dan perangkat tambahan ke board).
Software, Framework, dan Library
- Arduino App Lab (Lingkungan pengembangan untuk menjalankan aplikasi Python dan firmware C++ pada Arduino UNO Q).
- Python (Bahasa pemrograman utama untuk menjalankan pipeline Edge AI).
- OpenCV (Library computer vision untuk pemrosesan gambar, deteksi wajah, dan inferensi model DNN).
- OpenCV DNN (Modul untuk menjalankan model AI ONNX secara langsung tanpa overhead framework yang berat).
- DeepFace (Framework yang digunakan pada tahap benchmarking untuk membandingkan performa model pengenalan wajah).
- YuNet (Model ringan untuk mendeteksi wajah pada gambar kamera).
- SFace (Model pengenalan wajah yang menghasilkan embedding berukuran 128 dimensi).
- MiniFASNet (Model anti-spoofing untuk membedakan wajah manusia sungguhan dengan foto atau tampilan layar).
- ONNX Runtime / Model ONNX melalui OpenCV DNN (Format dan mekanisme pemuatan model AI untuk inferensi lokal).
- Arduino App Lab RPC Bridge (Jembatan komunikasi Remote Procedure Call antara aplikasi Python pada Linux MPU dan firmware C++ pada STM32).
- SPI Display Library (Library komunikasi SPI untuk mengendalikan LCD ILI9341 dari STM32).
- CSV File Handling (Mekanisme penyimpanan riwayat kehadiran dalam attendance_log.csv).
Model AI yang Digunakan
- YuNet ONNX (Deteksi wajah dengan resolusi pemrosesan 320 x 320 piksel).
- SFace ONNX (Pengenalan identitas berdasarkan embedding wajah 128 dimensi).
- MiniFASNet ONNX (Pemeriksaan liveness untuk mencegah manipulasi absensi menggunakan foto atau layar digital).
Langkah Pembuatan
Khusus MemberPanduan perakitan tahap demi tahap dan catatan proses pengerjaan.
Proyek ini mengembangkan sistem absensi otomatis menggunakan teknologi Edge AI. Berbeda dari sistem absensi berbasis cloud, seluruh proses deteksi dan pengenalan wajah dilakukan langsung pada Arduino UNO Q. Board ini memiliki dua bagian pemrosesan utama: Qualcomm Dragonwing QRB2210 yang menjalankan Linux untuk aplikasi Python dan AI, serta STM32 MCU untuk pengendalian perangkat keras secara real-time.
Langkah 1: Mengenal Arduino UNO Q
Siapkan Arduino UNO Q sebagai pusat pemrosesan sistem. Board ini memiliki arsitektur dual-brain yang menggabungkan Qualcomm Dragonwing QRB2210 MPU dan STM32 MCU.
Qualcomm MPU menjalankan Linux dan bertanggung jawab atas pemrosesan gambar, deteksi wajah, pengenalan identitas, serta anti-spoofing. Sementara itu, STM32 menangani tugas real-time seperti pengendalian LCD ILI9341.
Gunakan Arduino App Lab untuk mengembangkan aplikasi Python yang berjalan pada lingkungan Linux dan firmware C++ yang berjalan pada STM32.

Langkah 2: Menyiapkan Kamera dan Perangkat Keras
Hubungkan kamera ke Arduino UNO Q menggunakan antarmuka yang didukung oleh konfigurasi kamera. Kamera digunakan untuk mengambil frame wajah pengguna secara berkelanjutan.
Siapkan LCD ILI9341 sebagai perangkat keluaran visual. Layar ini akan menampilkan nama pengguna ketika berhasil dikenali, peringatan berwarna merah ketika mendeteksi spoof, dan informasi cooldown berwarna oranye.
Pastikan kamera dapat menghasilkan frame gambar yang dapat dibaca oleh aplikasi Python sebelum melanjutkan ke tahap pengembangan AI.

Langkah 3: Melakukan Benchmark Model Pengenalan Wajah
Sebelum memilih model AI, lakukan pengujian beberapa arsitektur pengenalan wajah menggunakan framework DeepFace pada Arduino UNO Q.
Pengujian dilakukan untuk mengetahui waktu inferensi masing-masing model. Hasil pengukuran yang dilaporkan pembuat adalah sebagai berikut:
- VGG-Face: 7,72 detik.
- FaceNet / FaceNet512: sekitar 4,77–4,86 detik.
- GhostFaceNet / ArcFace: sekitar 4,00–4,04 detik.
- OpenFace: 2,40 detik.
- SFace: 1,39 detik.
SFace dipilih karena memberikan kombinasi performa dan akurasi pengenalan yang paling sesuai di antara model yang diuji. Namun, penggunaan DeepFace masih membutuhkan sekitar 1 GB RAM dan 1,4 detik per frame. Oleh karena itu, pipeline perlu dioptimalkan agar cocok untuk pemrosesan Edge AI.
_xdw6IkZGFo.png?auto=compress%2Cformat&w=740&h=555&fit=max)
Langkah 4: Mengoptimalkan Pipeline Menggunakan OpenCV DNN
Ganti pipeline berbasis framework berat dengan implementasi native menggunakan modul OpenCV DNN. Pendekatan ini mengurangi overhead pemrosesan dan penggunaan memori.
Sistem menggunakan tiga model ONNX, yaitu YuNet untuk deteksi wajah, SFace untuk pengenalan wajah, dan MiniFASNet untuk anti-spoofing.
Ketiga model dimuat langsung ke dalam memori ketika aplikasi dimulai. Dengan demikian, aplikasi tidak perlu terus-menerus membaca file model dari penyimpanan ketika sedang melakukan pengenalan wajah.

Langkah 5: Mengimplementasikan Deteksi Wajah Menggunakan YuNet
Gunakan YuNet sebagai model pendeteksi wajah. Model ini dirancang ringan sehingga sesuai untuk perangkat Edge AI dengan sumber daya terbatas.
Frame kamera diperkecil menjadi resolusi 320 x 320 piksel sebelum diproses oleh YuNet. Tujuannya adalah mengurangi beban komputasi saat mencari lokasi wajah.
Hasil deteksi berupa bounding box yang menunjukkan lokasi wajah pada gambar. Informasi ini kemudian digunakan untuk menentukan area wajah yang akan diperiksa lebih lanjut.

Langkah 6: Mengimplementasikan Anti-Spoofing Menggunakan MiniFASNet
Setelah wajah terdeteksi, jalankan MiniFASNet untuk melakukan liveness detection. Fitur ini penting agar sistem tidak mudah dimanipulasi menggunakan foto cetak atau gambar wajah yang ditampilkan pada smartphone.
MiniFASNet menganalisis karakteristik visual wajah untuk menentukan apakah objek yang berada di depan kamera merupakan wajah manusia sungguhan atau media pemalsuan.
Jika terdeteksi sebagai spoof, sistem menolak proses absensi dan memberikan peringatan. Jika pemeriksaan liveness berhasil, proses dapat dilanjutkan menuju pengenalan identitas menggunakan SFace.

Langkah 7: Melakukan Pengenalan Identitas Menggunakan SFace
Gunakan SFace untuk mengenali identitas pengguna yang telah melewati pemeriksaan liveness.
Berbeda dengan deteksi wajah yang menggunakan resolusi rendah, proses pengenalan menggunakan frame berkualitas lebih tinggi dengan resolusi 800 piksel. Hal ini membantu mempertahankan detail wajah yang dibutuhkan oleh model SFace.
SFace menghasilkan representasi numerik wajah atau face embedding berukuran 128 dimensi. Embedding tersebut dibandingkan dengan data wajah yang sudah terdaftar menggunakan nilai similarity threshold.
Jika nilai kemiripan memenuhi ambang batas yang ditentukan, identitas pengguna dianggap cocok. Jika tidak, sistem tidak mencatat kehadiran sebagai identitas yang terverifikasi.
Langkah 8: Mengoptimalkan Resolusi Pemrosesan Gambar
Salah satu optimasi utama proyek ini adalah penggunaan resolusi berbeda untuk deteksi dan pengenalan wajah.
Untuk proses deteksi, sistem menggunakan frame 320 x 320 piksel. Resolusi ini membantu YuNet menemukan wajah dengan cepat dan mengurangi penggunaan memori.
Untuk proses pengenalan, sistem menggunakan frame dengan resolusi 800 piksel. Frame berkualitas lebih tinggi membantu SFace memperoleh informasi wajah yang lebih baik untuk menghasilkan embedding.
Pemisahan resolusi ini memungkinkan sistem mendapatkan keseimbangan antara kecepatan pemrosesan dan kualitas pengenalan.
Langkah 9: Menambahkan Sistem Anti-Spam Cooldown
Setelah identitas berhasil diverifikasi, sistem perlu mencegah pencatatan absensi berulang ketika seseorang terus berada di depan kamera.
Tambahkan mekanisme Anti-Spam Cooldown Timer selama lima menit untuk setiap pengguna. Identitas yang sudah berhasil dicatat disimpan sementara di memori aplikasi.
Jika orang yang sama kembali terdeteksi sebelum lima menit berlalu, sistem tidak membuat catatan kehadiran baru. Sebaliknya, aplikasi menampilkan hitung mundur waktu tunggu yang tersisa.
Setelah lima menit selesai, pengguna dapat melakukan proses absensi kembali sesuai aturan aplikasi.
Langkah 10: Menyimpan Riwayat Kehadiran ke File CSV
Tambahkan fitur Automated CSV Logging untuk menyimpan hasil absensi secara otomatis.
Ketika wajah berhasil melewati pemeriksaan liveness dan memenuhi similarity threshold, aplikasi menyimpan identitas pengguna, tanggal, serta timestamp ke file lokal bernama attendance_log.csv.
File CSV memudahkan pengelolaan data kehadiran menggunakan aplikasi spreadsheet atau program Python lainnya.
Sistem hanya mencatat identitas yang telah terverifikasi. Wajah yang gagal dalam pemeriksaan anti-spoofing tidak boleh menghasilkan catatan kehadiran yang valid.
Langkah 11: Menghubungkan Python dengan STM32 Menggunakan RPC
Untuk memberikan umpan balik langsung kepada pengguna, proyek menggunakan Arduino App Lab RPC Bridge.
Pipeline AI berjalan pada Qualcomm MPU berbasis Linux. Sementara itu, layar ILI9341 dikendalikan secara terpisah oleh STM32 MCU.
Ketika aplikasi Python mendeteksi spoof, mengenali identitas, atau mengaktifkan cooldown, aplikasi mengirimkan perintah melalui RPC ke STM32.
STM32 menerima perintah tersebut dan menjalankan fungsi C++ untuk memperbarui tampilan LCD. Pendekatan ini menjaga agar proses pembaruan tampilan tidak mengganggu proses inferensi AI.
Langkah 12: Mengatur Tampilan LCD ILI9341
Hubungkan LCD ILI9341 dengan STM32 menggunakan antarmuka SPI. Firmware STM32 bertugas menginisialisasi display dan menunggu perintah dari lingkungan Linux melalui RPC.
Gunakan indikator warna untuk membedakan hasil proses absensi:
- Hijau: Wajah berhasil dikenali dan identitas cocok.
- Merah: Sistem mendeteksi upaya spoof menggunakan foto atau layar.
- Oranye: Pengguna sedang berada dalam masa cooldown lima menit.
Ketika identitas berhasil diverifikasi, layar menampilkan nama pengguna secara langsung.
Langkah 13: Menguji Performa Sistem
Jalankan pengujian untuk memastikan pipeline AI dapat bekerja dengan cepat dan stabil.
Menurut hasil pengujian pembuat, optimasi OpenCV berhasil menurunkan penggunaan RAM dari sekitar 1 GB menjadi sekitar 200 MB.
Waktu pemrosesan keseluruhan untuk mendeteksi wajah, melakukan pemeriksaan anti-spoofing, dan mengenali identitas berhasil mencapai sekitar 0,12 detik per frame. Pengujian benchmark 100 kali mencatat waktu sekitar 0,116 detik.
Periksa juga fungsi cooldown, pencatatan CSV, serta pembaruan LCD melalui RPC.
Langkah 14: Menguji Ketahanan terhadap Spoofing
Lakukan pengujian menggunakan wajah manusia secara langsung, foto cetak, dan gambar wajah yang ditampilkan melalui layar smartphone.
Pastikan MiniFASNet dapat memberikan peringatan ketika mendeteksi media pemalsuan. Sistem harus menolak proses absensi ketika pemeriksaan liveness gagal.
Selanjutnya, uji pengenalan terhadap pengguna yang sudah terdaftar. Pastikan identitas yang cocok menghasilkan indikator hijau dan catatan kehadiran pada file attendance_log.csv.
Langkah 15: Evaluasi dan Pengembangan
Setelah semua fitur bekerja, evaluasi akurasi pengenalan wajah, kemampuan anti-spoofing, penggunaan RAM, serta waktu pemrosesan.
Proyek ini menunjukkan bahwa perangkat Edge AI dapat menjalankan sistem pengenalan wajah tanpa harus mengirim seluruh gambar ke layanan cloud. Pemrosesan lokal juga memungkinkan sistem tetap bekerja dengan respons cepat.
Untuk pengembangan lebih lanjut, sistem dapat ditambahkan database pengguna, dashboard administrasi, pengelolaan data kehadiran, enkripsi data, serta mekanisme autentikasi yang lebih kuat.
Catatan dokumentasi gambar: Halaman Hackster yang berhasil diakses menampilkan gambar cover dan beberapa dokumentasi visual berupa hasil benchmark, pencatatan absensi, pengujian MiniFASNet, serta hasil tampilan LCD. Namun, URL CDN Hackster untuk seluruh gambar di dalam komentar HTML tidak berhasil diperoleh. Oleh karena itu, URL gambar langkah tidak dibuat atau ditebak. Gambar cover yang berhasil diverifikasi tersedia pada thumbnail_url.
Buka Seluruh Panduan, Skema & Source Code
Dapatkan akses penuh ke langkah perakitan detail, diagram sirkuit lengkap, dan source code siap pakai. Gratis selamanya!