Apprenez à interfacer le module GPS NEO-M8N avec la carte ESP8266 NODEMCU programmée avec Arduino IDE pour obtenir des données GPS: latitude, longitude, altitude, temps UTC, nombre de satellites visibles, et plus encore.

En résumé, dans ce tutoriel, vous apprendrez à:
- Câblez le module GPS NEO-M8N à l’ESP8266 via la série;
- Analyser les données brutes pour obtenir des informations GPS sélectionnées et lisibles;
- Obtenez votre emplacement actuel, votre date, votre heure et plus…
Table des matières
Nous couvrirons les sujets suivants:
Présentation du module GPS NEO-M8N
Le module GPS NEO-M8N est l’un des récepteurs GPS les plus populaires utilisés avec les microcontrôleurs dans les projets de navigation et de suivi. Il peut obtenir des données sur la latitude, la longitude, l’altitude et le temps.
Il prend en charge plusieurs systèmes satellites, y compris GPS, Galileo, Glonass et Beidou. Il offre un meilleur suivi des satellites que le NEO-6M, ce qui le rend plus fiable dans des conditions difficiles.

Selon la fiche technique, il a une précision de position horizontale de 2,5 à 4 mètres et des temps de démarrage rapides (1 seconde pour le démarrage à chaud, 26 à 57 secondes pour le démarrage à froid – il est perfectionné des temps plus longs si vous êtes proche des bâtiments).
Le module comprend une batterie de sauvegarde, une EEPROM intégrée et un indicateur LED qui clignote lorsqu’un correctif de position est atteint.
Ce module est généralement livré avec une antenne GPS en céramique. Mais, vous pouvez le changer en toute autre antenne compatible qui pourrait mieux convenir à votre projet. Par exemple, j’aime utiliser celui à droite dans l’image ci-dessous car il est étanche, et l’antenne est livrée avec un long câble qui permet plus de flexibilité.

Le module GPS NEO-M8N communique avec un microcontrôleur utilisant le protocole de communication série et fonctionne avec des phrases NMEA standard. NMEA signifie National Marine Electronics Association, et dans le monde du GPS, il s’agit d’un format de données standard soutenu par les fabricants GPS.
Où acheter?
Vous pouvez consulter notre page d’outils de conseiller Maker pour comparer le prix du module du récepteur GPS NEO-M8N dans différents magasins:
Vous pouvez utiliser les liens précédents ou aller directement à makeradvisor.com/tools pour trouver toutes les pièces de vos projets au meilleur prix!

Câblage du module GPS NEO-M8N à l’ESP8266 NODEMCU
Pour communiquer avec le module GPS NEO-6M, nous utiliserons Software Serial, afin que vous puissiez utiliser tous les GPIO disponibles. Nous utiliserons: GPIO 14 (D5) et GPIO 12 (D6).

Lecture recommandée: ESP8266 RÉFÉRENCE DE PINOOUT: Quelles broches GPIO devez-vous utiliser?
| Module GPS NEO-6M | ESP8266 NODEMCU |
| VCC | 3V3 |
| Rx | GPIO 12 (D6) |
| TX | GPIO 14 (D5) |
| GND | GND |
Installation de la bibliothèque TinyGPSPlus
Nous programmerons l’ESP8266 Nodemcu à l’aide d’Arduino IDE. Assurez-vous que les planches ESP8266 sont installées en suivant ce guide: Installation de la carte ESP8266 dans Arduino IDE 2 (Windows, Mac OS X, Linux).
Pour décoder les phrases NMEA reçues par le module GPS, nous utiliserons la bibliothèque TinyGPSPlus. Installez-le avant de continuer.
Dans le Arduino IDE, allez dans Sketch> Inclure la bibliothèque> Gérer les bibliothèques ou cliquez sur l’icône du gestionnaire de bibliothèque dans la barre latérale gauche.
Recherchez TinyGPSPlus et installez la bibliothèque par Mikal Hart.

ESP8266 Nodemcu avec le module GPS NEO-M8N – Obtenir des données GPS

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-m8n-gps-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
#define RX 14
#define TX 12
#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 la série logicielle et le taux de bauds du module GPS.
// Define the RX and TX pins for Software Serial 2
#define RX 14
#define TX 12
#define GPS_BAUD 9600
Ensuite, vous créez un objet TinyGPS ++:
TinyGPSPlus gps;
Créez une instance de logiciel sur les broches que vous avez définies plus tôt.
SoftwareSerial gpsSerial(RX, TX);
Dans la configuration (), initialisez le moniteur série 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 (), vous demandez les informations. Analyser les données du module GPS dans l’objet TinyGPS ++ en utilisant 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 l’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.year () |
| Mois | gps.date.month () |
| Jour | gps.date.day () |
| Heure | gps.time.hour () |
| Minutes | gps.time.Minute () |
| Secondes | gps.time.second () |
Dans le code, nous obtenons les données et imprimons toutes les informations du 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 carte ESP8266. Ouvrez le moniteur en série à un taux en bauds de 115200. Assurez-vous que votre module GPS est placé à l’extérieur ou à côté d’une fenêtre pour obtenir des données à partir de satellites.
Remarque: vous devrez peut-être attendre quelques secondes ou minutes jusqu’à ce que le module puisse obtenir un correctif de position.

Vous obtiendrez des données sur le moniteur en série sur votre emplacement actuel, votre vitesse, votre altitude, votre nombre de satellites visibles HDOP et votre temps.
HDOP signifie dilution horizontale de précision. Il s’agit d’une mesure de la précision de fixation de position. Plus la valeur HDOP est élevée, moins le correctif de position sera précis. Idéalement, vous devriez obtenir une valeur inférieure à 2. Une valeur inférieure signifie une meilleure précision.
Emballage
Dans ce guide, vous avez appris à utiliser le module GPS NEO-M8N avec l’ESP8266 et comment obtenir des informations sur l’emplacement, le temps, l’altitude, la vitesse, le nombre de satellites, etc.
Nous espérons que vous avez trouvé ce guide utile. Nous avons des guides pour d’autres modules que vous pourriez trouver utiles:
Si vous souhaitez en savoir plus sur l’ESP8266, assurez-vous de consulter nos ressources:
Merci d’avoir lu.
Apprenez l’histoire de Raspberry Pi à travers cette vidéo :

-
GY-NEO6MV2 NEO-6M Lot de 2 modules de commande de vol GPS 3 V-5 V avec antenne en céramique super puissante pour Arduino EEPROM APM 2.5
-
Hztuang Module GPS -GPSV3 NEO-M8N pour contrôleur de vol PX4 V2.4.5 APM2.56 1,65-3,6 V
