🛠 Position GPS via shield et Serial1

Arduino MKR NB 1500 · intermediaire · Schéma : IMG-mkr-nb-1500-intermediaire-3-mkrnb-gps-shield.svg — MKR NB 1500 avec un shield GPS superposé communiquant en série sur les broches TX/RX (Serial1), antenne GPS et antenne cellulaire distinctes

Objetivos

Obtener una posición GPS y enviarla a través de la red celular. Atención: la MKR NB 1500 no incluye un receptor GPS documentado — el módulo SARA-R410M-02B de esta placa no tiene GNSS confirmado por la ficha oficial. El método estándar, utilizado por los proyectos comunitarios de rastreadores, es un shield GPS (o receptor NMEA externo) en el puerto Serial1 (SERCOM5, RX PB23 / TX PB22).

Material

Código completo

// Position NMEA sur Serial1 + log serie — MKR NB 1500
#include <MKRGSM.h>
GSM gsm;                       // pour eteindre le modem pendant les essais

void setup {
  Serial.begin(9600);          // console USB
  Serial1.begin(9600);         // shield GPS (baud typique NEO-6M : 9600)
  while (!Serial);
  gsm.begin;
  gsm.shutdown;              // radio cellulaire coupee pour ce test
}

String ligne;
void loop {
  while (Serial1.available) {
    char c = Serial1.read;
    if (c == '\n') {
      if (ligne.startsWith("$GPGGA")) {   // trame position
        Serial.println(ligne);
        // extraire lat/lon : champs 2 a 6 de la trame GPGGA
      }
      ligne = "";
    } else if (ligne.length < 120) {
      ligne += c;
    }
  }
}

Verificación esperada

Al aire libre, a la vista del cielo, la consola muestra tramas NMEA y luego las tramas $GPGGA contienen latitud/longitud tras la primera fijación (30 a 60 s en frío). Una vez validado, reemplace gsm.shutdown por la conexión a la red y publique la posición en MQTT (siguiente tutorial).

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales