Apprenez à interfacer le module GPS NEO-6M avec une carte ESP8266 NodeMCU pour obtenir des données GPS. Vous apprendrez comment obtenir la latitude, la longitude, l’altitude, la vitesse et l’heure UTC. L’ESP8266 sera programmé à l’aide de l’IDE Arduino.

En résumé, dans ce tutoriel, vous apprendrez à :
- Câblez le module GPS NEO-6M à l’ESP8266 via série
- Analyser les données brutes pour obtenir des informations GPS sélectionnées et lisibles
- Obtenez votre position actuelle, la date, l’heure et plus encore…
Nous avons un guide similaire pour la carte ESP32 avec module GPS NEO-6M (Arduino IDE)
Table des matières
Tout au long de ce tutoriel, nous aborderons les sujets suivants :
Si vous êtes nouveau sur la carte ESP8266, vous aimerez peut-être lire : Premiers pas avec la carte de développement ESP8266 NodeMCU.
Présentation du module GPS NEO-6M
Le module GPS NEO-6M est un récepteur GPS compatible avec la plupart des cartes microcontrôleurs. Il peut obtenir des données sur l’emplacement, la vitesse, l’altitude et l’heure.

Il est livré avec une petite batterie de secours, une EEPROM externe et un indicateur de signal LED. Cette LED commencera à clignoter lorsqu’elle aura obtenu une position fixe.
Habituellement, ces modules sont livrés avec une antenne GPS en céramique.

Mais vous pouvez la remplacer par n’importe quelle autre antenne compatible qui pourrait mieux convenir à votre projet. Par exemple, j’aime utiliser celle de droite sur l’image ci-dessous car elle est étanche et l’antenne est livrée avec un long câble qui permet plus de flexibilité.

Le module GPS NEO-6M communique avec un microcontrôleur via un protocole de communication série.
Ce module fonctionne avec les phrases NMEA standards. NMEA signifie National Marine Electronics Association et, dans le monde du GPS, il s’agit d’un format de données standard pris en charge par les fabricants de GPS.
Caractéristiques du module GPS NEO-6M

En résumé:
- Ce module dispose d’une antenne externe et d’une EEPROM intégrée.
- Interface : RS232 TTL
- Alimentation : 3V à 5V
- Débit en bauds par défaut : 9 600 bps
- Fonctionne avec les phrases NMEA standard
Où acheter ?
Vous pouvez obtenir le module GPS NEO-6M pour un prix compris entre 5 $ et 20 $. Nous vous recommandons de consulter la page du module GPS NEO-6M sur Maker Advisor pour comparer les prix dans différents magasins et trouver le meilleur.
Vous pouvez utiliser les liens précédents ou vous rendre directement sur MakerAdvisor.com/tools pour trouver toutes les pièces pour vos projets au meilleur prix !

Câblage du module GPS NEO-6M au NodeMCU ESP8266
Pour communiquer avec le module GPS NEO-6M, nous utiliserons un logiciel série, vous pourrez donc utiliser tous les GPIO disponibles. Nous utiliserons : GPIO 14 (D5) et GPIO 12 (D6).

| Module GPS NÉO-6M | ESP8266 |
| VCC | 3V3 |
| RX | GPIO12 (D6) |
| Émission | GPIO14 (D5) |
| GND | GND |
Installation de la bibliothèque TinyGPSPlus
Pour décoder les phrases NMEA reçues par le module GPS, nous utiliserons la bibliothèque TinyGPSPlus. Installez-le avant de continuer.
Dans l’IDE Arduino, accédez à Sketch > Inclure la bibliothèque > Gérer les bibliothèques ou cliquez sur l’icône Libary Manager dans la barre latérale gauche.
Recherchez TinyGPSPlus et installez la bibliothèque de Mikal Hart.

ESP8266 avec le module GPS NEO-6M – Obtenir des données GPS
Après avoir connecté le module GPS à l’ESP8266 et installé la bibliothèque TinyGPSPlus, exécutons un exemple simple pour obtenir la latitude, la longitude, l’altitude, les données, l’heure, etc.

Le code suivant montre comment obtenir des données GPS à l’aide de la bibliothèque TinyGPSPlus. Nous obtiendrons la date, l’heure, la vitesse, l’altitude, le nombre de satellites visibles et le HDOP (une mesure de la précision du signal).
/*********
Rui Santos & Sara Santos - Raspberryme.com
Complete instructions at https://Raspberryme.com/esp8266-nodemcu-neo-6m-gps-module-arduino/
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files.
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
*********/
#include
#include
// Define the RX and TX pins for Software Serial 2
#define RX 12
#define TX 14
#define GPS_BAUD 9600
// The TinyGPS++ object
TinyGPSPlus gps;
// Create an instance of Software Serial
SoftwareSerial gpsSerial(RX, TX);
void setup() {
// Serial Monitor
Serial.begin(115200);
// Start Serial 2 with the defined RX and TX pins and a baud rate of 9600
gpsSerial.begin(GPS_BAUD);
Serial.println("Software Serial started at 9600 baud rate");
}
void loop() {
// This sketch displays information every time a new sentence is correctly encoded.
unsigned long start = millis();
while (millis() - start < 1000) {
while (gpsSerial.available() > 0) {
gps.encode(gpsSerial.read());
}
if (gps.location.isUpdated()) {
Serial.print("LAT: ");
Serial.println(gps.location.lat(), 6);
Serial.print("LONG: ");
Serial.println(gps.location.lng(), 6);
Serial.print("SPEED (km/h) = ");
Serial.println(gps.speed.kmph());
Serial.print("ALT (min)= ");
Serial.println(gps.altitude.meters());
Serial.print("HDOP = ");
Serial.println(gps.hdop.value() / 100.0);
Serial.print("Satellites = ");
Serial.println(gps.satellites.value());
Serial.print("Time in UTC: ");
Serial.println(String(gps.date.year()) + "/" + String(gps.date.month()) + "/" + String(gps.date.day()) + "," + String(gps.time.hour()) + ":" + String(gps.time.minute()) + ":" + String(gps.time.second()));
Serial.println("");
}
}
}
Afficher le code brut
Comment fonctionne le code ?
Vous commencez par importer la bibliothèque TinyGPSPlus et SoftwareSerial.
#include
#include
Ensuite, vous définissez les GPIO que vous souhaitez utiliser pour le logiciel série et le débit en bauds du module GPS.
// Define the RX and TX pins for Software Serial 2
#define RX 12
#define TX 14
#define GPS_BAUD 9600
Ensuite, vous créez un objet TinyGPS++ :
TinyGPSPlus gps;
Créez une instance SoftwareSerial sur les broches que vous avez définies précédemment.
SoftwareSerial gpsSerial(RX, TX);
Dans setup(), initialisez le Serial Monitor et la communication série avec le module GPS.
void setup() {
// Serial Monitor
Serial.begin(115200);
// Start Serial 2 with the defined RX and TX pins and a baud rate of 9600
gpsSerial.begin(GPS_BAUD);
Serial.println("Software Serial started at 9600 baud rate");
}
Dans la boucle(), c’est là que vous demandez les informations. Analysez les données du module GPS dans l’objet TinyGPS++ à l’aide de la méthode encode() comme suit.
while (gpsSerial.available() > 0) {
gps.encode(gpsSerial.read());
}
Ensuite, vous pouvez interroger l’objet GPS pour voir si des champs de données ont été mis à jour :
if (gps.location.isUpdated()) {
S’il y a de nouvelles données, nous pouvons les obtenir comme suit :
| Latitude | gps.location.lat() |
| Longitude | gps.location.lng() |
| Vitesse (km/h) | gps.speed.kmph() |
| Altitude (mètres) | gps.altitude.meters() |
| HDOP | gps.hdop.value() |
| Le nombre de satellites visibles | gps.satellites.value() |
| Année | gps.date.année() |
| Mois | gps.date.mois() |
| Jour | gps.date.day() |
| Heure | gps.time.hour() |
| Minutes | gps.time.minute() |
| Secondes | gps.time.second() |
Dans le code, nous récupérons les données et imprimons toutes les informations dans le moniteur série Arduino IDE.
Serial.print("LAT: ");
Serial.println(gps.location.lat(), 6);
Serial.print("LONG: ");
Serial.println(gps.location.lng(), 6);
Serial.print("SPEED (km/h) = ");
Serial.println(gps.speed.kmph());
Serial.print("ALT (min)= ");
Serial.println(gps.altitude.meters());
Serial.print("HDOP = ");
Serial.println(gps.hdop.value() / 100.0);
Serial.print("Satellites = ");
Serial.println(gps.satellites.value());
Serial.print("Time in UTC: ");
Serial.println(String(gps.date.year()) + "/" + String(gps.date.month()) + "/" + String(gps.date.day()) + "," + String(gps.time.hour()) + ":" + String(gps.time.minute()) + ":" + String(gps.time.second()));
Serial.println("");
Tester le code
Téléchargez le code sur votre tableau.

Ensuite, ouvrez le moniteur série à un débit en bauds de 115 200.
Assurez-vous que l’antenne est connectée et que le module ou l’antenne est placé à l’extérieur ou à côté d’une fenêtre afin qu’il puisse recevoir les données des satellites.

La LED bleue du module commencera à clignoter lorsqu’il trouvera une position fixe.

Ouvrez le moniteur série à un débit en bauds de 115 200. Assurez-vous que votre module GPS est placé à l’extérieur ou à côté d’une fenêtre pour obtenir les données des satellites.
Vous obtiendrez des données GPS sur le moniteur série concernant votre position actuelle, votre vitesse, votre altitude, le nombre de satellites visibles HDOP et l’heure.

HDOP signifie Dilution horizontale de précision. Il s’agit d’une mesure de la précision de la localisation. Plus la valeur HDOP est élevée, moins la détermination de la position sera précise. Idéalement, vous devriez obtenir une valeur inférieure à 2. Une valeur inférieure signifie une meilleure précision.
Vous pouvez désormais pousser ce projet plus loin et afficher les données sur un écran OLED, par exemple. Pour apprendre à utiliser un écran OLED avec la carte ESP8266, vous pouvez suivre le tutoriel suivant :
Conclusion
Dans ce didacticiel, vous avez appris à utiliser le module GPS NEO-6M avec l’ESP8266 pour obtenir des données GPS : latitude, longitude, altitude, vitesse, date, heure, nombre de satellites, etc.
La précision des données dépendra de l’endroit où le module est placé et de l’antenne utilisée. Pour de meilleures performances, le capteur doit être placé à l’extérieur ou à côté d’une fenêtre et loin des rues étroites avec des immeubles de grande hauteur. Plus le nombre de satellites visibles est élevé, plus la position sera précise.
Nous espérons que vous avez trouvé ce tutoriel utile. Nous avons des guides pour plus de 20 modules et capteurs avec l’ESP8266, vous pouvez les consulter ci-dessous :
Si vous souhaitez en savoir plus sur l’ESP8266, consultez nos ressources :
Merci d’avoir lu.
Apprenez l’histoire de Raspberry Pi à travers cette vidéo :

-
2 modules GPS, GY-NEO6MV2 NEO-6M module de contrôle de vol GPS
-
GY-NEO6MV2 NEO-6M Lot de 3 modules de commande de vol GPS 3 V-5 V avec antenne en céramique super puissante pour Arduino EEPROM APM 2.5
