MASIGNALPHAS2101
6680671983845063762

Cara Mudah Program RTC DS3231 dengan Arduino - Hestech

Cara Mudah Program RTC DS3231 dengan Arduino - Hestech
Add Comments
12/22/2020
Module RTC DS3231 adalah salah satu jenis modul yang berfungsi sebagai Real Time Clock atau pengatur waktu berbasis IC AT24C32.
Interface untuk mengakses modul ini hanya menggunakan 2 Data (SDA dan SCL) dan 2 pin Power (VCC dan GND).
Gambar: Pin Out RTC DS3231 - by lastminuteengineers.com
Spesifikasi
Berikut ini adalah spesifikasi dari Modul RTC DS3231
  1. Real Time Clock menghitung Detik, Menit, Jam, Hari, Tanggal, Bulan, dan Tahun.
  2. Kecepatan data transfer adalah 400kHz.
  3. Low Power Operation memperpanjang masa baterai.
  4. Tegangan operasi: 3,3 - 5 Volt DC.
  5. Ketepatan Jam: Kisaran 0-40, akurasi 2ppm, kesalahannya sekitar 1 menit.
  6. Ukuran: 38mm (panjang) * 22mm (W) * 14mm (tinggi)

Hardware
Berikut ini beberapa komponen yang harus disiapkan:

  1. Arduino Uno.
  2. Module RTC DS3231.
  3. Kabel jumper.
  4. Komputer + Software Arduino IDE
Skematik
Rangkailah komponen diatas seperti gambar berikut:
Gambar: Skema Rangkaian Modul RTC DS3231
Library
Dibawah ini terdapat link download Library yang dibutuhkan.
library Sodaq_DS3231 - Download
Sebelum memasukan program waktu otomatis, harus terlebih dahulu memasukan library Sodaq_DS3231 yang dapat di download di link diatas:
Baca:
Program
Setelah merangkai komponen seperti diatas dan sudah memaskkan library RTC, selanjutnya upload program dibawah ini ke Arduino.
Program_Atur_Waktu_RTC_Otomatis.ino - Download
#include <EEPROM.h>
#include <Wire.h>
#include <Sodaq_DS3231.h>
 
#define alamatRTC 0x68
#define alamatEEPROMCekToken 0
#define tokenRTC 0xAA //<== rubah token jika ingin nilai baru
 
void setup() {
  Serial.begin(9600);
  Serial.println("Set waktu RTC otomatis dengan arduino");
  Serial.println("http://www.hestech.id/");
  Serial.println();
 
  Wire.begin();
  if (EEPROM.read(alamatEEPROMCekToken) != tokenRTC)
  {
    //Waktu compiler
    char bulan[12];
    byte indexBulan;
    int jam, menit, detik, tanggal, tahun;
 
    char *namaBulan[12] = {
      "Jan", "Feb", "Mar", "Apr", "May", "Jun",
      "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
    };
    sscanf(__TIME__, "%d:%d:%d", &jam, &menit, &detik);
    sscanf(__DATE__, "%s %d %d", bulan, &tanggal, &tahun);
    for (indexBulan = 0; indexBulan < 12; indexBulan++) {
      if (strcmp(bulan, namaBulan[indexBulan]) == 0)
        break;
    }
    uint8_t wday = hariDariTanggal(tanggal, indexBulan + 1, tahun);
    DateTime dt(tahun, indexBulan + 1, tanggal, jam, menit, detik, wday);
    rtc.setDateTime(dt);
    EEPROM.write(alamatEEPROMCekToken, tokenRTC);
    Serial.println("RTC sudah otomatis di setting (Sekali saja)");
  }
}
 
uint32_t old_ts;
void loop() {
  String strNamaHari[] = {"Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jum'at", "Sabtu"};
  DateTime now = rtc.now(); //get the current date-time
  Serial.print(now.year(), DEC);
  Serial.print('/');
  Serial.print(now.month(), DEC);
  Serial.print('/');
  Serial.print(now.date(), DEC);
  Serial.print(' ');
  Serial.print(now.hour(), DEC);
  Serial.print(':');
  Serial.print(now.minute(), DEC);
  Serial.print(':');
  Serial.print(now.second(), DEC);
  Serial.print(' ');
  Serial.print(strNamaHari[now.dayOfWeek()-1]);
  Serial.println();
 
  while (1);
}
byte hariDariTanggal(byte tanggal, byte bulan, uint16_t tahun)
{
  uint16_t jumlahHariPerBulanMasehi[] = {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334};
  if (tahun >= 2000)
    tahun -= 2000;
 
  uint32_t jumlahHari = tahun * 365;
  uint16_t tahunKabisat = tahun / 4;
  for (byte i = 0; i < tahun; i++)
  {
    if (!(i % 4))
    {
      jumlahHari++;
    }
  }
  jumlahHari += jumlahHariPerBulanMasehi[bulan - 1];
  if ( (bulan >= 2) && !(tahun % 4))
  {
    jumlahHari++;
  }
  jumlahHari += tanggal;
  return ((jumlahHari + 5) % 7) + 1;
}
Setelah selesai menuliskan program diatas, kemudian compile program untuk memastikan tidak ada eror. Jika tidak ada permasalahan maka akan menampilkan tulisan done compile dan program siap untuk diupload.
Program RTC DS3231 Siap di Upload
Setelah terupload, kemudian buka serial monitor. Maka akan menampilkan jam yang telah tersinkron dengan PC/laptop. Tetapi pastikan jam dan tanggal pada PC/laptopnya sudah cocok
Tampilan Timer pada Serial Monitor
Selesai
Hestech Indonesia

Innovasi di bidang Teknologi, Listrik, Teknik Komputer dan gaya Hidup. Info lainnya tentang praktik konservasi berbasis Sains, inovasi, dan kearifan lokal