ORANGE PI ile RTC Kullanma
Bu yazımızda RTC'yi Orange pi ile nasıl kullanacağımız inceleyeceğiz. Son yayınlanan sürüm olan Ubuntu Bionic ile birlikte RTC'yi nasıl çalıştıracağımıza bakacağız.
RTC adından da anlaşılacağı gibi bir gerçek zaman saatidir. Orange pi içinde dahili bir RTC modülü vardır. Fakat bu dahili saat sadece Orange pi'de güç olduğunda çalıştığından dolayı güç kesildiğinde hafızasında saati tutmaz. Bize güç yokken de çalışabilecek ve bu sayede doğru saati tutacak bir saat lazım. Böyle bir durumda harici bir RTC kullanmak gerekiyor.
Şu anda yaygın olan iki farklı RTC modül vardır. Bunlardan biri 'DS1307' entegresini kullanırken diğeri ise 'DS3231' entegresini kullanır. Bu yazı için kullanacağımız ilk RTC, 'Tiny RTC Module' diye bilinen ve üzerinde 'DS1307' entegresi bulunan RTC modülü. DS1307, I2C protokolüne göre çalışan, gerçek zaman üretmek için kullanılan ve seri bilgi alışverişi yapan bir entegredir. RTC modülünde 'DS1307' kullanarak saat özelliğinin yanı sıra devrede elektrik olmadığı durumlarda, ayarlanmış saat bilgisini hafızasında tutmakla kalmayıp saatin arka planda çalışmasını harici pil ile sağlayabilmektedir.
Bu RTC modülü üzerinde 5 adet çıkış pini vardır fakat biz bu pinlerden Vcc-Gnd-Sda-Scl pinlerini kullanacağız. Pin bağlantıları aşağıdaki gibidir.
VCC ▬ Pin 1
GND ▬ Pin 6
SDA ▬ Pin 3
SCL ▬ Pin 5
Bu yazıda test ettiğim bir diğer RTC modülü ise Orange pi tarafından sunulan sensörler içinde bulunan RTC modülüdür. Bu RTC 'modülü' de 'DS1307' Pin bağlantılarına alttaki görüntü üzerinden bakabilirsiniz.
Her iki RTC ile de belirtilen şekilde bağlantıyı yaptıktan sonra artık RTC modulü Orange pi'ye tanıtmak gerekiyor.
Gerçek Zamanlı Saat(Real Time Clock)
RTC adından da anlaşılacağı gibi bir gerçek zaman saatidir. Orange pi içinde dahili bir RTC modülü vardır. Fakat bu dahili saat sadece Orange pi'de güç olduğunda çalıştığından dolayı güç kesildiğinde hafızasında saati tutmaz. Bize güç yokken de çalışabilecek ve bu sayede doğru saati tutacak bir saat lazım. Böyle bir durumda harici bir RTC kullanmak gerekiyor.Gerçek Zamanlı Saat(Real Time Clock)
Şu anda yaygın olan iki farklı RTC modül vardır. Bunlardan biri 'DS1307' entegresini kullanırken diğeri ise 'DS3231' entegresini kullanır. Bu yazı için kullanacağımız ilk RTC, 'Tiny RTC Module' diye bilinen ve üzerinde 'DS1307' entegresi bulunan RTC modülü. DS1307, I2C protokolüne göre çalışan, gerçek zaman üretmek için kullanılan ve seri bilgi alışverişi yapan bir entegredir. RTC modülünde 'DS1307' kullanarak saat özelliğinin yanı sıra devrede elektrik olmadığı durumlarda, ayarlanmış saat bilgisini hafızasında tutmakla kalmayıp saatin arka planda çalışmasını harici pil ile sağlayabilmektedir.
Bu RTC modülü üzerinde 5 adet çıkış pini vardır fakat biz bu pinlerden Vcc-Gnd-Sda-Scl pinlerini kullanacağız. Pin bağlantıları aşağıdaki gibidir.
VCC ▬ Pin 1
GND ▬ Pin 6
SDA ▬ Pin 3
SCL ▬ Pin 5
Bu yazıda test ettiğim bir diğer RTC modülü ise Orange pi tarafından sunulan sensörler içinde bulunan RTC modülüdür. Bu RTC 'modülü' de 'DS1307' Pin bağlantılarına alttaki görüntü üzerinden bakabilirsiniz.
Yüklemeler
Şu an son sürüm olan Ubuntu Bionic(18.04) kullanıyorum. Yeni sürümle birlikte I2C ile yeni bir modülü kullanırken yapmamız gerekenler değişti. Modern sürümlerle birlikte bu tarz bir modül kullanırken yapalandırma için "Device Tree Overlay"e göz atmak gerekiyor. Burada sırasıyla hem I2C portlarını etkinleştirmeliyiz hem de bu porttan iletişim kuran cihazı tanıtmalıyız. Bütün bu işlemleri "root" kullanıcısında yapmanız gerekiyor.Daha sonra I2C portlarını görmek için gerekli olan yüklemeyi yapalım.
apt-get install i2c-tools
Cihazı tekrar başlatıyoruz.
reboot
"i2cdetect" komutu ile bağladığımız RTC modülünün '68' numaralı hattına bağlı olup olmadığını görüyoruz.
i2cdetect -y 0
68 numaralı hattı gördükten sonra bu hattta bulunan RTC modülümüzü tanıtmamız gerekiyor.
echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-0/new_device
Daha sonra tekrar '68' numaralı hatta bakıyoruz. Eğer '68' numaralı hat yerinde 'UU' yazısını görüyorsanız işlem başarılı demektir.
i2cdetect -y 0
Tanıtma işleminin başarılı olup olmadığını kontrol etmek için "dmesg | grep " komutunu da kullanabilirsiniz.
dmesg | grep rtc / dmesg | grep ds1307
Saati Gösterme ve Hwclock Kullanımı
RTC ile ilgili işlem yaparken kullanacağımız komut hwclock'dur. Hwclock komutunun kullanımını görmek için;hwclock --help ve man hwclock komutlarını kullanabiliriz.
- -r / --show : Donanım saatini okur ve sonucu yazdırır.
- --set : "--date" ile birlikte kullanılır ve donanım saatini ayarlar.
- -s / --hctosys : Donanım saatini kullanarak sistem saatini ayarlar.
- -w / --systohc : O anki sistem saatini kullanarak donanım saatinin ayarlar.
- -u / --utc : Donanım saatini UTC olarak tutar.
- --localtime : Donanım saatini yerel saat olarak tutar.
- -f / --rtc [file] : "/dev/..." dizininde belirtiğimiz donanım saatini ile ilgili işlem yapar.
Şimdi hwclock ile ilgili örnekler yapalım.
Sistem saatine bakarken genelde "date" komutunu kullanırız fakat bunun dışında aşağıdaki komutları da kullanabiliriz.
date
hwclock
hwclock -r -f /dev/rtc
hwclock -r -f /dev/rtc0
Hwclock ile işlem yaparken dahili donanım saati varsayılan olduğundan, herhangi bir dizin belirtmesek bile ekrana dahili donanım saati bilgileri yazdırılacak.
RTC ile ilgili paylaşacağım yazı dizisinin ilki bu yazıydı. Bu yazıda genel olarak RTC modülünü Orange pi'ye nasıl bağlayacağımızdan, I2C hattının açılması ve etkinleştirilmesinden, RTC modülünün tanıtımından ve donanım saati ile ilgili işlem yapmak için kullandığımız "hwclock" komutundan bahsettim.
RTC modülünü tanıtma ile ilgili şöyle bir sıkıntı var. Orange pi'yi yeniden başlattığımızda veya güç kesimi olduğunda tanıttığımız RTC bilgisi siliniyor. Bu yüzden yeniden başlatma, güç kesimi gibi durumlarda RTC'yi tekrardan tanıtmak gerekiyor. Bir sonraki yazılarımızda bu sorunun çözümünden ve internet olmayan durumlarda sistem saatinin güncel olması için başlangıçta, sistem saatini donanım saatinden ayarlamak için gerekli olan Linux sistem bilgilerini ele alacağız.
RTC kullanımı ile ilgili işlemleri sizlere sade ve anlaşılır bir biçimde anlatmaya çalıştım. Gerek gördükçe görsellerle bunu destekledim. Yazıda anlaşılmayan veya yanlış olduğunu düşündüğünüz kısımları iletişim adreslerinden bizelere bildirebilir ve öğretici yazıların daha kaliteli olması için destek verebilirsiniz. Herkese iyi çalışmalar.
Hiç yorum yok:
Yorum Gönder