🛠 Diagnostic AT et qualité de signal

Arduino MKR NB 1500 · avance · Schéma : IMG-mkr-nb-1500-avance-3-mkrnb-diagnostic-at.svg — Console série affichant les réponses AT+CSQ, AT+CEREG? et AT+QENG d'une MKR NB 1500, avec échelle de conversion RSSI en dBm à droite

Objectifs

Dépanner un lien cellulaire avec les commandes AT du module SARA-R410M : état d'enregistrement (AT+CEREG?), qualité radio (AT+CSQ), cellule servante et technologie (AT+QENG). La bibliothèque MKRGSM expose sendModemCommand pour envoyer de l'AT brut sans réécrire de pilote UART. Le modem est sur une UART dédiée (SERCOM4 : GSM_TX PA12, GSM_RX PA13, RTS/CTS PA14/PA15) dont le flow control n'est pas activé par le core — d'où des réponses tronquées sous fort trafic AT.

Matériel

Code complet

// 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);
}

Vérification attendue

AT+CEREG? répond +CEREG: 0,1 (enregistré) ou 0,5 (roaming). AT+CSQ répond +CSQ: 20,99 : premier chiffre 0–31 (RSSI, dBm ≈ -113 + 2×CSQ, donc 20 ≈ -73 dBm, excellent ; < 10 ≈ -93 dBm, limite), 99 = inconnu. AT+QENG indique la RAT (NB-IoT ou LTE-M) et la bande — vérifiez que ce sont bien celles attendues.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels