MODBUS MASTER MONITOR 1.0
Loading...
Searching...
No Matches
LoRaWAN

Classes

struct  Fragmento
 Fragmento binario listo para transmisión LoRaWAN. More...

Functions

void os_getArtEui (u1_t *buf)
 Funciones de configuración LMIC (placeholders).
void onEvent (ev_t ev)
 Callback de eventos LMIC/LoRaWAN.
void initLoRa ()
 Inicializa la pila LMIC y configura LoRaWAN (ABP, US915).
void tareaLoRa (void *pvParameters)
 Tarea dedicada al envío de datos por LoRaWAN.
void tareaRunLoop (void *pvParameters)
 Tarea del runloop LMIC.

Variables

static u1_t NWKSKEY [16]
 Claves ABP y dirección de dispositivo (DEMO).
const lmic_pinmap lmic_pins
 Mapa de pines para el radio SX127x de la TTGO LoRa32.

Detailed Description

Resumen

Este módulo gestiona la transmisión LoRaWAN usando LMIC:

  • Inicializa la pila LMIC y la HAL del dispositivo (TTGO LORA 32 V2.1).
  • Administra la construcción y envío de frames desde queueFragmentos.
  • Supervisa eventos LMIC (EV_TXCOMPLETE, join, duty cycle) y sincroniza mediante semaforoEnvioCompleto.

Estructura y componentes

  • Configuración
    • Parámetros de red (OTAA/ABP), canales y región.
    • HAL y pinmap SPI/Radio.
  • Transporte hacia LMIC
    • Fragmento: bloque binario listo para transmisión (producido por agregación en Data Format).
  • Tareas/Callbacks

API principal

  • Entrada
  • Salida
  • Funciones/Callbacks
    • LMIC_setTxData2(port, data, len, confirmed).
    • onEvent(ev) manejo de estados y errores.
    • tareaLoRa, tareaRunLoop.
  • Configuración
    • LMIC_reset(), LMIC_setTxData2(), LMIC_setClockError(), seteo de canales/región.

Uso

Resumen del flujo:

1) Arranque LoRaWAN

  • Inicializa HAL/SPI/Radio y resetea LMIC (LMIC_reset()).
  • Configura OTAA/ABP, región y canales.
  • Crea tareaRunLoop y tareaLoRa.

2) Envío de datos

  • tareaLoRa bloquea en queueFragmentos, arma el frame y llama LMIC_setTxData2.
  • Evita colisiones verificando LMIC.opmode & OP_TXRXPEND.

3) Eventos LMIC

  • onEvent(EV_TXCOMPLETE): libera semaforoEnvioCompleto y opcionalmente reprograma próximo envío.
  • onEvent(EV_JOINED/EV_JOINING): controla el estado de join.
  • Maneja duty cycle y reintentos según la región.

Buenas prácticas (LoRaWAN)

  • Verificar OP_TXRXPEND antes de enviar para no romper duty cycle.
  • Usar puertos de aplicación coherentes y tamaños de payload dentro del límite regional.
  • Minimizar trabajo dentro de onEvent; delegar a tareas cuando sea posible.
  • Ajustar LMIC_setClockError() si el cristal tiene desviación notable.
  • Asegurar reintento de join con backoff y registrar estados para diagnóstico.

Function Documentation

◆ initLoRa()

void initLoRa ( )

Inicializa la pila LMIC y configura LoRaWAN (ABP, US915).

  • Llama os_init() y LMIC_reset().
  • Ajusta LMIC_setClockError() (1%) para tolerancia del cristal.
  • Configura sesión ABP con LMIC_setSession() y región US915 (LMIC_selectSubBand(7)).
  • Desactiva ADR y LinkCheck para simplificar el flujo.
    Note
    Ajustar sub-banda, DR y potencia según gateway/región.

◆ onEvent()

void onEvent ( ev_t ev)

Callback de eventos LMIC/LoRaWAN.

Maneja eventos de la pila LMIC y sincroniza el flujo de transmisión mediante semaforoEnvioCompleto.

  • EV_TXCOMPLETE: indica fin de TX y libera el semáforo.
  • TXRX_ACK: se informa si se recibió ACK de la red.
    Parameters
    evEvento reportado por LMIC.

◆ tareaLoRa()

void tareaLoRa ( void * pvParameters)

Tarea dedicada al envío de datos por LoRaWAN.

  • Espera fragmentos en queueFragmentos.
  • Toma el semaforoEnvioCompleto para serializar envíos.
  • Llama LMIC_setTxData2() con el puerto de aplicación 1 y sin confirmación (confirmed=0).

◆ tareaRunLoop()

void tareaRunLoop ( void * pvParameters)

Tarea del runloop LMIC.

Ejecuta os_runloop_once() en un bucle para procesar timers y eventos internos de LMIC.

Variable Documentation

◆ lmic_pins

const lmic_pinmap lmic_pins
Initial value:
= {.nss = 18,
.rxtx = LMIC_UNUSED_PIN,
.rst = LMIC_UNUSED_PIN,
.dio = {26, 33, 32}}

Mapa de pines para el radio SX127x de la TTGO LoRa32.

Define NSS, DIO0-DIO2 y pines no usados por LMIC.

◆ NWKSKEY

u1_t NWKSKEY[16]
static
Initial value:
= {
0xC2, 0x5B, 0x0A, 0x78, 0xA8, 0x0A, 0x63, 0x1D,
0x86, 0xC8, 0x1B, 0xA3, 0x3A, 0x9E, 0x36, 0xEF
}

Claves ABP y dirección de dispositivo (DEMO).

Warning
Claves en texto plano, reemplazar en producción.