Nach dem Sie die Software für das RasPiGNSS Modul im vorherigen Artikel auf Ihrem Raspberry Pi installiert und die Funktion des GPS-Empfängers überprüft haben folgt jetzt die weitere Konfiguration der Basisstation. Die Basisstation wird im Freien eingesetzt und das bei jedem Wetter. Aus diesem Grund muss die Elektronik sicher vor Wind und Wetter geschützt werden. Ich habe dabei den Fokus auf Feuchtigkeit gelegt und mir ein Wasserdichtes Gehäuse selber gebaut. Die Herausforderung dabei war, dass ich in der Elektronikabteilung eines Baumarktes kein passendes Gehäuse zu einem günstigen Preis gefunden habe. Aber mehr dazu im nachfolgenden Abschnitt.
Wasserdichtes Gehäuse
Als Gehäuse habe ich eine Brotzeitbox gekauft die ich bei der IKEA entdeckt habe. Diese Box hat mich gerade mal 4,99 Euro gekostet und bot ausreichend Platz für den Raspberry Pi, einen Step-Down Konverter, dem RasPiGNSS GPS Empfänger, dem Akku und dem XBee Pro Funkmodulen. Die Antennen für W-LAN und XBee-Funk habe ich direkt am Gehäuse verschraubt und durch kleine Löcher heraus geführt. Das Kabel zu der Tallysman™ TW-2410 GPS Antennen habe ich durch eine Kabelverschraubung mit Gegenmutter der Größe M16 die dem IP68 Standard entspricht heraus geführt. Das Kabel für die Stromversorgung habe ich ebenfalls durch eine Kabelverschraubung der Größe M12 mit IP68 Schutzklasse aus der Box heraus geführt. Das ganz sieht dann wie auf dem folgenden Bild zu sehen ist aus.
Basisstation Konfiguration
Die Software ist schon vorhanden und es muss im Prinzip nur noch ein Server gestartet werden, der die empfangenen GPS Signale über das W-LAN und später für das XBee Funkmodul an die mobile Einheit überträgt. Dazu wird der in der RTK Bibliothek vorhandene str2str Server verwendet. Sie erhalten ein Skript auf www.drfasching.at mit dem Namen „rtkbase“ welches ein Teil der RPGTOOLS ist. Dieses Skript bildet die Streaming Funktion ab ohne das auch nur eine Zeile von Ihnen programmiert werden muss. In diesem Skript wird auch unterschieden ob die Übertragung über TCP-IP oder z. B. seriell über das XBee Modul erfolgen soll.
Download RTKBASE Skript: www.drfasching/downloads
Die benötigten Skripte liegen nach der Installation der rpgtools als Debian Paket im Ordner /usr/bin/.
rc.local anpassen
Das RasPiGNSS Modul muss auf der Basisstation im BINR Mode betrieben werden. Damit das GPS Modul im BINR Mode läuft und die Rohdaten liefert müssen die folgenden Befehle ausgeführt werden. Ich habe die Befehle so mit der unterstützung von www.drfasching.at aufgebaut, dass das RasPiGNSS Modul sicher im BINR Mode arbeitet. Diese Befehle müssen nach jedem Ausschalten des Raspberry Pi erneut ausgeführt werden. Das GPS Modul merkt sich den eingestellten Modus nicht und startet immer im NMEA Mode nach einem Neustart des Raspberry Pi.
Ich habe die folgenden Befehle als root in meine /etc/rc.local eingefügt. Diese Kombination setzt den richtigen Modus im RasPiGNSS Modul und startet am Ende auch den str2str Server an der Basisstation. Damit Sie die /ect/rc.local editieren können müssen Sie folgenden Befehl ausführen.
Befehl: sudo nano /etc/rc.local
Jetzt tragen Sie am Ende der Datei die folgenden Befehle ein und speichern die Änderung ab.
(/bin/sleep 5 && /usr/bin/nvsctl -v reset)
(/bin/sleep 7 && /usr/bin/nvsmode -v binr)
(/bin/sleep 9 && /usr/bin/binrcmd -v /home/pi/gnss/rpgtools/etc/init.cmd)
(/bin/sleep 11 && /usr/bin/rtkbase &)
Die rc.local sieht bei mir jetzt wie folgt aus und so sollte Sie bei Ihnen auch aussehen. Starten Sie nach dem Sie die Änderungen vorgenommen haben den Raspberry Pi neu.
Wenn Sie überprüfen wollen ob das GPS Modul im BINR Mode läuft können Sie z. B. den folgenden Befehl ausführen und die Ürertragungsgeschwindigkeit überprüfen.
Befehl: stty -aF /dev/ttyAMA0
Im folgenden Bild ist die Bautrate mit „230400“ zu sehen. Somit ist sichergestellt, dass das Modul im BINR Mode läuft und nicht im NMEA Mode der eine niedrigere Bautrate von „115200“ hat.
Basisstation manuell starten
Mit dem folgenden Befehl können Sie manuell das Skript aus den rpgtools starten und so die Basisstation in den Betrieb nehmen. Oder Sie ändern wie oben beschrieben die rc.local ab und lassen den str2str Server der Basisstion automatischen nach dem Einschalten des Raspberry Pi starten.
Nachfolgend der Befehl für das manuelle starten des str2str Servers.
Befehl: sudo ./usr/bin/rtkbase
Die Ausgabe nach dem Sie das Skript rtkbase ausgeführt haben sollte dann wie folgt aussehen. Wenn ein Gerät den Stream ließt dann wird die entsprechende IP Adresse angezeigt. Lesen mehrere Geräte den GPS Stream dann steht nur noch die Anzahl der mit der Basisstation verbundenen Geräte da.
rtkbase GPS Rohdaten Stream
Wenn Sie die empfangenen GPS Rohdaten als Stream via TCP/IP von der Basisstation an die mobile Einheit für die Berechnung der präzisen GPS Position übertragen wollen dann müssen Sie die „/usr/bin/rtkbase“ Datei entsprechend anpassen. Die Einstellung für das outformat sowie die Einstellung für die messages bleibt undefiniert / leer.
outformat=
messages=
dann müssen Sie die rtkbase wie nachfolgende gezeigt konfigurieren.
Sie sehen in dem Screenshot, dass das outformat nicht definiert ist sowie die messages nicht definiert wurden.. So wird der Rohdatenstrom an die mobile Einheit übertragen. Abhängig von der Bandbreite der Funkanbindung zwischen Basisstation und mobiler Einheit empfiehlt sich aber das RTCM3 Format zu verwenden. Mehr dazu dann in einem der folgenden Abschnitte.
rtkbase GPS RTCM3 Stream
Wenn Sie die empfangenen GPS Daten als RTCM3 Stream via TCP/IP von der Basisstation an die mobile Einheit für die Berechnung der präzisen GPS Position übertragen wollen dann müssen Sie die „/usr/bin/rtkbase“ Datei wie nachfolgende gezeigt konfigurieren. Beim RTCM3 Stream müssen immer messages definiert werden die übertragen werden sollen.
outformat=“rtcm3″
messages=“1002,1004,1006,1010,1013,1019,1020,1033,1107″
rtkbase TCP-IP oder serielle XBee Übertragung
Wenn Sie die Daten via TCP/IP oder seriell über das XBee Modul übertragen wollen dann müssen Sie die rtkbase wie folgt ändern.
TCP/IP Einstellung
Sollen die GPS Daten von der Basisstation über das Netwerk / WIFI Modul als RTCM3 Stream übertragen werden so muss die „/usr/bin/rtkbase“ Datei entsprechend angepasst werden. Als Hilfestellung nachfoglend der wesentliche Teil für die Konfiguration der TCP/IP Datenübertragung.
outtype=“tcpsvr“
outstream=“:5800″
outformat=“rtcm3″
messages=“1002,1004,1006,1010,1013,1019,1020,1033,1107″
Fertig eingestellt sieht die Konfiguration wie im folgenden Screenshot gezeigt aus.
seriell XBeeEinstellung
Sollen die GPS Daten von der Basisstation über die serielle Schnittstelle z. B. mit einem XBee Modul übertragen werden so muss die „/usr/bin/rtkbase“ Datei entsprechend angepasst werden. Als Hilfestellung nachfoglend der wesentliche Teil für die Konfiguration der seriellen Datenübertragung.
outtype=“serial“
outstream=“ttyUSB0:115200:8:n:1:off“
outformat=“rtcm3″
messages=“1002,1004,1006,1010,1013,1019,1020,1033,1107″
Fertig eingestellt sieht die Konfiguration wie im folgenden Screenshot gezeigt aus.
rtkbase GPS Koordinaten hinterlegen
In der „/usr/bin/rtkbase“ sollten Sie noch die GPS Koordinaten der Basisstation sowie die Höhe dieser hinterlegen. Diese Angeabe ist wichtig, damit die mobile Einheit einen relativen Bezugspunkt zu der Basisstation berechnen kann. Bei mir sieht die Einstellung aktuell wie folgt aus.
GPS Datenstream – Basisstation anzeigen
Auf den GPS Datenstream z. B. als RTCM3 von der Basisstation kann mit der folgenden Adresse von der mobilen Einheit zugegriffen werden <IP-Adresse>:<5800>.
Anschließend können Sie sich z. B. mit dem Programm „RTK+ GPS“ auf einem Android Tablet die empfangenen GPS Koordinaten der Basisstation anzeigen lassen.
Auf dem PC können Sie z. B. das Programm RTKNAVI verwendet und dort sieht die Anzeige des Datenstreams der Basisstation wie folgt aus:
Das Programm RTKNAVI für Windows kann unter der folgenden URL bezogen werden: Open Repository in GitHub (binary programs for Windows).
Zusammenfassung
Nach dem ich mich etwas mit der RTK Bibliothek vertraut gemacht habe war es nicht mehr sehr schwer die Basisstation aufzusetzen und in Betrieb zu nehmen. Ich habe etwas Zeit benötigt ein wasserdichtes Gehäuse zu bauen um dem Raspberry Pi und die weitere Elektronik wetterfest im freien aufstellen zu können. Hier habe ich als die günstigste Lösung eine Brotzeitbox verwendet ich mit um ein paar Anschlüsse erweitert habe. Der Aufbau und die Installation der RTKLIB Basisstation haben ca. 1 Tag benötigt. Die verschiedenen Konfigurationen des str2str Servers sind etwas komplex aber ich hoffe mit meiner Anleitung verständlich. Dafür läuft jetzt alles sehr zuverlässig und ich kann mich an den Aufbau des Rovers und der XBee Funkverbindung machen.
Artikel Übersicht GPS Modul RasPiGNSS:
Präzise GNSS-Positionierung mit dem Raspberry Pi und RTKLIB – EinführungPräzise GNSS-Positionierung mit dem Raspberry Pi und RTKLIB - Theoretischer Aufbau
Präzise GNSS-Positionierung mit dem Raspberry Pi und RTKLIB – GPS Antennen Aufbau
Präzise GNSS-Positionierung mit dem Raspberry Pi und RTKLIB – Software Installation
Präzise GNSS-Positionierung mit dem Raspberry Pi und RTKLIB – Konfiguration RTK Basisstation
Präzise GNSS-Positionierung mit dem Raspberry Pi und RTKLIB – Konfiguration RTK Mobile Einheit
Präzise GNSS-Positionierung mit dem Raspberry Pi und RTKLIB – XBee Funkverbindung Vorraussetzungen
Präzise GNSS-Positionierung mit dem Raspberry Pi und RTKLIB – XBee serielle Datenübertragung
Präzise GNSS-Positionierung mit dem Raspberry Pi und RTKLIB – Navigation
Präzise GNSS-Positionierung mit dem Raspberry Pi und RTKLIB – RasPiGNSS im Dauer-Betrieb
Präzise GNSS-Positionierung mit dem Raspberry Pi und RTKLIB – Erfahrungsbericht
Hi,
I don’t get RTKNAVI to work. It looks like it keeps on swapping from connecting to time out. My setup is exact to the article. I see that there is connection from the client on the Raspberry while running rtkbase.
intype=“serial“
instream=“ttyAMA0:230400:8:n:1″
informat=“nvs“
#outtype=“ntrips“
#outtype=“serial“
#outstream=“ttyUSB0:115200:8:n:1:off“
outtype=“tcpsvr“
outstream=“:5800″
outformat=“rtcm3″
#messages=
#messages=“1002,1004,1006,1010,1013,1019,1020,1033,1107″
cmdfile=/etc/init.cmd
poslat=
poslon=
poshgt=
trace=
To setup the RTKNAVI, I click on „I“, select the base station, set it to TCP Client. Enter the IP of the Raspberry on port 5800 with format RTCM 3 and then hit start. If gives a green light and sometimes an orange light with „timeout“ in the lower status. I do get a fix nmeaparse command.
Any idea what is wrong?
Sorry, but I have no idea where the problem is.
I need some more details for example how long your setup was running etc.
Hallo Herr Maker ,
zuerst danke ich Ihnen für diese Erklärung und ich habe eine kurze Frage .
Könnten Sie mir bitte zeigen ,wie man Rover und Base durch Wlan oder Netzwerk kommunizieren kann?, weil in Ihre Projekt steht nur Konfiguration.
Danke im Voraus
Hallo Ingmar,
ich habe exact die gleiche Hardware bis auf die Basisantenne. Es ist die einfache von Fasching, der Rest ist ebenfalls von ihm.
Es läuft scheinbar auch alles. Nur bekomme ich keinen dauerhaften fix hin.
Ich spiele schon lange mit den Konfigurationen, manchmal sehe ich sogar eine Ergebnis in der Statusanzeige. Aber leider nicht dauerhaft.
Wie gesagt, alles von Fasching, nach seiner und deiner Anleitung mehrfach installiert.
Ich übertrage mit XBee zwischen Basis und Rover. Letztendlich soll der Rover seine genaue < 1m Position angeben.
Könntest du evtl. deine Konfigfiles zur Verfügung stellen? Vielleicht habe ich irgend was falsch drinstehen.
Wie gesagt bastel ich schon lange daran rum, letztendlich bin ich schon auf ein anderes System umgestiegen. Aber die Teile sollen nicht ungenutzt hier rumliegen.
Dazu sind sie zu schade und haben ja auch Geld gekostet.
Wäre nett. Danke
Matthias