Penjelasan Program Absensi RFID dan ESP32 (Uji Kompetensi Edition) - 2. Library
Setiap library memiliki peran spesifik dan bekerja sama untuk membuat sistem absensi ini berjalan.
1. LittleFS
#include <LittleFS.h>
- Fungsi Utama: Sistem Berkas (File System). Library ini memungkinkan ESP32 untuk menyimpan dan membaca file di dalam memori flash internalnya, seperti halnya hard disk pada komputer.
- Peran dalam Proyek Ini: Digunakan untuk menyimpan file
config.json. File ini berisi semua pengaturan penting (Wi-Fi, server MQTT, password) agar tidak hilang saat perangkat dimatikan. - Analogi: Lemari arsip digital ESP32. Tempat semua "dokumen" penting disimpan dengan aman.
2. Ticker
#include <Ticker.h>
- Fungsi Utama: Penjadwal Tugas (Task Scheduler). Library ini digunakan untuk menjalankan fungsi tertentu secara berkala (misalnya setiap 1 detik) tanpa menghentikan program utama.
- Peran dalam Proyek Ini: (Menariknya, library ini di-include tetapi tidak digunakan dalam logika utama kode Anda). Kode Anda menggunakan
millis()untuk membuat jeda waktu. Namun,Ticker.hsering digunakan untuk hal-hal seperti membuat LED berkedip atau membaca sensor secara periodik di latar belakang. - Analogi: Alarm berulang. Anda bisa mengaturnya untuk berbunyi setiap 5 menit, sementara Anda tetap bisa melakukan pekerjaan lain.
3. WiFi
#include <WiFi.h>
- Fungsi Utama: Kontrol Wi-Fi. Ini adalah library inti untuk semua fungsi yang berhubungan dengan Wi-Fi di ESP32 (pengganti
ESP8266WiFi.h). - Peran dalam Proyek Ini: Digunakan untuk terhubung ke jaringan Wi-Fi (
WiFi.begin()), mengecek status koneksi, dan mendapatkan alamat IP serta alamat MAC perangkat. - Analogi: Driver kartu jaringan. Ini adalah perangkat lunak dasar yang memungkinkan ESP32 "berbicara" dengan router Wi-Fi.
4. DNSServer
#include <DNSServer.h>
- Fungsi Utama: Server DNS (Domain Name System). Library ini membuat ESP32 bertindak sebagai server DNS kecil.
- Peran dalam Proyek Ini: Digunakan secara internal oleh
WiFiManager. Saat Anda terhubung ke hotspotAbesensiRFID, server DNS ini memastikan bahwa apa pun alamat web yang Anda ketik di browser, Anda akan diarahkan ke halaman konfigurasi ESP32. - Analogi: Pramusaji di pintu masuk restoran. Tidak peduli siapa yang Anda cari, pramusaji akan selalu mengarahkan Anda ke meja pendaftaran.
5. WebServer
#include <WebServer.h>
- Fungsi Utama: Server Web. Library ini memungkinkan ESP32 untuk membuat server HTTP sederhana yang bisa melayani halaman web.
- Peran dalam Proyek Ini: Juga digunakan secara internal oleh
WiFiManager. Library ini yang bertanggung jawab membuat dan menyajikan halaman HTML (form isian) tempat Anda memasukkan detail Wi-Fi dan MQTT. - Analogi: Perangkat lunak server web (seperti Apache atau Nginx) versi mini yang berjalan di ESP32.
6. WiFiManager
#include <WiFiManager.h>
- Fungsi Utama: Manajer Koneksi Wi-Fi. Library tingkat tinggi yang sangat memudahkan proses konfigurasi Wi-Fi tanpa harus menyentuh kode.
- Peran dalam Proyek Ini: Ini adalah bintang utama saat setup. Ia membuat hotspot, menyajikan halaman konfigurasi (menggunakan
WebServer.hdanDNSServer.h), dan menyimpan hasilnya ke fileconfig.json. - Analogi: Teknisi IT pribadi yang ada di dalam perangkat. Ia memandu pengguna untuk mengatur koneksi jaringan dengan mudah.
7. ArduinoJson
#include <ArduinoJson.h>
- Fungsi Utama: Pemrosesan Data JSON. Library yang sangat kuat untuk membuat, membaca, dan memanipulasi data dalam format JSON.
- Peran dalam Proyek Ini:
- Membaca
config.json: Mengurai file konfigurasi menjadi variabel yang bisa dipahami program. - Menyimpan
config.json: Membuat string JSON dari variabel program untuk disimpan. - Mengirim Data Absensi: Memformat data (MAC + UID RFID) menjadi paket JSON yang rapi sebelum dikirim via MQTT.
- Membaca
- Analogi: Penerjemah dan penata format. Ia mengubah data mentah menjadi bahasa terstruktur (JSON) yang mudah dipahami oleh sistem lain.
8. MFRC522
#include "MFRC522.h"
- Fungsi Utama: Driver untuk Modul RFID MFRC522. Library ini berisi semua perintah yang dibutuhkan untuk berkomunikasi dengan pembaca kartu RFID.
- Peran dalam Proyek Ini: Ini adalah inti interaksi dengan hardware. Digunakan untuk menginisialisasi pembaca, mendeteksi keberadaan kartu, dan membaca nomor UID unik dari kartu.
- Analogi: Driver printer atau scanner. Ini adalah perangkat lunak yang tahu cara "berbicara" dengan perangkat keras spesifik (MFRC522).
9. PubSubClient
#include <PubSubClient.h>
- Fungsi Utama: Klien MQTT. Library yang ringan untuk berkomunikasi menggunakan protokol MQTT, yang sangat populer di dunia IoT.
- Peran dalam Proyek Ini: Mengelola semua komunikasi dengan server MQTT. Digunakan untuk menghubungkan (
client.connect), mengirim data absensi (client.publish), dan berlangganan perintah (client.subscribe). - Analogi: Layanan pengiriman pesan (pos) untuk IoT. Ia mengambil "surat" (data absensi) dan memastikannya sampai ke alamat yang tepat (topik MQTT).
10. config
#include "config.h"
- Fungsi Utama: File Header Konfigurasi Kustom. Ini bukan library standar, melainkan file yang Anda buat sendiri.
- Peran dalam Proyek Ini: Berfungsi sebagai pusat pengaturan untuk seluruh proyek. Semua pin, pengaturan default, variabel global, dan deklarasi objek ditempatkan di sini. Ini membuat kode menjadi rapi, terorganisir, dan mudah diubah.
- Analogi: Rencana induk atau buku manual proyek. Semua bagian proyek merujuk ke file ini untuk mengetahui cara kerja dan pengaturannya.
Secara keseluruhan, library-library ini bekerja sama seperti sebuah tim: WiFiManager mengatur koneksi, MFRC522 membaca data, ArduinoJson memformatnya, PubSubClient mengirimkannya, dan LittleFS menyimpan semua pengaturan agar prosesnya bisa berjalan otomatis di kemudian hari.