Zpět na články

ESP32 + NEO-6M GPS modul – kompletní návod

ESP32 s GPS modulem NEO-6M umožňuje získat polohu, rychlost, čas i nadmořskou výšku.

ESP32 + NEO-6M GPS modul – kompletní návod

NEO-6M je GPS přijímač, který umožňuje získat:

  • aktuální polohu (latitude, longitude)
  • nadmořskou výšku
  • rychlost pohybu
  • čas (UTC)

Modul komunikuje přes sériovou linku (UART) a používá standardní formát dat NMEA.

Další vlastnosti:

  • napájení: 3–5 V
  • defaultní baudrate: 9600
  • obsahuje anténu a LED indikaci signálu
  • LED začne blikat, když má GPS fix
ESP32 Blog image

Zapojení k ESP32 (převedeno z tabulky)

Používá se UART2:

  • VCC → 3.3 V
  • GND → GND
  • TX (GPS) → GPIO 16 (RX ESP32)
  • RX (GPS) → GPIO 17 (TX ESP32)

⚠️ Pozor: TX a RX se kříží (TX → RX, RX → TX)

ESP32 Blog image

1) Čtení surových GPS dat (NMEA)

Tento kód pouze vypisuje raw data ze senzoru.

gps.cpp
1#include <HardwareSerial.h> 2 3#define RXD2 16 4#define TXD2 17 5#define GPS_BAUD 9600 6 7HardwareSerial gpsSerial(2); 8 9void setup() { 10 Serial.begin(115200); 11 gpsSerial.begin(GPS_BAUD, SERIAL_8N1, RXD2, TXD2); 12 Serial.println("GPS start"); 13} 14 15void loop() { 16 while (gpsSerial.available() > 0) { 17 char c = gpsSerial.read(); 18 Serial.print(c); 19 } 20 delay(1000); 21 Serial.println(); 22}

Jak číst NMEA data (zjednodušeně)

Například věta $GPGGA obsahuje:

  • čas (UTC)
  • zeměpisnou šířku
  • zeměpisnou délku
  • kvalitu signálu
  • počet satelitů
  • nadmořskou výšku

Další typy zpráv:

  • GPRMC → základní data (poloha, rychlost, čas)
  • GPVTG → rychlost
  • GPGSA → satelity a přesnost
  • GPGSV → detailní info o satelitech

2) Jednoduché získání dat (TinyGPS++)

Místo parsování ručně je lepší použít knihovnu:

👉 TinyGPS++

Co získáš:

  • latitude / longitude
  • rychlost
  • nadmořská výška
  • počet satelitů
  • čas
gps.cpp
1#include <TinyGPS++.h> 2#include <HardwareSerial.h> 3 4#define RXD2 16 5#define TXD2 17 6#define GPS_BAUD 9600 7 8TinyGPSPlus gps; 9HardwareSerial gpsSerial(2); 10 11void setup() { 12 Serial.begin(115200); 13 gpsSerial.begin(GPS_BAUD, SERIAL_8N1, RXD2, TXD2); 14 Serial.println("GPS start"); 15} 16 17void loop() { 18 unsigned long start = millis(); 19 20 while (millis() - start < 1000) { 21 while (gpsSerial.available() > 0) { 22 gps.encode(gpsSerial.read()); 23 } 24 } 25 26 if (gps.location.isValid()) { 27 Serial.print("Latitude: "); 28 Serial.println(gps.location.lat(), 6); 29 30 Serial.print("Longitude: "); 31 Serial.println(gps.location.lng(), 6); 32 } 33 34 if (gps.altitude.isValid()) { 35 Serial.print("Altitude: "); 36 Serial.print(gps.altitude.meters()); 37 Serial.println(" m"); 38 } 39 40 if (gps.speed.isValid()) { 41 Serial.print("Speed: "); 42 Serial.print(gps.speed.kmph()); 43 Serial.println(" km/h"); 44 } 45 46 if (gps.satellites.isValid()) { 47 Serial.print("Satellites: "); 48 Serial.println(gps.satellites.value()); 49 } 50 51 if (gps.time.isValid()) { 52 Serial.print("Time: "); 53 Serial.print(gps.time.hour()); 54 Serial.print(":"); 55 Serial.print(gps.time.minute()); 56 Serial.print(":"); 57 Serial.println(gps.time.second()); 58 } 59 60 Serial.println("------------------------"); 61}

Jak to funguje

  • gpsSerial.read() čte data ze senzoru
  • gps.encode() je převádí na čitelná data
  • knihovna pak zpřístupní:
    • gps.location
    • gps.speed
    • gps.altitude
    • gps.time

Důležité tipy

  • první fix může trvat několik minut
  • používej GPS:
    • venku
    • nebo u okna
  • čím více satelitů → tím vyšší přesnost
  • sleduj hodnotu HDOP:
    • < 2 = dobrá přesnost
    • vyšší = horší signál
ESP32 Blog image

Shrnutí

NEO-6M s ESP32 je jednoduchý způsob, jak získat GPS data:

  • komunikuje přes UART
  • poskytuje NMEA data
  • pomocí TinyGPS++ je snadné získat čitelná data
  • vhodné pro tracking, IoT i navigaci

Nakupte svoje ESP32 ještě dnes!

Doprava Zásilkovnou za 89 Kč
Platba dobírkou
Vrácení do 30 dnů
Omezené zásoby - skladem

ESP32-S3 DevKit USB-C

Kompletní vývojová deska s USB-C

240MHz dvoujádrový
WiFi 802.11 b/g/n
Bluetooth 4.2 + BLE
4MB Flash paměť
520KB SRAM
38 GPIO pinů
209za kus

Množstevní slevy:

1
Celkem
209
Objednat

Bezpečná platba při převzetí zásilky nebo online platba přes Comgate, a.s.