12
Haz
2020

Arduino ile DS1302 RTC modülü kullanımı

RTC (Real Time Clock); gerçek zamanlı saat modülüdür. RTC modüllerinin üzerinde frekansı 32.768 kHz (kuvars saatler ve saatlerde kullanılanla aynı frekans) olan bir kristal osilatör bulunur. Bu modül ile Arduino uygulamalarında saniye, dakika, saat, gün, ay ve yıl bilgilerini kullanmak mümkündür.

Modülün üzerinde bir adet CR2032 pil bulunur ve bu pil sayesinde modül sürekli olarak bir elektrik kaynağına ihtiyaç duymadan çalışabilir. Yani Arduino’ nun gücü kapatılıp bir süre sonra yeniden açılsa bile RTC modülü güncel zaman bilgilerini Arduino’ ya aktarabilir. Bu özelliği ile saat/tarih bilgileri kullanılan projeler için uygun bir modüldür.

Bu yazıda, DS1302 entegre kullanan bir RTC modülü ile saat/tarih bilgilerinin ayarlanması ve Arduino Serial monitör üzerinden izlenmesi işlemleri yapılmıştır.

Malzemeler

  • 1 adet Arduino
  • 1 adet RTC modülü

Bağlantı şeması

DS1302 modülünün üzerindeki pinler aşağıdaki şekilde bağlanmıştır:

  1. DS1302 modülünün VCC pini Arduino 5V çıkışına
  2. DS1302 modülünün GND pini Arduino GND pinine
  3. DS1302 modülünün CLK pini Arduino 6 numaralı dijital pinine
  4. DS1302 modülünün DATA pini Arduino 7 numaralı dijital pinine
  5. DS1302 modülünün RST pini Arduino 8 numaralı dijital pinine

Kaynak kod

Arduino DS1302 kütüphanesini indirmek için tıklayınız.

#include <virtuabotixRTC.h>
virtuabotixRTC RTC_DS1302(6, 7, 8); // DS1302 modülün bağlı olduğu Arduino pinleri 

void setup() {
Serial.begin(9600);
RTC_DS1302.setDS1302Time(00, 10, 20, 6, 13, 06, 2020); // İlk zaman ayarı
}
 
void loop() {
RTC_DS1302.updateTime(); //RTC den zaman bilgisini oku
Serial.print("Tarih: ");
Serial.print(RTC_DS1302.dayofmonth);
Serial.print("/");
Serial.print(RTC_DS1302.month);
Serial.print("/");
Serial.print(RTC_DS1302.year);
Serial.print(" Saat: ");
Serial.print(RTC_DS1302.hours);
Serial.print(":");
Serial.print(RTC_DS1302.minutes);
Serial.print(":");
Serial.println(RTC_DS1302.seconds);
delay( 1000); // 1 saniye bekle.
}

Setup fonksiyonundaki RTC_DS1302.setDS1302Time(00, 10, 20, 6, 13, 06, 2020); kod satırı ile sırasıyla “saniye, dakika, saat, haftanın günü (pazartesi 1, salı 2,…), ayın günü, ay, yıl” bilgileri ilk seferde DS1302 modülüne gönderilmektedir. Bu fonksiyonu bir kere çalıştırdıktan sonra modülün üzerindeki pil bitene kadar modül saat/tarih bilgisini artık kaybetmeyecektir. Yukarıdaki kod çalıştırıldıktan sonra serial monitör ile aşağıdaki gibi bir sonuç elde edilecektir.