🛠 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

Objectifs

Récupérer une position GPS et la remonter par le réseau cellulaire. Attention : la MKR NB 1500 n'embarque pas de récepteur GPS documenté — le module SARA-R410M-02B de cette carte n'a pas de GNSS confirmé par la fiche officielle. La méthode standard, utilisée par les projets communautaires de traceur, est un shield GPS (ou récepteur NMEA externe) sur le port Serial1 (SERCOM5, RX PB23 / TX PB22).

Matériel

Code complet

// Position NMEA sur Serial1 + log série — 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;
    }
  }
}

Vérification attendue

En extérieur, à vue de ciel, la console défile en trames NMEA puis les trames $GPGGA contiennent latitude/longitude après le premier fix (30 à 60 s à froid). Une fois validé, remplacer gsm.shutdown par l'attachement réseau et publier la position en MQTT (tutoriel suivant).

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels