diagnostic-join.ino

Arduino MKR WAN 1310 · Archivo : diagnostic-join.ino · Lenguaje : Arduino · Uso : Comprendre pourquoi la jointure échoue

Cuando el join LoRaWAN falla, las causas son siempre las mismas: este diagnóstico enuncia las comprobaciones, intenta tres joins largos y enumera las pistas ordenadas. Un reflejo antes de cambiar de placa.

Hardware

Una Arduino MKR WAN 1310 (microcontrolador SAMD21, módem LoRa pilotado por un ESP32 integrado que también expone Wi-Fi, antena LoRa y antena Wi-Fi). MKR WAN 1310, antena obligatoriamente enroscada, acceso a la consola del servidor LoRaWAN.

Cableado

Sin cableado; comprueba primero la antena; sin ella, todo falla en silencio.

Funcionamiento

Las comprobaciones se enuncian en orden, y el timeout largo (60 s, 3 intentos) cubre el duty cycle legal que impone esperas entre canales.

Ejecución

Instala Arduino SAMD Boards y la librería MKRWAN 2.x (MKRWAN1310), selecciona la placa y carga. La 1310 se controla con comandos AT a través de su ESP32 interno; para LoRa, prevé una segunda placa LoRa al otro lado.

Variantes

Añade un test de barrido de canales o compáralo con una segunda placa hermana para descartar la avería de hardware.

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

← Volver a la ficha