Module GPS GY-NEO6MV2

6 000 CFA

Catégorie :
Le GY-NEO6MV2 est un module de géolocalisation par satellite basé sur la puce haute performance u-blox NEO-6M. Il est équipé d’une petite antenne céramique externe capable de capter les signaux des satellites GPS en orbite. Le module calcule en temps réel la position géographique exacte (latitude, longitude, altitude) ainsi que la date, l’heure atomique et la vitesse de déplacement. Il communique ces informations sous forme de phrases normalisées (protocole NMEA) via une liaison série (UART). [1, 2, 3, 4, 5]
2. Pourquoi choisir ce capteur ?
  • Géolocalisation mondiale et autonome : Il permet d’obtenir des coordonnées précises n’importe où sur Terre, sans avoir besoin d’une connexion Wi-Fi ou cellulaire, ce qui est parfait pour le suivi de véhicules ou d’objets mobiles.
  • Grande précision temporelle : En plus de la position, il fournit l’heure exacte synchronisée sur les horloges atomiques des satellites, idéale pour l’horodatage précis de données.
  • Consommation maîtrisée et compacité : Il intègre une pile de sauvegarde (EEPROM) qui conserve les données des satellites récemment captés, permettant un redémarrage à chaud très rapide (fix en quelques secondes).

Code pour votre projet : ESP32 + Module GPS + Servomoteur
Note : Pour extraire facilement les coordonnées de la masse de données brutes envoyée par le GPS, on utilise la bibliothèque standard TinyGPS++ (à installer depuis le gestionnaire de bibliothèques de l’IDE Arduino). [1]
Dans cette configuration, le servomoteur peut servir d’indicateur physique de zone (par exemple, pointer vers 90° si le système entre dans un périmètre spécifique / barrière géographique virtuelle, ou pointer vers 0° sinon).
cpp
#include <ESP32Servo.h>
#include <TinyGPS++.h>
#include <HardwareSerial.h>

// Déclaration de l'objet GPS et de la liaison série matérielle de l'ESP32
TinyGPSPlus gps;
HardwareSerial liaisonGPS(2); // Utilisation du port série matériel UART2 de l'ESP32

Servo monServo;
const int brocheServo = 13;   // Servomoteur branché sur la broche GPIO 13

// Coordonnées cibles pour une barrière virtuelle (Exemple)
const double LATITUDE_CIBLE = 48.8584; // Exemple : Tour Eiffel
const double LONGITUDE_CIBLE = 2.2945;
const double RAYON_METRES = 100.0;     // Périmètre de 100 mètres autour de la cible

void setup() {
  Serial.begin(115000); // Moniteur série de l'ordinateur
  
  // Initialisation de la liaison avec le GPS : 9600 bauds est la vitesse d'usine du NEO-6M
  // RX = GPIO 16, TX = GPIO 17 sur l'ESP32
  liaisonGPS.begin(9600, SERIAL_8N1, 16, 17);

  // Configuration du servomoteur
  ESP32PWM::allocateTimer(0);
  monServo.setPeriodHertz(50);
  monServo.attach(brocheServo, 500, 2400);
  monServo.write(0); // Position initiale au repos
  
  Serial.println("Recherche des signaux satellites GPS...");
}

void loop() {
  // Lecture des données envoyées par le module GPS
  while (liaisonGPS.available() > 0) {
    if (gps.encode(liaisonGPS.read())) {
      // Si une nouvelle position valide est calculée
      if (gps.location.isValid()) {
        double lat = gps.location.lat();
        double lng = gps.location.lng();
        
        Serial.print("Latitude : "); Serial.print(lat, 6);
        Serial.print(" | Longitude : "); Serial.println(lng, 6);

        // Calcul de la distance entre la position actuelle et la cible
        double distance = TinyGPSPlus::distanceBetween(lat, lng, LATITUDE_CIBLE, LONGITUDE_CIBLE);
        
        // Si le système est dans la zone définie
        if (distance <= RAYON_METRES) {
          Serial.println("Zone atteinte ! Activation du mécanisme.");
          monServo.write(90); // Le servomoteur s'active
        } else {
          monServo.write(0);  // Le servomoteur revient au repos
        }
      }
    }
  }
}

Avis

Il n’y a pas encore d’avis.

Soyez le premier à laisser votre avis sur “Module GPS GY-NEO6MV2”
Retour en haut