ESP32 S3 - GPS

Das NEO-6M GPS-Modul ist ein kompakter und zuverlässiger Empfänger, mit dem der ESP32 S3 seine Position überall auf der Erde anhand von Satellitensignalen bestimmen kann. Dieses Tutorial führt Sie durch die Verdrahtung des Moduls, die Installation der Bibliothek TinyGPSPlus und das Schreiben zweier vollständiger Sketches – einer zum Auslesen der GPS-Koordinaten und einer zur Berechnung der Entfernung zu einem festgelegten Ort.

Was Sie bauen werden:

  1. Einen GPS-Datenleser, der Längengrad, Breitengrad, Höhe und Geschwindigkeit (km/h) mit dem ESP32 S3 und dem NEO-6M Modul ermittelt
  2. Einen Sketch, der NMEA-Sätze des GPS-Moduls über eine Hardware-Serielle Schnittstelle des ESP32 S3 auswertet
  3. Echtzeit-GPS-Daten einschließlich Datum und Uhrzeit im Serial Monitor der Arduino IDE
  4. Einen zweiten Sketch, der die Entfernung zwischen der aktuellen GPS-Position und einem festen Referenzort (London) berechnet
ESP32 S3 - GPS

Erforderliche Hardware

1×ESP32 S3 WROOM N16R8
1×(Alternativ) ESP32 S3 SuperMini Dev Module
1×(Alternativ) ESP32 S3 Uno-form Board
1×(Alternativ) ESP32 S3 Camera Board
1×USB-Kabel Typ-A zu Typ-C (für USB-A PC)
1×USB-Kabel Typ-C zu Typ-C (für USB-C PC)
1×NEO-6M GPS module
1×Verbindungskabel
1×Breadboard
1×(Empfohlen) Screw Terminal Expansion Board for ESP32 S3
1×(Empfohlen) Breakout Expansion Board for ESP32 S3
1×(Empfohlen) Power Splitter for ESP32 S3

Oder Sie können die folgenden Kits kaufen:

1×DIYables ESP32 S3 Starter-Kit (ESP32 S3 enthalten)
1×DIYables Sensor-Kit (18 Sensoren/Displays)
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.

Überblick über NEO-6M GPS Module

Der NEO-6M ist ein hochempfindliches GPS-Empfangsmodul von u-blox, das wegen seiner kompakten Bauform und der einfachen seriellen Schnittstelle in vielen Bastler- und Maker-Projekten eingesetzt wird. Nach einer anfänglichen Kaltstartphase rastet es schnell auf Satellitensignale ein und gibt standardisierte NMEA-Sätze aus, die sich in Arduino-Sketches leicht auswerten lassen. Die integrierte Keramikantenne hält die Anzahl der Bauteile gering und liefert trotzdem zuverlässige Leistung im Freien.

Wichtige Spezifikationen

Das NEO-6M GPS-Modul arbeitet mit 3,3 V–5 V und kommuniziert über TTL-Seriell mit einer Standard-Baudrate von 9600 bps. Es verfolgt bis zu 22 Satelliten über 50 Kanäle und erreicht eine horizontale Positionsgenauigkeit von etwa 2,5 m CEP. Das Modul unterstützt GPS, GLONASS (bei einigen Varianten) und gibt standardisierte NMEA-0183-Sätze aus, darunter GGA, RMC, VTG und GLL.

Pinbelegung

Das NEO-6M GPS-Modul hat vier Pins, die jeweils eine bestimmte Aufgabe bei der Stromversorgung und der Kommunikation mit dem ESP32 S3 haben:

  1. VCC — Mit der 5-V-Stromversorgung verbinden
  2. GND — Mit Masse (0 V) verbinden
  3. TX — Sendet NMEA-Daten vom GPS-Modul; mit einem seriellen RX-Pin des ESP32 S3 verbinden
  4. RX — Empfängt Konfigurationsbefehle; mit einem seriellen TX-Pin des ESP32 S3 verbinden
NEO-6M GPS-Modul Pinbelegung

Schaltplan zwischen GPS-Modul und ESP32 S3

Für die Verbindung des NEO-6M mit dem ESP32 S3 benötigen Sie nur vier Jumper-Kabel, und auf einem Breadboard ist das in wenigen Minuten erledigt. Das Modul benötigt 5 V, die der ESP32 S3 bei USB-Versorgung über seinen 5V-Pin bereitstellt, und kommuniziert per UART mit 3,3-V-Logikpegeln, die der ESP32 S3 direkt verarbeiten kann.

Sicherheitshinweise

Verbinden Sie den VCC-Pin des NEO-6M immer mit der 5-V-Schiene statt mit 3,3 V, damit der integrierte Spannungsregler des Moduls korrekt arbeitet und die Satellitenverbindung zuverlässig zustande kommt. Platzieren Sie das GPS-Modul in der Nähe eines Fensters oder im Freien, damit die Antenne freie Sicht zum Himmel hat – GPS-Signale durchdringen keine Wände oder Metallgehäuse.

ESP32 S3 GPS-Modul Schaltplan

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.

GPS-Modul-Pin ESP32 S3 Pin
VCC 5V
GND GND
TX RX1 (GPIO18)
RX TX1 (GPIO17)

ESP32 S3 Code

GPS-Koordinaten, Geschwindigkeit (km/h) sowie Datum und Uhrzeit auslesen

Der folgende Sketch verwendet die Bibliothek TinyGPSPlus, um den seriellen Datenstrom des NEO-6M GPS-Moduls auszuwerten und Längengrad, Breitengrad, Höhe, Geschwindigkeit sowie Datum und Uhrzeit in UTC zu ermitteln. Er initialisiert auf dem ESP32 S3 eine zweite Hardware-Serielle Schnittstelle speziell für die GPS-Kommunikation, sodass die primäre serielle Schnittstelle für die Ausgabe im Serial Monitor der Arduino IDE frei bleibt.

/* * Dieser ESP32 S3 Code wurde von newbiely.de entwickelt * Dieser ESP32 S3 Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/esp32-s3/esp32-s3-gps */ /* * This ESP32-S3 code is created by esp32io.com * * This ESP32-S3 code is released in the public domain * * For more detail (instruction and wiring diagram), visit https://esp32io.com/tutorials/esp32-s3-gps */ #include <TinyGPS++.h> #define GPS_BAUDRATE 9600 // The default baudrate of NEO-6M is 9600 TinyGPSPlus gps; // the TinyGPS++ object void setup() { Serial.begin(9600); Serial2.begin(GPS_BAUDRATE, SERIAL_8N1, 18, 17); Serial.println(F("ESP32 - GPS module")); } void loop() { if (Serial2.available() > 0) { if (gps.encode(Serial2.read())) { if (gps.location.isValid()) { Serial.print(F("- latitude: ")); Serial.println(gps.location.lat()); Serial.print(F("- longitude: ")); Serial.println(gps.location.lng()); Serial.print(F("- altitude: ")); if (gps.altitude.isValid()) Serial.println(gps.altitude.meters()); else Serial.println(F("INVALID")); } else { Serial.println(F("- location: INVALID")); } Serial.print(F("- speed: ")); if (gps.speed.isValid()) { Serial.print(gps.speed.kmph()); Serial.println(F(" km/h")); } else { Serial.println(F("INVALID")); } Serial.print(F("- GPS date&time: ")); if (gps.date.isValid() && gps.time.isValid()) { Serial.print(gps.date.year()); Serial.print(F("-")); Serial.print(gps.date.month()); Serial.print(F("-")); Serial.print(gps.date.day()); Serial.print(F(" ")); Serial.print(gps.time.hour()); Serial.print(F(":")); Serial.print(gps.time.minute()); Serial.print(F(":")); Serial.println(gps.time.second()); } else { Serial.println(F("INVALID")); } Serial.println(); } } if (millis() > 5000 && gps.charsProcessed() < 10) Serial.println(F("No GPS data received: check wiring")); }

