Raspberry Pi

14) Hodiny reálného času PCF8563 - stará verze RasPi

POZOR

Všechny návody a příklady na této stránce
 platí pro Raspberry Pi verze 1 
(starší verze bez dvou montážních otvorů v desce) 

Novější verze 2 má trochu jinak číslované některé
vývody na GPIO konektoru.

Program, který je psaný v jazyce C, 
na nové variantě RasPi nefunguje.

Popis rozdílů obou variant je zde: http://elinux.org/....28GPIO.29

RasPi nemá zabudované vnitřní hodiny, které by fungovaly i po vypnutí napájení.
Když je k dispozici připojení k internetu, RasPi si může při spuštění automaticky seřídit čas.
Když ale při zapnutí není internet dostupný, nastaví si RasPi hodiny na čas posledního vypnutí.
Další problém nastává, když RasPi provádí nějaké náročné operace. V té chvíli se může stát, že se hodiny na chvíli zastaví.

Tento problém je možné vyřešit pomocí přídavného modulu, který obsahuje přesný oscilátor, záložní baterku a obvod, který si pomocí toho oscilátoru udržuje informaci o skutečném čase (a to i v případě, že je napájení Raspíčka vypnuté).

Článek, ze kterého jsem vycházel při zprovoznění modulu je tady:
 http://www.raspi.cz/2012/07/pouziti-i2c-sbernice-detailni-postup-hodiny-realneho-casu-pro-rpi/

... ale hned na začátku musím upozornit, že se mi nepodařilo podle článku hodiny zprovoznit.

 

Modul hodin reálného času jsem koupil u Číňanů v obchodě, který ve výše zmíněném článku doporučují :
http://www.goodluckbuy.com/pcf8563-rtc-board-pcf8563-i2c-interface-3-3v-battery.html

Obchod proběhl bez problémů a zboží bylo dodáno asi za 3 týdny od objednávky.

 

Dále bylo třeba na mou "bastl" desku přidělat ještě čtyřpinovou zásuvku do které by se dal modul zasunout. 

K zásuvce jsem přivedl tyto signály z konektoru GPIO:
   +3.3V; GND; GPIO0; GPIO1. 

Tady je schéma a fotka:

  

Hodinový modul zasunutý do nové zásuvky:

Čepičku na hodinovém modulu jsem přendal do polohy BAT. 
Tím by se měl hodinový obvod stát nezávislý na vnějším napájení - měl by být napájený z baterie.

 

A teď k vlastnímu softwéru:

Jak jsem již psal, nepodařilo se mi podle výše zmíněného článku modul rozchodit. 
Článek byl psaný pro "zastaralý" systém Debian Squeeze, ale já používám Raspbian.


Po dlouhém hledání na internetu jsem našel řešení:
 http://www.raspberrypi.org/phpBB3/viewtopic.php?t=13710&p=142972

Nejdříve je potřeba povolit ovladače sběrnice I2C a SPI (SPI se kvůli hodinám povolovat nemusí, ale když už jsem povoloval I2C, tak jsem povolil i to SPI):

sudo nano /etc/modprobe.d/raspi-blacklist.conf

V editoru, který se tímto příkazem otevře, se musí zakomentovat dvě řádky (připsat před ně "dvojkřížek"  # ), jak je vidět na následujícím obrázku:

 

 ... a změny uložit (Ctrl+X, Y, Enter)

Pak vytvořit nový soubor s názvem pcf8563_i2c_rtc.c (Umístil jsem ho do adresáře /home/pi/)

sudo nano /home/pi/pcf8563_i2c_rtc.c

 Do něj pak zkopírovat kód, který je uveden dole na této stránce:
 http://www.susa.net/wordpress/2012/06/raspberry-pi-pcf8563-real-time-clock-rtc/

(kód je dost dlouhý, a tak si myslím, že nemá cenu ho tady znova opisovat) - kopie souboru, která ale nemusí být aktuální, je ke stažení třeba tady: pcf8563_i2c_rtc.c

Po vložení kódu zase soubor uložit (Ctrl+X, Y, Enter)

Pak je třeba soubor s kódem překompilovat příkazem:

gcc -o pcf8563_i2c_rtc pcf8563_i2c_rtc.c

Tím vznikne v adresáři /home/pi/ soubor pcf8563_i2c_rtc

Tento soubor je možné přesunout do nějaké jiné složky (například /usr/bin/) a v této složce pak program spouštět podle potřeby.

sudo mv /home/pi/pcf8563_i2c_rtc /usr/bin/pcf8563_i2c_rtc

 

Existují dva parametry programu pcf8563_i2c_rtc, pomocí kterých se s hodinovým modulem pracuje.
Když se spustí s parametrem -w, dojde k zápisu času, který je nastavený v RasPi do přídavného modulu.

sudo /usr/bin/pcf8563_i2c_rtc -w
 

Při spuštění s parametrem -s se čas na RasPi nastaví podle času, který je v hodinovém modulu.

sudo /usr/bin/pcf8563_i2c_rtc -s
 

Při spuštění bez parametru se pouze zobrazí čas, který je v modulu.

sudo /usr/bin/pcf8563_i2c_rtc

 

Také je možné nastavit automatické seřízení času podle modulu například každé 3 hodiny - pomocí CRONu (vysvětleno v článku o meteokameře).


Doplnění 16.8.2012:

Ještě jsem testoval, jaká je přesnost modulu.
Počítal jsem s tím, že vzhledem k tomu, že je to "Čína", bude odchylka tak 5s za den.
Ale zjistil jsem, že při pokojové (letní) teplotě se odpojený modul zpozdil za 3 dny jen o 1 sekundu.

To se mi zdá výborné. 

 

 


úvodní strana webu AstroMiK.org

poslední úprava stránky 16.8.2012