Module RTC DS3231 adalah salah satu jenis module yang dimana berfungsi sebagai RTC (Real Time Clock) atau pewaktuan digital serta penambahan fitur pengukur suhu yang dikemas kedalam 1 module.
Selain itu pada modul terdapat IC EEPROM tipe AT24C32 yang dapat dimanfaatkan juga.
Interface atau antarmuka untuk mengakses modul ini yaitu menggunakan i2c atau two wire (SDA dan SCL). Sehingga apabila diakses menggunakan mikrontroler misal Arduino Uno pin yang dibutuhkan 2 pin saja dan 2 pin power.
Module DS3231 RTC ini pada umumnya sudah tersedia dengan battery CR2032 3V yang berfungsi sebagai back up RTC apabila catudaya utama mati.
Dibandingkan dengan RTC DS1302, RTC DS3231 ini memiliki banyak kelebihan. Sebagai contoh untuk range VCC input dapat disupply menggunakan tegangan antara 2.3V sampai 5.5V dan memiliki cadangan baterai.
Berbeda dengan DS1307, pada DS3231 juga memiliki kristal terintegrasi (sehingga tidak diperlukan kristal eksternal), sensor suhu, 2 alarm waktu terprogram, pin output 32.768 kHz untuk memastikan akurasi yang lebih tinggi.
Selain itu, terdapat juga EEPROM AT24C32 yang bisa memberi Anda 32K EEPROM untuk menyimpan data, ini adalah pilihan terbaik untuk aplikasi yang memerlukan untuk fitur data logging, dengan presisi waktu yang lebih tinggi.
Spesifikasi dan fitur :
- RTC yang Sangat Akurat Mengelola Semua Fungsi Pengatur Waktu
- Jam Real Time Menghitung Detik, Menit, Jam, Tanggal Bulan, Bulan, Hari dalam Seminggu, dan tahun, dengan Kompensasi Tahun Lawan Berlaku Hingga 2100
- Akurasi ± 2ppm dari 0 ° C sampai +40 ° C
- Akurasi ± 3.5ppm dari -40 ° C sampai +85 ° C
- Digital Temp Sensor Output: ± 3 ° C Akurasi
- Mendaftar untuk Aging Trim
- Active-Low RST Output / Pushbutton Reset Debounce Input
- Two Time-of-Day Alarms
- Output Programmable Square-Wave Output
- Antarmuka Serial Sederhana Menghubungkan ke Kebanyakan Microcontrollers
- Kecepatan data transfer I2C Interface (400kHz)
- Masukan Cadangan Baterai untuk Pencatatan Waktu Terus-menerus
- Low Power Operation Memperpanjang Waktu Jalankan Baterai-Cadangan
- Rentang Suhu Operasional: Komersial (0° C sampai + 70° C) dan Industri (-40° C sampai +85° C)
- Tegangan operasi: 3,3-5,55 V
- Chip jam: chip clock presisi tinggi DS3231
- Ketepatan Jam: Kisaran 0-40, akurasi 2ppm, kesalahannya sekitar 1 menit
- Output gelombang persegi yang dapat diprogram
- Sensor suhu chip hadir dengan akurasi 3
- Chip memori: AT24C32 (kapasitas penyimpanan 32K)
- Antarmuka bus IIC, kecepatan transmisi maksimal 400KHz (tegangan kerja 5V)
- Dapat mengalir dengan perangkat IIC lainnya, alamat 24C32 dapat disingkat A0 / A1 / A2
- memodifikasi alamat defaultnya adalah 0x57
- Dengan baterai isi ulang CR2032, untuk memastikan sistem setelah power
- Ukuran: 38mm (panjang) * 22mm (W) * 14mm (tinggi)
- Berat: 8g
Tutorial 1 Monitoring waktu dan temperature RTC DS3231 via Arduino IDE
Bahan yang diperlukan :
- Arduino Uno
- module RTC DS3231
- Kabel jumper
- Komputer + Software Arduino IDE
Skema rangkaian untuk percobaan pertama
Wiring RTC DS3231 ke Arduino
- GND >> Pin GND
- VCC >> Pin 5V
- SDA >> Pin SDA (A4)
- SCL >> Pin SCL (A5)
- SQW >> tidak dihubungkan
- 32K >> tidak dihubungkan
Library yang dibutuhkan : [ddownload id=”1206″]
Peletakan Library pada masing – masing Operation System :
- PC (Windows) : Program file /Arduino/ libraries
- Mac : (home directory)/Applications/Arduino (Show Package Content)/Contents/Java/Libraries
- Linux : (home directory)/sketchbook/libraries
Berikut fungsi yang paling sering digunakan di Library DS3231 pada Arduino
-
- setTime (hour,minute,second);
fungsi : Setting/adjust waktu pada RTC
contoh : rtc.setTime (10, 30, 00); //jam 10 menit 30 detik 00 - setDate (date,month,year);
fungsi : Setting/adjust tanggal pada RTC
contoh : rtc.setDate (1, 8, 2016); //tanggal 1 Agustus 2016 - setDow (uint8_t dow);
fungsi : Setting/adjust urutan Hari dalam Minggu (0-6 untuk minggu-sabtu), setDow akan berpengaruh pada setDate
contoh : rtc.setDow (1); //setting hari sebagai Senin - getTimeStr ();
fungsi : Mengambil data Waktu dari RTC,hasil berupa String
contoh : rtc.getTimeStr(); >> result : 09:30:33 //jam 9, menit ke 30, detik ke 33 - getDateStr ();
fungsi : Mengambil data Tanggal dari RTC,hasil berupa String
contoh : rtc.getDateStr(); >>result : 01.05.2016 //tanggal 1 Mei 2016 - getDowStr (uint8_t);
fungsi : Mengambil data nama Hari dari RTC,hasil berupa String (English Name)
contoh : rtc.getDowStr(); >>Result : Monday //day Long
contoh : rtc.getDowStr(1); >>Result : Mon //day Short
contoh : rtc.getDowStr(2); >>Result : Monday //day Long - getMonthStr (uint8_t);
fungsi : Mengambil data nama Bulan dari RTC,hasil berupa String (English Name)
contoh : rtc.getMonthStr(); >>Result : January //day Long
contoh : rtc.getMonthStr(1); >>Result : Jan //day Short
contoh : rtc.getMonthStr(2); >>Result : January //day Long - getTemp ();
fungsi : Mengambil data suhu dari RTC, hasil berupa long int
contoh : rtc.getTemp();
result : 32.15 //Suhu 33.15° Celcius
- setTime (hour,minute,second);
Kode Program untuk monitoring pembacaan waktu di serial monitor
//www.nyebarilmu.com #include <DS3231.h> //mengincludekan library DS3231 DS3231 rtc(SDA, SCL); // inisialisasi penggunaan i2c void setup() { Serial.begin(115200); //set komunikasi baut serial monitor pada 115200 rtc.begin(); //setting pertama download program //rtc.setDate(07, 4, 2018); //mensetting tanggal 07 april 2018 //rtc.setTime(22, 00, 00); //menset jam 22:00:00 //rtc.setDOW(6); //menset hari "Sabtu" //setelah didownload awal selesai, download kedua dengan memberi tanda komen "//" } void loop() { Serial.print(rtc.getDOWStr()); //prosedur pembacaan hari Serial.print(" "); Serial.print(rtc.getDateStr()); //prosedur pembacaan tanggal Serial.print(" -- "); Serial.println(rtc.getTimeStr()); //prosedur pembacaan waktu delay (1000); //waktu tunda 1 detik per cycle }
Kode Program untuk monitoring pembacaan temperatur di serial monitor
#include <DS3231.h> // Init the DS3231 using the hardware interface DS3231 rtc(SDA, SCL); void setup() { // Setup Serial connection Serial.begin(115200); // Uncomment the next line if you are using an Arduino Leonardo //while (!Serial) {} // Initialize the rtc object rtc.begin(); } void loop() { // Read current temperature Serial.print("Temperature: "); Serial.print(rtc.getTemp()); Serial.println(" C"); delay (1000); }
[irp]
Tutorial 2 Monitoring waktu dan temperature RTC DS3231 menggunakan LCD Display
Bahan yang diperlukan :
- Arduino Uno
- RTC DS3231
- Module i2c pcf8574
- LCD 16×2
- Kabel jumper
- Komputer + Software Arduino IDE
Skema rangkaian untuk percobaan kedua
Library yang dibutuhkan :
- DS3231 : [ddownload id=”1206″]
- I2C PCF8574 : [ddownload id=”1207″]
Peletakan Library pada OS :
1. Mac : (home directory)/Documents/Arduino/libraries
2. PC (Windows) : My Documents -> Arduino -> libraries
3. Linux : (home directory)/sketchbook/libraries
Kode program untuk LCD Display
//www.nyebarilmu.com #include <Wire.h> #include <LiquidCrystal_PCF8574.h> //memasukan library LCD #include <DS3231.h> //memasukan library DS3231 DS3231 rtc(SDA, SCL); //prosedur pembacaan I2C LiquidCrystal_PCF8574 lcd(0x3F); //didapat dari i2c scanner void setup() { //set komunikasi baut di serial monitor pada kecepatan 115200 Serial.begin(115200); //menuliskan data di serial monitor Serial.println("Trial LCD + DS3231"); //prosedur pembacaan RTC DS3231 rtc.begin(); //Inisialisasi LCD berukuran 16 kolom dan 2 baris lcd.begin(16, 2); //menyalakan backlight LCD, jika mematikan dapat diisi dengan nilai "0" lcd.setBacklight(255); //setting pertama download program //rtc.setDate(07, 4, 2018); //mensetting tanggal 07 april 2018 //rtc.setTime(22, 00, 00); //menset jam 22:00:00 //rtc.setDOW(6); //menset hari "Sabtu" lcd.setCursor(00,00); lcd.print("nyebarilmu.com"); //pada baris pertama dituliskan nyebarilmu.com lcd.setCursor(00,1); lcd.print(" LCD + DS3231 "); //pada baris kedua dituliskan LCD + DS3231 delay(5000); //Waktu jeda lcd.clear(); } void loop() { Serial.print(rtc.getDOWStr(1)); Serial.print(" "); Serial.print(rtc.getDateStr()); Serial.print(" -- "); Serial.println(rtc.getTimeStr()); Serial.print(" -- "); Serial.println(rtc.getTemp()); lcd.setCursor(00,00); lcd.print(rtc.getDOWStr(1)); //prosedur pemanggilan hari lcd.setCursor(3,00); lcd.print(","); lcd.setCursor(4,00); lcd.print(rtc.getDateStr()); //prosedur pemanggilan tanggal lcd.setCursor(00,1); lcd.print(rtc.getTimeStr()); //prosedur pemanggilan waktu lcd.setCursor(10,1); lcd.print("t:"); lcd.setCursor(12,1); lcd.print(rtc.getTemp()); //prosedur pemanggilan suhu delay (1000); }
Hasil program diatas
Thanks 🙂
sama sama gan,
mantap sangat membantu
thanks sudah berkunjung,
berarti 1 SDL SCA bisa dipake buat banyak modul ya? nge bedain nya gmn?
iya bener gan, itulah keunggulan dari i2c (sda, scl komunikasi)
kalo itu yang bedain alamatnya gan,
bisa dicek di artikel ini “Cara mencari tahu alamat module – i2c finder“
kalau datanya di logger di EEPROM nya RTC DS3231 bisa gak ?
bisa saja gan, tapi memoru di arduino hanya terbatas, saran ane logger menggunakan micro sd saja seperti ini
https://www.nyebarilmu.com/project-membuat-data-logger-rtc-ds3231/
berarti kalau pakai eeprom nya yang pin 32K nya dihubungkan ke arduino ya mas? dan program projek data looger apa yang di ubah? terimakasih
kenapa lcd nya hanya bisa berkedip aja gak ada tampilan padahal sesuai dengan skema dan sketch nya…tp pada tampilan yg lain bisa kayka running text yg diblog ini
itu diatur trimpotnya saja gan, kalo berkedip itu program backlight nya
Cara setting waktu sekarang gimana gan, kok diserial monitornya muncul monday01,01,2000-23:23:06 berjalan terus jam nya mas
//setelah didownload awal selesai, download kedua dengan memberi tanda komen “//”, maksud dari ini apa gan?
itu untuk data awal saja gan,
kalo untuk bisa disetting, bisa dicek di artikel lanjutannya
https://www.nyebarilmu.com/jam-digital-atau-clock-digital-ds1307-menggunakan-button/