choix-bande.ino

Arduino MKR NB 1500 · Archivo : choix-bande.ino · Lenguaje : Arduino · Uso : Sélectionner la bande LTE et le mode (CAT-M1 / NB1)

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() {}

← Volver a la ficha