attente-lte-nbiot.ino

Arduino MKR NB 1500 · Archivo : attente-lte-nbiot.ino · Lenguaje : Arduino · Uso : Vérifier l'attachement LTE-M/NB-IoT et le mode réseau

El MKR NB 1500 tarda en unirse a una red LTE-M o NB-IoT: este bucle de unión espera hasta dos minutos, imprime el estado en cada sondeo y confirma operador y calidad de señal. La base de todo proyecto LPWA fiable.

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). Una SIM IoT de datos (LTE-M o NB1 según operador), la antena LTE enroscada y un cable micro-USB.

Cableado

Sin cableado externo: SIM insertada, antena colocada, alimentación USB; asegura buena recepción (sótanos = fallo típico).

Funcionamiento

nb.begin() arranca el módem u-blox SARA-R4. getStatus() devuelve el estado de la pila de red; el bucle sondea cada 2 s en 60 intentos. signalQuality() informa del RSSI del módulo.

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

Fuerza la tecnología con nb.setNetworkSettings("3") solo para NB-IoT, o añade un reinicio del módem tras cinco intentos fallidos.

attente-lte-nbiot.ino

// Attachement reseau LTE-M ou NB-IoT avec le MKR NB 1500 (MKRNB).
#include <MKRNB.h>

const char PIN_SIM[] = "0000";
const char APN[] = "iot.1nce.net"; // APN IoT de votre operateur

NB nb;
NBClient client;

void setup() {
  Serial.begin(9600);
  while (!Serial);
  Serial.println(F("Init modem NB..."));
  if (nb.begin(PIN_SIM) != NB_READY) {
    Serial.println(F("Modem KO : verif. SIM/antenne"));
    while (true);
  }
  // Attente longue : un module NB-IoT peut mettre 1-2 min a s'attacher
  int essai = 0;
  while (nb.getStatus() != NETWORK_JOINED && essai++ < 60) {
    Serial.print(F("Attente reseau... "));
    Serial.println(nb.getStatus());
    delay(2000);
  }
  Serial.print(F("Statut final : "));
  Serial.println(nb.getStatus() == NETWORK_JOINED ? "JOINT" : "ECHEC");
  Serial.print(F("Operateur : "));
  Serial.println(nb.getOperator());
  Serial.print(F("Signal (RSRP approx) : "));
  Serial.println(nb.signalQuality());
}

void loop() {}

← Volver a la ficha