Rasbpberry Pi 3B+, Pi Camera, USB GPS/Glonass - Lepší vyzkoušet než studovat

Your Name
Přejít na obsah

Rasbpberry Pi 3B+, Pi Camera, USB GPS/Glonass

Archiv > Raspberry 3 B+
Implementace GPS do systému



GPS fleška jako časový server
Pokud se Raspberry Pi nachází někde v LAN síti nebo na internetu, člověk si toho ani nevšimne. Ve chvíli, kdy je ale Raspi bez netu nebo GSM signálu, všimneme si toho hned. Raspi nemá vlastní hodiny, které by "držely" aktuální čas. Stačí nechat Raspi vypnuté přes noc a pak ho restartovat bez sítí a hned to vidíme - čas se rozchází o několik minut, dokonce i hodin. Pro mou aplikaci Raspi je přesný čas podmínkou (gps tracker a následný fototagging). A tak zabiju dvě mouchy jednou ranou. GPS flešku použiji jak pro získání přesného času a jeho aktualizaci, tak i pro zaznamenávání pozice.

Standardně Raspi (tak jako Win) synchronizuje systémový čas pomocí time serverů na internetu. Moje snaha bude, přinutit Raspi získávat tuto informaci z GPS flešky. K tomu budeme potřebovat GPS flešku, nebo GPS myš, zkrátka nějaký GPS přijímač, který lze zapojit do USB konektoru Raspi. Zřejmě také budeme potřebovat prodlužovací USB kabel, abychom flešku mohli "vystrčit" z okna tak, aby měla výhled k nebi a měli jsme tak k dispozici co nejvíce satelitů. Pak ještě potřebujeme, aby Raspi bylo připojené k Internetu, nejlépe pomocí LAN, protože si budeme potřebovat stáhnout další programové balíky.

Postup je jednoduchý. Zasuneme GPS flešku, najdeme její označení, otestujeme ji, stáhneme balík "chronyd", upravíme jeho konfigurační soubor, stáhneme si "crontab pro GNOME" (což je něco jako Plánované úlohy pod Win), vytvoříme úlohu pro synchronizaci času a máme hotovo.
Zapojení, identifikace a kontrola GPS flešky krok za krokem

Po zasunutí GPS flešky do USB portu musíme nejprve zkontrolovat, jestli byla do systému integrována a jaké "jméno" ji bylo přiřazeno. V terminálovém okně napíšeme příkaz:
dmesg
a potvrdíme s Enter. Sytém nám vypíše nasledující přehled, v kterém hledáme řádku s odkazem na GPS flešku. V mém případě vím, že výrobcem GPS flešky je uBlox, což jsem ve výpisu našel. Dále musíme najít, pod jakým označením je GPS fleška v systému "vedena". Standardně je to označení "/dev/ttyUSB0".
V mém případě je to však "ttyACM0".
A protože je tedy GPS fleška v systému už implementována, můžeme zkotrolovat, jestli funguje, jestli posílá data. Do příkazovéřádho ku napíšeme:
cat /dev/ttyACM0
a v okně terminálu vidíme následující (nebo podobné):

Instalace "chronyd"
Nyní nainstalujeme službu, která nám později umožní GPS data
a současně v nich obsažený časový údaj využívat. Do terminálového okna napíšeme:
sudo apt-get  -y install gpsd gpsd-clients python-gps chrony
Službu necháme nainstalovat. Po jejím nainstalování musíme upravit její konfiguační soubor. Do terminálu zadáme:

sudo nano /etc/default/gpsd

a otevře se nám editor s otevřeným souborem a musíme jej takto upravit (změnit)

START_DAEMON=”true”

USBAUTO=”true”

DEVICES=”/dev/ttyACM0″

GPSD_OPTIONS=”-n”

(jiné zdroje uvádí, že položka "USBAUTO" má mít hodnotu "false" - nutno vyzkoušet)

Pomocí kláves Ctrl+O soubor zapíšeme a klávesami Ctrl+X editor opustíme. Raspi restartujeme příkazem
sudo reboot
Po restartu můžeme hned zkusit, například příkazem:
xgps
jak a jestli GPS fleška pracuje. Po příkazu se nám totiž objeví podobné okno:

