Raspberry Pi GPS Ortungs- / Navigationsgerät bauen

Mittlerweile hat jedes Smartphone GPS, aber auch der Pi kann mit einem günstigen Raspberry Pi GPS Modul in einen GPS Empfänger verwandelt werden. In vielen Outdoor-Anwendungen, vor allem solchen die sich bewegen (Car-PC, Wetterballon, etc.) ist die genaue Position ein größer Vorteil. Mobilität wird mit einem Akkupack bzw. einer USB Powerbank erreicht.

In diesem Tutorial zeige ich wie die Ortung mittels eines solchen GPS Moduls funktioniert und was man dafür braucht.

Zubehör

Folgende Teile habe ich verwendet:

Aufbau

Die Verkabelung ist sehr simpel:

GPS Modul Raspberry Pi
 VCC 3.3V (Pin 1)
 RX TXD/GPIO 14 (Pin 8)
 TX RXD/GPIO 15 (Pin 10)
 GND Ground (Pin 6)

Die Raspberry Pi Pinbelegung gibt es hier.

 

Serielle Schnittstelle freigeben

Solltest du nicht bereits die serielle Schnittstelle vorher freigegeben haben, muss dies im Vorfeld passieren. Dazu bearbeiten wir folgende Datei:

sudo nano /etc/inittab

Hier muss nun folgende Zeile (vermutlich die letzte) mittels einer Raute # am Anfang auskommentiert werden (oder gelöscht). Gespeichert wird mit STR+O, beendet mit STRG+X.

T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

Anschließend muss noch die Datei /boot/cmdline.txt bearbeitet werden,

sudo nano /boot/cmdline.txt

wobei folgende Einträge gelöscht werden:

console=ttyAMA0,115200 kgdboc=ttyAMA0,115200

Der letzte Eintrag ist anscheinend nicht in allen OS Versionen standardmäßig vorhanden. Deine Datei sollte nun so aussehen:

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

Damit die Änderungen übernommen werden, ist ein Neustart zwingend notwendig. Dieser kann aber auch nach dem Installieren der weiteren Software vorgenommen werden.

 

Raspberry Pi GPS Modul – Software

Wir benötigen zum auslesen des Raspberry Pi GPS Moduls ein paar Programme. Davor müssen wir die Paketquellen jedoch aktualisieren.

sudo apt-get update
sudo apt-get install minicom gpsd gpsd-clients

Solltest du vorhin nicht neugestartet haben, muss dies spätestens jetzt geschehen.

sudo reboot now

Jetzt sollte alles bereit sein und das Modul zum Test bereit. Dazu teilen wir dem Modul mit, dass es mit einer Baudrate von 9600 arbeiten soll:

stty -F /dev/ttyAMA0 9600

Hierbei sollte keine (Fehler)Meldung auftreten. Anschließend können wir uns noch die aktuelle Konfiguration ausgeben lassen:

stty -F /dev/ttyAMA0

Einen ersten Test beginnst du mit

minicom -b 9600 -o -D /dev/ttyAMA0

Hierbei wird die Baudrate, sowie das Gerät angegeben (mit STRG+A, Q beendest du). Die Auflistung ist allerdings etwas unübersichtlich, eignet sich allerdings gut, falls nur die Rohdaten gebraucht werden.
Um eine etwas schönere Darstellung zu bekommen starten wir gpsd. Auch hierbei müssen wir die Baudrate wieder erst angeben

sudo gpsd /dev/ttyAMA0 -F /var/run/gpsd.sock -n

bevor wir starten können:

cgps -s

Raspberry Pi GPS Modul - gpsd

Achte darauf, dass der Empfang zu den GPS Satelliten hergestellt werden kann, also gehe ins Freie oder zumindest an ein Fenster. Wo der Empfang im Haus tendenziell gut ist, kannst du mit deinem Handy testen.

63 Kommentare

  1. Hast du das nachbearbeitet oder ist der wirklich so ungenau? 49.xxx und 8.xxx weil dann nützt einem das doch nichts, oder?

    Antworten
  2. habe das Raspian Jessie installiert und dort finde ich keine inittab Datei.
    Was muss bei Raspian Jessi geändert werden, damit die serielle Schnittstelle aktiv ist?

    Vielen Dank!

    Antworten
  3. Hi 🙂

    Minicom zeigt bei mir am rechten Bildschirmrand nur achten an.

    Und cgps liefert keine Daten.

    Habt ihr vielleicht nen guten Tipp für mich ? 🙂

    Antworten
  4. Hallo
    das sieht toll aus. Ich wollte einen GPS Kompass zusammenstellen. Also 2 GPS Mäuse im Abstand ca.1m, und aus den Differenzen der Pos. dann eine Nordausrichtung errechnen. So geht es zumindest bei prof. Geräten. Hat sich das schon einer ausgedacht?
    Gruß Jan

    Antworten
    • Hallo Jan,
      das klingt einleuchtend, ist aber etwas viel Aufwand um einen Kompass zu imitieren, findest du nicht? Als Projekt finde ich es sehr spannend, falls es dir aber nur um die Ausrichtung geht, könntest du auch ein vorgefertigtes Kompass Modul nehmen (bei Interesse kann ich dazu auch ein Tutorial machen).

      Antworten
  5. Hallo,

    hat einer vielleicht eine Idee wie ich die Daten irgendwo ins Netz bekomme oder ich mir die Latitude und die Longitude per Mail senden kann?

    Grüße
    Ben

    Antworten
  6. Moin moin,

    vielen Dank für das Tutorial.
    cgps macht nach ein paar Sekunden ein Timeout, weil es keine Daten empfängt, Mein Handy hat direkt daneben 13 Satelliten gefunden.

    Minicom schreibt eine menge… Viele Zahlen, ein paar Buchstaben und viele Kommata (kann ich nichts mit anfangen)

    Hat jemand eine Ahnung was man da machen kann? Wie sollte die minicom Ausgabe aussehen?

    Grüße

    der Leif

    Antworten
    • ich muss mich korrigieren… die Zeile mit GPGLL verstehe ich doch: da stehen die Koordinaten (bis N und E).
      cgps zeigt sie nur nicht an.
      Das ist nicht so schlimm, wenn ich die Infos irgendwie in eine Datei bekomme, die ich dann wieder auslesen kann.

      Die Höhe würde mich noch interessieren.

      Antworten
  7. Hallo,

    wäre es auch möglich damit im Auto mit dem 7″ Display ein Navigationssystem zu basteln?

    Mein Gedanke wäre ist es den PI als kompletten Autoradio Ersatz zu benutzen.
    Sprich Radio Empfang, Musik Wiedergabe vom Handy über Bluetooth & Navigation.

    Der ton sollte dann über die Lautsprecher bzw. Endstufe mit Subwoofer ausgegeben werden können.

    Antworten
    • Klar, da spricht nichts dagegen. Ich hatte selbst auch so eine Idee, quasi einen CarPC mit allem Drum und Dran zu bauen. Deshalb findest du hier auch viele nützliche Tutorials zu dem Thema (einfach mal nach „CarPC“ hier suchen).
      LG Felix

      Antworten
  8. Moin,
    habe das Tutorial ausgeführt, bekomme jedoch keinerlei Daten aus dem GPS-Modul ausgelesen. Statt Zahlen wird nur n/a ausgegeben.
    Meine Vermutung ist, dass mein GPS-Modul (NEO-7M) erst noch konfiguriert werden muss. Welches Protokoll ist denn notwendig um via UART kommunizieren zu können? NMEA? Hat jemand einen Tipp für die Konfiguration?
    Gruß, Thomas

    Antworten
  9. Hallo,

    beim RPi 3 bekomme ich nach dem Anpassen der cmdline.txt beim Reboot eine Kernel Panic. Zusätzliche Peripherie ist nicht angeschlossen, lediglich das GPS Modul und Strom. Wenn man die cmdline.txt wieder in Ihren Ursprungszustand versetzt, bootet der Pi wieder normal. OS ist das Standard Raspbian, welches über NOOBS installiert wurde. Weiß jemand was genau die Panic auslöst bzw. wie man dem beikommen könnte?

    Antworten
    • Nachtrag!

      root=/dev/mmcblk0p2 löst die Panic aus; beim zurückstellen auf root=/dev/mmcblk0p7 bootet der Pi wieder normal.

      So sieht meine cmdline.txt momentan aus:

      dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p7 rootfstype=ext4 elevator=$

      Wenn ich das Modul allerdings nutzen möchte, sei es mit minicom oder gpsd, so bekomme ich keine Daten; das Gerät wird bei Minicom als „Offline“ angezeigt:

      CTRL-A Z for help | 9600 8N1 | NOR | Minicom 2.7 | VT102 | Offline | ttyAMA0

      Antworten
    • cmdline ist natürlich vollständig…

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

      Antworten
  10. Hallo und einen schönen guten Abend;

    ich habe das Tutorial befolgt, nur leider bekomme ich keine Daten angezeigt, sowohl nicht im minicom, als auch nicht im cgps Fenster. Ich habe die Einstellung im Raspi für Serial aktiviert und in meiner /dev/sehen die Zeilen so aus:

    lrwxrwxrwx 1 root root 5 Jul 28 20:17 serial0 -> ttyS0
    lrwxrwxrwx 1 root root 7 Jul 28 20:17 serial1 -> ttyAMA0

    crwxrwxrwx 1 root dialout 204, 64 Jul 28 20:17 ttyAMA0

    crwxrwxrwx 1 root dialout 4, 64 Jul 28 20:17 ttyS0

    den ich habe beide tty auf 777 gesetzt und den beide owner gleichgehalten (chown)
    Meine /boot/cmdline.txt sieht aktuell so aus:
    dwc_otg.lpm_enable=0 console=tty1 console=serial0,115200 root=/dev/mmcblk0p2 roo
    tfstype=ext4 elevator=deadline rootwait fbcon=map:10 fbcon=font:ProFont6x11 logo
    .nologo
    Ich würde erst gerne einmal wissen ob an diesem GPIO überhaupt irgendetwas ankommt, wie kann ich das überprüfen?
    Mit Sicherheit ist es nicht richtig 2 Serielle Schnittstellen zu haben, in einem anderem Forum habe ich gelesen man soll die ttyS0 nehmen, da die ttyAMA0 für WIFI freigehalten ist.
    Kann mir jemand einen TIP geben, wo und wie am Besten zu verfahren ist.
    Ich gehe davon aus, das das GPS NEO 6M wie oben beschrieben funktioniert, da es nach dem Booten nach kurzer Zeit anfängt periodisch zu blinken..
    LG Markus

    Antworten
    • Hallo Markus,

      vielen Dank für den Hinweis, auch ein Jahr später ist der noch wichtig 🙂
      /dev/ttyAMA0 hat bei mir gar nichts ausgegeben, der Versuch die ganze Sache dann mit dem /dev/ttyS0 zu machen hat zum Erfolg geführt.

      Ich habe in meiner /boot/cmdline den Eintrag „console=serial0,115200“ entfernt.

      Wichtig ist, den gpsd auch einmal zu stoppen, bevor man ihn auf das neue Interface zeigen lässt.
      # sudo service gpsd stop
      # stty -F /dev/ttyS0 9600
      # stty -F /dev/ttyS0
      # sudo gpsd /dev/ttyS0 -F /var/run/gpsd.sock -n
      # cgps -s

      Viele Grüße,
      Phillipp

      Antworten
  11. hi, ist es möglich, TXd und RXD einen anderen GPIO zuzuweisen, da schon
    (RX) TXD/GPIO 14 (Pin 8) & (TX) RXD/GPIO 15 (Pin 10) durch das 3.2″ Display völlig bededekt sind. Zwar werden diese GPIO nicht vom Diplay oder Touchscreen benutzt, jedoch sind diese nicht ohne Lötereien erreichbar.
    Mittels einem Port-Expander wird es nicht funktionieren, da dieser nur die allgemeinen GPIO zur verfügung stellt, jedoch keine diversen wie RX, TX, MISO, MOSI, CE0, CE1, u.s.w. …

    gibt es da abhilfe, Lösungen?
    Da ich vorhabe mit einem 3,2″ Touchdisplay und dem GPS Modul ein kleines unabhängiges Navi zu basteln….

    Antworten
    • Hallo Maya,
      die Lösung würde mich auch interessieren, die Idee hatte ich auch, den LCD habe ich ans Laufen gebracht aber den GPS noch nicht. Läuft der GPS Tracker bei Dir?

      LG Markus

      Antworten
    • ja, das Gps-modul läuft bei mir und wird auch gut von der navi-software „Navit“ verarbeitet. leider ohne den Touchscreen. habe auch probiert, das Modul an den letzteren gpio zu betreiben ( 3,3v Versorgung extern) nur funktioniert es dann nicht. selbst nach dem ich mittels wingpi installiert hatte. mit dem aufgestellten display verschwinden die wichtigsten gpio’s, auch die 3,3v+
      via Gpio-Portexpander klappt es auch nicht, da dieser nur! die normalen Gpio zur Verfügung stellt.

      Antworten