Pada artikel sebelumnya kita sudah membuat RTC DS3231 dengan ESP8266 untuk mendapatkan tanggal dan waktu.
Sekarang kita akan menambahkan LCD I2C 20x4 sebagai layar informasi pada mesin absensi.
LCD akan digunakan untuk memberikan informasi kepada pengguna, misalnya:
Ketika fingerprint berhasil:
Dengan adanya LCD, pengguna tidak perlu melihat Serial Monitor untuk mengetahui status absensinya.
Daftar Isi
1. Apa Itu LCD I2C?2. Kenapa Menggunakan LCD 20x4?
3. Pin LCD I2C
4. Wiring LCD ke ESP8266
5. Alamat I2C LCD
6. Library LCD
7. Program Test LCD
8. Menampilkan Jam RTC
9. Menampilkan Status Fingerprint
10. Konsep Tampilan Mesin Absensi
11. Masalah yang Sering Terjadi
12. Kesimpulan
13. Artikel Selanjutnya
1. Apa Itu LCD I2C?
LCD 20x4 adalah layar yang mempunyai:
- 20 karakter setiap baris;
- 4 baris;
- dapat digunakan untuk menampilkan teks dan angka.
Tanpa modul I2C, LCD membutuhkan cukup banyak pin mikrokontroler.
Dengan menggunakan I2C backpack, komunikasi LCD cukup menggunakan:
SDA
SCL
Sehingga pin ESP8266 menjadi lebih hemat.
2. Kenapa Menggunakan LCD 20x4?
Untuk mesin absensi, LCD 20x4 cukup nyaman karena dapat menampilkan informasi yang lebih banyak dibanding LCD 16x2.
Contohnya:
Setelah fingerprint ditemukan:
3. Pin LCD I2C
Modul LCD I2C biasanya mempunyai empat pin utama:
| Pin | Fungsi |
|---|---|
| GND | Ground |
| VCC | Catu daya |
| SDA | Data I2C |
| SCL | Clock I2C |
Pada ESP8266 NodeMCU yang kita gunakan:
SDA → D2
SCL → D1
4. Wiring LCD I2C ke ESP8266
Gunakan koneksi berikut:
| LCD I2C | ESP8266 NodeMCU |
|---|---|
| GND | GND |
| VCC | Sesuai spesifikasi modul |
| SDA | D2 |
| SCL | D1 |
Diagram:
Karena DS3231 juga menggunakan I2C, LCD dan RTC sebenarnya dapat berbagi jalur SDA dan SCL.
Jadi nantinya:
Ini merupakan salah satu keuntungan menggunakan komunikasi I2C.
5. LCD dan RTC Bisa Berbagi I2C
Pada project kita nantinya terdapat:
Kedua perangkat dapat berada pada bus I2C yang sama selama alamat I2C-nya berbeda.
Umumnya:
LCD → 0x27 atau 0x3F
RTC → 0x68
Alamat tersebut perlu diverifikasi pada modul yang digunakan.
6. Library LCD
Untuk menggunakan LCD I2C kita dapat menggunakan library:
LiquidCrystal_I2C
Buka Arduino IDE:
Sketch → Include Library → Manage Libraries
Kemudian cari:
LiquidCrystal I2C
Buka Arduino IDE:
Sketch → Include Library → Manage Libraries
Kemudian cari:
LiquidCrystal I2C
Install library yang kompatibel dengan board dan contoh program yang digunakan.
7. Program Test LCD
Sebelum menggabungkan LCD dengan fingerprint dan RTC, kita lakukan pengujian LCD terlebih dahulu.
Gunakan program:
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Alamat LCD dapat berbeda.
// 0x27 adalah salah satu alamat yang umum.
LiquidCrystal_I2C lcd(0x27, 20, 4);
void setup()
{
Wire.begin(D2, D1);
lcd.init();
lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("SISTEM ABSENSI");
lcd.setCursor(0, 1);
lcd.print("AS608 + ESP8266");
lcd.setCursor(0, 2);
lcd.print("LCD I2C 20x4");
lcd.setCursor(0, 3);
lcd.print("TEST BERHASIL");
}
void loop()
{
}
Upload program ke ESP8266.
Jika LCD berhasil bekerja, tampilannya kira-kira:
8. Jika LCD Tidak Menampilkan Tulisan
Jangan langsung menyimpulkan LCD rusak.
Periksa terlebih dahulu alamat I2C.
Alamat yang umum digunakan misalnya:
0x27
atau:
0x3F
Jika program menggunakan:
LiquidCrystal_I2C lcd(0x27, 20, 4);
tetapi modul menggunakan alamat berbeda, LCD tidak akan berkomunikasi dengan benar.
9. I2C Scanner
Kita bisa menggunakan program I2C Scanner untuk mengetahui perangkat yang terhubung.
#include <Wire.h>
void setup()
{
Serial.begin(115200);
Wire.begin(D2, D1);
Serial.println();
Serial.println("I2C Scanner");
}
void loop()
{
byte error;
byte address;
int jumlah = 0;
for (address = 1; address < 127; address++)
{
Wire.beginTransmission(address);
error = Wire.endTransmission();
if (error == 0)
{
Serial.print("Perangkat ditemukan pada alamat 0x");
if (address < 16)
Serial.print("0");
Serial.println(address, HEX);
jumlah++;
}
}
if (jumlah == 0)
{
Serial.println("Tidak ada perangkat I2C.");
}
Serial.println();
delay(3000);
}
Buka Serial Monitor dengan:
115200
Misalnya hasilnya:
I2C Scanner
Perangkat ditemukan pada alamat 0x27
Perangkat ditemukan pada alamat 0x68
Berarti:
0x27 → LCD
0x68 → DS3231
10. Menampilkan Waktu RTC pada LCD
Sekarang kita gabungkan:
LCD + DS3231 + ESP8266
Program:
#include <Wire.h>
#include <RTClib.h>
#include <LiquidCrystal_I2C.h>
RTC_DS3231 rtc;
LiquidCrystal_I2C lcd(0x27, 20, 4);
void setup()
{
Wire.begin(D2, D1);
lcd.init();
lcd.backlight();
if (!rtc.begin())
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("RTC ERROR");
while (1)
{
delay(100);
}
}
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("SISTEM ABSENSI");
delay(1000);
}
void loop()
{
DateTime now = rtc.now();
char tanggal[11];
char jam[9];
snprintf(
tanggal,
sizeof(tanggal),
"%02d/%02d/%04d",
now.day(),
now.month(),
now.year()
);
snprintf(
jam,
sizeof(jam),
"%02d:%02d:%02d",
now.hour(),
now.minute(),
now.second()
);
lcd.setCursor(0, 1);
lcd.print("Tanggal: ");
lcd.print(tanggal);
lcd.print(" ");
lcd.setCursor(0, 2);
lcd.print("Jam : ");
lcd.print(jam);
lcd.print(" ");
lcd.setCursor(0, 3);
lcd.print("Tempelkan jari...");
delay(500);
}
Tampilannya:
11. Menampilkan Status Fingerprint
Sekarang kita sudah mempunyai tiga bagian:
AS608
↓
Fingerprint ID
DS3231
↓
Tanggal + Jam
LCD
↓
Tampilan informasi
Ketiganya akan digabungkan pada ESP8266.
Contoh ketika tidak ada fingerprint:
Ketika fingerprint ditemukan:
Jika fingerprint tidak dikenal:
Mode Offline
Nanti ketika sistem sudah menggunakan WiFi:
Ini akan sangat berguna ketika koneksi internet terputus.
13. LCD Tidak Perlu Menampilkan Semua Data
Kesalahan yang sering dilakukan saat membuat project adalah memasukkan terlalu banyak informasi ke LCD.
LCD sebaiknya digunakan untuk informasi yang benar-benar dibutuhkan pengguna.
Data lengkap tetap disimpan di server.
LCD cukup:
Nama
Status
Jam
Pesan
Sedangkan server menyimpan:
device_code
fingerprint_id
pegawai_id
tanggal
jam
status
IP address
timestamp
Dengan begitu tampilan mesin tetap sederhana.
14. Konsep Sistem Sekarang
Setelah Artikel #6, arsitektur hardware kita mulai terlihat seperti ini:
Gambar diagram blok ini nanti sangat bagus dijadikan gambar utama artikel.
15. Masalah yang Sering Terjadi
LCD menyala tetapi tulisan tidak terlihat
Coba putar trimpot kecil pada modul I2C LCD.
Trimpot tersebut digunakan untuk mengatur kontras.
LCD hanya kotak-kotak
Biasanya periksa:
- alamat I2C;
- wiring SDA/SCL;
- inisialisasi library;
- power supply.
Coba jalankan I2C Scanner.
LCD tidak terdeteksi
Periksa:
SDA → D2
SCL → D1
GND → GND
VCC → power sesuai modul
LCD dan RTC salah satu tidak bekerja
Karena keduanya menggunakan bus I2C, cek apakah alamat keduanya berbeda.
Contoh:
LCD = 0x27
RTC = 0x68
Jika alamat bertabrakan, konfigurasi perangkat perlu diperiksa.
16. Kesimpulan
Pada artikel ini kita sudah menambahkan LCD I2C 20x4 ke sistem absensi.
Sekarang sistem mempunyai:
AS608
↓
Membaca fingerprint
DS3231
↓
Membaca waktu
LCD
↓
Menampilkan informasi
ESP8266
↓
Mengatur semuanya
Tahap hardware kita semakin lengkap.



















Tidak ada komentar:
Posting Komentar