Breaking

Cara Menghubungkan ESP8266 ke WiFi untuk Sistem Absensi Fingerprint IoT



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

ESP8266
   ↓
WiFi Router
   ↓
PC Server
   ↓
MySQL

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