Cara Mudah Program RTC DS3231 Jam Digital Dengan Arduino
Pengenalan RTC DS3231
Sebelumnya di Kelas Robot saya pernah Posting mengenai RTC DS1302, RTC yang murah dan simple buat yang belajar membuat Jam Digital. Tapi kekurangan dari RTC tersebut adalah keakuratan waktunya, banyak yang berpengalaman ternyata RTC ini sering error sekian menit waktunya dalam waktu bulanan.
Nah bahaya banget kan kalo kita bikin product yang permanent untuk jangka waktu yang lama, seperti Jam Digital dan Jadwal Shalat. Nah untuk itu saya kenalkan agan ke RTC DS3231.
Kelebihan RTC DS3231
- Sangat Akurat dan sudah saya pakai berbulanan-bulan, waktunya masih sama dengan real time waktu sekarang. Hampir tidak ada yang berubah sedikitpun.
- Memiliki Sensor Suhu di dalamnya. Bayangkan udah ada sensor suhunya bro.
- Memiliki EPPROM juga. Kurang canggih apalagi coba. hihihi
Harga? Lebih mahal dari DS1302, tapi kualitas jauh pastinya. Dan lebih kumplit, seperti yang saya sebutkan diatas.
Membuat Rangkaian RTC DS3231
Sebelum membuat Rangkaian, pastikan kamu sudah menyiapakan:
- Arduino dan Kabel USB
- RTC DS3231 udah isi Baterai
- Kabel Jumper
Selanjutnya silahkan rangkai seperti pada rangkaian dibawah ini

Arduino | RTC DS3231 |
5V | 5V |
GND | GND |
A4 | SDA |
A5 | SCL |

Add Library RTC DS3231 Ke Arduino IDE
Kita akan Menggunakan Library RTClib.h dari Adafruit, yang mana bisa di Download melalui link dibawah ini:
Jika sudah di Download, silakan tambahkan ke Arduino IDE, jika kamu tidak tahu cara menambahkannya, silakan buka Tutorial dibawah ini:
Bagaimana Cara Memasukan Library Ke Aplikasi Arduino IDE
Koding RTC DS3231
Untuk koding yang digunakan pada RTC DS3231, silakan gunakan dibawah ini:
#include "RTClib.h"
RTC_DS3231 rtc;
char daysOfTheWeek[7][12] = {"Ahad", "Senin", "Selasa", "Rabu", "Kamis", "Jum'at", "Sabtu"};
int jam, menit, detik;
int tanggal, bulan, tahun;
String hari;
float suhu; // Variabel untuk menyimpan suhu
void setup () {
Serial.begin(9600);
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
Serial.flush();
while (1) delay(10);
}
//KALIBRASI
// rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
// rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
}
void loop () {
DateTime now = rtc.now();
jam = now.hour();
menit = now.minute();
detik = now.second();
tanggal = now.day();
bulan = now.month();
tahun = now.year();
hari = daysOfTheWeek[now.dayOfTheWeek()];
suhu = rtc.getTemperature(); // Membaca suhu dari DS3231
Serial.println(String() + hari + ", " + tanggal + "-" + bulan + "-" + tahun);
Serial.println(String() + jam + ":" + menit + ":" + detik);
Serial.println("Suhu: " + String(suhu) + " °C"); // Menampilkan suhu
Serial.println();
delay(1000);
}
Agan tinggal upload aja, lalu cek di Serial Monitor. Dengan begitu, Agan bisa memastikan bahwa perangkat berfungsi dengan baik dan mencatat waktu dengan benar.

Catatan Penting WAJIB BACA
- koding ini rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); adalah koding untuk setting Waktu Otomatis sesuai dengan Komputer, kalo sudah upload sekali silakan kasih komentar //, lalu upload lagi kodingnya
- Jika ingin mengatur waktu secara manual, silakan gunakan kode
rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
, lalu hapus komentarnya, sesuaikan waktunya sesuai kebutuhan, dan upload ke perangkat. Setelah itu, cek di Serial Monitor untuk memastikan bahwa pengaturan waktu telah berhasil diterapkan. Jika sudah, tambahkan kembali komentar pada baris tersebut, lalu upload ulang agar pengaturan waktu tidak terus berubah setiap kali perangkat restart.
Oke Sekian Postingan kali ini. Jika dari teman-teman ada yang ingin dinyakan silahkan isi di kotak komentar ya. Terimakasih
bang klo mau ditampilin di lcd 16×2 codingnya gmana bang
Kak, library ini gak support di wemos d1 ya?
wah iya tu bang, caranya nampilin di lcd 16×2 gimana ya