console-at.sh
Quand le sketch Arduino semble coupable, adressez-vous directement au modem u-blox du MKR GSM 1400 : ce script Bash envoie une salve de commandes AT classiques et affiche les réponses. Idéal pour vérifier SIM, enregistrement réseau et qualité de signal avant de coder.
Matériel requis
Une Arduino MKR GSM 1400 (microcontrôleur SAMD21, modem cellulaire 2G/GPRS, antenne externe, alimentation par batterie LiPo sur le connecteur J6 ou par USB). Un PC Linux (ou WSL), socat/stty, et un accès TTL au port série du modem (câble USB-TTL 3,3 V sur les broches RX/TX du modem).
Câblage
Croisez TX/RX entre l'adaptateur USB-Série 3,3 V et le modem, masse commune ; attention, le modem est en 3,3 V, jamais en RS-232.
Fonctionnement
stty configure le port en brut à 115200 bauds ; la fonction at() écrit la commande puis lit 5 s de réponse avec timeout. Les commandes AT+CREG/CSQ/COPS/CPIN couvrent diagnostic réseau et SIM.
Exécution
Dans l'IDE Arduino, installez le package Arduino SAMD Boards, sélectionnez la carte MKR GSM 1400, puis téléversez. Les exemples réseau supposent une carte SIM data active insérée, broche antenne vissée, et un réseau 2G encore couvert dans votre région.
Variantes
Remplacez la fonction at() par un vrai terminal interactif (socat -, raw, echo, icrnl $PORT), ou journalisez toutes les réponses dans un fichier pour un diagnostic à distance.
console-at.sh
#!/usr/bin/env bash
# Console AT vers le modem du MKR GSM 1400 (mode bootloader/firmware AT).
# Le modem u-blox est accessible sur le port serie 1 (115200 bauds)
# quand le SAMD21 est en mode bootstrap, ou via un shield TTL.
# Usage : ./console-at.sh /dev/ttyUSB0
set -euo pipefail
PORT="${1:-/dev/ttyUSB0}"
VITESSE=115200
command -v socat >/dev/null || { echo "installez socat (apt install socat)"; exit 1; }
stty -F "$PORT" $VITESSE raw -echo
at() {
printf '%s\r\n' "$1" > "$PORT"
timeout 5 cat "$PORT" | head -n 20
}
echo "== Identite =="
at "AT"
at "AT+GMR" # versions firmware
at "AT+CGMI" # fabricant
echo "== Reseau =="
at "AT+CREG?" # enregistrement 2G (0,1 = ok)
at "AT+CSQ" # qualite signal (RSSI,BER)
at "AT+COPS?" # operateur
echo "== SIM =="
at "AT+CPIN?" # etat du code PIN
echo "Termine."