Breaking

Cara Menggunakan RTC DS3231 dengan ESP8266 untuk Sistem Absensi



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
1ESP8266 NodeMCU    1    Mikrokontroler
2RTC DS3231    1    Penyimpan waktu
3Kabel jumper    Secukupnya    Penghubung
4Kabel USB    1    Pemrograman ESP8266
5PC/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

AS608
 ↓
ID Fingerprint

RTC

DS3231
 ↓
Tanggal + Jam

Kita gabungkan:

             AS608
                │
               ▼
        ID Fingerprint
                │
               ▼
          ESP8266
               ▲
                │
          DS3231 RTC
                │
               ▼
        Tanggal + Jam

Contohnya:

ID Fingerprint : 1
Tanggal        : 05/09/2026
Jam            : 07:30:15


11. Konsep Data Absensi

Sekarang kita sudah bisa membentuk data absensi.

Misalnya:

Fingerprint ID : 1
Tanggal        : 2026-09-05
Jam            : 07:30:15

Kemudian database dapat menerjemahkan:

Fingerprint ID 1
       ↓
Pegawai Bayu

Hasil akhirnya:

Nama     : Bayu
Tanggal  : 05 September 2026
Jam      : 07:30:15
Status   : MASUK


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:

✓ VCC
✓ GND
✓ SDA
✓ SCL

Untuk ESP8266:

SDA → D2
SCL → D1


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