Pada sistem absensi fingerprint, kita tidak hanya membutuhkan identitas pengguna. Kita juga harus mengetahui kapan seseorang melakukan absensi.
Contohnya:
Nama : Bayu
Fingerprint: 1
Tanggal : 05 September 2026
Jam : 07:30:15
Status : Masuk
Untuk mendapatkan tanggal dan jam tersebut, pada project ini kita menggunakan RTC DS3231.
RTC atau Real Time Clock merupakan modul yang digunakan untuk menjaga informasi waktu dan tanggal.
Pada artikel sebelumnya kita sudah membahas cara melakukan verifikasi fingerprint AS608 menggunakan ESP8266.
Sekarang kita akan menggabungkan ESP8266 dengan RTC DS3231 sehingga alurnya menjadi:
AS608
↓
Fingerprint ID
↓
ESP8266
↓
RTC DS3231
↓
Tanggal + Jam
↓
Data Absensi
Daftar Isi
1. Apa Itu RTC DS3231?2. Kenapa Sistem Absensi Membutuhkan RTC?
3. Komponen yang Digunakan
4. Pin RTC DS3231
5. Wiring DS3231 ke ESP8266
6. Library yang Digunakan
7. Program Membaca RTC
8. Mengatur Waktu RTC
9. Pengujian RTC
10. Menggabungkan RTC dengan Fingerprint
11. Konsep Data Absensi
12. Masalah yang Sering Terjadi
13. Kesimpulan
14. Artikel Selanjutnya
1. Apa Itu RTC DS3231?
DS3231 adalah modul Real Time Clock yang digunakan untuk menyimpan informasi waktu dan tanggal.
RTC mempunyai sumber daya cadangan sehingga waktu dapat tetap berjalan ketika mikrokontroler dimatikan, selama backup battery dan modul dalam kondisi yang sesuai.
Informasi yang dapat dibaca antara lain:
- detik;
- menit;
- jam;
- tanggal;
- bulan;
- tahun;
- hari.
Contohnya:
Tanggal : 05/09/2026
Jam : 07:30:15
Data tersebut nantinya dapat digunakan untuk mencatat waktu absensi.
2. Kenapa Sistem Absensi Membutuhkan RTC?
Bayangkan fingerprint sudah berhasil membaca:
ID Fingerprint = 1
Data tersebut belum cukup.
Kita membutuhkan waktu:
ID Fingerprint = 1
Tanggal = 05-09-2026
Jam = 07:30:15
Kemudian database dapat menyimpan:
Bayu
05 September 2026
07:30:15
Masuk
Inilah fungsi RTC dalam sistem absensi.
3. Komponen yang Digunakan
| No | Komponen | Jumlah | Fungsi |
|---|---|---|---|
| 1 | ESP8266 NodeMCU | 1 | Mikrokontroler |
| 2 | RTC DS3231 | 1 | Penyimpan waktu |
| 3 | Kabel jumper | Secukupnya | Penghubung |
| 4 | Kabel USB | 1 | Pemrograman ESP8266 |
| 5 | PC/Laptop | 1 | Arduino IDE |
Pada tahap ini kita belum membutuhkan server.
Kita fokus memastikan RTC dapat dibaca ESP8266 dengan benar.
4. Pin RTC DS3231
RTC DS3231 menggunakan komunikasi I2C.
Pin utama:
| Pin DS3231 | Fungsi |
|---|---|
| VCC | Catu daya |
| GND | Ground |
| SDA | Data I2C |
| SCL | Clock I2C |
ESP8266 NodeMCU menggunakan:
SDA → D2
SCL → D1
5. Wiring DS3231 ke ESP8266
Gunakan koneksi:
| DS3231 | ESP8266 NodeMCU |
|---|---|
| SDA | D2 |
| SCL | D1 |
| GND | GND |
| VCC | 3.3V sesuai modul |
Diagram sederhana:
RTC DS3231
┌─────────────┐
│ │
SDA ─┤ SDA │──── D2 ESP8266
SCL ─┤ SCL │──── D1 ESP8266
GND ─┤ GND │──── GND
VCC ─┤ VCC │──── 3.3V*
└─────────────┘
Catatan: banyak breakout DS3231 mendukung rentang tegangan tertentu, tetapi konfigurasi modul berbeda-beda. Pastikan VCC dan level I2C sesuai dengan modul yang digunakan. Untuk sistem kita, gunakan konfigurasi yang aman untuk ESP8266 dan jangan mengandalkan label modul tanpa memeriksa spesifikasinya.
6. Library yang Digunakan
Untuk mempermudah pemrograman kita dapat menggunakan library RTClib.
Di Arduino IDE buka:
Sketch → Include Library → Manage Libraries
Kemudian cari:
RTClib
Install library tersebut.
Setelah berhasil, kita dapat menggunakan:
#include <RTClib.h>
7. Program Membaca RTC
Berikut contoh program sederhana untuk membaca waktu DS3231.
#include <Wire.h>
#include <RTClib.h>
RTC_DS3231 rtc;
void setup()
{
Serial.begin(115200);
Wire.begin(D2, D1);
Serial.println();
Serial.println("==============================");
Serial.println(" TEST RTC DS3231");
Serial.println("==============================");
if (!rtc.begin())
{
Serial.println("RTC DS3231 tidak ditemukan!");
while (1)
{
delay(100);
}
}
Serial.println("RTC DS3231 berhasil terdeteksi.");
}
void loop()
{
DateTime now = rtc.now();
Serial.print("Tanggal: ");
if (now.day() < 10)
Serial.print("0");
Serial.print(now.day());
Serial.print("/");
if (now.month() < 10)
Serial.print("0");
Serial.print(now.month());
Serial.print("/");
Serial.print(now.year());
Serial.print(" Jam: ");
if (now.hour() < 10)
Serial.print("0");
Serial.print(now.hour());
Serial.print(":");
if (now.minute() < 10)
Serial.print("0");
Serial.print(now.minute());
Serial.print(":");
if (now.second() < 10)
Serial.print("0");
Serial.println(now.second());
delay(1000);
}
8. Mengatur Waktu RTC
Pada penggunaan pertama, waktu RTC perlu diset.
Salah satu cara sederhana adalah menggunakan waktu saat program dikompilasi.
Tambahkan sementara:
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
Contohnya:
void setup()
{
Serial.begin(115200);
Wire.begin(D2, D1);
if (!rtc.begin())
{
Serial.println("RTC tidak ditemukan!");
while (1);
}
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
Serial.println("RTC berhasil diset.");
}
Penting: baris
rtc.adjust()jangan dibiarkan aktif setiap kali ESP8266 boot jika kita ingin RTC terus mempertahankan waktu yang sudah berjalan.
Setelah waktu berhasil diset, program normal cukup membaca:
DateTime now = rtc.now();
9. Hasil Pengujian
Upload program ke ESP8266.
Kemudian buka:
Serial Monitor
Gunakan:
115200 baud
Jika RTC terdeteksi:
==============================
TEST RTC DS3231
==============================
RTC DS3231 berhasil terdeteksi.
Kemudian akan muncul:
Tanggal: 05/09/2026 Jam: 08:30:01
Tanggal: 05/09/2026 Jam: 08:30:02
Tanggal: 05/09/2026 Jam: 08:30:03
Tanggal: 05/09/2026 Jam: 08:30:04
Jika detik terus bertambah, berarti RTC sudah berjalan.
10. Menggabungkan RTC dengan Fingerprint
Sekarang kita sudah mempunyai dua bagian penting:
Fingerprint
11. Konsep Data Absensi
Sekarang kita sudah bisa membentuk data absensi.
Misalnya:
12. Kenapa RTC Tetap Berguna Walaupun Ada Internet?
Pertanyaan ini sering muncul.
Kalau ESP8266 terhubung internet, sebenarnya kita bisa mengambil waktu dari server atau NTP.
Namun RTC tetap memiliki manfaat sebagai sumber waktu lokal.
Contohnya ketika:
Internet terputus
↓
ESP8266 tetap hidup
↓
RTC tetap berjalan
↓
Absensi tetap dapat mencatat waktu
Kemudian ketika internet kembali:
Internet ON
↓
Data absensi dikirim
↓
Server
↓
Database
Konsep ini akan sangat berguna ketika kita membuat fitur absensi offline.
13. RTC + WiFi + Server
Pada versi sistem yang lebih lengkap, kita bisa menggunakan kombinasi:
Dengan arsitektur tersebut, perangkat memiliki sumber waktu lokal dan juga dapat berkomunikasi dengan server.
14. Masalah yang Sering Terjadi
RTC tidak terdeteksi
Periksa:
Waktu RTC salah
Jika tanggal atau jam salah, lakukan proses setting RTC.
Periksa juga waktu komputer yang digunakan ketika program dikompilasi jika menggunakan:
__DATE__
__TIME__
RTC kembali ke waktu lama
Periksa baterai backup dan kondisi modul.
Pastikan baterai yang digunakan sesuai dengan desain modul RTC.
15. Kesimpulan
RTC DS3231 memberikan fungsi penting dalam sistem absensi karena menyediakan informasi:
Tanggal
+
Jam
Ketika digabungkan dengan AS608:
AS608
↓
Fingerprint ID
↓
ESP8266
↓
DS3231
↓
Tanggal + Jam
kita sudah mempunyai informasi dasar untuk membuat log absensi.
Contohnya:
Bayu
Fingerprint ID : 1
Tanggal : 05-09-2026
Jam : 07:30:15
Selanjutnya data tersebut akan kita kirim ke server.


Tidak ada komentar:
Posting Komentar