[Projekt] KAmodRPI RTC – ekspander z zegarem RTC dla komputerów Raspberry Pi – przykład konfiguracji do użycia
Jedną z wad komputerów jednopłytkowych Raspberry PI jest brak zegara czasu rzeczywistego RTC najlepiej wraz z podtrzymaniem bateryjnym. Nieustannie wzrastająca wydajność i liczba funkcjonalności, takie jak wbudowane moduły Bluetooth czy WiFi, przy nie zmiennych wymiarach zewnętrznych sprawiają, że nadal brakuje miejsca dla układów RTC z podtrzymaniem bateryjnym. Oczywiście nie wszystkie aplikacje tego elementu wymagają. Komputery Raspberry PI są często wykorzystywane jako urządzenia sieciowe i już to załatwia problem synchronizacji zegara komputera, nawet po zaniku zasilania. Są jednak aplikacje, które wymagają utrzymania na komputerze, pomimo braku zasilania, ustawień daty i godziny bez możliwości synchronizacji przez sieć internetową. Do tego typu aplikacji idealnym rozwiązaniem będzie moduł KAmodRPI RTC.
Moduł wyposażony jest w układ RTC M41T00S firmy STMicroelectronics oraz gniazdo wraz z baterią CR2032. Układ zegara RTC komunikuje się z komputerem Raspberry PI poprzez interfejs I2C na kanale 0. Bateria umożliwia podtrzymanie zasilania układu RTC w momencie zaniku zasilania ze strony komputera. Układ zegara podczas pracy pobiera prąd o wartości < 400 uA oraz może pracować w zakresie napięć od 2,7 do 5,5 VDC.
Moduł KAmodRPI RTC jest zgodny z komputerami Raspberry Pi3 oraz ze starszymi wersjami (Raspberry PI2, Raspberry PI+, Raspberry PI). Dzięki przedłużonym złączom I/O komputera RPi istnieje możliwość podłączenia kolejnego modułu ponad tym.
Przykład polega na skonfigurowaniu układu do pracy z komputerem Raspberry PI. Przykład został oparty na komputerze RPI Model B z systemem Raspbian Jessie (wersja z: 27.05.2016).
Pierwszą czynnością po uruchomieniu czystego systemu jest instalacja narzędzia do obsługi interfejsu I2C:
sudo apt-get install i2c-tools
Po instalacji pakietu podłączamy shield do pinów GPIO komputera i sprawdzamy czy układ zegara RTC jest poprawnie wykrywany przez RPI. W tym celu stosujemy polecenie:
sudo i2cdetect -y 1
Powinniśmy uzyskać wpis dla adresu 0x68.
0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- 68 -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- --
Następnie edytujemy plik /etc/module w celu dodania obsługi dla kolejnych modułów: i2c oraz modułu rtc-ds1307 dopisujemy do pliku:
i2c-dev i2c-bcm2708 rtc-ds1307
Moduł „rtc-ds1307” jest w stanie obsługiwać również inne układy, w tym nasz oraz takie jak:
- ds1307
- ds1337
- ds1338
- ds1339
- ds1388
- ds1340
- ds3231
- m41t00
- mcp7940x
- mcp7941x
- pt7c4338
- rx8025
Kolejną czynnością jest dodanie naszego układu RTC do pliku konfiguracyjnego systemu komputera Raspberry PI. Skrypt ten jest wywoływany przy każdym uruchomieniu systemu i w naszym przypadku będzie on odpowiadał za uruchomienie układu RTC do pracy z systemem.
W tym celu dopisujemy do pliku /etc/rc.local linijkę przed „exit 0”:
Dla Raspberry Pi (rev.1):
echo m41t00 0x68 > /sys/class/i2c-adapter/i2c-0/new_device
Dla Raspberry Pi (rev.2):
echo m41t00 0x68 > /sys/class/i2c-adapter/i2c-1/new_device
W tym momencie nasz układ RTC został skonfigurowany i jest gotowy do pracy w naszym komputerze.
Po ponownym uruchomieniu komputera w systemie plików powinno zostać zarejestrowane nowe urządzenie oznaczone jako „rtc0”
pi@raspberrypi ~ $ ls -l /dev | grep rtc crw------- 1 root root 254, 0 Oct 2 21:55 rtc0
Aby przeprowadzić ostateczny test ustawiamy datę i godzinę w systemie. Następnie wyłączamy komputer i odłączamy od niego zasilanie na kilka minut. Ponownie uruchamiamy komputer i jeżeli wszystko skonfigurowaliśmy poprawnie powinniśmy mieć aktualną datę i godzinę w naszym systemie. Oczywiście wszystkie testowe czynności wykonujemy z odłączonym przewodem ethernet, aby uniemożliwić synchronizację daty i godziny poprzez sieć Internet.