RPIGPS

Z Poznámkový blok
Verze z 6. 8. 2017, 16:01, kterou vytvořil Tydyt (diskuse | příspěvky) (NTP z GPS)
Přejít na: navigace, hledání

Raspberry a GPS - zde se pokusím shrnout způsob rozchození GPS modulu na Raspberry V.3 - Jessie.


Příprava

Po vytvoření image na microCD musíme ještě nahrát prázdný soubor ssh aby byl funkční přístup přes SSH. Teprve poté se můžeme k Raspberry přihlásit přes SSH. Ve výchozím nastavení je IP adresa načtena z DHCP serveru. Výchozí login je "pi" a heslo "raspberry". U instalace FlightAware je heslo "flightaware".

Po prvním spuštění je vhodné spustit příkaz "sudo raspi-config" pro dokončení plného nastavení vlastního Raspberry.

Následně provedeme upgrade celé distribuce:

sudo apt-get update
sudo apt-get dist-upgrade
sudo rpi-update
sudo apt-get upgrade

Zablokování sériové konzoly

Prvně musíme systému Linux odebrat nastavení pro spuštění sériové konzole. Pokud by jsme tak neučinili, tak nám sériový port obsadí systémová konzole a nešel by následně použít pro GPS. To provedeme editací souboru /boot/cmdline.txt

sudo nano /boot/cmdline.txt

kde změníne

dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

na ( odeberte console=ttyAMA0,115200 a pokud existuje, kgdboc=ttyAMA0,115200 )

dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

Poznámka:

  • může se zobrazit konzola = serial0,115200 nebo console = ttyS0,115200 a měla by odstranit ty části řádku, pokud jsou k dispozici.
  • na Raspberry v.3 také konzole nastavena být nemusí. Lze to též docílit pomocí raspi-config.

Povolení sériového rozhraní

Na Raspberry V.3 je standartní sériové rozhraní využito pro Bluetooth. Proto musíme dodatečně povolit sériové rozhraní na GPIO portech v souboru /boot/config.txt

sudo nano /boot/config.txt

kde na konec přidáme parametr

enable_uart=1
dtoverlay=pps-gpio,gpiopin=4

Dále do souboru /etc/modules přidáme

sudo nano /etc/modules


pps-gpio

Také je vhodné povolit čtení ovladače i istatním uživatelům. Do docílíme přidáním práv do udev

sudo nano /etc/udev/rules.d/99-com.rules


SUBSYSTEM=="pps",  GROUP="systemd-timesync", MODE="0664"

Poté restartujeme celé Reaspberry

sudo reboot

Poznámka:

  • Toto nastavení lze také provést pomocí raspi-config.

Ověření GPS

Před pokračováním je dobré se přesvědčit že má GPS dostatek dat ze satelitů a že je komunikace přes sériový port v pořádku. Dostatek dat je signalizováno 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:

stty -F /dev/ttyS0 raw 9600 cs8 clocal -cstopb
cat /dev/ttyS0

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 ovladače GPS - balíček

Po přípravě sériového portu pro komunikaci z GPS můžeme nainstalovat vlastní podporu pro GPS "gpsd":

sudo apt-get update
sudo apt-get dist-upgrade
sudo rpi-update
sudo apt-get install gpsd gpsd-clients python-gps pps-tools

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

USBAUTO="false"
DEVICES="/dev/ttyS0"
GPSD_OPTIONS="-n"

a můžeme ověřit zda GPS funguje příkazem

cgps -s

nebo

gpsmon

Instalace ovladače GPS - new

Doinstalujeme potřebné balíčky - povinné, doporučené:

sudo apt-get install scons libncurses5-dev python-dev pps-tools
sudo apt-get install git-core

Ověříme nejnovější verzi a následně ji stáhneme:

wget http://git.savannah.gnu.org/cgit/gpsd.git/snapshot/gpsd-release-3.16.tar.gz

Poté soubor rozbalíme:

tar -xzvf gpsd-release-3.16.tar.gz

Přesuneme se do zdrojového adresáře a spustíme instalaci:

cd ./gpsd-release-3.16
scons && scons check && sudo scons udev-install

Pokud se to podaří gpsd a gpsdctl budou instalovány zde:

/usr/local/sbin/

Ostatní klienti a nástroje budou instalovány zde:

/usr/local/bin/

Tyto jsou:

