🛠 Position GPS via shield et Serial1
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
- 1 placa MKR NB 1500 + antena celular + SIM de datos
- 1 shield o módulo GPS NMEA 3,3 V (tipo MKR GPS / NEO-6M en versión 3,3 V) en Serial1
- Antena GPS distinta de la antena celular, separadas al menos unos pocos cm
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
- Buscar un GPS «integrado» inexistente: sin shield/receptor externo, no hay posicionamiento en esta placa (el módulo NB-IoT solo proporciona, en el mejor de los casos, una localización celular muy imprecisa, no documentada aquí).
- Módulo GPS de 5 V en Serial1 de 3,3 V: verifique el nivel lógico, un NEO-6M alimentado a 5 V entrega 5 V en TX.
- Nunca se obtiene la primera fijación en interiores: el GPS no capta a través del hormigón; pruebe al aire libre.
- Antenas GPS y celular pegadas: la antena celular interfiere con el receptor GPS, sepárelas.
- Velocidad de transmisión NMEA incorrecta: algunos shields emiten a 38400, ajuste
Serial1.begin.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
attente-lte-nbiot.inoArduinochoix-bande.inoArduinopublish-mqtt-minimal.inoArduinoeconomie-energie.inoArduinogeoloc-cellules.inoArduinotest-coverage.inoArduino