/lorawan-library-for-pico

Enable LoRaWAN communications on your Raspberry Pi Pico or any RP2040 based board. 📡

Primary LanguageCBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

pico-lorawan

Enable LoRaWAN communications on your Raspberry Pi Pico or any RP2040 based board using a Semtech SX1276 radio module.

Based on the Semtech's LoRaWAN end-device stack implementation and example projects.

Hardware

Default Pinout

Raspberry Pi Pico / RP2040 Semtech SX1276
3.3V VCC
GND GND
GPIO 18 SCK
GPIO 19 MOSI
GPIO 16 MISO
GPIO 7 DIO0 / G0
GPIO 8 NSS / CS
GPIO 9 RESET
GPIO 10 DIO1 / G1

GPIO pins are configurable in examples or API.

Examples

See examples folder.

There is a config.h file to your ABP or OTAA node configuration for each example.

Cloning

git clone --recurse-submodules https://github.com/sandeepmistry/pico-lorawan.git 

Building

  1. Set up the Pico C/C++ SDK
  2. Set PICO_SDK_PATH
export PICO_SDK_PATH=/path/to/pico-sdk
  1. Create build dir, run cmake and make:
mkdir build
cd build
cmake .. -DPICO_BOARD=pico
make
  1. Copy example .uf2 to Pico when in BOOT mode.

Erasing Non-volatile Memory (NVM)

This library uses the last page of flash as non-volatile memory (NVM) storage.

You can erase it using the erase_nvm example, when:

  • Changing the devices configuration
  • If your board is timing out with joining the network

Acknowledgements

A big thanks to Alasdair Allan for his initial testing of EU868 support!

This project was created on behalf of the Arm Software Developers team, follow them on Twitter: @ArmSoftwareDev and YouTube: Arm Software Developers for more resources!