ESP32 S3 - GPS

Le module GPS NEO-6M est un récepteur compact et fiable qui permet à l'ESP32 S3 de localiser précisément sa position n'importe où sur Terre à l'aide de signaux satellites. Ce tutoriel vous guide à travers le câblage du module, l'installation de la bibliothèque TinyGPSPlus, et l'écriture de deux programmes complets — l'un pour lire les coordonnées GPS et l'autre pour calculer la distance jusqu'à un lieu prédéfini.

Ce que vous allez construire :

  1. Un lecteur de données GPS qui extrait la longitude, la latitude, l'altitude et la vitesse (km/h) à l'aide de l'ESP32 S3 et du module NEO-6M
  2. Un programme qui analyse les trames NMEA du module GPS via un port série matériel de l'ESP32 S3
  3. Des données GPS en temps réel affichées sur le moniteur série de l'Arduino IDE, incluant la date et l'heure
  4. Un second programme qui calcule la distance entre la position GPS actuelle et un lieu de référence fixe (Londres)
ESP32 S3 - GPS

Matériel requis

1×ESP32 S3 WROOM N16R8
1×Alternativement: ESP32 S3 SuperMini Dev Module
1×Alternativement: ESP32 S3 Uno-form Board
1×Alternativement: ESP32 S3 Camera Board
1×Câble USB Type-A vers Type-C (pour PC USB-A)
1×Câble USB Type-C vers Type-C (pour PC USB-C)
1×NEO-6M GPS module
1×Fils de connexion
1×Plaque d'essai
1×Recommandé: Screw Terminal Expansion Board for ESP32 S3
1×Recommandé: Breakout Expansion Board for ESP32 S3
1×Recommandé: Power Splitter for ESP32 S3

Ou vous pouvez acheter les kits suivants:

1×Kit de Démarrage DIYables ESP32 S3 (ESP32 S3 inclus)
1×Kit de Capteurs DIYables (18 capteurs/écrans)
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

Le NEO-6M est un module récepteur GPS haute sensibilité fabriqué par u-blox, largement utilisé dans les projets amateurs et de fabrication pour son format compact et son interface série simple. Il se verrouille rapidement sur les signaux satellites après une période initiale de démarrage à froid et produit des trames NMEA standard faciles à analyser dans les programmes Arduino. L'antenne céramique intégrée réduit le nombre de composants tout en offrant des performances fiables en extérieur.

Spécifications clés

Le module GPS NEO-6M fonctionne entre 3,3V et 5V et communique en série TTL avec un débit par défaut de 9600 bps. Il suit jusqu'à 22 satellites sur 50 canaux et atteint une précision de position horizontale d'environ 2,5 m CEP. Le module prend en charge le GPS, le GLONASS (sur certaines variantes), et produit des trames NMEA-0183 standard incluant GGA, RMC, VTG et GLL.

Brochage

Le module GPS NEO-6M possède quatre broches, chacune ayant un rôle spécifique dans l'alimentation et la communication avec l'ESP32 S3 :

  1. VCC — Connecter à l'alimentation 5V
  2. GND — Connecter à la masse (0V)
  3. TX — Transmet les données NMEA depuis le module GPS ; connecter à une broche RX série de l'ESP32 S3
  4. RX — Reçoit les commandes de configuration ; connecter à une broche TX série de l'ESP32 S3
Brochage du module GPS NEO-6M

Schéma de câblage entre le module GPS et l'ESP32 S3

Connecter le NEO-6M à l'ESP32 S3 ne nécessite que quatre fils de raccordement et ne prend que quelques minutes sur une breadboard. Le module nécessite une alimentation 5V, que l'ESP32 S3 fournit via sa broche 5V lorsqu'il est alimenté par USB, et communique en utilisant une liaison série UART avec des niveaux logiques 3,3V que l'ESP32 S3 accepte directement.

Notes de sécurité

Connectez toujours la broche VCC du NEO-6M au rail 5V plutôt qu'au 3,3V pour garantir que le régulateur intégré du module fonctionne correctement et que le verrouillage satellite soit obtenu de manière fiable. Placez le module GPS près d'une fenêtre ou en extérieur pour donner à l'antenne une vue dégagée du ciel — les signaux GPS ne peuvent pas traverser les murs ou les enceintes métalliques.

Schéma de câblage du module GPS ESP32 S3

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Broche du module GPS Broche ESP32 S3
VCC 5V
GND GND
TX RX1 (GPIO18)
RX TX1 (GPIO17)

Code ESP32 S3

Lire les coordonnées GPS, la vitesse (km/h) et la date-heure

Le programme suivant utilise la bibliothèque TinyGPSPlus pour analyser le flux série du module GPS NEO-6M et extraire les valeurs de longitude, latitude, altitude, vitesse et date-heure UTC. Il initialise un second port série matériel sur l'ESP32 S3 dédié à la communication GPS, laissant le port série principal libre pour la sortie du moniteur série de l'Arduino IDE.

/* * Ce code ESP32 S3 a été développé par newbiely.fr * Ce code ESP32 S3 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-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")); }

Étapes rapides

  1. Nouveau sur ESP32 S3 ? Suivez d'abord notre guide ESP32 S3 - Premiers pas.
  2. Réalisez le câblage comme indiqué dans le schéma ci-dessus.
  3. Connectez la carte ESP32 S3 à votre PC à l'aide d'un câble USB Type-C.
  4. Ouvrez l'Arduino IDE sur votre PC.
  5. Dans l'Arduino IDE, sélectionnez la bonne carte (ESP32S3 Dev Module ou équivalent) et le bon port COM sous Tools.
Comment téléverser le code ESP32 S3 avec Arduino IDE
  1. Dans l'Arduino IDE, allez dans Manage Libraries dans la barre de gauche.
  2. Recherchez "TinyGPSPlus", puis trouvez la bibliothèque TinyGPSPlus par Mikal Hart.
  3. Cliquez sur Install pour installer la bibliothèque TinyGPSPlus.
  • 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. Copiez le programme ci-dessus et ouvrez-le dans l'Arduino IDE.
  2. Cliquez sur le bouton Upload pour compiler et téléverser le programme vers l'ESP32 S3.
  3. Une fois le téléversement terminé, ouvrez le moniteur série depuis le menu Tools ou l'icône du moniteur.
Comment ouvrir le moniteur série sur Arduino IDE
  1. Réglez le débit en bauds sur 115200 dans le menu déroulant du moniteur série.
  2. Placez l'ESP32 S3 et le module GPS près d'une fenêtre ou en extérieur et observez les lectures apparaître une fois qu'une position satellite est acquise.
  3. Astuce pro : Le NEO-6M peut prendre 30 à 90 secondes pour son premier verrouillage satellite (démarrage à froid). Les mises sous tension suivantes avec un almanach enregistré se verrouillent beaucoup plus vite — laissez le module alimenté pendant que vous itérez sur votre code.

Explication du code ligne par ligne

Le code ESP32 S3 ci-dessus contient une explication ligne par ligne. Veuillez lire les commentaires dans le code !

Sortie du moniteur série

Lorsque le module GPS NEO-6M connecté à l'ESP32 S3 acquiert une position satellite, le moniteur série affichera des lectures semblables aux suivantes :

∞
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

Code ESP32 S3

Calculer la distance entre la position actuelle et un lieu prédéfini

Le programme suivant étend le lecteur GPS en calculant la distance entre les coordonnées GPS actuelles et un point de référence fixe — dans ce cas, les coordonnées de Londres (lat : 51.508131, long : -0.128002). La fonction intégrée distanceBetween() de la bibliothèque TinyGPSPlus gère le calcul de la formule haversine, aucune bibliothèque mathématique externe n'est donc nécessaire.

/* * Ce code ESP32 S3 a été développé par newbiely.fr * Ce code ESP32 S3 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-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")); }

Étapes rapides

  1. Copiez le programme ci-dessus et ouvrez-le dans l'Arduino IDE.
  2. Cliquez sur le bouton Upload pour compiler et téléverser le programme vers l'ESP32 S3.
  3. Ouvrez le moniteur série et réglez le débit en bauds sur 115200.
  4. Une fois qu'une position GPS est acquise, le moniteur série affichera la distance jusqu'à Londres à la fois en mètres et en kilomètres.
  5. Astuce pro : Remplacez les coordonnées de Londres dans le programme par la latitude et la longitude de n'importe quel lieu de votre choix — votre domicile, un point de passage, ou un site de déploiement de projet — pour adapter cet exemple à votre propre cas d'usage.

Explication du code ligne par ligne

Le code ESP32 S3 ci-dessus contient une explication ligne par ligne. Veuillez lire les commentaires dans le code !

Sortie du moniteur série

Lorsque le module GPS acquiert une position et que le programme de distance s'exécute sur l'ESP32 S3, le moniteur série affichera une sortie semblable à la suivante :

∞
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

Applications et idées de projets

L'ESP32 S3 associé au module GPS NEO-6M permet un large éventail d'applications sensibles à la localisation dans l'IoT, la robotique et l'électronique en extérieur. Voici quelques pistes à explorer :

  1. Traceur de biens : Construisez un traceur GPS portable qui enregistre les coordonnées sur une carte SD ou les envoie via Wi-Fi pour une surveillance de localisation en temps réel.
  2. Alarme de géorepérage : Déclenchez une alerte ou une notification lorsque l'appareil sort d'une limite géographique prédéfinie.
  3. Aide à la navigation : Affichez la distance et le cap pas à pas jusqu'à un point de passage sur un écran OLED ou LCD.
  4. Enregistreur de vitesse : Enregistrez les données de vitesse pendant un trajet et téléchargez les journaux vers un serveur pour une analyse ultérieure.
  5. Guidage de véhicule autonome : Utilisez des points de passage GPS pour guider un rover ou un drone le long d'un itinéraire extérieur prédéfini.
  6. Station météo avec géolocalisation : Associez des coordonnées GPS et des horodatages aux lectures des capteurs environnementaux pour des données géoréférencées.
  7. Balise de recherche et de sauvetage : Construisez un appareil basse consommation qui transmet périodiquement sa position GPS via Wi-Fi ou LoRa depuis l'ESP32 S3.

Tutoriel vidéo

Regardez le tutoriel vidéo étape par étape pour ce projet ESP32 S3 ci-dessous.

Défiez-vous

Une fois que les lectures GPS de base fonctionnent sur votre ESP32 S3, il existe de nombreuses façons d'approfondir votre compréhension et d'étendre le projet. Essayez les défis ci-dessous par ordre de difficulté :

  1. Débutant : Modifiez le programme pour afficher les coordonnées GPS avec six décimales afin d'obtenir une sortie plus précise.
  2. Débutant : Ajoutez une LED qui clignote une fois lorsqu'une position satellite valide est acquise pour la première fois.
  3. Intermédiaire : Affichez en direct la latitude, la longitude, la vitesse et l'altitude sur un écran OLED au lieu du moniteur série.
  4. Intermédiaire : Enregistrez les lectures GPS avec horodatage sur une carte micro SD toutes les 10 secondes pour créer un simple enregistreur de trace GPS.
  5. Avancé : Implémentez un système de navigation multi-points qui calcule le cap et la distance jusqu'à chaque point de passage en séquence et avance au point suivant lorsqu'il se trouve à moins de 5 mètres.
  6. Avancé : Construisez un système de géorepérage qui envoie une alerte Wi-Fi via une requête HTTP POST lorsque l'ESP32 S3 sort d'un rayon défini autour d'une coordonnée domestique.

Commentaires

Tutoriels connexes

※ NOS MESSAGES

  • N'hésitez pas à partager le lien de ce tutoriel. Cependant, veuillez ne pas utiliser notre contenu sur d'autres sites web. Nous avons investi beaucoup d'efforts et de temps pour créer ce contenu, veuillez respecter notre travail !