gps-serial1.ino

Arduino Due · Archivo : gps-serial1.ino · Lenguaje : Arduino · Uso : Lire un module GPS sur l'UART1 de la Due

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;
  }
}

← Volver a la ficha