attente-lte-nbiot.ino

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

Le MKR NB 1500 met du temps à rejoindre un réseau LTE-M ou NB-IoT : cette boucle d'attachement patiente jusqu'à deux minutes, affiche l'état à chaque tentative, puis confirme l'opérateur et la qualité de signal. La base de tout projet LPWA fiable.

Matériel requis

Une Arduino MKR NB 1500 (microcontrôleur SAMD21, modem u-blox LTE-M/NB-IoT, antenne externe, alimentation LiPo sur J6 ou USB). Une carte SIM IoT data (LTE-M ou NB1 selon l'opérateur), l'antenne LTE vissée, un câble micro-USB.

Câblage

Aucun câblage externe : SIM insérée, antenne en place, alimentation USB ; prévoyez une bonne réception (sous-sol = échec typique).

Fonctionnement

nb.begin() démarre le modem u-blox SARA-R4. getStatus() renvoie l'état de la pile réseau ; la boucle sonde toutes les 2 s pendant 60 essais. signalQuality() donne le RSSI rapporté par le module.

Exécution

Installez le package Arduino SAMD Boards et la bibliothèque MKRNB, sélectionnez la carte, téléversez. Prévoyez une carte SIM IoT (LTE-M ou NB1) activée et une bonne réception : l'attachement au réseau peut demander plusieurs minutes.

Variantes

Forcez la technologie avec nb.setNetworkSettings("3") pour du NB-IoT uniquement, ou ajoutez un redémarrage modem après cinq échecs d'attachement.

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

← Retour à la fiche