🛠 Position GPS via shield et Serial1
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
- 1 carte MKR NB 1500 + antenne cellulaire + SIM data
- 1 shield ou module GPS NMEA 3,3 V (type MKR GPS / NEO-6M en version 3,3 V) sur Serial1
- Antenne GPS distincte de l'antenne cellulaire, espacées d'au moins quelques cm
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
- Chercher un GPS « intégré » introuvable : sans shield/récepteur externe, il n'y a pas de positionnement sur cette carte (le module NB-IoT ne fournit au mieux qu'une localisation cellulaire très imprécise, non documentée ici).
- Module GPS 5 V sur Serial1 3,3 V : vérifier le niveau logique, un NEO-6M alimenté en 5 V sort du 5 V sur TX.
- Premier fix jamais obtenu en intérieur : le GPS ne capte pas à travers le béton ; tester dehors.
- Antennes GPS et cellulaire collées : l'antenne cellulaire brouille le récepteur GPS, séparez-les.
- Mauvais débit NMEA : certains shields émettent à 38400, ajustez
Serial1.begin.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
attente-lte-nbiot.inoArduinochoix-bande.inoArduinopublish-mqtt-minimal.inoArduinoeconomie-energie.inoArduinogeoloc-cellules.inoArduinotest-coverage.inoArduino