Schnelle Schritte

  1. Neu beim ESP32 S3? Arbeiten Sie zuerst unsere Anleitung Erste Schritte mit dem ESP32 S3 durch.
  2. Führen Sie die Verdrahtung wie im obigen Schaltplan gezeigt durch.
  3. Verbinden Sie das ESP32 S3 Board über ein USB-Type-C-Kabel mit Ihrem PC.
  4. Öffnen Sie die Arduino IDE auf Ihrem PC.
  5. Wählen Sie in der Arduino IDE unter Tools das richtige Board (ESP32S3 Dev Module oder gleichwertig) und den COM-Port aus.
So laden Sie ESP32 S3 Code in der Arduino IDE hoch
  1. Gehen Sie in der Arduino IDE in der linken Leiste zu Manage Libraries.
  2. Suchen Sie nach "TinyGPSPlus" und wählen Sie die Bibliothek TinyGPSPlus von Mikal Hart.
  3. Klicken Sie auf Install, um die Bibliothek TinyGPSPlus zu installieren.
  • Search for TinyGPSPlus created by Mikal Hart and click the Install button.
∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32S3 Dev Module
Library Manager
Type:
All
Topic:
All
TinyGPSPlus by Mikal Hart
NMEA is the standard format GPS devices use to report location, time, altitude, etc. TinyGPSPlus is a compact, resilient library that parses the most common NMEA 'sentences' used: GGA and RMC. It can also be customized to extract data from *any* compliant sentence. More info
1.0.3
INSTALL
Newbiely.ino
···
1 void setup() {
Output
Serial Monitor
Ln 1, Col 1
ESP32S3 Dev Module on COM15
1
  1. Kopieren Sie den obigen Sketch und öffnen Sie ihn in der Arduino IDE.
  2. Klicken Sie auf die Schaltfläche Upload, um den Sketch zu kompilieren und auf den ESP32 S3 zu flashen.
  3. Öffnen Sie nach dem Hochladen den Serial Monitor über das Menü Tools oder das Monitor-Symbol.
So öffnen Sie den Serial Monitor in der Arduino IDE
  1. Stellen Sie im Dropdown-Menü des Serial Monitors die Baudrate auf 115200 ein.
  2. Bringen Sie den ESP32 S3 und das GPS-Modul in die Nähe eines Fensters oder ins Freie und beobachten Sie, wie die Messwerte erscheinen, sobald eine Satellitenverbindung besteht.
  3. Profi-Tipp: Der NEO-6M kann für die erste Satellitenverbindung (Kaltstart) 30–90 Sekunden benötigen. Spätere Starts mit gespeichertem Almanach finden die Verbindung deutlich schneller – lassen Sie das Modul eingeschaltet, während Sie an Ihrem Code arbeiten.

Zeilenweise Code-Erklärung

Der obige ESP32 S3 Code enthält eine zeilenweise Erklärung. Bitte lesen Sie die Kommentare im Code!

Serial-Monitor-Ausgabe

Sobald das mit dem ESP32 S3 verbundene NEO-6M GPS-Modul eine Satellitenverbindung hat, zeigt der Serial Monitor Werte ähnlich den folgenden an:

∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32S3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32S3 Dev Module' on 'COM15')
New Line
9600 baud
[2026-06-16 09:14:22] Latitude : 51.508131 [2026-06-16 09:14:22] Longitude : -0.128002 [2026-06-16 09:14:23] Altitude : 12.30 m [2026-06-16 09:14:23] Speed : 0.02 km/h [2026-06-16 09:14:24] Date/Time : 2026-06-16 09:14:24 UTC [2026-06-16 09:14:25] Latitude : 51.508135 [2026-06-16 09:14:25] Longitude : -0.128006 [2026-06-16 09:14:26] Altitude : 12.28 m [2026-06-16 09:14:26] Speed : 0.01 km/h
Ln 11, Col 1
ESP32S3 Dev Module on COM15
2

ESP32 S3 Code

Entfernung vom aktuellen Standort zu einem festgelegten Ort berechnen

Der folgende Sketch erweitert den GPS-Leser um die Berechnung der Entfernung zwischen den aktuellen GPS-Koordinaten und einem festen Referenzpunkt – in diesem Fall den Koordinaten von London (lat: 51.508131, long: -0.128002). Die integrierte Funktion distanceBetween() der Bibliothek TinyGPSPlus übernimmt die Haversine-Berechnung, sodass keine externe Mathematikbibliothek benötigt wird.

/* * Dieser ESP32 S3 Code wurde von newbiely.de entwickelt * Dieser ESP32 S3 Code wird der Öffentlichkeit ohne jegliche Einschränkung zur Verfügung gestellt. * Für vollständige Anleitungen und Schaltpläne besuchen Sie bitte: * https://newbiely.de/tutorials/esp32-s3/esp32-s3-gps */ /* * This ESP32-S3 code is created by esp32io.com * * This ESP32-S3 code is released in the public domain * * For more detail (instruction and wiring diagram), visit https://esp32io.com/tutorials/esp32-s3-gps */ #include <TinyGPS++.h> #define GPS_BAUDRATE 9600 // The default baudrate of NEO-6M is 9600 TinyGPSPlus gps; // the TinyGPS++ object const double LONDON_LAT = 51.508131; const double LONDON_LON = -0.128002; void setup() { Serial.begin(9600); Serial2.begin(GPS_BAUDRATE, SERIAL_8N1, 18, 17); Serial.println(F("ESP32 - GPS module")); } void loop() { if (Serial2.available() > 0) { if (gps.encode(Serial2.read())) { if (gps.location.isValid()) { double latitude = gps.location.lat(); double longitude = gps.location.lng(); unsigned long distanceKm = TinyGPSPlus::distanceBetween(latitude, longitude, LONDON_LAT, LONDON_LON) / 1000; Serial.print(F("- latitude: ")); Serial.println(latitude); Serial.print(F("- longitude: ")); Serial.println(longitude); Serial.print(F("- distance to London: ")); Serial.println(distanceKm); } else { Serial.println(F("- location: INVALID")); } Serial.println(); } } if (millis() > 5000 && gps.charsProcessed() < 10) Serial.println(F("No GPS data received: check wiring")); }

Schnelle Schritte

  1. Kopieren Sie den obigen Sketch und öffnen Sie ihn in der Arduino IDE.
  2. Klicken Sie auf die Schaltfläche Upload, um den Sketch zu kompilieren und auf den ESP32 S3 zu flashen.
  3. Öffnen Sie den Serial Monitor und stellen Sie die Baudrate auf 115200 ein.
  4. Sobald eine GPS-Verbindung besteht, zeigt der Serial Monitor die Entfernung nach London in Metern und Kilometern an.
  5. Profi-Tipp: Ersetzen Sie die Koordinaten von London im Sketch durch Breiten- und Längengrad eines beliebigen Ortes – Ihres Zuhauses, eines Wegpunkts oder eines Einsatzorts Ihres Projekts –, um dieses Beispiel an Ihren eigenen Anwendungsfall anzupassen.

Zeilenweise Code-Erklärung

Der obige ESP32 S3 Code enthält eine zeilenweise Erklärung. Bitte lesen Sie die Kommentare im Code!

Serial-Monitor-Ausgabe

Wenn das GPS-Modul eine Verbindung hat und der Entfernungs-Sketch auf dem ESP32 S3 läuft, zeigt der Serial Monitor eine Ausgabe ähnlich der folgenden an:

∞
Newbiely | Arduino IDE 2.3.8
──
☐
✕
File
Edit
Sketch
Tools
Help
ESP32S3 Dev Module
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'ESP32S3 Dev Module' on 'COM15')
New Line
9600 baud
[2026-06-16 09:15:10] Latitude : 48.858844 [2026-06-16 09:15:10] Longitude : 2.294351 [2026-06-16 09:15:11] Distance to London : 341234.50 m (341.23 km) [2026-06-16 09:15:12] Latitude : 48.858847 [2026-06-16 09:15:12] Longitude : 2.294348 [2026-06-16 09:15:13] Distance to London : 341234.20 m (341.23 km)
Ln 11, Col 1
ESP32S3 Dev Module on COM15
2

Anwendungs- und Projektideen

Der ESP32 S3 in Kombination mit dem NEO-6M GPS-Modul ermöglicht eine Vielzahl standortbezogener Anwendungen in IoT, Robotik und Outdoor-Elektronik. Hier einige Ideen, die sich lohnen:

  1. Objekt-Tracker: Bauen Sie einen tragbaren GPS-Tracker, der Koordinaten auf einer SD-Karte speichert oder sie für die Echtzeit-Standortüberwachung per WLAN sendet.
  2. Geofence-Alarm: Lösen Sie eine Warnung oder Benachrichtigung aus, wenn das Gerät eine festgelegte geografische Grenze verlässt.
  3. Navigationshilfe: Zeigen Sie Entfernung und Richtung zu einem Wegpunkt Schritt für Schritt auf einem OLED- oder LCD-Bildschirm an.
  4. Geschwindigkeits-Logger: Zeichnen Sie Geschwindigkeitsdaten während einer Fahrt auf und laden Sie die Protokolle zur späteren Analyse auf einen Server hoch.
  5. Steuerung autonomer Fahrzeuge: Nutzen Sie GPS-Wegpunkte, um einen Rover oder eine Drohne entlang einer festgelegten Route im Freien zu führen.
  6. Wetterstation mit Standortkennzeichnung: Versehen Sie Umweltsensor-Messwerte mit GPS-Koordinaten und Zeitstempeln für georeferenzierte Daten.
  7. Such- und Rettungsbake: Bauen Sie ein stromsparendes Gerät, das seine GPS-Position regelmäßig per WLAN oder LoRa vom ESP32 S3 aus sendet.

