🛠 Diagnostic AT du module et version de firmware
Objetivos
Solucionar problemas de la parte celular a bajo nivel: enviar comandos AT al módulo u-blox SARA-U201 para leer la potencia de la señal, el operador registrado, la versión del firmware del módulo y verificar el estado de la SIM. Cuando MKRGSM falla en bucle sin un mensaje claro, los comandos AT lo dicen todo: SIM ausente, PIN bloqueado, red no encontrada, APN rechazado.
Material
- Tarjeta Arduino MKR GSM 1400 + antena + LiPo + SIM sin PIN
- Núcleo Arduino SAMD + biblioteca MKRGSM (para
sendTestRequest, que serializa los AT sin que tengamos que controlar el UART dedicado al módem) - Nota: el módem está en un UART dedicado (
SerialGSM/Serial2, SERCOM4 con flujo RTS/CTS, pines 26-29 de la variante); lo más sencillo es usar la biblioteca en lugar de desviar este puerto.
Código completo
#include <MKRGSM.h>
#include "arduino_secrets.h"
const char PINNUMBER[] = SECRET_PINNUMBER;
GSM gsmAccess;
void at(const char* cmd) {
Serial.print(">> "); Serial.println(cmd);
char rep[128] = {0};
// sendTestRequest envoie la chaine brute au module et recupere la reponse.
gsmAccess.sendTestRequest(cmd, rep, sizeof(rep));
Serial.print("<< "); Serial.println(rep);
}
void setup {
Serial.begin(9600);
while (!Serial) {}
at("AT"); // vie du module : doit repondre OK
at("AT+CGMR"); // version du firmware du module
at("AT+CPIN?"); // etat SIM : READY, SIM PIN, ou SIM NOT INSERTED
at("AT+CSQ"); // signal : 0..31,99 ; 99 = aucun
at("AT+COPS?"); // operateur enregistre et mode (0 = pas enregistre)
at("AT+CGREG?"); // etat d'enregistrement GPRS
at("AT+CGDCONT?"); // APN actif
// Puis tentative normale de demarrage pour croiser les indices
int r = gsmAccess.begin(PINNUMBER);
Serial.print("gsmAccess.begin = "); Serial.println(r);
}
void loop {}
Verificación esperada
AT responde OK; AT+CPIN? devuelve READY (si no: SIM mal insertada, o PIN a desbloquear con AT+CPIN="1234"); AT+CSQ da un valor razonable entre 0 y 31 (99 = sin antena/sin red); AT+COPS? muestra el operador; AT+CGMR muestra la versión del firmware del SARA-U201, anótala en tu registro de mantenimiento. Cruza esto con el código de retorno de begin: 1 = SIM no inicializada, 2 = red no encontrada, 3 = error GPRS (ver MKRGSM).
Errores frecuentes
- Enviar comandos AT en paralelo con MKRGSM: el módulo es controlado por la biblioteca, los comandos brutos fuera de su contexto corrompen el estado; hazlo todo mediante
sendTestRequesto reinicia todo. - > lgo seguro.
- Confundir los códigos:
AT+CSQtambién devuelve el bit de error; solo el primer número cuenta para la señal. - PIN bloqueado definitivamente (PUK) por muchos intentos fallidos de
AT+CPIN: desbloquéalo con el PUK desde un teléfono, no desde la tarjeta. - Respuestas multilínea truncadas: prevé un búfer de respuesta suficientemente grande y busca «OK»/«ERROR» al final de la respuesta.
- La red 2G está en proceso de apagado: un
AT+COPS?desesperadamente vacío puede significar simplemente que el operador ha apagado la banda utilizada por la tarjeta.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
gsm-connexion.inoArduinoenvoi-sms.inoArduinohttp-get.inoArduinohttp-post-capteur.inoArduinoheure-gsm.inoArduinoappels.inoArduino