RPIGPS
Raspberry a GPS - zde se pokusím shrnout způsob rozchození GPS modulu na Raspberry V.3 - Jessie.
Obsah
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
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 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
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