Arduino İle Gerçek Zamanlı Saat(DS1302 RTC) Modülü Kullanımı

Projelerinizde zamana bağlı işlem yaptırmak istiyor olabilirsiniz. Bunun için gerçek zamanlı saat modülü yani RTC(Real Time Clock) kullanmanız gerekmektedir.Bu yazımızda anlatacağımız modül ise DS1302 RTC modülüdür. Bu modül ile mesela her 10 dakikada bir fan açıp kapatmak veya lamba açıp kapatmak veya herhangi bir işlemi gecikmeli olarak tetikletebilirsiniz.

Daha somut örnekler verecek olursak; su pompasını 1 saat çalıştırmak, arduino ile saat yapıp alarm kurmak veya ev otomasyonlarında her 2 dakikada bir ev verilerini bulut sisteme yüklemek gibi olabilir. Bu sizin yapmak istediğiniz işlemlere göre çoğaltılabilir. İnternette bir çok rtc modülü bulunmaktadır. Ama biz ucuz olması sebebi ile bu yazımızda DS1302 RTC modülünü anlatacağız.

DS1302 RTC Modülü

DS1302 RTC Özellikleri

  • Gerçek Zamanlı Saat Saniye, Dakika, Saat, Ayın Tarihi, Ay, Haftanın Günü ve Yılı Sayar.
  • Bu modül sadece 2100 yılına kadar geçerlidir.
  • 31 x 8 Pil Destekli Genel Amaçlı RAM
  • Basit 3 Telli Arayüz
  • TTL-Uyumlu (VCC = 5V)
  • Saat veya RAM Verilerini okumak veya yazmak için Tek Baytlı veya Çoklu Baytlı (Seri Serileme Modu) Veri Aktarımı
  • 2.0V – 5.5V çalışma gerilimi
  • 2.0V’da 300nA’dan az kullanır
  • -40°C ila +85°C arasında çalışır.

DS1302 RTC Pin Şeması

Bu modülün 5 pini vardır:

  • VCC: Modül besleme gerilimi– 5V
  • GND: Ground
  • CLK: Clock pin
  • DAT: Data pin
  • RST: Reset

Bu modülün pin çıkışını aşağıdaki resimde görebilirsiniz.

DS1302 RTC Modülü Pin Şeması
DS1302 RTC Modülü Pin Şeması

Projede Gerekli Malzemeler:

Arduino İle DS1302 RTC Bağlantı Şeması

Aşağıdaki devre Arduino’yu DS1302 modülüne nasıl bağlamanız gerektiğini göstermektedir:

Arduino İle DS1302 RTC Bağlantı Şeması
Arduino İle DS1302 RTC Bağlantı Şeması

DS1302 RTC Kütüphanesi

Aşağıdaki butondan projede kullanılan kütüphaneyi indirebilirsiniz:

DS1302 RTC Kodu

Aşağıdaki kod, DS1302’yi ayarlamanıza ve ardından seri monitörde tarih ve saati görüntülemenize izin verecektir.

Lütfen aşağıdaki kodu dikkatlice okuyunuz:

myRTC.setDS1302Time(15, 22, 21, 7, 14, 1, 2018);
// saniye, dakika, saat, haftanın günü, ayın günü, ay, yıl (Not: haftanın günü 1:pazartesiden başlıyor

Kodumuzu ilk arduinoya yüklerken yukarıdaki koddda arduinoya güncel tarihimizi ve saat bilgilerimizi giriyoruz.

//myRTC.setDS1302Time(15, 22, 21, 7, 14, 1, 2018);
// saniye, dakika, saat, haftanın günü, ayın günü, ay, yıl (Not: haftanın günü 1:pazartesiden başlıyor

Kodumuzu 1. kez yüklememizden sonra yukarıdaki gibi tarih ve saat ayarlama kodumuzu yorum satırı yaparak arduinomuza tekrar yüklüyoruz.

#include <virtuabotixRTC.h> //Library used
 
//Wiring SCLK -> 6, I/O -> 7, CE -> 8
//Or CLK -> 6 , DAT -> 7, Reset -> 8
 
virtuabotixRTC myRTC(6, 7, 8); //If you change the wiring change the pins here also
 
void setup() {
 Serial.begin(9600);
 
// Set the current date, and time in the following format:
 // seconds, minutes, hours, day of the week, day of the month, month, year
 myRTC.setDS1302Time(15, 22, 21, 7, 14, 1, 2018); //Here you write your actual time/date as shown above 
 //but remember to "comment/remove" this function once you're done
 //The setup is done only one time and the module will continue counting it automatically
}
 
void loop() {
 // This allows for the update of variables for time or accessing the individual elements.
 myRTC.updateTime();
 
// Start printing elements as individuals
 Serial.print("Current Date / Time: ");
 Serial.print(myRTC.dayofmonth); //You can switch between day and month if you're using American system
 Serial.print("/");
 Serial.print(myRTC.month);
 Serial.print("/");
 Serial.print(myRTC.year);
 Serial.print(" ");
 Serial.print(myRTC.hours);
 Serial.print(":");
 Serial.print(myRTC.minutes);
 Serial.print(":");
 Serial.println(myRTC.seconds);
 
// Delay so the program doesn't print non-stop
 delay(1000);
}

Kodumuzu arduinoya yükledikten sonra seri monitörümüzü açtığımızda bize tarih ve saat bilgilerimizi verdiğini göreceksiniz.