🛠 Diagnostic AT et qualité de signal
Objetivos
Solucionar problemas de un enlace celular con los comandos AT del módulo SARA-R410M: estado de registro (AT+CEREG?), calidad de radio (AT+CSQ), célula servidora y tecnología (AT+QENG). La biblioteca MKRGSM expone sendModemCommand para enviar comandos AT sin reescribir un controlador UART. El módem está en una UART dedicada (SERCOM4: GSM_TX PA12, GSM_RX PA13, RTS/CTS PA14/PA15) cuyo control de flujo no está activado por el core, lo que provoca respuestas truncadas bajo un alto tráfico AT.
Hardware
- 1 tarjeta MKR NB 1500 + antena + SIM de datos
- Cable micro-USB + consola serie
- Biblioteca MKRGSM (el comando de sondeo AT está disponible en ella)
Código completo
// Diagnostic AT periodique — MKR NB 1500
#include <MKRGSM.h>
#include "arduino_secrets.h"
const char PINNUMBER[] = SECRET_PINNUMBER;
GSM gsm;
void setup {
Serial.begin(9600);
while (!Serial);
bool ok = false;
while (!ok) {
if (gsm.begin(PINNUMBER) == GSM_READY) ok = true;
else delay(3000);
}
}
void loop {
Serial.println(F("--- Diagnostic ---"));
Serial.println(F("Enregistrement :"));
gsm.sendModemCommand("AT+CEREG?", &Serial); // 0,1 = enregistre, 0,5 = en roaming
Serial.println(F("Qualite signal :"));
gsm.sendModemCommand("AT+CSQ", &Serial); // +CSQ: rssi,ber
Serial.println(F("Cellule/RAT :"));
gsm.sendModemCommand("AT+QENG=\"servingcell\"", &Serial);
delay(30000);
}
Verificación esperada
AT+CEREG? responde +CEREG: 0,1 (registrado) o 0,5 (roaming). AT+CSQ responde +CSQ: 20,99: el primer dígito es 0–31 (RSSI, dBm ≈ -113 + 2×CSQ, por lo tanto 20 ≈ -73 dBm, excelente; < 10 ≈ -93 dBm, límite), 99 = desconocido. AT+QENG indica la RAT (NB-IoT o LTE-M) y la banda — verifique que sean las esperadas.
Errores frecuentes
- Interpretar CSQ como un porcentaje: es una escala logarítmica de 0–31; 99 significa «sin medición», no «señal cero».
- Respuestas AT incompletas o corruptas: la UART del módem no utiliza RTS/CTS (bug abierto del core); limite el volumen de comandos AT y añada pausas.
- El módulo se bloquea tras un reinicio por software (hilo del foro «SARA Modem freezes when restarted»): prefiera el apagado limpio (
shutdown) o el corte de alimentación al reiniciar mediante AT. sendModemCommandsin flujo de salida: asegúrese de pasar&Serialpara ver las respuestas.- En caso de fallo persistente, la fiabilidad histórica de MKRGSM es conocida (issue #66): contraste con la biblioteca MKRNB antes de declarar la tarjeta inservible.
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