diagnostic-join.ino

Arduino MKR WAN 1310 · Fichier : diagnostic-join.ino · Langage : Arduino · Usage : Comprendre pourquoi la jointure échoue

Quand le join LoRaWAN échoue, les causes sont toujours les mêmes : ce programme de diagnostic énonce les vérifications, tente trois jointures longues puis énumère les pistes classées. Un réflexe à avoir avant de changer de carte.

Matériel requis

Une Arduino MKR WAN 1310 (microcontrôleur SAMD21, modem LoRa piloté par un ESP32 embarqué qui expose aussi le Wi-Fi, antenne LoRa et antenne Wi-Fi). MKR WAN 1310, antenne obligatoirement vissée, accès à la console du serveur LoRaWAN.

Câblage

Aucun câblage ; vérifiez d'abord la présence de l'antenne — sans elle, tout échoue silencieusement.

Fonctionnement

Le test énonce les vérifications dans l'ordre, puis le timeout long (60 s, 3 essais) couvre le duty cycle légal qui impose des attentes entre canaux.

Exécution

Installez Arduino SAMD Boards et la bibliothèque MKRWAN 2.x (MKRWAN1310), sélectionnez la carte, téléversez. La 1310 se pilote par commandes AT via l'ESP32 interne ; pour LoRa, prévoyez une seconde carte LoRa en face.

Variantes

Ajoutez un test de balayage de canaux ou comparez avec une seconde carte sœur pour éliminer la panne matérielle.

diagnostic-join.ino

// Diagnostic d'echec de join sur MKR WAN 1310 : etapes + indices.
#include <MKRWiSOLAR.h>

const uint8_t DEVICE_EUI[] = {0xDE,0xAD,0xBE,0xEF,0xFE,0xED,0xC0,0xFF};
const uint8_t APP_EUI[]    = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
const uint8_t APP_KEY[16]  = {0}; // a provisionner

LoRaWAN lora;

void setup() {
  Serial.begin(9600);
  Serial.println(F("1. Verifier les EUI saisis (inversion d'octets ?)"));
  Serial.println(F("2. Region EU868 + duty cycle 1 % : etre patient"));
  lora.setDeviceEui(DEVICE_EUI);
  lora.setAppEui(APP_EUI);
  lora.setAppKey(APP_KEY);
  lora.setRegion(EU_863_870_R1);
  Serial.println(F("3. Join avec 3 tentatives longues..."));
  int ok = lora.join(OTAA, MODEL_TYPE_A, 60000, 3);
  if (ok) { Serial.println(F("OK - le reseau repond")); return; }
  Serial.println(F("ECHEC. Causes frequentes :"));
  Serial.println(F(" - passerelle hors ligne / hors portee"));
  Serial.println(F(" - AppKey differente du serveur (recopie !)"));
  Serial.println(F(" - device pas activee / antenne debranchee"));
  while (true);
}

void loop() {}

← Retour à la fiche