RPIGPS Bookworm
Nová verze Raspberry a Debianu přináší také jiný způsob instalace.
Obsah
Ú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í
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
Prvně provedeme vlastní instalaci. Pokud mame nainstalovany chrone, tak bude odinstalovan.
sudo apt-get update sudo apt-get -y install ntp
Po instalaci upravíme soubor ntp.conf podle našich požadavků nakonec opět NTP restartujme/spustíme.
sudo nano /etc/ntp.conf
# gps ntp server 127.127.28.0 minpoll 4 maxpoll 4 prefer fudge 127.127.28.0 time1 0.0 refid GPS # PPS ntp server 127.127.22.0 minpoll 4 maxpoll 4 fudge 127.127.22.0 refid PPS
a následně službu NTP restartujeme pro načtení změn
sudo service ntp restart
Prepnuti NTP na lokal
- /etc/systemd/timesyncd.conf - upravit dle potreby, adresar timesyncd.conf.d/