Arduino projelerimize gerçek zaman algısı kazandıran harika bir modülle devam ediyoruz: DS1302 Real Time Clock (Gerçek Zamanlı Saat) Modülü.
Arduino ile normalde delay() veya millis() fonksiyonlarını kullanarak zamanı saydırabilirsiniz. Ancak Arduino'nun elektriği kesildiği anda zaman sıfırlanır ve her şey başa döner. İşte akıllı ev sistemlerinde, zamanarlı prizlerde veya dijital saat projelerinde sistemin elektriği kesilse bile saatin ve tarihin doğru kalmasını sağlayan şey, üzerinde minik bir saat pili (CR2032) barındıran DS1302 entegresidir.
Gelin, yenidir.com takipçileri için DS1302 modülünün çalışma mantığını, Arduino bağlantılarını ve kütüphane kullanarak ilk zaman verisini nasıl okuyacağımızı pratik bir örnekle inceleyelim.

DS1302; içinde saniye, dakika, saat, gün, ay, haftanın günü ve yıl bilgilerini barındıran, 2100 yılına kadar artık yılları dahi hesaba katabilen pratik bir zaman takip entegresidir.
Modülün üzerinde yer alan 32.768 kHz'lik kristal osilatör, zamanın çok hassas bir şekilde akmasını sağlar. Arkasındaki düğme pil ise Arduino kapansa bile entegrenin içindeki saatin yıllarca arka planda çalışmaya devam etmesini sağlar. Arduino tekrar açıldığında, güncel saati bu entegreden sorarak kaldığı yerden devam eder.
DS1302 modülü üzerinde genellikle 5 adet bağlantı pini bulunur. Bu pinlerin Arduino ile eşleşmesi şu şekildedir:

DS1302 ile doğrudan haberleşmek kod karmaşasına neden olacağı için işimizi kolaylaştıracak popüler bir kütüphane kullanacağız. Arduino IDE programını açın ve şu adımları takip edin:
Aşağıdaki kodları Arduino IDE programınıza yapıştırıp kartınıza yükleyin. Kodların içindeki açıklamaları takip ederek ilk yüklemede kendi tarih ve saatinizi ayarlamayı unutmayın!
#include <virtuabotixRTC.h> // Kütüphanemizi projeye dahil ediyoruz.
// DS1302 pin bağlantılarını tanımlıyoruz: (CLK, DAT, RST)
virtuabotixRTC myRTC(6, 7, 8);
void setup() {
Serial.begin(9600); // Seri haberleşmeyi başlatıyoruz.
// DIKKAT: Saati ilk kez ayarlamak için aşağıdaki satırın başındaki yorum işaretlerini (//) kaldırın.
// Kendi tarih ve saatinizi yazıp kodu Arduino'ya yükleyin.
// Sırasıyla: Saniye, Dakika, Saat, Haftanın Günü (1-7), Ayın Günü, Ay, Yıl
// myRTC.setDS1302time(00, 30, 16, 4, 28, 5, 2026);
// ÖNEMLİ NOT: Saati bir kez ayarladıktan sonra yukarıdaki satırı tekrar yorum satırı (//) yapıp
// kodu yeniden yükleyin. Aksi takdirde Arduino her açıldığında saat bu zamana geri döner!
}
void loop() {
myRTC.updateTime(); // Entegeden güncel zaman bilgilerini çekiyoruz.
// Verileri Seri Port Ekranına düzenli bir şekilde yazdırıyoruz
Serial.print("Tarih: ");
Serial.print(myRTC.dayofmonth);
Serial.print("/");
Serial.print(myRTC.month);
Serial.print("/");
Serial.print(myRTC.year);
Serial.print(" | Saat: ");
if(myRTC.hours < 10) Serial.print("0"); // Saat 10'dan küçükse başına 0 koy
Serial.print(myRTC.hours);
Serial.print(":");
if(myRTC.minutes < 10) Serial.print("0"); // Dakika 10'dan küçükse başına 0 koy
Serial.print(myRTC.minutes);
Serial.print(":");
if(myRTC.seconds < 10) Serial.print("0"); // Saniye 10'dan küçükse başına 0 koy
Serial.println(myRTC.seconds);
delay(1000); // Her saniyede bir verileri güncelle
}
Kodu Arduino'nuza yükledikten sonra sağ üst köşedeki **Seri Port Ekranını (Serial Monitor)** açın ve baud hızını 9600 olarak seçin. Ekranda her saniye akan güncel tarih ve saat bilgisini göreceksiniz. Şimdi Arduino'nun bilgisayarla olan USB kablo bağlantısını sökün, birkaç dakika bekleyin ve tekrar takın. Saatin kaldığı yerden doğru bir şekilde akmaya devam ettiğini göreceksiniz; işte bu üzerindeki pilin mucizesidir!
DS1302 RTC modülü, zaman odaklı projeler üretmek isteyen her hobicinin kütüphanesinde bulunması gereken bir elemandır. Bu modülü kullanarak kendi dijital masa saatinizi yapabilir, LCD veya OLED ekranlara yazdırabilir, hatta bir röle modülü bağlayarak "Her gün akşam saat 20:00'de çiçekleri 5 dakika sula" gibi harika otomasyon projeleri geliştirebilirsiniz.
yenidir.com Arduino serimizde zamanı kontrol etmeyi de öğrendik! Bir sonraki yazımızda, bu saat verilerini görselleştirmek için projelerimize nasıl I2C LCD Ekran ekleyeceğimizi inceleyelim mi? Kodda veya bağlantılarda karşılaştığınız sorunları yorumlar kısmında sormaktan çekinmeyin!
Henüz yorum yapılmamış. İlk yorumu siz yapın!