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

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)

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 senzorugps.encode()je převádí na čitelná data- knihovna pak zpřístupní:
gps.locationgps.speedgps.altitudegps.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

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
