Pada artikel sebelumnya kita sudah membahas pemasangan buzzer dan LED pada sistem absensi fingerprint.
Sekarang kita masuk ke bagian yang sangat penting, yaitu membuat ESP8266 NodeMCU terhubung ke jaringan WiFi.
WiFi akan menjadi jalur komunikasi antara perangkat absensi dengan server.
Konsep sistem yang akan kita bangun adalah:
Fingerprint
│
▼
AS608
│
▼
ESP8266 NodeMCU
│
│ WiFi
▼
Router / Access Point
│
▼
Server CodeIgniter 4
│
▼
MySQL
Dengan arsitektur tersebut, perangkat absensi nantinya tidak hanya membaca sidik jari, tetapi juga dapat mengirimkan data absensi ke server.
1. Mengapa ESP8266 Harus Terhubung WiFi?
ESP8266 mempunyai kemampuan WiFi sehingga sangat cocok digunakan untuk membuat perangkat IoT.
Dalam sistem absensi, WiFi digunakan untuk mengirim data seperti:
- kode perangkat
- ID fingerprint
- tanggal
- waktu
- status absensi
- informasi perangkat
- firmware
- status online/offline
Contohnya ketika siswa melakukan scan:
Siswa scan fingerprint
↓
AS608 membaca fingerprint
↓
ESP8266 mendapatkan ID
↓
ESP8266 mendapatkan waktu RTC
↓
ESP8266 terhubung WiFi
↓
Data dikirim ke server
↓
CodeIgniter 4 memproses
↓
Data disimpan ke MySQL
Inilah yang membuat sistem kita berubah dari sekadar alat fingerprint menjadi sistem absensi IoT.
2. Komponen yang Digunakan
Untuk pengujian WiFi kita cukup menggunakan:
| Komponen | Fungsi |
|---|---|
| ESP8266 NodeMCU | Mikrokontroler + WiFi |
| Kabel USB | Pemrograman dan power |
| Router/Access Point | Jaringan WiFi |
| Laptop/PC | Upload program |
Sensor fingerprint, LCD, RTC, buzzer dan LED belum perlu digunakan dalam pengujian pertama.
Kita pastikan terlebih dahulu ESP8266 berhasil terhubung WiFi.
3. Library WiFi ESP8266
Untuk ESP8266 kita menggunakan library:
#include <ESP8266WiFi.h>
Library tersebut menyediakan fungsi untuk mengatur koneksi WiFi.
Contohnya:
WiFi.begin();
untuk memulai koneksi.
Kemudian:
WiFi.status();
untuk mengecek status koneksi.
4. Program WiFi Sederhana
Buat sketch baru di Arduino IDE.
Gunakan kode berikut:
#include <ESP8266WiFi.h>
const char* ssid = "NAMA_WIFI";
const char* password = "PASSWORD_WIFI";
void setup() {
Serial.begin(115200);
Serial.println();
Serial.println("Menghubungkan ke WiFi...");
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println();
Serial.println("WiFi berhasil terhubung");
Serial.print("IP Address: ");
Serial.println(WiFi.localIP());
}
void loop() {
}
Ganti:
NAMA_WIFI
dengan nama WiFi.
Contohnya:
const char* ssid = "JSN_Langkat";
Kemudian ganti password:
const char* password = "passwordwifi";
5. Upload Program ke ESP8266
Hubungkan ESP8266 NodeMCU ke komputer menggunakan kabel USB.
Di Arduino IDE pilih board ESP8266 yang sesuai.
Kemudian pilih:
Tools
→ Board
→ ESP8266
→ NodeMCU 1.0 (ESP-12E Module)
Pilih juga port COM yang digunakan ESP8266.
Kemudian klik:
Upload
Setelah proses upload selesai, buka:
Serial Monitor
Gunakan baud rate:
115200
Jika berhasil, kira-kira akan muncul:
Menghubungkan ke WiFi...
........
WiFi berhasil terhubung
IP Address: 192.168.110.xxx
Artinya ESP8266 sudah berhasil masuk ke jaringan.
6. Apa Itu IP Address ESP8266?
Ketika ESP8266 terhubung ke router, router biasanya memberikan alamat IP.
Contohnya:
192.168.110.120
Alamat tersebut digunakan untuk mengenali ESP8266 di dalam jaringan.
Contoh:
Router
192.168.110.1
│
├── PC
│ 192.168.110.100
│
├── ESP8266 ABS-001
│ 192.168.110.120
│
└── ESP8266 ABS-002
192.168.110.121
Namun IP address sebaiknya jangan dijadikan identitas utama perangkat.
Kenapa?
Karena IP dari DHCP bisa berubah.
Misalnya hari ini:
ABS-001
192.168.110.120
Besok bisa saja menjadi:
ABS-001
192.168.110.125
Karena itu kita menggunakan Device Code sebagai identitas tetap.
7. Menggunakan Device Code
Untuk sistem multi-device, setiap mesin absensi sebaiknya memiliki kode unik.
Contohnya:
ABS-001
ABS-002
ABS-003
ABS-004
Misalnya mesin pertama:
Device Code : ABS-001
Lokasi : Ruang Guru
Mesin kedua:
Device Code : ABS-002
Lokasi : Gerbang Utama
Ketika mengirim data ke server, ESP8266 tidak cukup hanya mengirim:
fingerprint_id = 12
Tetapi juga:
device_code = ABS-001
fingerprint_id = 12
Server kemudian mengetahui bahwa fingerprint tersebut melakukan absensi melalui perangkat ABS-001.
8. Menampilkan Informasi WiFi
Sekarang kita buat program sedikit lebih lengkap.
#include <ESP8266WiFi.h>
const char* ssid = "NAMA_WIFI";
const char* password = "PASSWORD_WIFI";
const char* deviceCode = "ABS-001";
void connectWiFi() {
Serial.println();
Serial.println("================================");
Serial.println(" SISTEM ABSENSI IoT");
Serial.println("================================");
Serial.print("Device : ");
Serial.println(deviceCode);
Serial.print("WiFi : ");
Serial.println(ssid);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
Serial.print("Menghubungkan");
unsigned long startTime = millis();
while (WiFi.status() != WL_CONNECTED &&
millis() - startTime < 15000) {
delay(500);
Serial.print(".");
}
Serial.println();
if (WiFi.status() == WL_CONNECTED) {
Serial.println("WiFi : TERHUBUNG");
Serial.print("IP : ");
Serial.println(WiFi.localIP());
Serial.print("RSSI : ");
Serial.print(WiFi.RSSI());
Serial.println(" dBm");
} else {
Serial.println("WiFi : GAGAL TERHUBUNG");
}
}
void setup() {
Serial.begin(115200);
delay(1000);
connectWiFi();
}
void loop() {
}
Sekarang Serial Monitor akan menampilkan informasi seperti:
================================
SISTEM ABSENSI IoT
================================
Device : ABS-001
WiFi : JSN_Langkat
Menghubungkan............
WiFi : TERHUBUNG
IP : 192.168.110.120
RSSI : -52 dBm
9. Apa Itu RSSI?
RSSI adalah indikator kekuatan sinyal WiFi.
Contoh:
-40 dBm → sangat bagus
-50 dBm → bagus
-60 dBm → cukup bagus
-70 dBm → lemah
-80 dBm → sangat lemah
Nilai semakin mendekati 0, biasanya sinyal semakin kuat.
Untuk perangkat absensi yang ditempatkan permanen, sebaiknya posisi router/access point tidak terlalu jauh dari perangkat.
10. Jangan Membuat ESP8266 Bergantung pada WiFi
Ini penting untuk sistem absensi profesional.
Jangan membuat program seperti:
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
tanpa timeout.
Masalahnya, jika router mati, ESP8266 bisa berhenti menunggu WiFi selamanya.
Akibatnya:
WiFi mati
↓
ESP8266 menunggu
↓
program tidak melanjutkan
↓
fingerprint tidak bekerja normal
Padahal mesin absensi seharusnya tetap dapat digunakan.
Solusinya adalah membuat reconnect otomatis tanpa memblokir sistem terlalu lama.
11. Reconnect WiFi Otomatis
Gunakan fungsi berikut:
void ensureWiFi() {
if (WiFi.status() == WL_CONNECTED) {
return;
}
static unsigned long lastAttempt = 0;
if (millis() - lastAttempt < 10000) {
return;
}
lastAttempt = millis();
Serial.println("WiFi terputus...");
Serial.println("Mencoba reconnect...");
WiFi.disconnect();
WiFi.begin(ssid, password);
}
Kemudian panggil dari loop():
void loop() {
ensureWiFi();
// Program fingerprint
// Program RTC
// Program LCD
// Program buzzer
// Program absensi
}
Dengan konsep tersebut, ketika WiFi terputus:
Fingerprint
↓
Tetap bekerja
↓
WiFi terputus
↓
ESP8266 mencoba reconnect
↓
WiFi kembali
↓
ESP8266 terhubung lagi
Ini jauh lebih baik untuk perangkat absensi.
12. Konsep ONLINE dan OFFLINE
Pada sistem yang akan kita bangun, perangkat memiliki status:
ONLINE
atau:
OFFLINE
Contohnya:
ABS-001
Status : ONLINE
IP : 192.168.110.120
Last Seen : 08:35:21
Jika koneksi hilang:
ABS-001
Status : OFFLINE
Nantinya informasi tersebut akan dikirim ke server melalui API.
Konsepnya:
ESP8266
│
│ HTTP Request
▼
CodeIgniter 4
│
▼
ro/devices / devices
│
▼
MySQL
Untuk sistem absensi kita, nantinya server dapat mengetahui perangkat mana yang sedang aktif.
13. Local Network vs Internet
Sistem juga perlu dibedakan menjadi dua kondisi.
Mode LAN
Semua perangkat berada dalam jaringan lokal.
Contohnya:
192.168.110.xxx
Keuntungan:
- cepat
- tidak membutuhkan internet untuk komunikasi lokal
- cocok untuk sekolah/kantor
- lebih mudah dikontrol
Mode Internet
Arsitekturnya:
ESP8266
↓
WiFi
↓
Internet
↓
Server
↓
CodeIgniter 4
↓
MySQL
Dengan model ini perangkat dapat mengirim data ke server melalui internet.
Namun keamanan menjadi lebih penting.
14. Jangan Menaruh API Key Sembarangan
Nantinya ESP8266 akan menggunakan API Key untuk berkomunikasi dengan server.
Contohnya:
const char* apiKey = "xxxxxxxxxxxxxxxx";
API Key sebaiknya tidak dibagikan di artikel publik.
Untuk artikel blog, gunakan contoh:
const char* apiKey = "API_KEY_DEVICE";
Jangan menggunakan API Key asli pada screenshot atau source code yang dipublikasikan.
15. Arsitektur Sistem Kita Sampai Tahap Ini
Sekarang sistem kita sudah memiliki beberapa bagian:
Ini mulai menjadi arsitektur IoT attendance system yang sebenarnya.
16. Data yang Nantinya Dikirim ESP8266
Misalnya fingerprint ID:
12
Device:
ABS-001
Waktu:
07:32:15
Tanggal:
2026-09-11
Maka data yang dikirim ke API bisa mempunyai konsep seperti:
{
"device_code": "ABS-001",
"fingerprint_id": 12,
"tanggal": "2026-09-11",
"jam": "07:32:15"
}
Server CodeIgniter 4 kemudian mencari siapa pemilik fingerprint ID tersebut.
Misalnya:
Fingerprint ID 12
↓
NIS : 20260012
Nama : Budi
Kelas: X RPL 1
Kemudian server menyimpan data absensi.
17. Jangan Bergantung pada IP
Kesalahan yang sering dilakukan ketika membuat IoT adalah menggunakan IP sebagai identitas perangkat.
Contoh yang kurang baik:
192.168.110.120 = Mesin 1
Karena IP dapat berubah.
Lebih baik:
ABS-001 = Mesin 1
ABS-002 = Mesin 2
ABS-003 = Mesin 3
Sedangkan IP hanya menjadi informasi:
Device Code : ABS-001
IP Address : 192.168.110.120
Kalau IP berubah:
Device Code : ABS-001
IP Address : 192.168.110.125
perangkat tetap dikenali sebagai:
ABS-001
18. Pengujian
Sebelum melanjutkan ke server CodeIgniter 4, pastikan beberapa hal berikut berhasil.
Checklist
☑ ESP8266 bisa upload program
☑ ESP8266 menemukan WiFi
☑ ESP8266 berhasil connect
☑ IP address muncul
☑ RSSI muncul
☑ ESP8266 tidak hang ketika WiFi mati
☑ ESP8266 mencoba reconnect
☑ Device Code dapat ditampilkan
Jika semuanya berhasil, bagian WiFi sudah siap.
19. Kesimpulan
Pada artikel ini kita sudah membuat ESP8266 NodeMCU:
- terhubung ke WiFi
- mendapatkan IP address
- menampilkan kekuatan sinyal
- mempunyai Device Code
- mendeteksi koneksi WiFi
- melakukan reconnect otomatis
- mempunyai konsep ONLINE/OFFLINE
Bagian ini menjadi dasar komunikasi antara perangkat fingerprint dengan server.
Arsitektur akhirnya akan menjadi:
AS608
↓
ESP8266
↓
WiFi
↓
API CodeIgniter 4
↓
MySQL
↓
Dashboard Absensi
Dan karena kita akan membuat sistem multi-device, setiap ESP8266 nantinya mempunyai identitas sendiri:
ABS-001
ABS-002
ABS-003
...


Tidak ada komentar:
Posting Komentar