gps-serial1.ino
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;
}
}