ESP32 - GPS

In deze handleiding ontdekken we hoe u GPS-coördinaten (lengtegraad, breedtegraad, hoogte), GPS-snelheid (in kilometers per uur) en datum/tijd informatie kunt uitlezen van de NEO-6M GPS module. Daarnaast bekijken we hoe u de afstand kunt berekenen tussen de huidige GPS-positie en een vooraf ingestelde set GPS-coördinaten (zoals de coördinaten van Londen).

Hardware Benodigd

1×ESP32 ESP-WROOM-32 Ontwikkelingsmodule
1×USB Type-C-kabel
1×NEO-6M GPS module
1×Jumperdraden
1×Breadboard (experimenteerprint)
1×(Aanbevolen) Schroefklem Uitbreidingsboard voor ESP32
1×(Aanbevolen) Breakout Expansion Board for ESP32
1×(Aanbevolen) Stromsplitter voor ESP32

Of u kunt de volgende kits kopen:

1×DIYables Sensorkit (30 sensoren/displays)
1×DIYables Sensorkit (18 sensoren/displays)
Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.

Over de NEO-6M GPS module

Pinout

De NEO-6M GPS module heeft 4 pinnen:

  • VCC-pin: moet worden aangesloten op VCC (5V)
  • GND-pin: moet worden aangesloten op GND (0V)
  • TX-pin: wordt gebruikt voor communicatie tussen de GPS-module en ESP32, moet worden aangesloten op de Serial RX-pin van de ESP32.
  • RX-pin: wordt gebruikt voor communicatie tussen de GPS-module en ESP32, moet worden aangesloten op de Serial TX-pin van de ESP32.
NEO-6M GPS module Pinout

Aansluitschema

ESP32 GPS module Aansluitschema

This image is created using Fritzing. Click to enlarge image

ESP32 Code

GPS-coördinaten, snelheid (km/u) en datum/tijd uitlezen

/* * Deze ESP32 code is ontwikkeld door newbiely.nl * Deze ESP32 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/esp32/esp32-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, 16, 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")); }

Snelle Stappen

  • Als dit de eerste keer is dat u een ESP32 gebruikt, zie hoe u de omgeving instelt voor ESP32 op Arduino IDE.
  • Maak de bedrading zoals in de bovenstaande afbeelding.
  • Verbind de ESP32 met uw PC via een micro USB-kabel.
  • Open Arduino IDE op uw PC.
  • Selecteer de juiste ESP32 board (bijv. ESP32 Dev Module) en COM-poort.
  • Ga in Arduino IDE naar Bibliotheken Beheren in de linkerzijbalk.
  • Zoek op “TinyGPSPlus” en vind de TinyGPSPlus bibliotheek van Mikal Hart.
  • Klik op de Installeren knop om de TinyGPSPlus bibliotheek te installeren.
ESP32 TinyGPS++ bibliotheek
  • Kopieer de bovenstaande code en open deze met Arduino IDE.
  • Klik op de Uploaden knop in Arduino IDE om de code naar de ESP32 te uploaden.
  • Bekijk het resultaat op de Seriële Monitor:
COM6
Send
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Afstand berekenen van huidige locatie naar een vooraf ingestelde locatie

De onderstaande code berekent de afstand tussen de huidige locatie en Londen (lat:51.508131 , long: -0.128002)

/* * Deze ESP32 code is ontwikkeld door newbiely.nl * Deze ESP32 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/esp32/esp32-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, 16, 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")); }

Snelle Stappen

  • Kopieer de bovenstaande code en open deze met Arduino IDE.
  • Klik op de Uploaden knop in Arduino IDE om de code naar de ESP32 te uploaden.
  • Bekijk het resultaat op de Seriële Monitor:
COM6
Send
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Video Tutorial

We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.

Opmerkingen

Gerelateerde Tutorials

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!