Arduino & DS1307 Kullanarak Gerçek Zaman Saat Uygulaması

ARDUINO & DS1307 KULLANARAK GERÇEK ZAMAN SAAT UYGULAMASI

Arduino & DS1307 ile gerçek zaman uygulaması nasıl yapılır ? DS1307 nedir ve nasıl kullanılır ? Arduinoda RTC kodları ve kütüphanesi nedir ? Bu ve benzeri sorulara yanıt aradığımız Arduino & DS1307 Kullanarak gerçek zaman saat uygulaması inceleme adlı yazımızla karşınızdayız.

Başlayalım.

ARDUINO & DS1307 KULLANARAK GERÇEK ZAMAN SAAT UYGULAMASI

Bir RTC veya gerçek zamanlı saat genellikle bir Entegre Devre(Integrated Circuit) formundaki bir zaman işleyişi cihazıdır.

Bir RTC batarya ile çalışır ve güç olmasa bile güncel saati takip eder.Gerçek zamanlı saat entegre devreleri bilgisayarlarda, sunucularda  ve birçok gömülü sistemde bulunur.Ki gerçek hayatta zamanı doğru şekilde tutabilmek adına gerekli heryerde kullanılırlar.

Neden Gerçek Zamanlı Saate (RTC) İhtiyacımız Var ?

Arduino ve hemen hemen tüm mikrodenetleyicilerin yerleşik zamanlayıcıları ve zaman işleyicileri (Arduinoda millis() ) olmasına rağmen , güç kaynaklarına sahip oldukları için, güç kaynakları olduğu sürece çalışırlar.

Güç kapatıldıktan sonra (manuel yada elektrik kesintisi vb.) tüm zamanlayıcılar 0’a eşitlenir.

Dahili zamanlayıcıları kullanarak zaman tutma işlemi basit projeler için kabul edilebilir olsada zamanlayıcının harici güçten bağımsız olarak veya miktrodenetleyici veya arduino yeniden programlandığında bağımsız olarak çalıştığı veri kaydedicileri , saatler , alarmlar vb. gibi projelerde bir alternatif ihtiyaç duyarız.

İşte burada Gerçek Zamanlı Saat entegre devrelerinin kullanımı öne çıkmaktadır.Neredeyse tüm RTC entegre devreleri yıllarca tek bir lityum hücrede çalışan düşük akımlı devrelerdir(genel olarak CR2032.

Popüler olan ve çok sık kullanılan RTC entegre devrelerinden birisi de DS1307 gerçek zaman saatidir.

DS1307 Gerçek Zaman Saati :

DS1307 RTC , tam saati ve takvimi yani saat , dakika , saniye , yıl , ay ve günü koruyabilen düşük maliyetli , düşük güçlü bir gerçek zamanlı saat entegre devresidir.

Popüler DS1307 RTC’nin iyi bilinen özelliklerinden birkaçına beraber bakalım;

  • Tam Zaman işleyiş işlevselliği
  • Saat , dakika , saniye , yıl , ay , ayın günü ve haftanın günü
  • 2100 yılına kadar geçerlidir
  • Düşük Güç tüketimi : Pil ile çalışırken 500 nA’den daha az enerji tüketir.
  • Elektrik kesintisi durumunda batarya beslemesine otomatik geçiş
  • AM/PM göstergeli 24 veya 12 saat seçenekleri

DS1307 RTC ; akü , konnektörler , çekme dirençleri gibi tüm gerekli bileşenlerden oluşan modüller halinde mevcuttur.

DS1307’nin PIN Yapısı :

X1 ve X2 : Dahili osilatörü etkinleştirmek için 32768 Khz frekans kristalini bağlamak için kullanılan pinlerdir.Harici bir osilatör X1’e bağlıysa , X2 boş olarak kalabilir.

VBAT : Akü güç kaynağı pimidir.Yedek besleme için 3V Lityum hücreye bağlı olması gerekir.

GND : Toprak ucudur.

SDA : Seri data pimidir.I2C haberleşmesi için I2C arabiriminin veri giriş/çıkış pimidir.Genel olarak  10KΩ direnç aracılığıyla 5V’a çekilmelidir.

SCL : Seri saat giriş pimidir.I2C arabiriminin saat giriş pimidir.Ayrıca 10KΩ direnç aracılığıyla 5V’a çekilmelidir.

SQW/OUT : Kare dalga çıkış pinidir.Kullanılmazsa , boş bir şekilde bırakılabilir.

Vcc: Ana besleme pimidir.

Arduino Gerçek Zamanlı Saat DS1307 Arabirimi

Biraz DS1307 hakkında bilgi edindiğimize göre , arduino ve gerçek zaman saati arayüzü ile devam edelim.DS1307 RTC modülü I2C haberleşme yöntemini kullanır.

Arduino gerçek zamanlı saat I2C arayüzünde , arduino mikrodenetleyicisi daima master, DS1307 ise slave gibi çalışır.

I2C iletişimde master yani bu durumda arduino, saat sinyali , veri yolu erişimi , başlat ve durdur sinyallerinden sorumlu olur.

Arduino Gerçek Zamanlı Saat DS1307 Arabiriminin Çalışması

Arduino UNO’nun DS1307 gerçek zaman saati arayüzü ile ilişkilendirildiği bir projeye beraber bakalım.Burada DS1307 RTC’yi mevcut tarih ve saate programlayacağız ve Arduino güç kaynağı kesilse bile bu verilen gerçekten saklanıp saklanmadığını göreceğiz.

Program içerisinde ‘RTClib’ adlı özel bir kütüphane kullanılmıştır ve github/adafruit/RTClib üzerinden bu kütüphaneyi indirilebilirsiniz.

İndirip Arduino kütüphanesinin veritabanına eklendiğinden emin olmalısınız.Verileri ve saati DS1307 RTC entegre devresine yüklemek adına , RTClib kütüphanesinde bulunan ve Arduino’nun kodu yüklerken tarih ve saati bilgisayardan yükleyeceği bir özellik kullanılmıştır.

Devre Diyagramı :

DS 1307 RTC Modülü için ;

VCC  = +5V

GND = Toprak

SDA = Arduino Analog giriş PC4/ADC4/SDA

SCL = Arduino analog giriş PC5/ADC5/SCL

16×2 LCD Gösterge için ;

GND 1 = Toprak

VCC 2 = +5V

Cont 3 = 10 KΩ Pot

RS 4 = Arduino PD7/AIN1

E 6 = PD6/AIN0

D4 11= PD5/T1

D5 12 = PD4/T0/XCK

D6 13= PD3/INT1

D7 14 = PD2/INT0

LED+ 15 = -> 1 kΩ direnç -> +5V

LED- 16 = Toprak

Arduino Kod :

#include <Wire.h>

#include <LiquidCrystal.h>

#include “RTClib.h”

RTC_DS1307 rtc;

LiquidCrystal lcd(7,6,5,4,3,2); // (rs,e,d4,d5,d6,d7)

char daysOfTheWeek[7][12] = {“Sun”,”Mon”,”Tue”,”Wed”,”Thu”,”Fri”,”Sat”};

void setup ()

{

Serial.begin(9600);

lcd.begin(16, 2)

if (! rtc.begin())

{

lcd.print(“RTC bulunamadı”);

while (1);

}

if (! rtc.isrunning() )

{

lcd.print(“RTC calısmıyor”)

}

rtc.adjust(DateTime(F(__DATE__),F(__TIME__))); //PC’den zamanı güncelle

}

void loop ()

{

DateTime now = rtc.now();

lcd.setCursor(0,1);

lcd.print(now.hour());

lcd.print(‘ : ’);

lcd.print (now.minute());

lcd.print(‘ : ’);

lcd.print(now.second());

lcd.print(“    ”);

lcd.setCursor(0,0);

lcd.print(daysOfTheWeek[now.dayOfTheWeek()]);

lcd.print(“ , ”);

lcd.print(now.day());

lcd.print(‘ / ’);

lcd.print(now.month());

lcd.print(‘ / ’);

lcd.print(now.year());

}

ARDUINO & DS1307 KULLANARAK GERÇEK ZAMAN SAAT UYGULAMASI İNCELEME NEDİR SONUÇ : 

Bugün Arduino & DS1307 Kullanarak gerçek zaman saat uygulaması nasıl yapılır konusunu inceledik.Umuyorum faydalı bilgiler edinmişsinizdir.Arduino ile ilgili proje ve örnek kodlara devam etme niyetindeyiz.

İyi Çalışmalar

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.