Raspberry Pi GPS Modul

Allgemein

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 ModulRaspberry Pi
 VCC3.3V (Pin 1)
 RXTXD/GPIO 14 (Pin 8)
 TXRXD/GPIO 15 (Pin 10)
 GNDGround (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 allesn 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.



, , , , , , , , , ,


37 Kommentare

  1. dunklesToast sagt:

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

  2. Benjamin Wagner sagt:

    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!

  3. Marvin sagt:

    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 ? 🙂

  4. Jan sagt:

    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

    • Felix sagt:

      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).

  5. Ben sagt:

    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

  6. Leif sagt:

    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

    • Leif sagt:

      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.

    • Felix sagt:

      Hallo Leif,
      die Höhe ist nach Altitude angegeben. Mittels cgps -s > output.txt 2>&1 kannst du den Output der Konsole in eine Datei verfrachten, die du dann auslesen kannst, siehe hier: http://stackoverflow.com/questions/6674327/redirect-all-output-to-file
      LG Felix

  7. Andreas sagt:

    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.

    • Felix sagt:

      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

  8. Thomas sagt:

    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

  9. Chimichangas sagt:

    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?

    • Chimichangas sagt:

      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

    • Chimichangas sagt:

      cmdline ist natürlich vollständig…

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

  10. Ylvi sagt:

    hallo,

    Es werden auch time stamps mit ausgegeben, oder?

    liebe Grüße

  11. Markus sagt:

    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

  12. Maya Mitsume sagt:

    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….

    • Markus sagt:

      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

    • Maya Mitsume sagt:

      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.

    • Maya Mitsume sagt:

      ….update 🙂

      Nach ein paar Bastelstunden habe ich den „RasPi-Navi“ mit dem 3,2″ Touchdisplay und dem GPS-Modul zum laufen gebracht.
      Display aufgesteckt am RPi3 und das GPS-Modul mit den Pins an der Unterseite des pi (GPIO header) verlötet. (da nur so die Pins 8 TXD [gpio 14] und Pin 10 RXD [gpio 15] erreicht werden können)
      Vor der Software Installation noch gut alles aktualisiert (’sudo get-apt update‘ ….) und danach das script für das GPS modul geschrieben , soweit alles oki und gab mir prompt die Daten aus, als gleich auch die Software „Navit“ aus den Paketquellen installiert.
      Nach einem Neustart des Pi und dem Start des Navit-programms, habe ich im stetting, den Zugriff auf das gps-moduls eingestellt.

      Das kleine RaspiNavi funktioniert, ein ausführlicher test steht aber noch aus.

      LG Maya

  13. Oliver sagt:

    Hallo zusammen,
    plane grad einen zweiten Flug mit einem Wetterballon Richtung Weltraum und möchte diesmal die Höhe via GPS bestimmen. Der Raspi war letztes mal schon als Messeinheit erfolgreich dabei. Die Daten (Magnetfeld, Luftdruck, …) waren aber nicht so gut zur reinen Höhenbestimmung. 22km waren es mindestens, aber wie viel mehr tatsächlich es waren, bleibt ohne GPS leider ein Geheimnis. Darum möchte ich das Modul testen.
    Ist es richtig, dass es sich bei dem Modul um einen Chinaimport handelt und ist der zuverlässig? Hatte da auch schon mal schlechte Erfahrung…
    Und: Wie müsste ein passendes Skript aussehen, wenn die Daten regelmäßig in einer Tabelle gespeichert werden sollen?
    Danke schon mal!
    Gruß
    Oliver

    • Felix sagt:

      Nunja, so ca. 99% der elektronischen Bauteile stammen aus China, natürlich mit unterschiedlicher Qualität. Das Modul war zumindest was die geographische Bestimmung angeht, genau.
      Nunja du musst eine DB (mysql, mongodb, etc.) installiert haben. Wenn du Python nimmst, kannst du z.B. os.system zum Abfragen des GPS Modul nutzen und dann die Werte extrahieren.

    • Morich sagt:

      Wie hast du deinen Pi danach ohne gps wiedergefunden?
      Und wenn noch Interesse besteht, hab ich in Python das perfekte speichersystem geschrieben

  14. Lg Dennis sagt:

    Hallo zusammen,
    versuche verzweifelt das Module NEO-6M/7M an meinem Raspberry Pi3 zum laufen zu bekekommen… leider liefert mir aber minicom keine Daten. Bei „cgps -s“ bekomme ich den Fehler „Time out“

    Verwende das Originale Raspbian jessied. Neuste Version. Wie schalte ich dort die Serielle Schnittstelle frei? Die Datei „inittab“ gibt es bei mir nicht.

    Da Minicom nichts gibt gehe ich davon aus das die Schnittstelle nicht frei gegeben ist.
    Oder:
    Finde in den Datenblätter folgende Zeile: VCC: connects to 3.3V/5V
    Habe es die ganze zeit nur mit 3.3V versucht. Ist das vielleicht zu wenig? Rote LED Blinkt.

    • xbow sagt:

      Wenn du ein GUI hast über Menu / Einstellungen / Raspberry-Pi-Konfiguration, Registerreiter Schnittstellen die Serielle-schnittstelle aktivieren.
      3.3V sollten reichen.
      Mal sehen wann mein Modul kommt…
      laut einem anderen TuT sollte man das Bluetoothmodul abschalten.
      „Zu Beachten ist noch das Bluetooth Interface die GPIO´s 14 und 15 belegt (Serielle Verbindung). Bei mir zB. ging dann ein GPS Modul deswegen nicht.
      Mit der dem neuesten Firmwareupdate (sudo rpi-update) kann man aber per /etc/config.txt Eintrag ” dtoverlay=pi3-disable-bt” und Ausführen von “sudo systemctl disable hciuart” Bluetooth deaktivieren und die GPIOs wieder frei machen.
      Dadurch funktionierte wieder mein GPS Modul.

  15. Morich sagt:

    Hey leute.
    Hab den Rpi3 mit jessy, alles aktuell (update,upgrade) aber egal nach welchem tutorial ich vorgehen, nichts klappt. Ich möchte das gps bitte über Python auslesen

  16. nick sagt:

    meinte Rpi3 wegen Bluetooth ist das ein andersen device

  17. David sagt:

    habe das Problem gehabt das die Datei /etc/inittab nicht verfügbar war. So konnte ich über cgps -s nicht sehen.
    bei mir hat was anderes geholfen:

    sudo nano /boot/config.txt

    den wert von enable_uart=0 auf 1 geändert. Nach nen Neustart ging es dann 🙂

    Gruss, dave

  18. Marcy sagt:

    Super Tutorial!
    Kannst du mir sagen mit welcher Abfrage Frequenz das Modul Arbeitet? Also wie oft die Position neu Geortet wird?
    Ich will mir mit einem Rasperry und solch einem Modul einen Beschleunigungsmesser bauen, der z.b. die Beschleunigung eines Autos von 0-100 Km/h messen kann.

    Danke!
    Gruß Marcy

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Blog abonnieren

Abonniere Tutorials-RaspberryPi, um kein Tutorial mehr zu verpassen!