🛠 Rejoindre The Things Network (OTAA)

Arduino MKR WAN 1310 · intermediaire · Schéma : IMG-mkr-wan-1310-intermediaire-3-mkrwan1310-otaa-the-things-network.svg — MKR WAN 1310 envoyant un uplink LoRaWAN vers une antenne de passerelle puis le cloud The Things Network, clés OTAA représentées par des cadenas.

Objectifs

Rejoindre un réseau LoRaWAN public (The Things Network) en OTAA avec la bibliothèque MKRWAN : enregistrer l'appareil avec son deviceEUI, envoyer des uplinks et recevoir des downlinks, lire RSSI/SNR. C'est la vocation première de la carte — pas de Wi-Fi, pas de HTTP ici, uniquement du LoRaWAN classe A.

Matériel

Code complet

// OTAA The Things Network — MKR WAN 1310
#include <MKRWAN.h>

LoRaModem modem;
String appEui = "0000000000000000"; // EUI de l'application TTN
String appKey = "00000000000000000000000000000000"; // APP_KEY OTAA

void setup {
  Serial.begin(115200);
  while (!Serial);
  if (!modem.begin(EU868)) { Serial.println("Module KO"); while (1); }
  Serial.print("deviceEUI : "); Serial.println(modem.deviceEUI);
  if (!modem.joinOTAA(appEui, appKey)) {   // blocage jusqu'au join
    Serial.println("Join échoue : rapprochez-vous d'une fenetre");
    while (1) {}
  }
  Serial.println("Joint !");
  modem.minPollInterval(60);
}

void loop {
  while (!Serial.available);
  String msg = Serial.readStringUntil('\n');
  modem.beginPacket;
  modem.print(msg);
  int err = modem.endPacket(true);   // true = uplink confirmé (ACK)
  Serial.println(err > 0 ? "Envoye !" : "Echec (duty cycle ?)");
  if (modem.available) {           // downlink reçu en fenetre RX
    char recu[64]; int i = 0;
    while (modem.available && i < 63) recu[i++] = modem.read;
    recu[i] = '\0';
    Serial.printf("Downlink: %s\n", recu);
  }
  Serial.printf("RSSI=%d SNR=%d\n", modem.rssi, modem.snr);
  delay(120000); // le firmware impose 1 émission / 2 min max (EU)
}

Vérification attendue

« Joint ! » s'affiche après quelques secondes à quelques minutes ; les uplinks apparaissent dans le live data TTN avec RSSI/SNR. Un downlink programmé sur TTN revient dans la fenêtre RX qui suit l'uplink.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels