console-at.sh
Cuando el sketch de Arduino parece culpable, habla directamente con el módem u-blox del MKR GSM 1400: este script Bash lanza una salva de comandos AT clásicos y muestra las respuestas. Ideal para revisar SIM, registro de red y señal antes de programar.
Hardware
Una Arduino MKR GSM 1400 (microcontrolador SAMD21, módem celular 2G/GPRS, antena externa, alimentada por batería LiPo en el conector J6 o por USB). Un PC Linux (o WSL), socat/stty y acceso TTL al puerto serie del módem (cable USB-TTL de 3,3 V a los pines RX/TX del módem).
Cableado
Cruza TX/RX entre el adaptador USB-serie de 3,3 V y el módem, masa común; el módem es de 3,3 V, nunca RS-232.
Funcionamiento
stty deja el puerto en crudo a 115200 baudios; at() escribe la orden y lee 5 s con timeout. AT+CREG/CSQ/COPS/CPIN cubren red y SIM.
Ejecución
En el IDE de Arduino, instala el paquete Arduino SAMD Boards, selecciona la placa MKR GSM 1400 y carga. Los ejemplos de red suponen una SIM de datos activa insertada, la antena enroscada y cobertura 2G todavía disponible en tu zona.
Variantes
Sustituye at() por un terminal interactivo real (socat -, raw, echo, icrnl $PORT) o guarda las respuestas en un archivo.
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."