Penjelasan Program Absensi RFID dan ESP32 (Uji Kompetensi Edition) - 1. File
Bayangkan Anda sedang membangun sebuah mobil. Ketiga file ini memiliki peran seperti berikut:
1. config.h -> Buku Manual & Spesifikasi Mobil
Ini adalah file header (.h). Fungsinya adalah menjadi pusat definisi global untuk seluruh proyek. Semua file lain akan merujuk ke file ini.
Tugas Utamanya:
- Mendefinisikan Konstanta: Menyimpan semua pengaturan yang tidak berubah atau jarang berubah, seperti:
- Pin GPIO: Pin mana yang terhubung ke Buzzer, LED, dan RFID (
#define BUZZER 4). - Pengaturan Default: Nama Wi-Fi default, password, dan detail server MQTT (
char mqtt_server[40] = "..."). - Nama Topik MQTT: Topik untuk mengirim data dan menerima perintah (
char mqtt_keywords1[40] = "...").
- Pin GPIO: Pin mana yang terhubung ke Buzzer, LED, dan RFID (
- Mendeklarasikan Variabel Global: Membuat variabel yang bisa diakses oleh semua file, seperti
shouldSaveConfigatauMAC_char. - Mendeklarasikan Objek Global: Membuat objek utama seperti
WiFiClientdanPubSubClientagar bisa digunakan di mana saja. - Mendeklarasikan Fungsi: Memberi tahu compiler bahwa ada fungsi-fungsi seperti
ReadConfigFile()yang ada di file lain.
Intinya: config.h adalah sumber kebenaran tunggal untuk semua pengaturan dan konfigurasi. Jika Anda ingin mengubah pin buzzer atau nama server MQTT, Anda hanya perlu mengubahnya di satu tempat ini.
2. ConfigFile.ino -> Mekanik & Administrasi
File ini berisi semua fungsi yang berhubungan dengan manajemen konfigurasi dan penyimpanan data. Ia bertanggung jawab atas "pekerjaan kotor" mengelola file.
Tugas Utamanya:
ReadConfigFile(): Membaca fileconfig.jsondari memori internal (SPIFFS/LittleFS) saat perangkat dinyalakan, lalu memuat pengaturannya ke dalam variabel-variabel yang ada diconfig.h.SaveConfigFile(): Menyimpan pengaturan baru (misalnya dari halaman WiFiManager) ke dalam fileconfig.jsonagar tidak hilang saat listrik padam.saveConfigCallback(): Fungsi kecil yang dipanggil oleh WiFiManager untuk memberi tahu sistem bahwa ada pengaturan baru yang perlu disimpan.ResetSettings(): Fungsi untuk menghapus semua konfigurasi Wi-Fi, memaksa perangkat kembali ke mode pengaturan awal.IpAddress2String(): Fungsi bantuan (utility) untuk mengubah alamat IP menjadi teks.
Intinya: File ini adalah modul penyimpanan. Ia menangani semua interaksi dengan file system, sehingga file utama program tidak perlu pusing dengan cara membaca atau menulis file.
3. absensi-rfid.ino -> Sistem Utama & Sopir
Ini adalah file utama (file sketch .ino). Ini adalah "otak" yang mengendalikan seluruh alur kerja mobil dari awal hingga akhir.
Tugas Utamanya:
setup(): Fungsi yang dijalankan sekali saat perangkat dinyalakan. Ia memanggil fungsi-fungsi dari file lain untuk menyiapkan segalanya:- Membaca
config.huntuk tahu pin mana yang harus disiapkan. - Memanggil
ReadConfigFile()dariConfigFile.inountuk memuat pengaturan. - Menghubungkan ke Wi-Fi dan MQTT.
- Menginisialisasi pembaca RFID.
- Membaca
loop(): Fungsi yang dijalankan terus-menerus. Ini adalah inti dari operasional alat:- Menjaga koneksi MQTT tetap hidup (memanggil
reconnect()jika perlu). - Mendeteksi kartu RFID.
- Membaca UID, memformatnya, dan mengirimkannya ke server MQTT.
- Memberikan feedback (buzzer dan LED).
- Menjalankan jeda waktu agar tidak membaca kartu yang sama dua kali.
- Menjaga koneksi MQTT tetap hidup (memanggil
setup_wifi(): Mengatur koneksi Wi-Fi menggunakan WiFiManager, termasuk menampilkan form konfigurasi yang kita bahas sebelumnya.callback(): Menunggu dan mengeksekusi perintah dari server MQTT (seperti perintah restart).
Intinya: File ini adalah logika bisnis utama. Ia mengatur semua bagian (RFID, Wi-Fi, MQTT, Buzzer) untuk bekerja sama mencapai tujuan akhir: mencatat absensi.
Ringkasan Cara Kerja Sama Ketiganya
absensi-rfid.inoadalah sutradara. Ia memulai pertunjukan dengansetup().- Di
setup(), ia membacaconfig.huntuk tahu di mana pin-pin berada dan pengaturan default apa yang digunakan. - Ia lalu memanggil
ConfigFile.ino(ReadConfigFile()) untuk memuat pengaturan yang mungkin sudah disimpan sebelumnya. - Di
loop(),absensi-rfid.inoterus bekerja, membaca kartu, dan mengirim data. - Jika pengguna mengubah pengaturan melalui WiFiManager,
absensi-rfid.inoakan memanggil fungsi dariConfigFile.ino(SaveConfigFile()) untuk menyimpan perubahan tersebut. - Semua file ini terhubung dan saling mengetahui variabel-variabel penting berkat
config.h.
Struktur ini membuat kode menjadi rapi, mudah dipelihara, dan modular.