GPS Modul mit dem Raspberry Pi – Ortung und Navigation

Schon länger überlege ich ob der Raspberry Pi sich auch mit einem GPS Modul oder GPS Empfänger verbinden lässt um mit dem kleinen Alleskönner weitere Anwendungsgebiete erschließen zu können. Zum Beispiel Tracking der Fahrstrecke mit einem Raspberry Pi CarPC oder zur einfachen Positionsbestimmung oder Aufzeichnung anhand einer mobilen Lösung mit Akkupack. Schön wäre auch ein DIY OpenSource Navigationsgerät auf Basis der OpenStreetMaps.

In erster Annäherung an das Thema habe ich mir eines der günstigsten GPS-Module besorgt, das GY-GPS6MV2 bei einigen China-Händlern gibt es das Modul bereits für unter 12USD mit kostenlosem Versand, dieser dauert dann allerdings auch knapp 4 Wochen. Das Modul verwendet ein NEO-6 Chip der Firma Ublox, der Vorteil ist hier das wir recht einfach via SPI/UART an die gewünschten Daten kommen, übrigens kann man via GPS auch immer eine aktuelle Uhrzeit empfangen.

images_upload_2012_1cd_sku101674.4

Das GPS Modul an den Raspberry Pi anschließen

Die Verkabelung des Moduls gestalltet sich recht einfach da neben VCC und GND nur zwei Kabel für RX und TX an den Raspberry Pi angeschlossen werden müssen. Die Verkabelung ist sowohl für die normalen als auch für die Plus Modelle gleich.

GPS-Modul
  • VCC wird mit 3,3V versorgt und kommt daher beim RasPi an PIN1 (+ 3,3 V)
  • GND ist natürlich auch beim RasPi GND und kommt daher an PIN6 (GND)
  • RX ist da wir Seriell verwenden beim  RasPi TX und daher PIN8 (TXD0)
  • TX ist da wir Seriell verwenden beim RasPi RX und daher PIN10  (RXD0)

Auf meinem Breadboard sieht das so aus, ich habe hier Steckbrettkabel an der einen Seite abgeschnitten und an das Modul angelötet, stört euch bitte nicht an den Farben der Kabel, ich hatte leider gerade keine anderen mehr zur Hand!

GPS-Modul-2

Das war auch schon die Verkabelung des Moduls.

Das GPS Modul auf dem Raspberry Pi einrichten

Wichtig! Da zur Kommunikation das Serielle Interface verwendet wird muss, bevor ihr das Modul verwenden könnt, das Interface nach folgender FAQ eingerichtet werden:

Um zu überprüfen ob das GPS Modul mit unserem Raspberry Pi kommunizieren kann verwenden wir das Tool Minicom. Das eine Kommunikation funktioniert setzen wir die Übertragungsrate der Seriellen Schnittelle noch auf 9600 Baud.

Anhand von Minicom können wir nun überprüfen ob Daten vom Modul übertragen werden, dazu lauschen wir auf der Seriellen Schnittelle

Bei mir sieht die Ausgabe via Serial so aus, es sind noch keine GPS Daten enthalten da sich mein Raspberry Pi noch im Gebäude befindet. Beendet wir Minicom mit der Tastenkombination STRG+A, Q und Enter.

minicom-gps

Da wir dauerhaft mit 9600 Baud mit dem Modul kommunizieren möchten setzen wir in der config.txt noch die Einstellung für die Baudrate sodass diese bei jedem neustart gesetzt wird.

Schreibt ans Ende der Datei folgende Zeile

Gespeichert wird mit STRG+X, Y und Enter.

Da die Kommunikation mit dem Modul funktioniert können wir nun den GPS-Deamon installieren, dieser übernimmt für uns das Auslesen der Daten vom Modul. Zusätzlich zum GPS Dienst installieren wir noch den GPS Client welcher uns eine schöne Ausgabe der GPS Daten anbietet.

Wir richten für den GPS Deamon direkt den Autostart ein sodass bei jedem Neustart unseres Pi auch der Dienst gestartet wird. Hierzu rufen wir den Konfigurationsdialog auf, alternativ könnt ihr auch via Editor die Datei /etc/default/gpsd editieren.

Die Frage nach dem Automatischen Start bestätigen wir natürlich mit Yes

gpsd-konfiguration

Da GPSD keine USB-Geräte verwenden soll wählen wir hier No

gpsd-konfiguration-2

Hier geben wir den Pfad zu unserer Seriellen Schnittelle an /dev/ttyAMA0

gpsd-konfiguration-3

Wir setzen hier den Parameter -n um festzulegen das direkt mit der Positionsbestimmung begonnen wird, auch wenn keine Anwendung danach fragt. Der Parameter -G sorgt dafür, das der GPSD-Server unter allen IP-Adressen auf Port 2947 erreichbar ist und nicht nur unter vom RasPi selbst, das ist von Vorteil wenn z.B. von eurem Windows Client Daten abfragen wollt

gpsd-konfiguration-4

Den gpsd control socket lassen wir wie er ist.

gpsd-konfiguration-5

Eure Antenne benötigt natürlich Sichtverbindung zu mehreren Satelliten, die Ausgabe der Daten erfolgt via cgps -s oder über gpsmon, sollte die Uhrzeit falsch sein ändert via raspi-config noch eure Zeitzone.

gpsmon

gpsmon

cgps

cgps

Zum Testen könnt ihr die Daten für Latitude und Longitude in Google Maps anzeigen lassen. Das funktioniert so:

https://maps.google.com/maps?q=<Latitude>,+<Longitude>, also zum Beispiel https://maps.google.com/maps?q=48.927452,+10.192130

google-maps-PNG

Weitere Tutorials zum Thema folgen, viel Spaß!