ESP8266 NODEMCU: Module GPS NEO-M8N (Arduino IDE)

ESP8266 NODEMCU: Module GPS NEO-M8N (Arduino IDE)

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.

ESP8266 Nodemcu avec module GPS NEO-M8N Arduino IDE

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.

Module néo-M8N-GPS

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é.

Antennes pour les modules GPS

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!

ESP8266 NODEMCU Module GPS NEO M8N Arduino IDE

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).

Câblage du module GPS NEO-M8N dans le diagramme du circuit Nodemcu ESP8266

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.

Installation de la bibliothèque TinyGPSPlus IDE Arduino

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

ESP8266 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.

ESP8266 Obtenez les données GPS de Neo M8N

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 :

YouTube video

  • 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