ESP32 - GPS

Dans ce guide, nous découvrirons comment extraire les coordonnées GPS (longitude, latitude, altitude), la vitesse GPS (en kilomètres par heure) et les informations de date et heure du module GPS NEO-6M. De plus, nous explorerons le processus de calcul de la distance entre la position GPS actuelle et un ensemble prédéfini de coordonnées GPS (telles que les coordonnées de Londres).

Préparation du matériel

1×ESP-WROOM-32 Dev Module
1×USB Cable Type-C
1×NEO-6M GPS module
1×Jumper Wires
1×Breadboard
1×(Recommended) ESP32 Screw Terminal Adapter

Or you can buy the following sensor kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À propos du module GPS NEO-6M

Brochage

Le module GPS NEO-6M possède 4 broches :

  • Broche VCC : doit être connectée au VCC (5V)
  • Broche GND : doit être connectée au GND (0V)
  • Broche TX : est utilisée pour la communication entre le module GPS et l'ESP32, doit être connectée à la broche RX série de l'ESP32.
  • Broche RX : est utilisée pour la communication entre le module GPS et l'ESP32, doit être connectée à la broche TX série de l'ESP32.
Pinout du module GPS NEO-6M

Diagramme de câblage

Schéma de câblage du module GPS ESP32

This image is created using Fritzing. Click to enlarge image

Si vous ne savez pas comment alimenter l'ESP32 et d'autres composants, vous pouvez trouver des conseils dans le tutoriel suivant : Comment alimenter l'ESP32.

Code ESP32

Lecture des coordonnées GPS, de la vitesse (km/h) et de la date.

/* * Ce code ESP32 a été développé par newbiely.fr * Ce code ESP32 est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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.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")); }

Étapes rapides

  • Si c'est la première fois que vous utilisez un ESP32, consultez comment configurer l'environnement pour ESP32 sur Arduino IDE.
  • Faites le câblage comme sur l'image ci-dessus.
  • Connectez la carte ESP32 à votre PC via un câble micro USB.
  • Ouvrez Arduino IDE sur votre PC.
  • Sélectionnez la bonne carte ESP32 (par exemple, ESP32 Dev Module) et le port COM.
  • Dans Arduino IDE, allez à Gérer les bibliothèques dans la barre de gauche.
  • Recherchez “TinyGPSPlus”, puis trouvez la bibliothèque TinyGPSPlus de Mikal Hart.
  • Cliquez sur le bouton Install pour installer la bibliothèque TinyGPSPlus.
Bibliothèque TinyGPS++ ESP32
  • Copiez le code ci-dessus et ouvrez-le avec l'IDE Arduino
  • Cliquez sur le bouton Upload de l'IDE Arduino pour charger le code sur l'ESP32
  • Voir le résultat sur le moniteur série :
COM6
Send
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Calcul du trajet depuis l'emplacement actuel jusqu'à un lieu prédéfini

Le code ci-dessous calcule la distance entre l'emplacement actuel et Londres (lat : 51.508131, long : -0.128002)

/* * Ce code ESP32 a été développé par newbiely.fr * Ce code ESP32 est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/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.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")); }

Étapes rapides

  • Copiez le code ci-dessus et ouvrez-le avec Arduino IDE.
  • Cliquez sur le bouton Upload dans Arduino IDE pour téléverser le code sur l'ESP32.
  • Voyez le résultat sur le moniteur série :
COM6
Send
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Vidéo

Tutoriels connexes

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!