Connecter un module GPS NEO‑6M à l'Arduino Mega : Guide pas à pas
Composants et fournitures
- Arduino Mega 2560 × 1
- Module GPS u-blox NEO-6M × 1
Applications et services en ligne
- Arduino IDE
À propos de ce projet
Il n'existait pas de tutoriel clair pour interfacer un Arduino Mega avec un module NEO-6M. Voici un guide complet.
Coût estimé
- Arduino Mega 2560 : ~30 €
- Module NEO-6M : ~30 €
- Total : ~60 €
Qu'est-ce que le GPS ?
Le Global Positioning System (GPS) est un système de navigation par satellites (au moins 24) fonctionnant par tout temps, partout dans le monde, 24h/24, sans abonnement.
Fonctionnement
Les satellites orbitent deux fois par jour. Chacun émet un signal unique et des paramètres orbitaux. Le récepteur mesure le temps de propagation du signal depuis plusieurs satellites et, par trilatération, calcule sa position exacte (latitude, longitude, altitude avec ≥4 satellites).
Une fois la position connue, le GPS déduit : vitesse, cap, trace, distance parcourue, distance à destination.
Structure du signal GPS
Les satellites émettent au moins deux signaux radio basse puissance (ligne de vue : traversent nuages, verre, plastique ; bloqués par bâtiments, montagnes). Un signal contient :
- Code pseudo-aléatoire : identifiant du satellite.
- Éphémérides : position précise du satellite, santé, date/heure.
- Almanach : positions prévisionnelles de tous les satellites sur la journée.
Module NEO-6M
Le module intègre :
- Puce NEO-6M (u-blox) : suit jusqu'à 22 satellites sur 50 canaux, sensibilité -161 dBm, consommation 45 mA (11 mA en mode économie). TTFF < 1 s. Broches 0,1" pour UART.
- LED de fix : clignotement 1 Hz = fix obtenu ; pas de clignotement = recherche satellites.
- Régulateur 3,3 V (MIC5205) : alimente la puce 2,7–3,6 V ; broches tolérantes 5 V → connexion directe à l'Arduino.
- EEPROM HK24C32 (4 Ko, I²C) + batterie bouton rechargeable : conservent les données de démarrage à chaud (BBR : horloge, dernière position, config). Permet TTFF ~1 s. Batterie charge automatiquement, tient 2 semaines sans alimentation.
Brochage du NEO-6M
- GND → GND Arduino
- TxD → Rx Arduino (série)
- RxD → Tx Arduino (série)
- VCC → 5 V Arduino (régulateur intégré)
Arduino Mega 2560
Microcontrôleur ATmega2560 : 54 E/S numériques (15 PWM), 16 entrées analogiques, 4 ports série matériels (Serial, Serial1, Serial2, Serial3), 16 MHz, USB, jack DC, régulateurs 5 V/3,3 V, reset, LED intégrée (pin 13).
Description des broches principales (Mega)
- 5 V / 3,3 V : sorties régulées (3,3 V max 50 mA).
- GND : 5 broches ground.
- Reset : bascule à LOW pour réinitialiser.
- Vin : entrée 7–20 V (jack DC).
- Série : Serial0 (Rx0/Tx1), Serial1 (Rx19/Tx18), Serial2 (Rx17/Tx16), Serial3 (Rx15/Tx14).
- Interruptions externes : 6 broches (0,3,21,20,19,18).
- LED : pin 13.
- AREF : référence analogique.
- Analogiques A0–A15 : 10 bits, utilisables en E/S numériques.
- I²C : SDA pin 20, SCL pin 21.
- SPI : MISO 50, MOSI 51, SCK 52, SS 53.
Arduino IDE
1. Installer la bibliothèque TinyGPS (dossier Documents/Arduino/libraries, sans tiret).
2. Ouvrir l'IDE, copier le code ci-dessous.
3. Outils → Carte → Arduino Mega 2560.
4. Outils → Port → sélectionner le port COM.
5. Téléverser.
Connexions
Arduino Mega → NEO-6M
- 3,3 V → VCC
- GND → GND
- Tx1 (pin 18) → Rx
- Rx1 (pin 19) → Tx
On peut aussi utiliser Serial2 (Tx2=16/Rx2=17) ou Serial3 (Tx3=14/Rx3=15).
Résultat
Le moniteur série affiche latitude et longitude (6 décimales) à chaque trame NMEA décodée.
Code
Sketch principal (utilise Serial1)
#include <TinyGPS.h>
float lat, lon;
TinyGPS gps;
void setup() {
Serial.begin(57600);
Serial.println("Signal GPS reçu :");
Serial1.begin(9600);
}
void loop() {
while (Serial1.available()) {
if (gps.encode(Serial1.read())) {
gps.f_get_position(&lat, &lon);
Serial.print("Position: ");
Serial.print("Latitude: "); Serial.print(lat,6); Serial.print(",");
Serial.print("Longitude: "); Serial.println(lon,6);
}
}
}
Versions pour Serial2 et Serial3 fournies en commentaire dans le code source.
Schéma
Schéma de câblage (image fournie).
Processus de fabrication
- Photographie Haute Vitesse : Capturez les Gouttes d'Eau avec Arduino Nano
- Station météo interactive Nextion HMI avec Arduino Mega et capteurs
- Module GPS u-blox LEA‑6H 02 : guide d'intégration Arduino et Python
- Lire température et humidité avec DHT11 sur Blynk – Tutoriel Arduino pas à pas
- Générer des Sons Musicaux avec Arduino : Guide Pas à Pas
- Connecter Arduino à NMEA‑0183 : Guide étape par étape
- Projet Arduino GPS + Écran Tactile TFT : Affichage Position Temps Réel
- Maîtriser Modbus sur Arduino : Guide étape par étape
- Comment enregistrer des données GPS sur carte MicroSD avec Visuino sur Arduino Nano