Pro kontrolu v terminálu zadáme příkazy:

systemctl is-active gpsd

systemctl is-active chronyd

a pokud systém nahlásí, že jsou aktivní, je vše v pořádku. Jinak musíme vše od začátku zkontrolovat.

Konfigurace Chrony
Nyní musíme ještě nakonfigurovat "chrony". Otevřeme jeho konfigurační soubor příkazem:

sudo nano /etc/chrony/chrony.conf

a na konec souboru připíšeme

refclock SHM 0 offset 0.5 delay 0.2 refid NMEA

Soubor uložíme (Ctrl+O) a editor opustíme.
Nyní odpojíme Raspi od sítě (vytáhneme LAN kabel nebo vypneme WiFi) a provedeme restart. Pokud bychom to neudělali, Raspi by po restartu dál prioritně využívalo internetové časové servery.

Po restartu zadáme do terminálu příkaz

chronyc sources -v

a ten nám vypíše, z kterých zdrojů "chrony" časový údaj používá. Pokud byl Raspi připojen k síti, uvidíme seznam několik časových servrů. Pokud nebyl připojen k sítím, uvidíme zde jen záznam "NMEA", což znamená, že časové informace sbírá z GPS.

Příkazem

sudo chronyc tracking

zjistíme například, o kolik je náš systémový čas oproti referenci posunut. Chrony se snaží tento rozdíl udržovat co nejmenší, ale synchronizace probíhá pomalu.

Pokud chceme systémový čas synchronizovat okamžitě, zadáme příkaz:

sudo chronyc makestep

Ještě je nutné poznamenat, že aplikace hodin v horním menu sama o sobě reaguje na syncronizace se spožděním (ačkoliv je systémový čas up-to-date. Pro kontrolu je tedy vhodné naistalovat do systému jinou aplikaci desktopových hodin, které reagují okamžitě.

Abych nemusel po každém restartu raspi do terminálu zadávat příkaz pro synchronizaci (sudo chronyc makestep), nainstaloval jsem si grafické rozhraní Crontabu (obdoba Plánovaných úloh ve Win) a nastavil jsem úlohu tak, aby k synchronizaci docházelo každou minutu.

Zdroj: https://photobyte.org/raspberry-pi-stretch-gps-dongle-as-a-time-source-with-chrony-timedatectl/#comment-34114
Instalace plánovače úloh GNOME Scheduler
Plánovač úloh pod Raspi se jmenuje Cron a používá se na příkazové řádce. Jeho pohodlnější verze GNOME scheduler používá GUI (grafické rozhraní). Instalujeme jej pomocí Add/Remove software z hlavního menu. Klikneme na Malinu/Volby/Add / Remove software. Do vyhledávacího políčka zadáme  pojem "cron" a v nabídnutém seznamu vybere položku GNOME Scheduler. Potvrdíme a necháme nainstalovat.

* 2020: GNOME Scheduler již není Raspbianem podporován a tudíž ho ani nenainstalujeme.
Problem je  nutno řešit příkazovou řádkou - crontabem.

Postup: na příkazové řádce zadáme

crontab -e

a pokud jsme crontab ještě nepoužívali, nabídne se nám volba editoru, například "nano". Po volbě editoru se nám otevře okno s editorem a do něj zapíšeme

* * * * *  sudo chronyc makestep

Soubor uložíme (Alt-+O) a enter a editor opustíme (Alt+X). Po restartu by se měly hodiny synchronizovat pomocí GPS času každou minutu.



Po instalaci najdemem v menu Systémové nastroje položku Naplánované úlohy. Po jejím odkliknutí se nám otevře okno Naplánovaných úloh. V levém horním rohu klikneme na "Nový" a vytvoříme novou úloho podle dolního obrázku. Klikneme na Použít a aplikaci zavřeme. Tím zajistíme, že se každou minutu provede synchronizace systémového času. Časování synchronizace můžeme nastavit i na jiný interval.
Návrat na obsah