Raspberry Pi GPS

NEWS



RASPBERRY PI GPS


GPS-Modul mit Antenne auf der Fensterbank

Satellitenblick auf der Fensterbank: GPS am Pi

Kurz gesagt: Was bringt ein GPS-Modul am Raspberry Pi?

Raspberry Pi GPS – die Kurzfassung:

  • Vier Drähte genügen: Ein NEO-6M oder NEO-M8N hängt über UART am GPIO – Spannung, Masse und TX/RX über Kreuz an GPIO 14 und 15. Mehr Hardware braucht es nicht.
  • Die eigentliche Hürde ist die Software: Die serielle Schnittstelle gehört im Auslieferungszustand der Login-Konsole. Erst wenn diese abgeschaltet und die UART-Hardware freigegeben ist, kommen die Satellitendaten durch.
  • Auswertung übernimmt gpsd: sudo apt install gpsd gpsd-clients, das Gerät in /etc/default/gpsd eintragen, mit cgps oder gpsmon kontrollieren – ab da liefert der Dienst die Position an jedes Programm.
  • Module sprechen NMEA: Lesbare Textzeilen wie $GNGGA (Position und Höhe) oder $GNRMC (Position, Tempo, UTC-Zeit). Man kann sie sogar von Hand mitlesen.
  • Zeit ist die zweite Superkraft: Mit dem PPS-Ausgang und chrony wird der Pi zum Stratum-1-Zeitserver mit Genauigkeit im Mikrosekundenbereich – ganz ohne Internet.
  • Empfang entscheidet alles: Mitten im Zimmer bleibt das Modul blind. Antenne ans Fenster oder nach draußen, und beim ersten Start bis zu fünf Minuten Geduld mitbringen.

Raspberry Pi GPS: So kommen die Satellitendaten in den Pi

Ein GPS-Empfänger ist kein Sensor im üblichen Sinn. Er misst nichts, sondern hört zu: Über 30 Satelliten senden permanent ihre Kennung und eine hochgenaue Uhrzeit. Aus den winzigen Laufzeitunterschieden dieser Signale berechnet der Chip im Modul selbst Position, Höhe und Geschwindigkeit. Der Raspberry Pi bekommt also bereits fertige Werte – er muss nur noch zuhören und mitschreiben.

Genau genommen heißt die Technik heute nicht mehr nur GPS, sondern GNSS. Neben dem amerikanischen GPS empfangen aktuelle Module auch das europäische Galileo, das russische GLONASS und das chinesische BeiDou. Das merkt man vor allem an der Zuverlässigkeit: Wo ein reiner GPS-Empfänger zwischen Häuserfronten aussteigt, hat ein Mehrsystem-Empfänger oft noch genug Satelliten im Blick. Erkennbar ist das an den Datenzeilen – beginnen sie mit $GN statt mit $GP, arbeitet das Modul mit mehreren Systemen gleichzeitig.

Die Verbindung zum Pi läuft in aller Regel seriell. Das Modul schickt einmal pro Sekunde einen Block Text mit 9600 Baud über seine TX-Leitung, der Pi liest ihn an GPIO 15 ein. Das ist wenig Datenverkehr und braucht praktisch keine Rechenleistung – deshalb genügt für reine GPS-Aufgaben auch ein Zero 2 W mühelos. Wichtig ist der Spannungspegel: Der GPIO verträgt ausschließlich 3,3 Volt. Die Versorgung des Moduls darf je nach Platine an 5 V hängen, die Datenleitung Richtung Pi niemals.

Drei Bauformen stehen zur Wahl. Das lose Modul am GPIO ist am günstigsten und für Bastelprojekte üblich. Ein GPS-HAT wird aufgesteckt, bringt meist eine Pufferbatterie und einen sauberen PPS-Anschluss mit und ist die stabilere Lösung für Dauerbetrieb. Ein USB-Empfänger schließlich ist die bequemste Variante: einstecken, fertig, keine GPIO-Belegung nötig – dafür fehlt ihm fast immer der PPS-Impuls, den ein Zeitserver braucht.

Raspberry Pi GPS anschließen und einrichten – Schritt für Schritt

  1. Verkabeln: VCC des Moduls an 5 V (Pin 2) oder 3,3 V (Pin 1) je nach Platine, GND an Pin 6. Dann über Kreuz: TX des Moduls an RXD des Pi (GPIO 15, Pin 10), RX des Moduls an TXD (GPIO 14, Pin 8). Die Kreuzung ist die häufigste Fehlerquelle überhaupt.
  2. Serielle Konsole abschalten: sudo raspi-config aufrufen, unter Interface Options → Serial Port die Frage nach der Login-Shell mit Nein beantworten und die serielle Hardware mit Ja aktivieren. Solange die Konsole aktiv ist, blockiert sie die Schnittstelle.
  3. Schnittstelle freigeben: In /boot/firmware/config.txt gehört beim Pi 5 die Zeile dtparam=uart0=on hinein – erst dann liegt eine echte UART auf GPIO 14/15, erreichbar als /dev/ttyAMA0. Beim Pi 3, Pi 4 und Zero 2 W belegt stattdessen Bluetooth die gute Schnittstelle; hier hilft dtoverlay=disable-bt. Danach neu starten.
  4. Rohdaten kontrollieren: sudo cat /dev/serial0 zeigt, ob überhaupt etwas ankommt. Erscheinen Zeilen wie $GNRMC,..., ist die Verkabelung in Ordnung – auch dann, wenn noch keine Position darinsteht. Bleibt der Bildschirm leer, stimmt die Verdrahtung nicht; kommt Zeichensalat, ist die Baudrate falsch.
  5. gpsd installieren: sudo apt install gpsd gpsd-clients. Der Dienst liest die Schnittstelle aus und stellt die Werte allen Programmen gleichzeitig zur Verfügung – genau das ist sein Sinn, denn die serielle Leitung selbst kann immer nur ein Programm öffnen.
  6. gpsd konfigurieren: In /etc/default/gpsd das Gerät eintragen, etwa DEVICES="/dev/ttyAMA0" und GPSD_OPTIONS="-n". Die Option sorgt dafür, dass der Dienst sofort mit dem Empfänger spricht und nicht erst wartet, bis ein Programm ihn anfragt. Anschließend sudo systemctl enable --now gpsd.
  7. Ergebnis prüfen: cgps zeigt Position, Höhe und die genutzten Satelliten in einer übersichtlichen Anzeige, gpsmon geht mehr in die Tiefe, gpspipe -w gibt die Daten als JSON aus. Sobald in der Statusspalte ein 3D-Fix steht, ist die Einrichtung abgeschlossen.

NMEA-Sätze verstehen und mit Python auswerten

Was das Modul sendet, ist erstaunlich altmodisch und genau deshalb praktisch: schlichter Text nach dem NMEA-0183-Standard, eine Zeile je Datensatz, mit Komma getrennt. Man kann die Zeilen ohne Werkzeug lesen und versteht sofort, ob der Empfänger schon Satelliten sieht.

SatzInhalt
$GNGGAPosition, Höhe über dem Meeresspiegel, Anzahl der genutzten Satelliten, Qualität des Fixes
$GNRMCDer Minimaldatensatz: Position, Geschwindigkeit, Kurs sowie UTC-Datum und -Uhrzeit
$GNGSAWelche Satelliten in die Berechnung eingehen, dazu HDOP und VDOP als Gütemaß
$GPGSVAlle sichtbaren Satelliten mit Signalstärke – die wichtigste Zeile bei Empfangsproblemen
$GNVTGGeschwindigkeit über Grund und Kurs, praktisch für Fahrtenlogger
$GNGLLPosition und Zeit in Kurzform

Für eigene Programme muss man diese Zeilen nicht selbst zerlegen. Das Paket python3-gps aus den Paketquellen spricht direkt mit gpsd und liefert fertige Werte. Ein Minimalbeispiel, das Breite, Länge und Zeit ausgibt:

import gps
session = gps.gps(mode=gps.WATCH_ENABLE)
for bericht in session:
  if bericht['class'] == 'TPV':
    print(bericht.lat, bericht.lon, bericht.time)

Wer lieber ohne gpsd arbeitet, liest die Schnittstelle mit pyserial direkt aus und zerlegt die Sätze mit der Bibliothek pynmea2. Das ist für einen schlanken Logger völlig ausreichend – sobald aber mehrere Programme gleichzeitig auf die Position zugreifen sollen, führt kein Weg an gpsd vorbei. Wie man solche Skripte sauber an den GPIO anbindet, zeigt die Übersicht zu GPIO-Programmierung mit Python.

Raspberry Pi GPS als Stratum-1-Zeitserver mit PPS

Die zweite, oft unterschätzte Fähigkeit eines GPS-Moduls ist die Zeit. In jedem Satelliten tickt eine Atomuhr, und deren Zeit steckt in jedem empfangenen Signal. Ein Pi mit GPS-Empfänger kann damit zum Stratum-1-Zeitserver für das gesamte Heimnetz werden – ohne Internetverbindung und unabhängig von öffentlichen NTP-Servern.

Die reine NMEA-Zeit aus der seriellen Leitung reicht dafür allerdings nicht. Sie ist zwar sekundengenau, kommt aber je nach Puffer und Baudrate mit schwankender Verzögerung an. Die Lösung heißt PPS: ein separater Impuls, den bessere Module einmal pro Sekunde auf einem eigenen Pin ausgeben, exakt zum Sekundenwechsel. Dieser Impuls wandert an einen freien GPIO, und der Kernel stempelt ihn mit Mikrosekunden-Auflösung. Die serielle Leitung liefert dann nur noch die grobe Information, welche Sekunde gerade gemeint ist.

Eingerichtet wird das in drei Schritten. In /boot/firmware/config.txt kommt die Zeile dtoverlay=pps-gpio,gpiopin=18 – die Nummer muss zum tatsächlich verwendeten Pin passen. Nach dem Neustart prüft sudo ppstest /dev/pps0 aus dem Paket pps-tools, ob im Sekundentakt Impulse eintreffen. Anschließend übernimmt chrony die Auswertung, mit zwei Zeilen in /etc/chrony/chrony.conf:

refclock SHM 0 refid GPS precision 1e-1 offset 0.0 delay 0.2 noselect
refclock PPS /dev/pps0 refid PPS lock GPS

Der erste Eintrag holt die Zeit über den gemeinsamen Speicherbereich von gpsd, ist aber mit noselect nur als grober Anhaltspunkt markiert. Der zweite bindet den präzisen Impuls ein und koppelt ihn an diesen Anhaltspunkt. Ob alles zusammenspielt, zeigt chronyc sources -v: Steht vor der PPS-Quelle ein Sternchen, synchronisiert der Pi darauf. Erfahrungswerte aus der Community liegen dann deutlich unter einer Mikrosekunde Abweichung. Damit die Uhr auch ohne Empfang stimmt, ergänzt man sinnvollerweise noch ein RTC-Modul und eine unterbrechungsfreie Stromversorgung.

Antenne, Kaltstart und Empfang – die halbe Miete

Kein Thema sorgt für mehr Frust als der Empfang. Die Signale der Satelliten erreichen die Erde mit extrem geringer Leistung – schwächer als das Grundrauschen. Eine Betondecke, eine beschichtete Wärmeschutzverglasung oder ein Metallgehäuse genügen, um sie vollständig zu schlucken. Auf dem Schreibtisch im Innenraum bekommt ein GPS-Modul in aller Regel keinen Fix.

Die kleine Keramikantenne, die den Modulen beiliegt, gehört deshalb ans Fenster oder besser nach draußen, mit möglichst freier Sicht nach oben. Für feste Installationen lohnt sich eine aktive Antenne mit eigenem Verstärker und längerem Kabel, die auf dem Balkon oder unter dem Dachüberstand sitzt. Berichte aus der Community zeigen, dass allein die Verlegung vom Zimmer ans Fenster den Unterschied zwischen null und acht sichtbaren Satelliten ausmachen kann.

Auch beim ersten Start braucht es Geduld. Ein Empfänger ohne gespeicherte Satellitendaten macht einen Kaltstart und muss die Bahndaten neu einlesen – das dauert typischerweise ein bis fünf Minuten, unter schwierigen Bedingungen länger. Module mit Pufferbatterie behalten diese Daten und sind beim nächsten Einschalten in Sekunden wieder da. Ist die Batterie leer oder fehlt sie, beginnt jeder Neustart von vorn – ein guter Grund, beim Kauf auf diesen Punkt zu achten. Eine blinkende Status-LED signalisiert bei den meisten Modulen den gültigen Fix; blinkt sie nicht, sind die Daten in den NMEA-Zeilen leer.

Projekte mit GPS am Raspberry Pi

  • Fahrtenlogger: Ein Skript schreibt im Sekundentakt Position und Zeit in eine GPX-Datei. Ausgewertet wird sie später in jeder Kartensoftware – ideal für Wanderungen, Radtouren oder die Dokumentation einer Fahrt.
  • Fahrzeug- und Gerätetracker: Der Pi meldet seine Position über einen LTE-Stick per MQTT an eine Zentrale. In Kombination mit Home Assistant lassen sich daraus Anwesenheitserkennung und Geofencing bauen.
  • Zeitserver im Netzwerkschrank: Ein Pi mit GPS-HAT versorgt Router, NAS und Kameras mit exakter Zeit – besonders wertvoll in Netzen ohne Internetzugang.
  • Mobile Messstation: Positionsdaten zusammen mit Sensorwerten aufzeichnen, etwa bei einer Wetterstation oder einem Wetterballon. Erst die Koordinate macht den Messwert auswertbar.
  • Geotagging: Bilder aus einem Zeitraffer-Projekt oder von der Kamera bekommen nachträglich die passenden Koordinaten in die Metadaten geschrieben.
  • Auswertung und Anzeige: Die Daten laufen über Node-RED in eine Datenbank und werden in Grafana als Karte und Verlaufsdiagramm dargestellt.
  • Funk-Nachbarschaft: Wer ohnehin gern Signale aus der Luft empfängt, kombiniert das gern mit einer Flugdaten-Station – auch dort liefert die exakte Position und Zeit bessere Ergebnisse.

Fehler und Stolpersteine bei GPS-Modulen

  • TX und RX nicht gekreuzt: Der mit Abstand häufigste Fehler. Der Sendeausgang des Moduls muss an den Empfangseingang des Pi – nicht Beschriftung auf Beschriftung.
  • Die Konsole blockiert die Schnittstelle: Bleibt die serielle Login-Shell aktiv, kommt kein Programm an die Daten heran. Beim Pi 5 ist zusätzlich zu beachten, dass die Konsole standardmäßig auf dem separaten Debug-Anschluss liegt und GPIO 14/15 erst durch dtparam=uart0=on nutzbar werden.
  • Bluetooth klaut die gute UART: Beim Pi 3, Pi 4 und Zero 2 W liegt auf GPIO 14/15 ohne Anpassung nur die einfache Mini-UART, deren Taktung an die CPU-Frequenz gekoppelt ist. Das führt zu sporadischem Zeichensalat – dtoverlay=disable-bt löst das Problem dauerhaft.
  • 5 Volt auf der Datenleitung: Manche Module geben auf TX 5 V aus. Das überlebt der GPIO im schlimmsten Fall nicht. Im Zweifel gehört ein Pegelwandler oder ein einfacher Spannungsteiler dazwischen.
  • Falsche Baudrate: Standard sind 9600 Baud. Module, die schon einmal umkonfiguriert wurden, sprechen mitunter 38400 oder 115200 – dann kommen nur wirre Zeichen an.
  • Erwartungen an die Genauigkeit: Einfache Empfänger liegen bei etwa zwei bis fünf Metern, unter Bäumen und zwischen Häusern deutlich schlechter. Zentimetergenauigkeit gibt es nur mit RTK-Technik und Korrekturdaten.
  • Höhenangabe überschätzt: Die vertikale Genauigkeit ist grundsätzlich schlechter als die horizontale. Schwankungen von 10 bis 20 Metern bei feststehendem Empfänger sind normal und kein Defekt.

Häufige Fragen zu GPS am Raspberry Pi

Welches GPS-Modul passt an den Raspberry Pi?
Für den Einstieg ist ein Modul mit u-blox-Chip die sichere Wahl, etwa NEO-6M oder das neuere NEO-M8N. Wer den Pi als Zeitserver betreiben will, achtet auf einen herausgeführten PPS-Pin und eine Pufferbatterie.

Geht das auch ohne Löten und ohne GPIO?
Ja. Ein USB-GPS-Empfänger meldet sich als serielles Gerät, meist unter /dev/ttyACM0, und wird in /etc/default/gpsd genauso eingetragen. Der Nachteil: Ein PPS-Signal steht dabei fast nie zur Verfügung.

Warum bekomme ich keinen Fix?
In neun von zehn Fällen liegt es am Standort. Die Antenne braucht freie Sicht zum Himmel; Innenräume, Metallgehäuse und beschichtete Fenster verhindern den Empfang. Zeigt cgps Satelliten mit Signalstärke an, ist die Technik in Ordnung und es fehlt nur an Zeit oder Sichtlinie.

Wie genau ist die Zeit über GPS wirklich?
Ohne PPS bleibt es bei einigen Millisekunden – nicht besser als ein guter Internet-Zeitserver. Mit PPS und chrony sind Abweichungen unter einer Mikrosekunde erreichbar, und der Pi ist dabei von keiner externen Quelle mehr abhängig.

Reicht ein Raspberry Pi Zero 2 W dafür aus?
Vollkommen. Die Datenmenge ist minimal, und für mobile Projekte spricht der geringe Stromverbrauch klar für das kleine Board. Nur beim Zeitserver im Dauerbetrieb ist ein Pi 4 oder Pi 5 mit Netzwerkanschluss die bessere Grundlage.

Kann ich zwei Programme gleichzeitig auf das Modul zugreifen lassen?
Direkt über die serielle Schnittstelle nicht – die kann immer nur ein Prozess öffnen. Genau dafür gibt es gpsd: Der Dienst hält die Verbindung und gibt die Daten über einen Netzwerk-Port an beliebig viele Clients weiter.

Funktioniert GPS auch in einem Fahrzeug oder im Rucksack?
Ja, sofern die Antenne nach oben zeigt und nicht von Metall abgeschirmt wird. In Fahrzeugen mit metallbedampfter Frontscheibe gehört sie ans Seitenfenster oder als Magnetantenne aufs Dach. Für die Stromversorgung eignet sich ein Akku-HAT oder eine Pufferlösung, damit ein Wackelkontakt nicht gleich das Dateisystem beschädigt.

Fazit

Raspberry Pi GPS ist eines der wenigen Bastelthemen, bei denen die Hardware für unter zehn Euro tatsächlich das hält, was sie verspricht – vorausgesetzt, man behandelt zwei Punkte mit Respekt. Unsere klare Empfehlung dazu: Investiere die Mühe zuerst in die Antenne, nicht in die Software. Ein Modul mit freier Sicht nach oben liefert nach wenigen Minuten saubere Werte, während der beste Code an einem Fensterplatz im Erdgeschoss scheitert. Und der zweite Rat betrifft die Zielrichtung: Wer nur Positionen aufzeichnen will, fährt mit einem einfachen NEO-6M und gpsd bestens. Wer den Pi dagegen als Zeitserver aufstellen möchte, sollte von vornherein zu einem Modul mit PPS-Ausgang und Pufferbatterie greifen – dieser Aufpreis von wenigen Euro entscheidet darüber, ob am Ende Millisekunden oder Mikrosekunden herauskommen.

* = Affiliate Link (raspi-config.de ist Teilnehmer des Partnerprogramms von Amazon EU, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu Amazon.de Werbekostenerstattung verdient werden kann.)


VORSCHAU


Was Dich im Raspberry Pi Videokurs erwartet.


Play klicken & Video abspielen.

QUIZ


Prüfe Deinen aktuellen Wissensstand.

Raspberry Pi Quiz starten

Bild anklicken & Quiz starten.

NEWS



EMPFEHLUNG



Danke für Deine Weiterempfehlung!

© 2026 raspi-config.de | Datenschutz | Impressum