Pada artikel sebelumnya kita sudah menambahkan LCD I2C 20x4 ke sistem absensi.
Sekarang kita akan menambahkan dua komponen yang sangat berguna untuk mesin absensi, yaitu:
- LED indikator
- Buzzer
Tujuannya agar mesin dapat memberikan informasi secara visual dan suara.
Contohnya ketika fingerprint berhasil:
🟢 LED HIJAU
🔊 BEEP
LCD → ABSENSI BERHASIL
Ketika fingerprint tidak dikenal:
🔴 LED MERAH
🔊 BEEP BEEP
LCD → FINGERPRINT TIDAK DIKENAL
Dengan demikian pengguna tidak harus terus melihat LCD.
Daftar Isi
1. Kenapa Mesin Absensi Membutuhkan Indikator?2. Fungsi LED
3. Fungsi Buzzer
4. Komponen yang Digunakan
5. Wiring LED
6. Resistor LED
7. Wiring Buzzer
8. Program LED
9. Program Buzzer
10. Fungsi Indikator
11. Integrasi dengan Fingerprint
12. Mode Standby
13. Mode Berhasil
14. Mode Gagal
15. Mode Warning
16. Masalah yang Sering Terjadi
17. Kesimpulan
18. Artikel Selanjutnya
1. Kenapa Mesin Absensi Membutuhkan Indikator?
Bayangkan seseorang melakukan absensi.
Dia menempelkan jari:
Jari
↓
AS608
↓
ESP8266
Kemudian sistem membutuhkan waktu beberapa saat untuk memproses.
Pengguna harus mendapatkan feedback.
Tanpa indikator, pengguna mungkin tidak tahu apakah:
- fingerprint sedang dibaca;
- fingerprint berhasil;
- fingerprint gagal;
- data sedang dikirim;
- koneksi server bermasalah.
Karena itu kita menggunakan kombinasi:
LCD + LED + Buzzer
2. Fungsi LED
Kita menggunakan tiga LED:
| LED | Fungsi |
|---|---|
| 🟢 Hijau | Normal / berhasil |
| 🟡 Kuning | Proses / warning |
| 🔴 Merah | Error / gagal |
Contohnya:
Hijau
↓
ABSENSI BERHASIL
Kuning
↓
MEMPROSES...
Merah
↓
FINGERPRINT TIDAK DIKENAL
Konsep ini juga dapat digunakan ketika nanti mesin terhubung ke server.
3. Fungsi Buzzer
Buzzer digunakan untuk memberikan feedback suara.
Contohnya:
Berhasil
Dengan pola suara berbeda, pengguna dapat mengetahui status tanpa melihat LCD.
4. Komponen yang Digunakan
| No | Komponen | Jumlah |
|---|---|---|
| 1 | ESP8266 NodeMCU | 1 |
| 2 | LED hijau | 1 |
| 3 | LED kuning | 1 |
| 4 | LED merah | 1 |
| 5 | Resistor LED | 3 |
| 6 | Buzzer aktif | 1 |
| 7 | Kabel jumper | Secukupnya |
Untuk project produksi, sebaiknya buzzer dan beban output yang lebih besar tidak langsung dibebankan ke GPIO ESP8266. Gunakan transistor/MOSFET driver jika diperlukan.
5. Wiring LED
Setiap LED harus menggunakan resistor pembatas arus.
Contoh konfigurasi:
GPIO ESP8266
│
▼
Resistor
│
▼
LED
│
▼
GND
Contoh pin:
| Komponen | GPIO ESP8266 |
|---|---|
| LED Hijau | D7 |
| LED Kuning | D8 |
| LED Merah | D0 |
Contoh:
D7 ── Resistor ── LED HIJAU ── GND
D8 ── Resistor ── LED KUNING ── GND
D0 ── Resistor ── LED MERAH ── GND
Catatan: D8 dan D0 pada ESP8266 merupakan GPIO yang mempunyai konsekuensi terkait proses boot. Untuk desain hardware produksi, pemilihan GPIO sebaiknya diverifikasi terhadap kebutuhan boot board yang digunakan. Jika ingin rangkaian lebih aman dan mudah dikembangkan, kita bisa menetapkan ulang pin setelah seluruh perangkat disusun.
6. Resistor LED
Jangan menghubungkan LED langsung ke GPIO tanpa resistor pembatas arus.
Nilai yang praktis digunakan:
220Ω
atau:
330Ω
Untuk indikator panel, 330Ω sering menjadi pilihan yang aman dan sederhana.
Rangkaian:
ESP8266
│
│ GPIO
▼
[330Ω]
│
▼
LED
│
▼
GND
Resistor berfungsi membatasi arus agar LED dan GPIO tidak terbebani berlebihan.
7. Wiring Buzzer
Untuk buzzer aktif kecil yang memang dirancang untuk dikendalikan GPIO, rangkaiannya dapat dibuat sederhana.
Contoh:
| Buzzer | ESP8266 |
|---|---|
| Signal/I/O | GPIO |
| VCC | Sesuai spesifikasi buzzer |
| GND | GND |
Namun untuk desain yang lebih kuat:
ESP8266
│
▼
Resistor basis/gate
│
▼
Transistor/MOSFET
│
▼
Buzzer
Dengan driver, arus buzzer tidak langsung melewati GPIO.
8. Contoh Program LED
Sebelum digabungkan dengan AS608, kita tes LED terlebih dahulu.
#define LED_HIJAU D7
#define LED_KUNING D8
#define LED_MERAH D0
void setup()
{
pinMode(LED_HIJAU, OUTPUT);
pinMode(LED_KUNING, OUTPUT);
pinMode(LED_MERAH, OUTPUT);
digitalWrite(LED_HIJAU, LOW);
digitalWrite(LED_KUNING, LOW);
digitalWrite(LED_MERAH, LOW);
}
void loop()
{
// Hijau
digitalWrite(LED_HIJAU, HIGH);
delay(1000);
digitalWrite(LED_HIJAU, LOW);
// Kuning
digitalWrite(LED_KUNING, HIGH);
delay(1000);
digitalWrite(LED_KUNING, LOW);
// Merah
digitalWrite(LED_MERAH, HIGH);
delay(1000);
digitalWrite(LED_MERAH, LOW);
}
Jika berhasil, LED akan menyala bergantian:
🟢 → 🟡 → 🔴
9. Program Buzzer
Untuk buzzer aktif, kita dapat menggunakan HIGH/LOW.
#define BUZZER D5
void setup()
{
pinMode(BUZZER, OUTPUT);
digitalWrite(BUZZER, LOW);
}
void loop()
{
digitalWrite(BUZZER, HIGH);
delay(200);
digitalWrite(BUZZER, LOW);
delay(2000);
}
Buzzer akan berbunyi setiap beberapa detik.
Penting: contoh pin di atas hanya untuk pengujian. Dalam rangkaian final, pin buzzer harus disesuaikan dengan pembagian pin AS608, RTC, LCD, LED, dan modul lain agar tidak terjadi konflik.
10. Membuat Fungsi Indikator
Supaya program utama tidak berantakan, kita dapat membuat fungsi.
Contohnya:
void indikatorBerhasil()
{
digitalWrite(LED_HIJAU, HIGH);
digitalWrite(BUZZER, HIGH);
delay(150);
digitalWrite(BUZZER, LOW);
delay(1000);
digitalWrite(LED_HIJAU, LOW);
}
Untuk kondisi gagal:
void indikatorGagal()
{
digitalWrite(LED_MERAH, HIGH);
for (int i = 0; i < 2; i++)
{
digitalWrite(BUZZER, HIGH);
delay(150);
digitalWrite(BUZZER, LOW);
delay(150);
}
delay(500);
digitalWrite(LED_MERAH, LOW);
}
11. Integrasi dengan Fingerprint
Sekarang kita hubungkan indikator dengan hasil AS608.
Alurnya:
Dengan demikian status mesin menjadi mudah dipahami.
12. Mode Standby
Ketika tidak ada pengguna yang melakukan absensi:
🟢 LED NORMAL
LCD:
Buzzer:
Diam
13. Mode Fingerprint Berhasil
Jika fingerprint ditemukan:
🟢 LED HIJAU
🔊 BEEP
LCD:
14. Mode Fingerprint Gagal
Jika fingerprint tidak ditemukan:
🔴 LED MERAH
🔊 BEEP BEEP
LCD:
Setelah beberapa detik, mesin kembali ke standby.
15. Mode Warning
LED kuning dapat digunakan untuk kondisi seperti:
🟡 PROSES
atau:
🟡 SERVER OFFLINE
Misalnya:
Fingerprint berhasil
↓
Data dikirim ke server
↓
Server tidak merespons
↓
🟡 WARNING
↓
Data disimpan offline
Ini akan menjadi fitur penting pada artikel-artikel berikutnya.
16. Pola Indikator yang Kita Gunakan
Agar sistem konsisten, kita bisa menetapkan standar:
| Kondisi | LED | Buzzer |
|---|---|---|
| Standby | 🟢 | Diam |
| Membaca fingerprint | 🟡 | Diam |
| Berhasil | 🟢 | 1× beep |
| Fingerprint gagal | 🔴 | 2× beep |
| Server warning | 🟡 | 1× panjang |
| System error | 🔴 | 3× beep |
Dengan pola seperti ini, operator akan lebih mudah memahami kondisi mesin.
17. Contoh Fungsi Lengkap
Kita dapat membuat fungsi indikator seperti ini:
void ledOff()
{
digitalWrite(LED_HIJAU, LOW);
digitalWrite(LED_KUNING, LOW);
digitalWrite(LED_MERAH, LOW);
}
void indikatorStandby()
{
ledOff();
digitalWrite(LED_HIJAU, HIGH);
}
void indikatorProses()
{
ledOff();
digitalWrite(LED_KUNING, HIGH);
}
void indikatorBerhasil()
{
ledOff();
digitalWrite(LED_HIJAU, HIGH);
digitalWrite(BUZZER, HIGH);
delay(150);
digitalWrite(BUZZER, LOW);
delay(1000);
ledOff();
}
void indikatorGagal()
{
ledOff();
digitalWrite(LED_MERAH, HIGH);
for (int i = 0; i < 2; i++)
{
digitalWrite(BUZZER, HIGH);
delay(150);
digitalWrite(BUZZER, LOW);
delay(150);
}
delay(500);
ledOff();
}
Dengan fungsi tersebut, program utama menjadi lebih mudah dibaca.
Contohnya:
indikatorProses();
ketika sensor sedang membaca.
Dan:
indikatorBerhasil();
ketika fingerprint berhasil.
18. Perhatikan Konflik Pin
Ini bagian penting sebelum kita membuat firmware final.
Project kita sekarang memiliki:
AS608
RTC DS3231
LCD I2C
LED Hijau
LED Kuning
LED Merah
Buzzer
Jangan menentukan pin secara sembarangan karena beberapa fungsi ESP8266 memiliki keterbatasan.
Khususnya:
D0
D3
D4
D8
perlu diperhatikan karena beberapa GPIO berkaitan dengan proses boot atau fungsi khusus board.
Jadi pin yang dipakai di artikel ini adalah contoh untuk tahap pengujian, bukan berarti semuanya sudah final untuk PCB produksi.
Untuk firmware final nanti kita buat pin map khusus setelah seluruh komponen ditentukan.
19. Konsep Hardware Kita Sekarang
Rangkaian mulai menjadi seperti ini:
20. Kesimpulan
Sekarang mesin absensi kita sudah mempunyai tiga jenis feedback:






Tidak ada komentar:
Posting Komentar