Video Tutorial

Sehen Sie sich unten die Schritt-für-Schritt-Videoanleitung für dieses ESP32 S3 Projekt an.

Fordern Sie sich selbst heraus

Sobald die grundlegenden GPS-Messwerte auf Ihrem ESP32 S3 funktionieren, gibt es viele Möglichkeiten, Ihr Verständnis zu vertiefen und das Projekt zu erweitern. Probieren Sie die folgenden Aufgaben nach Schwierigkeit geordnet aus:

  1. Anfänger: Ändern Sie den Sketch so, dass die GPS-Koordinaten mit sechs Nachkommastellen für eine genauere Ausgabe angezeigt werden.
  2. Anfänger: Fügen Sie eine LED hinzu, die einmal blinkt, wenn erstmals eine gültige Satellitenverbindung besteht.
  3. Fortgeschritten: Zeigen Sie Breitengrad, Längengrad, Geschwindigkeit und Höhe live auf einem OLED-Bildschirm statt im Serial Monitor an.
  4. Fortgeschritten: Speichern Sie alle 10 Sekunden GPS-Messwerte mit Zeitstempel auf einer Micro-SD-Karte, um einen einfachen GPS-Track-Rekorder zu bauen.
  5. Experte: Implementieren Sie ein Navigationssystem mit mehreren Wegpunkten, das Richtung und Entfernung zu jedem Wegpunkt der Reihe nach berechnet und zum nächsten weiterschaltet, sobald Sie sich innerhalb von 5 Metern befinden.
  6. Experte: Bauen Sie ein Geofence-System, das per HTTP POST eine WLAN-Warnung sendet, wenn der ESP32 S3 einen festgelegten Radius um eine Heimatkoordinate verlässt.

Verwandte Tutorials

※ UNSERE NACHRICHTEN

  • Sie können gerne den Link zu diesem Tutorial teilen. Bitte verwenden Sie jedoch unsere Inhalte nicht auf anderen Websites. Wir haben viel Mühe und Zeit in die Erstellung der Inhalte investiert, bitte respektieren Sie unsere Arbeit!