cgps, gps2udp, gpsctl, gpsdecode, gpsmon, gpspipe, gpxlogger, lcdgps, ntpshmmon

Ověření gpsd

Pro ověření je možné použít několik pomocných programů:

gpsmon
cgps -s
ntpshmmon

Adresy NTP - GPS

  • lx.ujf.cas.cz ( 89.221.208.61 )
  • 94.124.107.190

Instalace NTP

V základní distribuci sice je již server NTP nainstalován, ale ten bohužel nepodporuje funkci PPS. Proto je nutné nainstalovat novější verzi. Samozřejmě je potřeba ověřit nejnovější verzi. Před vlastní instalací je dobré také starou verzi odinstalovat:

sudo service ntp stop
dpkg -r ntp

wget http://archive.ntp.org/ntp4/ntp-4.2/ntp-4.2.8p10.tar.gz
tar zxvf ntp-4.2.8p10.tar.gz
cd ntp-4.2.8p10
./configure --enable-linuxcaps
make
sudo make install
sudo cp /usr/local/bin/ntp* /usr/bin/ && sudo cp /usr/local/sbin/ntp* /usr/sbin/

Po instalaci upravíme soubor ntp.conf a nakonec opět NTP zpustíme.

sudo nano /etc/ntp.conf

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

sudo service ntp start

Následně ověříme funkcionalitu NTP:

ntpq -p -n

Pro úplný výpis z dalšími informacemi můžeme použít:

ntpq -crv -pn

NTP z GPS

Pro synchronizaci času musíme mít na Rasberry nainstalovanou službu NTP. Ta je ale již součástí image, tudíž tento krok můžeme přeskočit.

sudo apt-get install ntp

Ale aby si NTP server bral čas z GPS, musíme upravit konfigurační soubor /etc/ntp.conf kam přidáme

# gps ntp
server 127.127.28.0 minpoll 4
fudge  127.127.28.0 time1 0.183 refid NMEA
server 127.127.28.1 minpoll 4 prefer
fudge  127.127.28.1 refid PPS

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

sudo service ntp restart

Po chvíli by jsme měli vidět, že se synchronizuje čas z GPS

pi@raspberrypi:~$ ntpq -p
remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*ns1.luns.net.uk 33.117.170.50    2 u   54   64    7   65.454    2.666   5.800
+resntp-b-vip.lo 127.151.91.34    3 u   45   64   17   55.704   -5.169   8.482
+bart.nexellent. 194.242.34.149   2 u   17   64   17   76.585   -4.271  57.595
+v01.s01.be.it2g 193.190.230.65   2 u   20   64   37   86.464   -2.374 228.460
xSHM(0)          .NMEA.           0 l   11   16  377    0.000  144.714   3.026
SHM(1)           .PPS.            0 l    -   16    0    0.000    0.000   0.000

Kde první znak znamená:

"mezera"
   Peer je vyřazen jako nedostupný, synchronizovaný na vlastní server (synchronizační smyčka) nebo velká synchronizační vzdálenost. 
x falsetick
   Peer je vyřazen algoritmem průniku jako falešný. 
. excess
   Peer je vyřazen, protože není mezi prvními deseti podle synchronizační vzdálenosti, a tak je nevhodný kandidát k dalšímu použití. 
- outlyer
   Peer je vyřazen clusteringovým algoritmem jako outlier. 
+ candidat
   Peer je přeživší a je kandidátem na kombinační algoritmus. 
# selected
   Peer je přeživší, ale není mezi prvními šest seřazených podle synchronizační vzdálenosti. Pokud je asociace pomíjivá, může být odpojen, aby šetřil zdroje. 
* sys.peer
   Peer byl prohlášen za systémový a jeho proměnné jsou předávány vlastnímu systému. 
o pps.peer
   Peer byl prohlášen za systémový a předává proměnné vlastnímu systému. Skutečná synchronizace je však odvozena od signálu puls-per-second (PPS), ať už nepřímo přes ovladač referenčních hodin PPS nebo přímo přes rozhraní jádra.

Dokončení

Odstranit soubor /etc/dhcp/dhclient-exit-hooks.d/ntp abychom zabránili přepsání konfigurace ntp z dhcp.

rm /etc/dhcp/dhclient-exit-hooks.d/ntp
rm /var/lib/ntp/ntp.conf.dhcp

Zdroje: