RTC DS3231 adalah salah satu jenis RTC yang dapat digunakan bersama controller Arduino.Chip RTC buatan buatan Maxim-Integrated ini salah satu jenis RTC yang sangat bagus di kelasnya dengan harga yang murah tentunya. RTC DS3231 umumnya sudah hadir dalam bentuk module siap pakai lengkap dengan battery CR2032 3V dan 6 pin interface.
Benefits and Features
?Highly Accurate RTC With Integrated MEMS
Resonator Completely Manages All Timekeeping
Functions
?Complete Clock Calendar Functionality Including
Seconds, Minutes, Hours, Day, Date, Month, and
Year, with Leap-Year Compensation Up to Year 2100
?Timekeeping Accuracy ?5ppm (?0.432 Second/Day)
from -45C to +85C
?Footprint and Functionally Compatible to DS3231
?Two Time-of-Day Alarms
?1Hz and 32.768kHz Outputs
?Reset Output and Pushbutton Input with Debounce
?Digital Temp Sensor with ?3C Accuracy
?+2.3V to +5.5V Supply Voltage
?Simple Serial Interface Connects to Most
Microcontrollers
?Fast (400kHz) i2C Interface
?Battery-Backup Input for Continuous Timekeeping
?Low Power Operation Extends Battery-Backup Run Time
?Operating Temperature Range: -40C to +85C
Full datasheets silahkan lihat disini.
Library to Arduino
Library RTC DS3231 untuk Arduino download disini.https://drive.google.com/open?id=0B7t_g4hdtuILcjN1N2pvamplU0U
Extract dan masukan Library yang dibutuhkan diataske dalam folder Libraries Arduino (master foldernya saja)
Windows 64bit : C:\ Program Files (x86) \ Arduino \ libraries
Windows 32bit : C:\ Program Files \ Arduino \ libraries
Windows 64bit : C:\ Program Files (x86) \ Arduino \ libraries
Windows 32bit : C:\ Program Files \ Arduino \ libraries
Wiring to Arduino
Wiring RTC DS3231 ke ArduinoGND --> ke Pin GND Arduino
VCC --> ke Pin 5V Arduino (bisa Juga ke Pin 3.3V untuk Board 3.3V)
SDA --> ke Pin SDA Arduino (A4 for Uno)
SCL --> ke Pin SCL Arduino (A5 for Uno)
SQW --> tidak dihubungkan
32K ---> tidak dihubungkan
Berikut daftar posisi Pin SDA dan SCL pada beberapa Arduino Board
Arduino Uno:
----------------------
DS3231: SDA pin -> Arduino Analog 4 or the dedicated SDA pin
SCL pin -> Arduino Analog 5 or the dedicated SCL pin
Arduino Leonardo:
----------------------
DS3231: SDA pin -> Arduino Digital 2 or the dedicated SDA pin
SCL pin -> Arduino Digital 3 or the dedicated SCL pin
Arduino Mega:
----------------------
DS3231: SDA pin -> Arduino Digital 20 (SDA) or the dedicated SDA pin
SCL pin -> Arduino Digital 21 (SCL) or the dedicated SCL pin
Arduino Due:
----------------------
DS3231: SDA pin -> Arduino Digital 20 (SDA) or the dedicated SDA1 (Digital 70) pin
SCL pin -> Arduino Digital 21 (SCL) or the dedicated SCL1 (Digital 71) pin
Arduino Uno:
----------------------
DS3231: SDA pin -> Arduino Analog 4 or the dedicated SDA pin
SCL pin -> Arduino Analog 5 or the dedicated SCL pin
Arduino Leonardo:
----------------------
DS3231: SDA pin -> Arduino Digital 2 or the dedicated SDA pin
SCL pin -> Arduino Digital 3 or the dedicated SCL pin
Arduino Mega:
----------------------
DS3231: SDA pin -> Arduino Digital 20 (SDA) or the dedicated SDA pin
SCL pin -> Arduino Digital 21 (SCL) or the dedicated SCL pin
Arduino Due:
----------------------
DS3231: SDA pin -> Arduino Digital 20 (SDA) or the dedicated SDA1 (Digital 70) pin
SCL pin -> Arduino Digital 21 (SCL) or the dedicated SCL1 (Digital 71) pin
Example Sketch to Arduino
Setelah memasukan Library ke folder Libraries Arduino,tutup semua jendela Arduino IDE yang terbuka kemudian buka ulang aplikasi Arduino IDE.Klik File -> Example -> DS3231 -> Arduino ->
Pada example sketch ada 4 buah contoh penerapan coding DS3231 dan bisa kita monitor dengan membuka Serial Monitor Arduino.
Buka salah satu example (misal dari DS3231_Serial Easy) kemudian upload ke Arduino Board dan buka Serial Monitor Ctrl+Shift+M atau gambar 'luv' di pojok kaknan atas.
Fungsi umum Library DS3231 Arduino
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
->contoh : rtc.setDate (28, 11, 16); //tanggal 28 November 2016
setDow (uint8_t dow);
->fungsi : Setting/adjust urutan Hari dalam Minggu (0-6 untuk minggu-sabtu)
->contoh : rtc.setDow (1); //setting hari sebagai Senin setDow akan berpengaruh pada setDate
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 2016getDowStr (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 LonggetTemp ();
->fungsi : Mengambil data suhu dari RTC,hasil berupa long int
->contoh : rtc.getTemp(); ->result : 33.25 //Suhu 33.25 derajat Celcius
Mencacah String Result Library DS3231 Arduino
Yang saya maksud mencacah String Result adalahmemisahkan data Jam, menit dan detik dari hasil getTimeStr();
memisahkan data Tanggal, Bulan dan Tahun dari hasil getDateStr();
Hasil pemisahan ini akan berupa data int (uint8_t) dan dapat kita gunakan secara terpisah
Perhatikan contoh coding berikut :
#include
#include // i2C Conection Library
// Init DS3231
DS3231 rtc(SDA, SCL);
// Init a Time-data structure
Time t;
uint32_t targetTime = 0;
uint8_t hh = 0, mm = 0, ss = 0, dd = 0, bb = 0; //variable Unsignet int 0-255
int yy = 0; //variable integer
String Day = " "; //variable string
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
}
void loop() {
// put your main code here, to run repeatedly:
t = rtc.getTime(); // gate all data time & date from RTC
Day = rtc.getDOWStr(); //get name of day
hh = t.hour,DEC; //pengambilan data jam
mm = t.min,DEC; //pengambilan data menit
ss = t.sec,DEC; //pengambilan data detik
dd = t.date,DEC; //pengambilan data hari
bb = t.mon,DEC; //pengambilan data bulan (dalam desimal)
yy = t.year,DEC; //pengambilan data tahun
//Buka Serial Monitor Arduino untuk melihat hasilnya
Serial.print (Day);
Serial.print (F(" Time = "));
Serial.print (hh); Serial.print (F(" : "));
Serial.print (mm); Serial.print (F(" : "));
Serial.print (ss); Serial.print (F(" Date = "));
Serial.print (dd); Serial.print (F(" . "));
Serial.print (bb); Serial.print (F(" . "));
Serial.println (yy);
delay (1000);
}
Variable data hh mm ss dd bb yy adalah hasil pecahan dari data String RTC dan dapat kira gunakan secara terpisah untuk acuan Alarm, Timer, Scheduler atau keperluan lainya.
reff : http://www.belajarduino.com/2016/08/rtc-ds3231-to-arduino.html
0 comments:
Post a Comment