Raspberry pi 3 kullanıcılarının projelerinde en önemli olaylardan biri de saat bilgisidir. Internete bağlı olan raspberrylerde saat bilgisi otomatik olarak güncellenmektedir. Ancak raspberry'nin internete bağlanılamadığı durumlarda saat bilgisi raspberry kapalı olduğu sürece geri kalacak ve projelerinizin sekteye uğramasına neden olabilmektedir. Bunun önüne geçebilmek için gerçek zamanlı saat entegresi bulunan DS3231 modülünün raspberry'ye kurulumunu anlatmaya çalışacağım.
Kuruluma başlamadan önce bir sorun ile karşılaşmamak için raspberry programlarını güncellemek gerekmektedir.
sudo apt-get update -y
sudo apt-get upgrade -y
DS3231 RTC modülü I2C bağlantı arayüzünü kullanmaktadır. Yani power ve GND pinlerinin yanında SDA ce SDL pinleri kullanılacaktır. bağlantı şeması şu şekilde olmalıdır.
Bu bağlantıyı yaptıktan sonra terminal penceresi ile sistemin kullanmış olduğu modülleri düzenlememiz gerekmektedir. bu kısıma rtc (real time clock) modülünü ve i2c modülünü eklememiz gerekmektedir.
sudo nano /etc/modules
Not: nano programı bir text editördür. nano komutu bulunamadı gibi bir uyarı ile karşılaşırsanız öncelikle nano editörü kurmanız gerektiğiniz göstermektedir. Bunu için
sudo apt-get install nano -y
komutunu kullanabilirsiniz.
Modules dosyası içerisine eklenmesi gereken modüller şu şekilde olmalıdır:
snd-bcm2835 i2c-bcm2835 i2c-dev rtc-ds1307
CTRL-X komutu ile nano editörden çıkarken Y diyerek dosyayı kaydedebilirsiniz.
Bu işlemden sonra raspberry'yi yeniden başlatmanız gerekecektir.
Kurulum testi
Raspberry yeniden başladıktan sonra i2c portuna bağlı olan entegre modüllerini görebilmek için kullanmanız gereken komut:
sudo i2cdetect -y 1
bu komutu girdiğinizde raspberry i2c portuna bağlı olan cihazları görebilirsiniz:
DS3231 modülünü bağladığınızda 68 HEX adresi olarak görünün i2c portumuza bağlı olan RTC modülüdür.
Not: Bazı ds3231 modülleri üzerinde i2c epprom entegresi de bulunmaktadır bu nedenle Hex 57'ye de ayrı bir cihaz takılı gibi görülmektedir. DS3231 modülünü söktüğünüzde 57 ve 68 hex değerinin ikisi de gitmektedir. Bu durum aklınızı karıştırmasın bizim için Epprom entegresi önemli değil sadece 68 adresindeki değerleri kullanacağız.
i2c portunda saat entegresini gördükten sonra bu değerin saat entegresine ait olduğunu ve açılışta sanki bir BIOS saati gibi çalışmasını sağlamak için rc.local dosyasını düzenlememiz gerekmektedir:
sudo nano /etc/rc.local
rc.local dosyası içinde son bölüme (exit 0) komutundan öncesine eklememiz gereken komut şu şekildedir.
echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device hwclock -s
Bu kodu ekledikten sonra raspberry'yi yeniden başlatarak terminal üzerinden i2c detect işlemini tekrarlıyoruz.
sudo i2cdetect -y 1
Sonuç olarak görüldüğü gibi 68 Hex değeri yerine UU değeri gelmiş bulunmakta. Bu raspberry'nin bu değeri kendi donanımı gibi kullanıyor anlamına gelmektedir.
Raspberry DS3231 saatinin ayarının yapılması.
raspberry üzerinde saati görüntülemek için kullanılan komut:
date
Eğer saat değerini değiştirmek istiyorsanız:
sudo date -s "12 AUG 2017 12:00:00"
Sistem saatini DS3231 modülüne yazdırmak için (hardwareclock write komutu):
sudo hwclock -w
Kayıt işlemi gerçekleşip gerçekmeşmediğini görmek için hardware read komutunu kullanmamız gerekiyor:
sudo hwclock -r
Son olarak; raspberry'nizin internet bağlantısını kesip tüm güç bağlantılarını kesip bir kaç gün bekledikten sonra bile sistem saatinizin geri kalmadığını göreceksiniz.