🛠 Diagnostic AT du module et version de firmware
Objectifs
Dépanner la partie cellulaire au niveau bas niveau : envoyer des commandes AT au module u-blox SARA-U201 pour lire la puissance de signal, l'opérateur enregistré, la version de firmware du module, et vérifier l'état de la SIM. Quand MKRGSM échoue en boucle sans message clair, les AT disent tout : SIM absente, PIN bloqué, réseau introuvable, APN refusé.
Matériel
- Carte Arduino MKR GSM 1400 + antenne + LiPo + SIM sans PIN
- Core Arduino SAMD + bibliothèque MKRGSM (pour
sendTestRequest, qui sérialise les AT sans qu'on pilote le UART dédié au modem) - Note : le modem est sur un UART dédié (
SerialGSM/Serial2, SERCOM4 avec flux RTS/CTS, broches 26-29 de la variante) ; le plus simple est de passer par la bibliothèque plutôt que de détourner ce port.
Code complet
#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 chaîne brute au module et recupere la réponse.
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?"); // état 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?"); // état d'enregistrement GPRS
at("AT+CGDCONT?"); // APN actif
// Puis tentative normale de démarrage pour croiser les indices
int r = gsmAccess.begin(PINNUMBER);
Serial.print("gsmAccess.begin = "); Serial.println(r);
}
void loop {}
Vérification attendue
AT répond OK ; AT+CPIN? renvoie READY (sinon : SIM mal insérée, ou PIN à débloquer avec AT+CPIN="1234") ; AT+CSQ donne une valeur 0-31 raisonnable (99 = pas d'antenne/pas de réseau) ; AT+COPS? affiche l'opérateur ; AT+CGMR affiche la version de firmware du SARA-U201, à noter dans votre registre de maintenance. Croiser avec le code retour de begin : 1 = SIM non initialisée, 2 = réseau non trouvé, 3 = erreur GPRS (voir MKRGSM).
Erreurs fréquentes
- Envoyer des AT en parallèle de MKRGSM : le module est piloté par la bibliothèque, les commandes brutes hors de son contexte corrompent l'état ; tout faire via
sendTestRequestou tout redémarrer. - >
- Confondre les codes :
AT+CSQrenvoie aussi le bit error ; seul le premier nombre compte pour le signal. - PIN bloqué définitivement (PUK) à force de mauvais
AT+CPIN: débloquer avec le PUK depuis un téléphone, pas depuis la carte. - Réponses multilignes tronquées : prévoir un buffer de réponse assez grand et chercher « OK »/« ERROR » en fin de réponse.
- 2G en cours d'extinction : un
AT+COPS?désespérément vide peut simplement signifier que l'opérateur a éteint la bande utilisée par la carte.
Autres tutoriels pour cette carte
Exemples de code pour cette carte
gsm-connexion.inoArduinoenvoi-sms.inoArduinohttp-get.inoArduinohttp-post-capteur.inoArduinoheure-gsm.inoArduinoappels.inoArduino