46. Akses RTC (Real Time Clock) Presisi DS3231
46. Akses RTC (Real Time Clock) Presisi DS3231

Modul RTC DS3231 berfungsi sebagai real time clock atau pewaktu digital dengan presisi tinggi yang dilengkapi dengan fitur pengukuran suhu. Modul RTC DS3231 ini mampu menampilkan informasi detik, menit, jam, hari, tanggal, bulan, dan tahun secara real time, bahkan dengan koreksi bulan yang mempunyai jumlah 31 hari dan tahun kabisat sampai dengan tahun 2100. Selain itu, modul ini juga mengenal format waktu dalam 24 jam atau 12 jam dengan indikator waktu AM/PM. Untuk menyesuaikan waktu dan tanggal pada awal penggunaan modul, pengguna juga dapat mengatur waktu dan tanggal tersebut secara manual. Pengaksesan modul RTC DS3231 ini dapat dilakukan dengan komunikasi two wire menggunakan antarmuka I2C.

Modul RTC DS3231 memiliki komponen utama yaitu IC DS3231 yang berfungsi untuk mengelola informasi ketepatan waktu secara real time dan jalannya komunikasi I2C antara modul RTC dengan Mikrokontroler. Informasi waktu real time yang diberikan modul RTC diperoleh dari fungsi osilator kristal yang terdapat pada IC DS3231.

Sebagai pencatat waktu real time, modul STC DS3231 dilengkapi dengan cadangan baterai CR2032 berbentuk batrei koin lithium sebesar 3V untuk menjaga waktu tetap akurat saat daya utama ke perangkat terputus. Sirkuit sensor daya internal secara terus menerus memantau status VCC untuk mendeteksi kegagalan daya. Ketika hal tersebut terjadi, maka secara otomatis sumber daya beralih ke daya cadangan. Sehingga modul RTC tetap dapat melacak waktu. Baterai cadangan CR2032 dengan kapasitas 220mAh ini dapat digunakan selama ±8 tahun apabila setiap jamnya diasumsikan arus minimum yang digunakan sebesar 3µA.

Perbedaan utama modul RTC DS3231 dengan modul RTC lainnya yaitu penggunaan Temperature Compensated Crystal Oscillator (TCXO) 32kHz dan sensor suhu di dalam IC DS3231 yang membuat pembacaan waktu lebih akurat. TCXO ini mampu menghindari adanya penyimpangan dalam kristal osilator karena perubahan suhu eksternal.  Sedangkan, sensor suhu yang terintegrasi dengan TCXO mampu mengkompensasi perubahan frekuensi dengan menambahkan atau mengurangi pulse (yang dihasilkan oleh TCXO 32kHz) sehingga ketepatan waktu tetap terjaga. Modul RTC DS3231 ini mampu menjaga kepresisian waktu dengan akurasi ±2 menit per tahun.

RTC DS3231 Pinout

Alamat I2C Modul RTC DS3231

Modul RTC DS3231 menggunakan IC EEPROM 24C32 32 byte sebagai memori untuk fungsi siklus read/write yang tak terbatas. EEPROM 24C32 menggunakan antarmuka I2C untuk komunikasi dan berbagi bus I2C yang sama dengan DS3231. Secara default, 24C32 memberikan alamat I2C yaitu 0x57hex namun alamat ini dapat diubah dengan menghubungkan jumper solder pada Jumper I2C Adress Selection. Terdapat 8 kombinasi alamat I2C yang dapat digunakan seperti gambar di atas.

Untuk mengakses modul RTC DS3231 secara sederhana pada Arduino, diperlukan Library tambahan yaitu “RTClib by Adafruit”yang dapat diinstal pada Library Manger Arduino IDE atau Library “DS3231” yang dapat diunduh pada link berikut: https://drive.google.com/file/d/1XKwUsyb3QxLkyBorn8g7Y7lwv_oQb8GG/view?usp=sharing

Fungsi yang banyak digunakan di Library “DS3231”, antara lain.

  • setTime (jam, menit, detik) : digunakan untuk setting waktu pada RTC
  • setDate (tanggal, bulan, tahun) :digunakan untuk setting tanggal pada RTC
  • setDow (uint8_t dow) : digunakan untuk setting urutan hari dalam satu minggu (0-6 untuk minggu – sabtu)
  • getTimeStr() :digunakan untuk mengambil data waktu  berupa String
  • getDareStr() : digunakan untuk mengambil data tanggal berupa String
  • getDowStr () : mengambil data nama hari (dalam bahasa Inggris) berupa String
  • getMonthStr() : mengambil data nama bulan (dalam bahasa Inggris) berupa String
  • getTemp() : mengambil data suhu berupa long int

Percobaan 62: Akses RTC (Real Time Clock) Presisi DS3231

  1. Hubungkan SDA dengan pin D20 ATMEGA 2560
  2. Hubungkan SCL dengan pin D21 ATMEGA 2560
  3. Hubungkan board ATMEGA 2560 dengan Komputer menggunakan kabel USB.
  4. Bukalah IDE Arduino, kemudian ketikkan kode program/sketch atau buka file RTC_DS3231
  5. Compile menggunakan verify button (tanda ceklist pada IDE arduino) untuk mengecek ada atau tidaknya error/kesalahan dalam pengetikan.
  6. Upload program ke arduino dengan cara, pilih File > Upload to I/O board, atau tekan tombol tanda panah pada jendela IDE arduino.

Code:


//harus dan wajib cek i2c scanner dulu dan harus ada 2 alamat i2c. jika cuma 1 alamat dan nilaix 0x57(eeprom) maka ds3231 rusak
//seharusx ada 0x57(eeprom) dan 0x68(ds3231)
#include <Wire.h>
#include "RTClib.h"

RTC_DS3231 rtc;

char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};

void setup () 
{
  Wire.begin();
  Serial.begin(9600);
  
  delay(1000); // wait for console opening

  if (! rtc.begin()) {
    Serial.println("Couldn't find RTC");
    while (1);
  }
  
  //utk mengatur waktux, hanya awal saja, jika sudah diatur maka bisa di comment
  rtc.adjust(DateTime(2022, 10, 1, 17, 18, 0));
  if (rtc.lostPower()) {
    Serial.println("RTC lost power, lets set the time!");
  
  // Comment out below lines once you set the date & time.
    // Following line sets the RTC to the date & time this sketch was compiled
   // rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  
    // Following line sets the RTC with an explicit date & time
    // for example to set January 27 2017 at 12:56 you would call:
   //  rtc.adjust(DateTime(2022, 6, 26, 16, 51, 0));
  }
}

void loop () 
{
    DateTime now = rtc.now();
    
    Serial.println("Current Date & Time: ");
    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();
    
   
    delay(1000);
}

Video Demo:

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *