RPIGPS Bookworm: Porovnání verzí

Z Poznámkový blok
Přejít na: navigace, hledání
(Instalace NTP)
(Úvod)
 
(Není zobrazeno 21 mezilehlých verzí od stejného uživatele.)
Řádka 3: Řádka 3:
 
Po vytvoření image si nastavíme obvyklé rozhraní. Pozor, prvni odstavec je fakt jen pro mne ...
 
Po vytvoření image si nastavíme obvyklé rozhraní. Pozor, prvni odstavec je fakt jen pro mne ...
 
  sudo su root
 
  sudo su root
  apt install -y mc
+
   
 +
apt update && apt install -y mc
 
  cd /root
 
  cd /root
 
  sed -i 's/#alias ll=/alias ll=/' .bashrc
 
  sed -i 's/#alias ll=/alias ll=/' .bashrc
Řádka 13: Řádka 14:
 
  exit
 
  exit
 
Následně provedeme upgrade celé distribuce:  
 
Následně provedeme upgrade celé distribuce:  
  sudo apt-get update && sudo apt-get dist-upgrade -y
+
  sudo apt-get update && sudo apt-get upgrade -y
  sudo apt-get upgrade -y && sudo apt autoremove -y
+
  sudo apt-get dist-upgrade -y && sudo apt autoremove -y
 
   
 
   
 
  sudo rpi-update
 
  sudo rpi-update
 +
 
== Nastavení COM ==
 
== 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.
 
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.
Řádka 58: Řádka 60:
 
  sudo nano /etc/default/gpsd
 
  sudo nano /etc/default/gpsd
  
  DEVICES="/dev/serial0"
+
  DEVICES="/dev/serial0 /dev/pps0"
 
  GPSD_OPTIONS="-n"
 
  GPSD_OPTIONS="-n"
 
  USBAUTO="false"
 
  USBAUTO="false"
Řádka 88: Řádka 90:
  
 
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.
 
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/ntpsec/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/
 
* /etc/systemd/networkd.conf zadat:
 
[DHCP]
 
UseNTP=false
 
 
 
== Web zobrazení ==
 
== 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.
 
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.
Řádka 163: Řádka 99:
 
  sudo service lighttpd force-reload
 
  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.
+
Následně z adresáře /usr/share/doc/gpsd-clients/examples překopírujeme soubor gpsd.php do adresáře /var/www/html. 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 /var/www/html
 +
 
 +
Někdy se stane, že po instalaci skript je zkompromován. Pak je jej rozbalíme příkazem "gzip -d gpsd.php.gz".
 
  sudo cp /usr/share/doc/gpsd-clients/examples/gpsd.php.gz /var/www/html
 
  sudo cp /usr/share/doc/gpsd-clients/examples/gpsd.php.gz /var/www/html
 
  cd /var/www/html
 
  cd /var/www/html
 
  sudo gzip -d gpsd.php.gz
 
  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
 
Pred prvním zpuštěním vytvoříme symlink a nastavíme práva, aby se mohl zapsat konfiguracni soubor
Řádka 194: Řádka 130:
 
  </p></nowiki>
 
  </p></nowiki>
  
A ve vytvořeném konfig souboru:
+
A ve vytvořeném konfig souboru gpsd_config.inc:
 
  $blurb = <<<EOT
 
  $blurb = <<<EOT
 
  <nowiki> <center>
 
  <nowiki> <center>
Řádka 202: Řádka 138:
 
  </center></nowiki>
 
  </center></nowiki>
 
  EOT;
 
  EOT;
 +
 +
Pokud chceme, aby se stránka z daty obnovovala, tak nastavíme autorefresh. Můžeme také nastavit zobrazeni mapy z polohou přijímače.
 +
$autorefresh = 15;
 +
 +
== NTP / Chrony ==
 +
Pro postup instalce vlastního NTP server jsem zvolil samostatné stránky, pro lepší přehlednost. Na výběr je ze dvou SW, ale mějmě na paměti, že může být vždy nainstalován jen jeden.
 +
* [[NTP_server]]
 +
* [[Chrony]]
 +
== Odkazy ==
 +
* [[RPIGPS | Původní návod GPS & NTP server]]
 +
* [[NTP_server | Instalace NTP serveru]]
 +
* [[Chrony | Instalace Chrony]]
 +
* [[Zabbix | Instalace Zabbix serveru a klientu ]]
 +
* [[Raspberry#Projekty | Zpět na projekty Raspberry Pi]]

Aktuální verze z 29. 3. 2024, 18:05

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 update && 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 upgrade -y
sudo apt-get dist-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 /dev/pps0"
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.

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 do adresáře /var/www/html. 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 /var/www/html

Někdy se stane, že po instalaci skript je zkompromován. Pak je jej rozbalíme příkazem "gzip -d gpsd.php.gz".

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

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 gpsd_config.inc:

$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;

Pokud chceme, aby se stránka z daty obnovovala, tak nastavíme autorefresh. Můžeme také nastavit zobrazeni mapy z polohou přijímače.

$autorefresh = 15;

NTP / Chrony

Pro postup instalce vlastního NTP server jsem zvolil samostatné stránky, pro lepší přehlednost. Na výběr je ze dvou SW, ale mějmě na paměti, že může být vždy nainstalován jen jeden.

Odkazy