Mengenal RTC DS3231 + AT24C32
Pada artikel kali ini, kita akan membahas bagaiman cara untuk melakukan interfacing / program / mengakses modul RTC DS3231 dengan menggunakan Arduino. RTC merupakan singkatan dari Real Time Clock. Jadi Modul RTC DS3231 adalah sebuah rangkaian elektronik embedded sistem yang berfungsi untuk menyimpan data WAKTU dan TANGGAL dengan tingkat presisi / akurasi tinggi serta diintegrasikan dengan serial EEPROM AT24C32 untuk keperluan penyimpanan data lainnya.
Selain itu, dalam internal chip DS3231 juga sudah terdapat sensor suhu / temperature dengan akurasi ±3ºC. Modul RTC lainnya yang ekuivalen dengan RTC DS3231 antara lain : DS1302, DS1307 dll.
Modul ini dilengkapi sumber tegangan baterai tipe CR2032 agar supaya modul tetap bekerja / berjalan secara independen meskipun tanpa ada sumber tegangan utama yang biasanya berasal dari listrik. Dengan baterai CR2032 tersebut, modul RTC DS3231 akan mampu tetap berjalan dalam kurun waktu yang cukup lama berkisar kurang lebih 2 – 3 tahun.
Karena pada implementasinya, modul ini biasanya tidak berdiri sendiri, melainkan sebuah bagian dari sebuah perangkat / rangkaian elektronik yang lebih besar atau lebih kompleks yang mempunyai tugas khusus berkaitan dengan waktu dan tanggal.
Tujuannya agar apabila rangkaian / perangkat elektronik tersebut sewaktu-waktu mati karena kehilangan sumber daya maupun dengan sengaja dimatikan dan dinyalakan secara berkala, sistem / perangkat elektronik tersebut tetap bisa mendapatkan data waktu dan tanggal dengan akurat.
Konfigurasi Pin Modul RTC DS3231
Seperti yang terlihat pada gambar, pada modul RTC DS3231 terdapat 6 pin yaitu :
- 2 pin untuk sumber daya (VCC + GND)
- 2 pin untuk komunikasi I2C (SDA + SCL)
- 2 pin optional untuk output Square Wave dan Oscillator(SQW + 32K)
Pin Name | Description |
VCC | Sumber Tegangan Positive. |
GND | Ground. |
SDA | Serial Data pin (I2C interface) |
SCL | Serial Clock pin (I2C interface) |
SQW | Square Wave output pin |
32K | 32K oscillator output |
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
Spesifikasi RTC DS3231
- Tegangan Operasi : 2.3V – 5.5V
- Dapat beroperasi pada tegangan rendah
- Konsumsi arus pada battery backup : 500nA
- Tegangan Max pada SDA , SCL : VCC + 0.3V
- Operating temperature: -45ºC to +80ºC
Hardware Yang Diperlukan
Adapun hardware yang dibutuhkan atau perlu disediakan dalam tutorial cara pemrograman RTC DS3231 + AT24C32 antara lain :
- Arduino UNO atau lainnya + Kabel Data
- Modul RTC DS3231 AT 24C32
- Beberapa kabel jumper M – F / F – F
Rangkaian / Wiring Diagram
Pada tabel berikut ditunjukkan koneksi atau sambungan antara modul RTC DS3231 dengan Arduino UNO.
RTC DS3231 | Arduino |
VCC | +5V |
GND | GND |
SDA | SDA / A4 |
SCL | SCL / A5 |
Code Program
Sebelumnya, download terlebih dahulu library RTCLib dari Adafruit. Setelah didownload, ekstrak file zip dari library tersebut dan copy ke folder library dari Arduino IDE. Jika Arduino IDE sudah dalam keadaan dibuka maka tutup dan jalankan lagi Arduino IDE.
#include <Wire.h> #include "RTClib.h" RTC_DS3231 rtc; char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}; void setup () { Serial.begin(9600); delay(3000); // wait for console opening if (! rtc.begin()) { Serial.println("Couldn't find RTC"); while (1); } if (rtc.lostPower()) { Serial.println("RTC lost power, lets set the time!"); // following line sets the RTC to the date & time this sketch was compiled rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // This line sets the RTC with an explicit date & time, for example to set // January 21, 2014 at 3am you would call: // rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0)); } } 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.print(" since midnight 1/1/1970 = "); Serial.print(now.unixtime()); Serial.print("s = "); Serial.print(now.unixtime() / 86400L); Serial.println("d"); // calculate a date which is 7 days and 30 seconds into the future DateTime future (now + TimeSpan(7,12,30,6)); Serial.print(" now + 7d + 30s: "); Serial.print(future.year(), DEC); Serial.print('/'); Serial.print(future.month(), DEC); Serial.print('/'); Serial.print(future.day(), DEC); Serial.print(' '); Serial.print(future.hour(), DEC); Serial.print(':'); Serial.print(future.minute(), DEC); Serial.print(':'); Serial.print(future.second(), DEC); Serial.println(); Serial.println(); delay(3000); }
Setelah Sketch program diatas diupload ke board Arduino, amati outputnya dengan membuka Serial Monitor pada Baudrate 9600. Demikian tutorial sederhana untuk menunjukkan cara akses RTC DS3231 dengan menggunakan Arduino.
++++++++ Semoga Bermanfaat ++++++++
Leave a Reply