RPIGPS Bookworm

Z Poznámkový blok
Verze z 10. 3. 2024, 17:56, kterou vytvořil Tydyt (diskuse | příspěvky) (Úvod)
Přejít na: navigace, hledání

Nová verze Raspberry a Debianu přináší také jiný způsob instalace.

Úvod

Po vytvoření image si nastavíme obvyklé rozhraní. Pozor, prvni odstavec je fakt jen pro mne ...

sudo su root

apt install -y mc
cd /root
sed -i 's/#alias ll=/alias ll=/' .bashrc
sed -i 's/#alias la=/alias la=/' .bashrc
cd /home/tydyt
sed -i 's/#alias ll=/alias ll=/' .bashrc
sed -i 's/#alias la=/alias la=/' .bashrc
sed -i 's/#force_color_prompt=yes/force_color_prompt=yes/' .bashrc
exit

Následně provedeme upgrade celé distribuce:

sudo apt-get update && sudo apt-get dist-upgrade -y
sudo apt-get upgrade -y && sudo apt autoremove -y

sudo rpi-update

Nastavení COM

Pokud budeme GPS přijímač připojovat přes sériové rozhraní Raspberry (nikoliv přes USB), je potřeba z něj odpojit konzoli a nechat aktivoní sériový port. To provedeme pomocí konfiguraččního nástroje pro Raspberry.

sudo raspi-config

Následné volíme:

3 Interface Options    Configure connections to peripherals
I5 Serial Port Enable/disable shell messages on the serial connection

Would you like a login shell to be accessible over serial?  <No>
Would you like the serial port hardware to be enabled?      <Yes>

Nakonec provedeme reboot, aby se změna nastavení sériového portu projevila.

Nastaveni PPS

Pro funkci PPS musíme vyčlenít jeden pin GPIO,

sudo bash -c "echo '# Set PPS on GPIN' >> /boot/firmware/config.txt"
sudo bash -c "echo 'dtoverlay=pps-gpio,gpiopin=4' >> /boot/firmware/config.txt"

a přidat modul pps.

sudo bash -c "echo 'pps-gpio' >> /etc/modules"

Pro aplikování opět provést restart.

Zapojení

Raspberry-gps.png

Ověření GPS

Před pokračováním je dobré se přesvědčit že modul GPS má dostatek dat ze satelitů a že je komunikace přes sériový port v pořádku. U některých modelů je dostatek dat signalizován led "Fix" na modulu:

  • Bliká v intervalu 1s - No Fix (nedostatek dat)
  • Blikne jednou za 10s - OK Fix

Je možné,že bude nutné přijímač GPS dát blíže k oknu, nebo připojit externí anténu. Pak můžeme pokračovat v ověření "surových" dat z přijímače přímo ze sériového portu:

cat /dev/serial0

Následně by se nám měli zobrazit "surová" data, například

$GPGGA,193338.000,4909.7635,N,01643.8563,E,1,10,0.87,221.4,M,43.4,M,,*6C
$GPGSA,A,3,03,11,31,22,01,17,09,14,06,23,,,1.57,0.87,1.30*01
$GPRMC,193338.000,A,4909.7635,N,01643.8563,E,0.21,357.98,220717,,,A*64
$GPZDA,193338.000,22,07,2017,,*56
$GPGGA,193339.000,4909.7635,N,01643.8563,E,1,10,0.87,221.4,M,43.4,M,,*6D
$GPGSA,A,3,03,11,31,22,01,17,09,14,06,23,,,1.57,0.87,1.30*01
$GPRMC,193339.000,A,4909.7635,N,01643.8563,E,0.11,57.42,220717,,,A*52

Pokud tomu tak je, můžeme pokračovat ....

Instalace GPS a PPS

Nainstalujeme vlastní ovladače pro GPS a PPS.

sudo apt-get install -y gpsd gpsd-clients pps-tools

Následně otevřeme konfigurační soubor /etc/default/gpsd kde nastavíme parametry

sudo nano /etc/default/gpsd
DEVICES="/dev/serial0"
GPSD_OPTIONS="-n"
USBAUTO="false"

Poté restartujeme službu, aby se změny projevily.

sudo systemctl restart gpsd.service

Ověření gpsd

Ověření funkčnosti GPS je možné použít několik pomocných programů které jsou součástí předchozí instalace. Například:

  • gpsmon
  • cgps -s
  • sudo ntpshmmon

Ověření PPS

Prvně ověříme, že je modul PPS načtem

lsmod | grep pps

Měli by jsme dotat následující (obdobnou) informaci:

pps_gpio               16384  0

K ověření pulzů PPS můžeme použít:

sudo ppstest /dev/pps0

Následně by jsme měli získat podobný výpis

trying PPS source "/dev/pps0"
found PPS source "/dev/pps0"
ok, found 1 source(s), now start fetching data...
source 0 - assert 1504898420.000395033, sequence: 2859 - clear  0.000000000, sequence: 0
source 0 - assert 1504898421.000394391, sequence: 2860 - clear  0.000000000, sequence: 0
source 0 - assert 1504898422.000394114, sequence: 2861 - clear  0.000000000, sequence: 0

Pokud by se zobrazil výpis " time_pps_fetch() error -1 (Connection timed out) " tak PPS pulzy nejsou na daném rozhraní k dispozici.

Poznámka: V případě že GPS přijímač je připojen přes seriové rozhraní, tak pro PPS signál se využívá jeden z pinů DCD, RI a DSR.

Instalace Chrony

Vlastní instalace. Pozor, pokud jiz je nainstalovane NTP, tak jej odinstaluje.

sudo apt install -y chrony

Pote upravíme nastavení chrony, kde přidáme řádku pro GPS, PPS a upravíme z jakého rozsahu budeme službu NTP nabízet:

  • refclock SHM 0 refid NMEA offset 0.200
  • refclock PPS /dev/pps0 refid PPS lock NMEA
  • allow
sudo nano /etc/chrony/chrony.conf
###### pod tímto řádkem jsou vlastní změny konfigurace #######
server 10.98.1.1 iburst minpoll 3 maxpoll 5
server time-a-b.nist.gov iburst
server time-d-b.nist.gov
server utcnist.colorado.edu
server time.windows.com
server time.apple.com

# zpoždění bylo určeno experimentálně nastavením noselect a poté sledováním po dobu několika hodin
# 0,325 znamená, že časová věta NMEA dorazí 325 milisekund po pulzu PPS
# zpoždění nastaví dopředu
refclock SHM 0 delay 0.325 refid NMEA
refclock PPS /dev/pps0 refid PPS

allow 10.98.1.0/24 # my home network
###### nad tímto řádkem jsou vlastní změny konfigurace #######

###### pod tímto řádkem jsou standardní chronické věci #######
keyfile /etc/chrony/chrony.keys
driftfile /var/lib/chrony/chrony.drift
#log tracking measurements statistics
logdir /var/log/chrony
maxupdateskew 100.0
hwclockfile /etc/adjtime
rtcsync
makestep 1 3

Nakonec ověříme že vše funguje.

chronyc sources

Ve sloupečku S je pak signalozovano:

  • * je vybraný zdroj pro synchronizaci
  • + je záložní zdroj pro synchronizaci
  • x neplatný, falešný zdroj
  • vše ostatní se nepoužije

Instalace NTP

NTP_server Prvně provedeme vlastní instalaci. Pokud mame nainstalovany chrone, tak bude odinstalovan.

sudo apt-get update
sudo apt-get -y install ntp
sudo mkdir /var/log/ntpsec && sudo chown ntpsec:ntpsec /var/log/ntpsec

Po instalaci prvně upravíme default pro spusštění, aby se nenačítal NTP server z DHCP

sudo nano /etc/default/ntpsec
IGNORE_DHCP="yes"

Následně upravíme vlastní konfiguraci ntp serveru podle našich požadavků nakonec opět NTP restartujme/spustíme.

sudo nano /etc/ntpsec/ntp.conf
server ntp.cesnet.cz iburst
server tak.cesnet.cz iburst
server ntp.nic.cz iburst

# GPS Serial data reference
server 127.127.28.0 minpoll 4 maxpoll 4 prefer
fudge  127.127.28.0 time1 0.0 refid GPS

# PPS reference
server 127.127.22.0 minpoll 4 maxpoll 4
fudge 127.127.22.0 refid PPS

# GPS PPS reference
server 127.127.28.1 minpoll 4 maxpoll 4
fudge  127.127.28.1 refid PPS

a následně službu NTP restartujeme pro načtení změn

sudo service ntp restart

V konfiguraci může být problém z nastavením time1. Povoleny rozsah je 0.0 až 0.9999. Mělo by se jednat o hodnotu, aby offset byl co nejmenší (0,1393).

Prepnuti NTP na lokal

  • /etc/systemd/timesyncd.conf - upravit dle potreby, adresar timesyncd.conf.d/
  • /etc/systemd/networkd.conf zadat:
[DHCP]
UseNTP=false

Web zobrazení

Součástí gpsd je i php skript, který umožní zobrazení zachycených družic přes web rozhraní. V případě zájmu o toto zobrazení je potřeba doinstalovat web server z PHP.

sudo apt install -y lighttpd php-cgi php-gd php-bcmath

sudo lighty-enable-mod fastcgi 
sudo lighty-enable-mod fastcgi-php

sudo service lighttpd force-reload

Následně z adresáře /usr/share/doc/gpsd-clients/examples překopírujeme soubor gpsd.php.gz do adresáře /var/www/html. Tam jej rozbalíme příkazem "gzip -d gpsd.php.gz". Při prvním spuštění gpsd.php se vytváří konfigurační soubor. Proto je potřeba alespoň dočasně povolit do adresáře zápis.

sudo cp /usr/share/doc/gpsd-clients/examples/gpsd.php.gz /var/www/html
cd /var/www/html
sudo gzip -d gpsd.php.gz

Někdy se stane, že po instalaci skript neni zkompromován. Pak je stačí překopírovat.

sudo cp /usr/share/doc/gpsd-clients/examples/gpsd.php /var/www/html

Pred prvním zpuštěním vytvoříme symlink a nastavíme práva, aby se mohl zapsat konfiguracni soubor

cd /var/www/html
sudo ln -s gpsd.php index.php 
sudo chmod 777 ../html

Následně si zobrazime web stránku přes http://<IP_adresa/DNS_nazev gps serveru>. Poté vrátíme práva aby do adresáře nemohl kde kdo zapisovat

sudo chmod 755 ../html

Jestě překlad popisu v souboru gpsd.php (cca řádek 611):

 <p class="caption">
 <u>Plný objeket</u> - data ze satelitu byli použity pro synchronizaci<br>
 <u>Odstup signál od šumu v dBHz</u>:
  <span style="color:green;">Zelená=nejlepší</span>,
  <span style="color:#c7a317;">žlutá=dobrý</span>,
  <span style="color:#dc322f">rudá=nejhorší</span><br>
 <i>Kruh</i> - satelity z GPS a QZSS<br>
 <i>Kosočtverec</i> - satelity s rozšířením (SBAS, WAAS atd.)<br>
 <i>Trojúhelník směrující nahoru</i> - satelity Galileo<br>
 <i>Trojúhelník směrující dolů</i> - satelity BeiDou<br>
 <i>Čtverec</i> - satelity GLONASS<br>
 </p>

A ve vytvořeném konfig souboru:

$blurb = <<<EOT
 <center>
 Jedná se o <a href="https://gpsd.io/">gps</a>/<a href="https://www.ntp.org/">ntp</a> server <blink>v síti SlapNet.cz</blink>.
 Je postaven na <blink>Raspberry pi</blink> z GSM přijímačem.
 Tento server spravuje <a href="mailto://tydyt@tydyt.cz">Tydyt</a>.<br/>
 </center>
EOT;