newAM / lorawan-wl

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

LoRaWAN on STM32WL

This is a PoC implementation of LoRaWAN using a STM32WL MCU and RTIC. This example uses a NUCLEO-WL55JC board as hardware.

If you are using other boards, modify rfswitch accordingly to reflect your configuration.

WIP This is not a working implementation (yet)!

Thanks to newAM, ivajloip, and all the contributors of stm32wl-hal, rust-lorawan and the Rust embedded community. This wouldn't be possible without them.

Problems & Learnings

  • --JoinRequest is sent and acknowledge only below SF9. When using lower data rates (i.e. higher Spreading Factor) the gateway does not see packets.--
    • Solved: Needed to use LoRa SyncWord Public. The Public vs Private nomenclature means LoRaWAN vs. non-LoRaWAN, instead of public/private LoRaWAN networks.
  • When JoinAccept is generated by the gateway, nothing is seen at the MCU.
    • Solved: A JoinAccept is 17 bytes long and in SF12 takes longer than 1 second to be fully received. The LoRaWAN spec, section 3.3.1 Receiver activity during receive windows states that a receiver should stay active until the frame is demodulated if a preamble is detected during the RX window. This means using the PreambleDetected interrupt to stop the timers from closing the window. In the first version of this code, we used RxDone, so the timers to close the RX window (800 ms) always triggered before the frame reception was complete.

About


Languages

Language:Rust 99.4%Language:RPC 0.6%