Instalacja zegara czasu rzeczywistego w Raspberry Pi

Instalacja zegara czasu rzeczywistego w Raspberry Pi

Zegar czasu rzeczywistego (Real Time Clock - RTC) to układ elektroniczny, który mierzy rzeczywisty upływ czasu i przechowuje informacje o aktualnej godzinie i dacie. Układy takie są instalowane w komputerach i innych urządzeniach elektronicznych, aby te mogły odmierzać upływ czasu, nawet gdy samo zasadnicze urządzenie jest wyłączone.

Komputer jednopłytkowy Raspberry Pi nie jest fabrycznie wyposażony w układ czasu rzeczywistego. Oznacza to, że za każdym razem, gdy wyłączamy ten minikomputer i odłączamy od niego zasilanie 'zapomina' on jaka jest godzina. Po ponownym uruchomieniu system operacyjny musi bazować na czasie, który uzyska z innych źródeł, na przykład z sieci etc. Co jednak w przypadku urządzeń, które nie są podłączone w czasie pracy do żadnej sieci czy Internetu? Tutaj w sukurs przychodzi zegar czasu rzeczywistego - RTC.

Zegar czasu rzeczywistego to zazwyczaj układ scalony, wyposażony we własne zasilanie, który podłączony jest do komputera interfejsem cyfrowym. Własne, niezależne zasilanie - najczęściej w postaci baterii - pozwala na ciągłą pracę, nawet gdy sam komputer jest wyłączony. Interfejs cyfrowy, którym RTC połączony jest z komputerem, pozwala na przesyłanie do systemu operacyjnego informacji na temat aktualnego czasu i daty w dowolnym momencie.

W poniższym artykule zapiszemy w jaki sposób podłączyć zegar czasu rzeczywistego poprzez interfejs szeregowy I2C i w jaki sposób skonfigurować system operacyjny, aby mógł z nim współpracować. Wykorzystać możemy wiele układów scalonych, takich jak chociażby DS1307 czy DS3231 firmy Dallas-Maxim lub PCF8523, produkowany przez NXP semiconductors.

Podłączenie układu do minikomputera

Rysunek 1. Schemat przykładowego modułu zegara czasu rzeczywistego opartego na układzie scalonym DS1307

Scalony zegar czasu rzeczywistego wymaga podłączenia zaledwie kilku dodatkowych elementów, aby móc poprawnie działać. Najważniejsze to oscylator kwarcowy o częstotliwości oscylacji równej 32,768 Hz (to dokładnie 215 Hz) oraz bateria, która podtrzymywać będzie pracę zegara w czasie, gdy odłączone od modułu jest zasilanie. Schemat przykładowego modułu pokazany jest na rysunku 1. Linie SDA, SCL oraz zasilanie (+5 V) i masę podłączamy do 40-pinowego złącza rozszerzeń Raspberry Pi, zgodnie z odpowiednimi sygnałami, jak opisano w tabeli 1.

Jeśli nie chcemy samodzielnie montować takiego modułu, na rynku dostępnych jest wiele modułów ze scalonymi zegarami czasu rzeczywistego. Większość z nich wyposażona jest w złącza kompatybilne ze złączem rozszerzeń Raspberry Pi. Moduły te wyposażone są w różne układy RTC, takie jak wymienione we wcześniejszej części artykułu.

Włączenie interfejsu I2C w Raspberry Pi

Aby móc korzystać z zegara czasu rzeczywistego, podłączonego do magistrali I2C, musimy ten interfejs aktywować. Domyślnie interfejs jest dezaktywowany w systemie operacyjnym. Na szczęście można łatwo uruchomić go, nie zagłębiając się w pliki systemowe - wystarczy skorzystać z wbudowanego w Raspbiana konfiguratora systemu. W pierwszej kolejności uruchamiamy wspomniany konfigurator z uprawnieniami roota:

Wyświetli to tabelę z różnymi adresami I2C. Jeżeli pod jakimś adresem Raspberry Pi wykryje urządzenie, w pozycji tej znajdziemy rzeczony adres, inaczej system wypełni to pole dwoma myślnikami „--”. Typowym adresem, pod jakim powinniśmy zobaczyć nasz moduł jest 0x68 - w kolumnie „8” i wierszu „60” wpisana będzie liczba 68. Oczywiście, jeżeli korzystamy z innego układu RTC, niż wymienione tutaj, adres może być inny. Informacje o tym, pod jakim adresem znaleźć możemy dany układ znajdują się w jego karcie katalogowej. W ten sposób znajdować możemy także inne urządzenia I2C, dołączone do naszego Raspberry Pi.

Jeśli poprawnie wykryliśmy obecność zegara czasu rzeczywistego w naszym systemie, możemy poinformować o nim system operacyjny. Aby to zrobić, należy wpisać odpowiednią komendę w pliku konfiguracyjnym config.txt. W tym celu otwieramy ten plik w edytorze nano, wpisując w terminalu:

sudo hwclock -s

Teraz możemy cieszyć się zawsze aktualną godziną i datą w naszym komputerze jednopłytkowym, niezależnie czy jest podłączony do sieci, czy nie.

Nikodem Czechowski

Artykuł ukazał się w
Elektronika Praktyczna
wrzesień 2019
Zobacz też
Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik lipiec 2020

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio lipiec 2020

Świat Radio

Magazyn użytkowników eteru

APA - Automatyka Podzespoły Aplikacje lipiec 2020

APA - Automatyka Podzespoły Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna lipiec 2020

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Praktyczny Kurs Elektroniki 2018

Praktyczny Kurs Elektroniki

24 pasjonujące projekty elektroniczne

Elektronika dla Wszystkich lipiec 2020

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów