Rabu, 24 Agustus 2016

RTC DS3231 to Arduino


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 -45°C to +85°C 
•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 ±3°C 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: -40°C to +85°C
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

Wiring to Arduino

Wiring RTC DS3231 ke Arduino
GND --> 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


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 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 : 33.25  //Suhu 33.25 derajat Celcius

Mencacah String Result Library DS3231 Arduino 

Yang saya maksud mencacah String Result adalah 

memisahkan 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 <DS3231.h>
#include <Wire.h>  // 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.

7 komentar:

  1. Dan coding untuk nampilin jam arduino di matrix p10 ya g mane mas.klau bisa kirim coding jam nya ke imail.

    Kreatifgame@gmail.com

    Trimakash

    BalasHapus
  2. Komentar ini telah dihapus oleh pengarang.

    BalasHapus
  3. mas saya coba codingan yang di atas, tapi ko ga ada yang muncul sama sekali di serial monitornya
    kira-kira kenapa ya?

    BalasHapus
    Balasan
    1. codingan di atas belum lengkap mas, setelah Serial.begin(115200); , harusnya ditambah rtc.begin(); pada baris selanjutnya.

      Hapus
  4. code diatas sya coba kok muncul error ini ya..

    exit status 1
    'Time' does not name a type

    BalasHapus
  5. GAN bisa minta nomer WA? terima kasih

    BalasHapus
  6. Master jika menggunakan set point digitalWrite untuk jam sekian sampai jam sekian bisa? bagaimana caranga

    BalasHapus

Copyright © 2014 Belajar Arduino | Designed With By Blogger Templates | Distributed By Gooyaabi Templates
Scroll To Top