RTC merupakan singkatan dari Real Time Clock, yang dapat menyimpan waktu & tanggal. Pada kesempatan kali ini kita akan membahas sebuah modul RTC DS3231 yang populer digunakan dan mempunya tingkat akurasi yang tinggi. Modul DS3231 juga terdapat sensor suhu dengan tingkat akurasi ±3ºC.
Fitur Modul RTC DS3231
- RTC counts seconds, minutes, hours and year
- Accuracy: +2ppm to -2ppm for 0ºC to +40ºC , +3.5ppm to -3.5ppm for -40ºC to +85ºC
- Digital temperature sensor with ±3ºC accuracy
- Two Time-of-day alarms
- Programmable square wave output
- Register for Aging trim
- 400Khz I2C interface
- Low power consumption
- Automatic power failure battery switch circuitry
- CR2032 battery backup with two to three year life
- Portable size
Berikut komponen yang kita perlukan dalam pembahasan ini:
1. Arduino Board
2. RTC DS3231
3. Kabel Jumper
Modul RTC ini menggunakan 2 buah pin I/O pada arduino yaitu pin SDA & SCL (A4 & A5), berikut gambar rangkaiannya:
Tentunya membutuhkan library "RTClib.h" untuk menjalankan modul RTC DS3231 ini pada Arduino, dapat di download disini (https://github.com/adafruit/RTClib/archive/refs/heads/master.zip) dan melakukan instalasi library tersebut pada software Arduino IDE.
Dua step pemrograman untuk mengakses modul RTC DS3231 ini, yaitu:
1. Upload program Seting Waktu & Tanggal RTC
2. Upload program akses RTC
Berikut perogram SETING WAKTU & TANGGAL RTC DS3231:
#include "RTClib.h"
RTC_DS3231 rtc;
void setup()
{
Serial.begin(9600);
rtc.begin();
//*************AKTIFKAN BARIS INI UNTUK ADJUST RTC*********************************************
//rtc.adjust(DateTime(2021, 3, 26, 18, 6, 0)); //Tahun, Bulan, Tanggal, Jam, Menit, Detik * //********<<<
rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); //*********<<<
//********************************************************************************************
}
void loop()
{
DateTime now = rtc.now();
delay(1000);
}
RTC_DS3231 rtc;
void setup()
{
Serial.begin(9600);
rtc.begin();
//*************AKTIFKAN BARIS INI UNTUK ADJUST RTC*********************************************
//rtc.adjust(DateTime(2021, 3, 26, 18, 6, 0)); //Tahun, Bulan, Tanggal, Jam, Menit, Detik * //********<<<
rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); //*********<<<
}
void loop()
{
DateTime now = rtc.now();
delay(1000);
}
Ada 2 opsi untuk seting waktu & tanggal pada modul ini, yaitu Manual Adjust & Auto Adjust, untuk melakukan manual Adjust kita dapat memasukkan Waktu dan tanggal secara manual pada mengaktifkan baris program berikut :
rtc.adjust(DateTime(2021, 3, 26, 18, 6, 0));
Untuk mudahnya kita dapat memilih Auto Adjust, yang mana dapat menyesuaikan langsung Waktu & Tanggal dengan PC/Laptop secara otomatis, dengan mengaktifkan baris program berikut:
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
Jika selesai proses seting waktu RTC DS3231, silahkan upload sketch program MENGAKSES MODUL RTC DS3231 berikut:
#include "RTClib.h"
RTC_DS3231 rtc;
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
void setup()
{
Serial.begin(9600);
rtc.begin();
}
void loop()
{
DateTime now = rtc.now();
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(" (");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
Serial.println();
delay(1000);
}
RTC_DS3231 rtc;
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
void setup()
{
Serial.begin(9600);
rtc.begin();
void loop()
{
DateTime now = rtc.now();
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(" (");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
Serial.println();
delay(1000);
}
Keep Sharing...
0 comments:
Posting Komentar