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 :
- 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
- Un programme qui analyse les trames NMEA du module GPS via un port série matériel de l'ESP32 S3
- 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
- Un second programme qui calcule la distance entre la position GPS actuelle et un lieu de référence fixe (Londres)

Matériel requis
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) |
À 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 :
- VCC — Connecter à l'alimentation 5V
- GND — Connecter à la masse (0V)
- TX — Transmet les données NMEA depuis le module GPS ; connecter à une broche RX série de l'ESP32 S3
- RX — Reçoit les commandes de configuration ; connecter à une broche TX série de l'ESP32 S3

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.

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.
Étapes rapides
- Nouveau sur ESP32 S3 ? Suivez d'abord notre guide ESP32 S3 - Premiers pas.
- Réalisez le câblage comme indiqué dans le schéma ci-dessus.
- Connectez la carte ESP32 S3 à votre PC à l'aide d'un câble USB Type-C.
- Ouvrez l'Arduino IDE sur votre PC.
- Dans l'Arduino IDE, sélectionnez la bonne carte (ESP32S3 Dev Module ou équivalent) et le bon port COM sous Tools.

- Dans l'Arduino IDE, allez dans Manage Libraries dans la barre de gauche.
- Recherchez "TinyGPSPlus", puis trouvez la bibliothèque TinyGPSPlus par Mikal Hart.
- Cliquez sur Install pour installer la bibliothèque TinyGPSPlus.
- Search for TinyGPSPlus created by Mikal Hart and click the Install button.
- Copiez le programme ci-dessus et ouvrez-le dans l'Arduino IDE.
- Cliquez sur le bouton Upload pour compiler et téléverser le programme vers l'ESP32 S3.
- Une fois le téléversement terminé, ouvrez le moniteur série depuis le menu Tools ou l'icône du moniteur.

- Réglez le débit en bauds sur 115200 dans le menu déroulant du moniteur série.
- 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.
- 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 :
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.
Étapes rapides
- Copiez le programme ci-dessus et ouvrez-le dans l'Arduino IDE.
- Cliquez sur le bouton Upload pour compiler et téléverser le programme vers l'ESP32 S3.
- Ouvrez le moniteur série et réglez le débit en bauds sur 115200.
- 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.
- 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 :
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 :
- 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.
- Alarme de géorepérage : Déclenchez une alerte ou une notification lorsque l'appareil sort d'une limite géographique prédéfinie.
- Aide à la navigation : Affichez la distance et le cap pas à pas jusqu'à un point de passage sur un écran OLED ou LCD.
- 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.
- 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.
- 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.
- 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é :
- Débutant : Modifiez le programme pour afficher les coordonnées GPS avec six décimales afin d'obtenir une sortie plus précise.
- Débutant : Ajoutez une LED qui clignote une fois lorsqu'une position satellite valide est acquise pour la première fois.
- Intermédiaire : Affichez en direct la latitude, la longitude, la vitesse et l'altitude sur un écran OLED au lieu du moniteur série.
- 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.
- 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.
- 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.