In de tutorial ‘Bluetooth GPS module koppelen‘ heb je kennis gemaakt hoe je een GPS ontvanger met de Raspberry Pi verbindt en hoe je via een COM-poort een connectie met de software kunt maken. Op basis van deze kennis leg ik in deze tutorial uit hoe je GPSMon en XGPS kunt gebruiken.
GPSMon is een monitor die pakketten bekijkt die van een GPS komen en deze samen met diagnostische informatie weergeeft. Gpsmon verschilt van een navigatieclient doordat het voornamelijk onbewerkte gegevens van de GPS dumpt, met alleen voldoende gegevens om controles tegen de verwachte output mogelijk te maken. Het gebruikt geen gpsd om pakketten te decoderen.
XGPS is een eenvoudige testclient voor GPSD met een X-interface. Het geeft de huidige GPS-positie/tijd/snelheidsinformatie weer en (voor GPS’en die de functie ondersteunen) de locaties van toegankelijke satellieten.
GPSD is een programma dat gegevens verzamelt van een GPS-ontvanger en de gegevens eventueel via een IP-netwerk levert aan mogelijk meerdere cliënt toepassingen in een server-cliënt toepassingsarchitectuur. GPSD kan worden uitgevoerd als een daemon om transparant te werken als een achtergrondtaak van de server.
Eerst nog dit!
Voordat je deze tutorial gaat doen, raad ik aan eerst deze tutorial te doen. Je leert hier de basis t.a.v. communicatiepoorten en je test de opstelling van de GPS-ontvanger. Weliswaar wordt hier een bluetooth ontvanger gebruikt, maar dat kan ook een andere interface zijn. Een pientere hobbyist doorziet hoe het werkt. Het helpt als je al wat met communicatiepoorten gewerkt hebt.
Let op! Om het eindresultaat, de X-interface te kunnen gebruiken heb je in deze tutorial een grafische interface nodig. Derhalve kun je geen gebruik maken van de SSH-client zoals PuTTY. Je kunt gebruik maken van het beeldscherm dat rechtstreeks op de Pi aangesloten is, of je gebruikt VNC om de Pi op afstand te bedienen.
Installeer de volgende hulpprogramma’s:
sudo apt-get install gpsd gpsd-clients python-gps
We gaan er van uit dat er een actieve verbinding met de GPS-ontvanger is. M.a.w. de poort waarover de communicatie verloopt is bekend. Omdat deze tutorial een vervolg is van de tutorial ‘Bluetooth GPS module koppelen‘, gebruiken we poort rfcomm1.
Om te de GPS-ontvanger straks te kunnen binden is het MAC-adres ervan nodig.
Host Controler Interface tool (HCItool)
Om een Bluetooth device met een MAC-adres te detecteren kun je het standaard hcitool gebruiken. Het hcitool wordt gebruikt om de verbindingen te configureren en een speciale commando’s naar apparaten devices te sturen. Je vindt de apparaten met het volgende commando:
hcitool scan
Binding
Bind de COM-poort met het MAC-adres van de GPS-ontvanger. In dit voorbeeld is het MAC-adres van de GPS-ontvanger 00:02:C7:BD:93:CD:
sudo rfcomm bind /dev/rfcomm1 00:02:C7:BD:93:CD
Controleer of de poort voor Python beschikbaar is met:
python -m serial.tools.list_ports
Als het goed is staat de COM-poort er nu bij als: /dev/rfcomm1
Stop het gpsd-socket met:
sudo systemctl stop gpsd.socket
Schakel het gpsd-socket uit met:
sudo systemctl disable gpsd.socket
Open als super-user het bestand gpsd.socket met de editor
sudo nano /lib/systemd/system/gpsd.socket
Het bestand opent zich.
[Unit]
Description=GPS (Global Positioning System) Daemon Sockets
[Socket]
ListenStream=/var/run/gpsd.sock
ListenStream=[::1]:2947
ListenStream=127.0.0.1:2947
SocketMode=0600
[Install]
WantedBy=sockets.target
Wijzig nu de regel : ListenStream=127.0.0.1:2947
in : ListenStream=0.0.0.0:2947
Sla het bestand op en sluit de editor.
Sluit nu alle afhankelijkheden van gpsd met:
sudo killall gpsd
De juiste reactie die terug gekoppeld wordt is: gpsd: geen proces gevonden
Start als super-user gpsd als volgt op:
sudo gpsd /dev/rfcomm1 -F /var/run/gpsd.sock
Start de GPS-monitor:
gpsmon
Als alles goed gegaan is verschijnt het volgende venster met de GPS informatie en je eigen locatie gegevens:
Geef vervolgens het volgende commando om de grafische weergave van de ontvangen satellieten te tonen:
xgps
Indien de: TypeError: Couldn’t find conversion for foreign struct ‘cairo.Context. zichtbaar is, installeer dan cairo met:
sudo apt-get install python3-gi-cairo
En geef opnieuw het commando:
xgps
Als alles goed gegaan is, opent zich het xgps-venster. Hierin zie je alle satellieten die voor de GPS-ontvanger zichtbaar zijn, ieder met zijn specifieke data.
Wil je meer weten over de xgps-client? Klik dan hier.
USB GPS ontvanger
Hierboven heb ik een Bluetooth GPS ontvanger als voorbeeld genomen, Maar ik begrijp heel goed dat er waarschijnlijk meer GPS ontvangers met een USB interface zijn. Daarom in het kort ook nog even de procedure voor de USB-variant.
Laat alle USB apparaten zien met:
lsusb
Bekijk met de volgende commando’s het device-overzicht en zoek welke poort jouw USB-apparaat gebruikt. Dit zou bijvoorbeeld ttyUSB0 kunnen zijn.
cd /dev/
ls
GPSD moet geinstalleerd worden, als je dit nog niet gedaan hebt met:
sudo apt-get install gpsd gpsd-clients python-gps
Stop gpsd ter voorkoming van Pi invloed:
sudo systemctl stop gpsd.socket
en vervolgens:
sudo systemctl disable gpsd.socket
Tot slot koppelen (binden) we gpsd handmatig met de USB GPS ontvanger:
sudo gpsd /dev/ttyUSB0 -F /var/run/gpsd.sock
De resultaten kun je laten zien met:
cgps -s
Nu zou je de gpsmonitor moeten zien.
Zodra ik in het bezit ben van een USB GPS ontvanger zal ik er een uitgebreide tutorial aan wijden.
Have A Nice Day!
Laat een reactie achter