Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

Zegar RTC w Raspberry Pi

Zegar czasu rzeczywistego (RTC) znajduje się w niemal każdym urządzeniu, zaczynając od aparatów cyfrowych, smartfonów, tabletów, kończąc na komputerach i serwerach. Dzięki zegarowi RTC nasze urządzenia mają aktualną godzinę nawet gdy nie są podłączone do zasilania. Niestety, popularny Raspberry Pi jest pozbawiony zegara czasu rzeczywistego a czas pobiera z internetu podczas uruchamiania, a co jeśli nasze urządzenie nie ma połączenia z internetem? Tu właśnie przydaje się zegar RTC.

Moduł zegara RTC

Opiszę sposób komunikacji oraz obsługi modułu zegara RTC z układem DS1307 poprzez protokół I2C.

Parametry modułu Tiny RTC

r   e   k   l   a   m   a

  • Zasilanie : 5V
  • Komunikacja: I2C
  • Pomiar: Rok, Miesiąc, Dzień tygodnia, Dzień miesiąca, Godzina, Minuta, Sekunda
  • Pobór prądu: 500nA
  • Pamięć nieulotna: 32kbit (24C32) + 56 bit (DS1307)
  • Koszt: 11-20zł

Schemat podłączenia

Do modułu należy dolutować goldpiny oznaczone modułem P1 (SDA, SCL, VCC, GND, reszta nie jest nam potrzebna)

Moduł zasilamy napięciem 5V oraz łączymy złącza SCL i SDA.

Konfiguracja

Zaczniemy najpierw od aktualizacji systemu a następnie aktualizacji firmware-u.

sudo apt-get update && sudo apt-get upgrade

sudo rpi-update

na koniec restartujemy malinę.

Instalujemy potrzebne pakiety

sudo apt-get install i2c-tools libi2c-dev

Następnie za pomocą narzędzia raspi-config włączamy obsługę i2c

sudo raspi-config

Wchodząc odpowiednio do Advence Option>I2C wybieramy dwukrotnie "YES"

A następnie restartujemy malinę

sudo reboot

Wykrywamy nasz moduł

sudo i2cdetect -y 1

Nasz moduł RTC posiada adres 68 oraz 50, ale drugi adres jest przeznaczony dla pamięci EEPROM i nie będziemy go używać.

Jeśli posiadamy jeszcze starą malinę rev1 zamiast 1 podajemy 0 czyli i2cdetect -y 0

Jeśli wyskoczą jakieś błędy należy się upewnić czy mamy w pliku /etc/modules dodane wpisy:


  • i2c-bcm2708

  • i2c-dev

Jeśli ich brakuje należy je dodać.

Załadowujemy moduł zegara

sudo modprobe rtc-ds1307

A następnie jako root wykonujemy polecenie

sudo bash


echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device 
Jeśli posiadamy jeszcze starą malinę (rev1) to zamiast i2c-1 podajemy i2c-0

Wychodzimy wpisując

exit

Teraz sprawdzimy datę i godzinę z naszego modułu DS1307

sudo hwclock -r

oraz datę i czas z systemu

date

Jak widać obydwie daty różnią się między sobą. Aby zapisać datę z systemu do naszego modułu wystarczy wykonać polecenie

sudo hwclock -w

, które zapisuje datę i godzinę do modułu. Teraz po ponownym odczycie z modułu i systemu powinniśmy mieć identyczne datę i godzinę.


sudo hwclock -r && date

Jeśli wszystko nam już działa to warto dodać moduł zegara, aby ładował się wraz z uruchomieniem systemu. Wpisujemy polecenie

sudo nano /etc/modules

i dodajemy poniższą linijkę

rtc-ds1307

Następnie otwieramy plik /etc/rc.local

sudo nano /etc/rc.local

i dodajemy poniższe linijki


echo ds1307 0x68 > /sys/class/i2c-adapter/i2c-1/new_device
sudo hwclock -s

Przed linijką

exit 0

Polecenie hwclock -s synchronizuje czas pobierając go z RTC do Maliny.

Od teraz przy każdym restarcie bez podłączonego internetu będziemy mieli aktualny czas.

Wpis powstał z potrzeby dodania zegara RTC do mojego robota Gimli.

 

linux sprzęt hobby

Komentarze