gps-serial1.ino
La Due dispone de cuatro UART por hardware: Serial1 (pines 19/18) queda libre mientras el USB sirve para depurar. El filtro guarda solo la frase NMEA GGA, la más útil (hora, latitud, longitud).
Hardware necesario
Un Arduino Due (AT91SAM3X8E, ARM Cortex-M3 a 84 MHz) conectado por USB a su puerto « Programming ». Ojo: lógica de 3,3 V, nunca 5 V en los pines. 1 módulo GPS TTL (GP-20U7, NEO-6M) a 3,3 V o 5 V según modelo.
Cableado
TX del GPS → RX1 (pin 18), masa común; alimentación del módulo a 3,3/5 V.
Funcionamiento
Los caracteres se acumulan hasta el salto de línea; las tramas $GPGGA se truncan y muestran en el monitor USB. En el Arduino IDE, elija « Arduino Due (Programming Port) » y Subir; el monitor serie va a la velocidad fijada en el código.
Para ir más lejos
Procese también $GPRMC (velocidad, rumbo) o envíe la posición a un servidor por 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;
}
}