thumbnail Tutorial arduino mengakses RTC DS1302

Tutorial Arduino mengakses modul RTC DS1302

Penjelasan singkat

RTC (Real Time Clock) merupakan chip IC yang mempunyai fungsi menghitung waktu yang dimulai dari detik, menit, jam, hari, tanggal, bulan, hingga tahun dengan akurat.

Untuk menjaga atau menyimpan data waktu yang telah di-ON-kan pada module terdapat sumber catu daya sendiri yaitu baterai jam kancing, serta keakuratan data waktu yang ditampilkan digunakan osilator kristal eksternal.

Sehingga saat perangkat mikrokontroler terhubung dengan RTC ini sebagai sumber data waktu dimatikan, data waktu yang sudah terbaca dan ditampilkan tidak akan hilang begitu saja. Dengan catatan baterai yang terhubung pada RTC tidak habis dayanya.

Contoh yang dapat ditemui dalam kehidupan sehari – hari yaitu pada motherboard PC yang biasanya letaknya berdekatkan dengan chip BIOS. Difungsikan guna menyimpan sumber informasi waktu terkini sehingga jam akan tetap up to date walaupun komputer tersebut dimatikan.

Fitur RTC DS1302

Pada Tutorial Arduino ini digunakan RTC dengan ic chip DS1302 yang merupakan produk dari Maxim.

RTC IC DS302

Fitur dari IC DS1302 antara lain :

  • Penghitung secara real time untuk detik, menit, jam, hari, tanggal, bulan, dan tahun (valid sampai tahun 2100)
  • Format waktu dapat disetting ke dalam format 12 jam (AM/PM) atau 24 jam
  • Memiliki kemampuan penyesuaian jumlah hari/bulan terhadap tahun kabisat
  • 31 x 8 Battery-Backed General-Purpose RAM
  • Menggunakan antarmuka i2c (Serial Data dan Serial Clock)
  • Menggunakan tegangan input kerja 5 Vdc
  • Harus memakai baterai back-up dengan range 2-5 Vdc
  • Konsumsi arus pada baterai back-up yaitu hanya 200nA
  • Range suhu kerja optimal antara -40°C sampai +85°C

Dipasaran sudah banyak ditemukan ic DS1302 ini dijadikan module sehingga tidak perlu membuat PCB dan menyiapkan komponen-komponen lainnya dan keunggulannya langsung siap untuk digunakan.

Bentuk fisik modul yang ada pasaran seperti ini

Module RTC DS1302


Tutorial mengakses Module RTC DS1302 via Serial monitor

Bahan yang perlu dipersiapkan antara lain :

  • Arduino Uno
  • Komputer + Software IDE Arduino
  • Modul RTC DS1302
  • Kabel Jumper

Skematik yang dirangkaikan

Tutorial arduino mengakses RTC DS1302

Keterangan pengkabelan

Module RTC ↔ Arduino Uno

  • VCC  +5V
  • GND GND
  • CLK pin 6
  • DAT pin 7
  • RST  pin 8

Library yang dapat digunakan yaitu [ddownload id=”1363″]

Peletakan Library pada OS :

  1. Mac : (home directory)/Documents/Arduino/libraries
  2. PC (Windows) : program files (x86) -> Arduino -> libraries
  3. Linux : (home directory)/sketchbook/libraries

Contoh koding

/* --- www.nyebarilmu.com --- */

//memanggil library header virtuabotixRTC
#include <virtuabotixRTC.h>

//Inisialisasi pin (CLK, DAT, RST)
virtuabotixRTC myRTC(6,7,8);

void setup(){
//Inisialisasi port serial arduino dengan komputer
Serial.begin(9600);

//penulisan data pertama kali dan disarankan saat transfer
//ke-2 ini tidak digunakan dikarenakan akan menghapus data
//sebelumnya
myRTC.setDS1302Time(00,59,23,6,20,10,2017);
//detik, menit, jam, hari dalam seminggu, tanggal, bulan, tahun
// 00:59:23 "Rabu" 7-September-2017
}

void loop(){
//memanggil fungsi untuk update data waktu
myRTC.updateTime();

//penulisan data pada serial monitor komputer
Serial.print("Current Date / Time: ");
//fungsi penulisan data untuk tanggal
Serial.print(myRTC.dayofmonth);

//penulisan data "/" sebagai separator
Serial.print("/");

//fungsi penulisan data untuk bulan
Serial.print(myRTC.month);

//penulisan data "/" sebagai separator
Serial.print("/");

//fungsi penulisan data untuk tahun
Serial.print(myRTC.year);

//penulisan data untuk jarak
Serial.print(" ");

//fungsi penulisan data untuk jam
Serial.print(myRTC.hours);

Serial.print(":");

//fungsi penulisan data untuk menit
Serial.print(myRTC.minutes);

Serial.print(":");

//fungsi penulisan data untuk detik
Serial.println(myRTC.seconds);
delay( 1000);

}

Hasil simulasi program diatas :

 


Tutorial mengakses Module RTC DS1302 dengan Penampil LCD 16×2

Bahan yang perlu dipersiapkan antara lain :

  • Arduino Uno
  • Komputer + Software IDE Arduino
  • Modul RTC DS1302
  • LCD + PCF8574
  • Kabel Jumper

Pada tutorial disini digunakan penampil LCD 16×2 yang dihubungkan dengan module PCF8574 guna menghemat penggunaan kabel jumper.

Artikelnya dapat dibaca : [irp posts=”742″ name=”Cara mengakses modul display LCD 16×2″]

RTC DS1302 dengan penampil LCD 16x2

Contoh program sederhana

/* --- www.nyebarilmu.com --- */

#include <Wire.h>
#include <virtuabotixRTC.h>
#include <LiquidCrystal_PCF8574.h>

LiquidCrystal_PCF8574 lcd(0x38);

//Inisialisasi pin (CLK, DAT, RST)
virtuabotixRTC myRTC(6,7,8);

void setup(){
//Inisialisasi port serial arduino dengan komputer
Serial.begin(9600);

//penulisan data pertama kali dan disarankan saat transfer
//ke-2 ini tidak digunakan dikarenakan akan menghapus data
//sebelumnya
myRTC.setDS1302Time(00,59,23,6,20,10,2017);
//detik, menit, jam, hari dalam seminggu, tanggal, bulan, tahun
// 00:59:23 "Jumat" 10-Oktober-2017

lcd.begin(16, 2);
lcd.setBacklight(255);
lcd.home();
//menulis tulisan awal start
lcd.setCursor(00,00);
lcd.print("Trial RTC DS1302");

lcd.setCursor(00,01);
lcd.print("nyebarilmu.com");
delay(2000);
lcd.clear();
}

void loop(){
//memanggil fungsi untuk update data waktu
myRTC.updateTime();

//penulisan data pada serial monitor komputer
Serial.print("Current Date / Time: ");
//fungsi penulisan data untuk tanggal
Serial.print(myRTC.dayofmonth);

//penulisan data "/" sebagai separator
Serial.print("/");

//fungsi penulisan data untuk bulan
Serial.print(myRTC.month);

//penulisan data "/" sebagai separator
Serial.print("/");

//fungsi penulisan data untuk tahun
Serial.print(myRTC.year);

//penulisan data untuk jarak
Serial.print(" ");

//fungsi penulisan data untuk jam
Serial.print(myRTC.hours);

Serial.print(":");

//fungsi penulisan data untuk menit
Serial.print(myRTC.minutes);

Serial.print(":");

//fungsi penulisan data untuk detik
Serial.println(myRTC.seconds);

lcd.setCursor(00,00); lcd.print(myRTC.hours);
lcd.setCursor(2,00); lcd.print(":");
lcd.setCursor(3,00); lcd.print(myRTC.minutes);
lcd.setCursor(5,00); lcd.print(":");
lcd.setCursor(6,00); lcd.print(myRTC.seconds);

lcd.setCursor(00, 1);lcd.print(myRTC.dayofmonth);
lcd.setCursor(2,1); lcd.print("-");
lcd.setCursor(3,1); lcd.print(myRTC.month);
lcd.setCursor(5,1); lcd.print("-");
lcd.setCursor(6,1); lcd.print(myRTC.year);

/*
--- 00:59:23
--- 10-10-2017

 */

delay(1000);

}

Hasil Simulasi menggunakan simulasi proteus :

 

Selamat mencoba!
Terimakasih sudah berkunjung, dan semoga bermanfaat. Salam nyebarilmu.com!

>> CMIIW <<

8 Comments

  1. dika

    min nama penulis artikel ini siapa ya? mau saya masukin namanya di referensi saya min, thanks

  2. dika

    min nama penulis artikel ini siapa ya? mau saya masukin namanya di referensi saya min, thanks

  3. alfida nuris

    min mau tanya dong, itu kenapa ya programnya pas di run kenaikan detiknya itu langsung 5 dan kelipatan 5

  4. alfida nuris

    min mau tanya dong, itu kenapa ya programnya pas di run kenaikan detiknya itu langsung 5 dan kelipatan 5

Leave a Reply

Your email address will not be published. Required fields are marked *