gps-serial1.ino

Arduino Due · Fichier : gps-serial1.ino · Langage : Arduino · Usage : Lire un module GPS sur l'UART1 de la Due

La Due aligne quatre UART matériels : Serial1 (broches 19/18) reste libre pendant que l'USB sert au debug. Le filtre garde uniquement la trame NMEA GGA, la plus utile (heure, latitude, longitude).

Matériel requis

Une Arduino Due (AT91SAM3X8E, ARM Cortex-M3 84 MHz) reliée par USB à son port « Programming ». Attention : logique 3,3 V, jamais 5 V sur les broches. 1 module GPS TTL (GP-20U7, NEO-6M) à 3,3 V ou 5 V selon modèle.

Branchement

TX du GPS → RX1 (broche 18), masse commune ; alimentation 3,3/5 V du module.

Fonctionnement

Les caractères s'accumulent jusqu'au saut de ligne ; les trames $GPGGA sont tronquées et affichées sur le moniteur USB. Dans l'Arduino IDE, choisissez « Arduino Due (Programming Port) » puis Téléverser ; le moniteur série tourne à la vitesse choisie dans le code.

Pour aller plus loin

Analysez aussi $GPRMC (vitesse, cap) ou envoyez la position vers un serveur via un module Ethernet.

gps-serial1.ino

// GPS 9600 bauds sur Serial1 (TX1=19, RX1=18), extraction du $GPGGA.
void setup() {
  Serial.begin(9600);   // USB debug
  Serial1.begin(9600);  // USART1: broches 19 (TX1) / 18 (RX1)
  Serial.println(F("En attente de trames GPS..."));
}

void loop() {
  static String ligne = "";
  while (Serial1.available()) {
    char c = Serial1.read();
    if (c == '\r') continue;
    if (c == '\n') {
      if (ligne.startsWith("$GPGGA")) {
        // $GPGGA,heure,lat,N,lon,E,...
        Serial.println(ligne.substring(0, 40));
      }
      ligne = "";
    } else ligne += c;
  }
}

← Retour à la fiche