choix-bande.ino
Un módulo LPWA sin red suele estar mal configurado: este sketch lee y fuerza la máscara de bandas LTE (B3/B7/B8/B20 para Francia) y el modo CAT-M1/NB1 del SARA-R4 del MKR NB 1500. Se ejecuta una vez; el ajuste persiste en flash.
Hardware
Una Arduino MKR NB 1500 (microcontrolador SAMD21, módem u-blox LTE-M/NB-IoT, antena externa, alimentación LiPo en J6 o USB). MKR NB 1500, SIM IoT, antena multibanda que cubra las bandas elegidas.
Cableado
Sin cableado; el programa se flashea una vez y el módulo guarda la configuración de radio en la memoria flash.
Funcionamiento
La máscara de bandas es un hexadecimal bit a bit (b0=B1...). setBandMask y setNetworkSettings escriben en el perfil del módem; un reinicio aplica los cambios de radio.
Ejecución
Instala el paquete Arduino SAMD Boards y la librería MKRNB, selecciona la placa y carga. Prevé una SIM IoT (LTE-M o NB1) activada y buena recepción: la conexión a la red puede tardar varios minutos.
Variantes
Adapta la máscara a tu operador/región (B12/B13 en zonas rurales de EE. UU.) o prueba cada banda por separado para descubrir una antena mediocre.
choix-bande.ino
// Selection bande + mode radio du SARA-R4 (MKR NB 1500, MKRNB).
#include <MKRNB.h>
const char PIN_SIM[] = "0000";
NB nb;
// Bandes Europe Telecom France : B3/B7/B8/B20
// Modes : "3" = CAT-M1, "4" = NB1, "3,4" = les deux
const char BANDES[] = "800000000020001B"; // B3,B7,B8,B20 (masque hexa)
const char MODE[] = "3,4";
void setup() {
Serial.begin(9600);
while (!Serial);
if (nb.begin(PIN_SIM) != NB_READY) while (true);
Serial.println(F("Lecture bande courante..."));
Serial.println(nb.getBandMask());
Serial.println(F("Application du masque de bandes..."));
if (nb.setBandMask(BANDES) == RIL_OK) Serial.println(F("Bandes OK"));
else Serial.println(F("Bandes refusees"));
Serial.println(F("Mode radio..."));
if (nb.setNetworkSettings(MODE) == RIL_OK) Serial.println(F("Mode OK"));
Serial.println(F("Reinitialisation modem pour appliquer..."));
nb.restart();
Serial.println(F("Relancez apres reconnexion du port serie."));
}
void loop() {}