31 Mayıs 2019 Cuma

ORANGE PI RTC(REAL TIME CLOCK) - 1

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.


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.





Ş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.

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.

İlk önce güncellemeleri yükleyelim.

apt-get update && apt-get upgrade -y

Daha sonra I2C portlarını görmek için gerekli olan yüklemeyi yapalım.

apt-get install i2c-tools

Bizim kullanacağımız I2C pinleri etkinleştirilmediği için "armbianEnv.text" dosyasına gerekli "overlays=i2c0" satırını ekleyelim. Burada biz SDA,SCL pinleri olarak 3. ve 5. pinleri kullandığımız ve bu pinler "i2c0" diye geçtiği için "i2c0"ı etkinleştiriyoruz.




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.

Yazının başlangıcında Orange pi'de dahili bir RTC olduğundan bahsetmiştik. Bu dahili donanım saati "rtc0" veya "rtc" diye adlandırılır. Bizim sonradan tanıttığımız donanım saati ise "rtc1" diye adlandırlır.

Ş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.




Harici RTC'yi görüntülemek için hwclock -r -f /dev/rtc1 komutunu kullanırız. Burada dilersek "-r" yazmadan hwclock-f /dev/rtc1 komutunu da kullanabiliriz.



Donanım saatini ayarlamak için ise hwclock --set --date "10/26/2017 10:05:20" -f /dev/rtc1 komutunu kullanırız.


Sistem saatini kullanarak donanım saatini ayarlamak için "systohc" komutunu hwclock --systohc -f /dev/rtc1 şeklinde kullanırız. Tam tersi şekilde donanım saatini kullanarak sistem saatini ayarlamak için ise hwclock --hctosys -f /dev/rtc1 komutunu kullanabiliriz.




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

Öne Çıkan Yayın

ORANGE PI PYTHON UART

ORANGE PI PYTHON UART Python kurulum  yazısında Orange pi'de Python konusuna giriş yapmıştık. Daha sonra  Python Gpio  yazısında gir...