Penjelasan Program Absensi RFID dan ESP32 (Uji Kompetensi Edition) - 3. setup
Fungsi setup() adalah fungsi yang hanya dijalankan sekali saat ESP32 pertama kali dinyalakan atau saat tombol RESET ditekan. Tugas utamanya adalah menyiapkan segala sesuatunya sebelum program masuk ke loop utama (loop()).
Berikut adalah penjelasan setiap barisnya:
void setup() {
Mendeklarasikan fungsi bernama setup yang tidak mengembalikan nilai apa pun (void).
pinMode(BUILTIN_LED, OUTPUT);
pinMode(BUZZER, OUTPUT);
pinMode(LED1, OUTPUT);
- Fungsi: Mengatur mode pin-pin GPIO.
- Penjelasan: Baris ini memberitahu ESP32 bahwa pin
BUILTIN_LED,BUZZER, danLED1akan digunakan sebagai OUTPUT (keluaran). Artinya, ESP32 akan mengirimkan sinyal (nyalakan/matikan) ke komponen-komponen ini, bukan membaca sinyal darinya.
digitalWrite(BUZZER, LOW);
- Fungsi: Menulis status digital ke sebuah pin.
- Penjelasan: Baris ini memastikan buzzer dalam keadaan mati (LOW) saat perangkat pertama kali dinyalakan.
Serial.begin(115200);
- Fungsi: Memulai komunikasi serial.
- Penjelasan: Mengaktifkan kemampuan ESP32 untuk berkomunikasi dengan komputer melalui kabel USB. Kecepatan komunikasinya diatur ke 115200 baud per detik. Ini sangat penting untuk debugging, karena kita bisa melihat pesan dari ESP32 di Serial Monitor Arduino IDE.
Serial.println(F("Booting...."));
- Fungsi: Mencetak teks ke Serial Monitor.
- Penjelasan: Menampilkan pesan "Booting...." di Serial Monitor. Ini memberi tahu kita bahwa program sudah mulai berjalan.
F()adalah macro yang menyimpan teks ini di memori flash (bukan RAM) untuk menghemat RAM, yang sangat berguna di mikrokontroler.
setup_wifi();
- Fungsi: Memanggil fungsi lain.
- Penjelasan: Ini adalah langkah besar. Program menjalankan fungsi
setup_wifi()yang ada di bagian lain kode. Fungsi ini bertanggung jawab untuk:- Membaca pengaturan Wi-Fi dari file
config.json. - Jika tidak ada, membuat hotspot Wi-Fi (
AbesensiRFID). - Menghubungkan ESP32 ke jaringan Wi-Fi.
- Membaca pengaturan Wi-Fi dari file
client.setServer(mqtt_server, mqtt_port);
client.setCallback(callback);
- Fungsi: Mengonfigurasi klien MQTT.
- Penjelasan:
client.setServer(...): Memberi tahu klien MQTT alamat server (mqtt_server) dan port (mqtt_port) yang akan dihubungi. Informasi ini diambil dariconfig.hatau fileconfig.json.client.setCallback(...): Mendaftarkan fungsicallback. Ini sangat penting. Artinya: "Heiclient, jika ada pesan masuk dari server MQTT, tolong jalankan fungsicallback()ya". Ini yang memungkinkan perangkat menerima perintah restart/reset.
delay(100);
- Fungsi: Menunda eksekusi.
- Penjelasan: Memberikan jeda singkat selama 100 milidetik. Ini sering digunakan untuk memberikan waktu bagi sistem (seperti koneksi Wi-Fi) agar benar-benar stabil sebelum melanjutkan ke langkah berikutnya.
SPI.begin();
mfrc522.PCD_Init();
- Fungsi: Menginisialisasi pembaca RFID.
- Penjelasan:
SPI.begin(): Mengaktifkan bus komunikasi SPI. Modul MFRC522 berkomunikasi dengan ESP32 menggunakan protokol SPI.mfrc522.PCD_Init(): Menginisialisasi modul MFRC522 itu sendiri, membangunkannya, dan menyiapkannya untuk mulai membaca kartu.
Serial.println(F("Ready!"));
Serial.println(F("======================================================"));
Serial.println(F("Scan for Card and print UID:"));
- Fungsi: Memberikan konfirmasi visual di Serial Monitor.
- Penjelasan: Baris-baris ini mencetak pesan-pesan terakhir yang menandakan bahwa seluruh proses persiapan (setup) telah selesai. Perangkat sudah terhubung ke Wi-Fi, siap berkomunikasi dengan MQTT, dan pembaca RFID sudah aktif. Sekarang ia menunggu aksi dari pengguna (scan kartu).
Kesimpulan Urutan Kerja setup()
- Siapkan Hardware Output: (LED, Buzzer).
- Aktifkan Komunikasi Debug: (Serial).
- Sambungkan ke Jaringan: (Wi-Fi).
- Konfigurasi Komunikasi Data: (Server MQTT).
- Siapkan Sensor: (RFID).
- Beritahu User "Sudah Siap!".
Setelah semua langkah ini selesai, barulah program akan keluar dari setup() dan masuk ke loop(), di mana ia akan menjalankan tugas utamanya secara berulang-ulang: menunggu kartu, membaca, dan mengirim data.