Long Range Wireless Software for Arduino and MicroPython

In the process of testing LoRa boards it became clear that the available driver software wasn’t acceptable. To use the least power possible it has to support transmit and receive interrupts in a simple fashion. Nothing I found did that.

Running Arduino with a Feather Nrf52

It also helps to be simple and easy to debug. In Arduino I was using the RadioHead library, which I think is very good, but it has a lot of modules and isn’t simple to debug or configure.

I decided to write my own. I found a very good Python starting point from Semtech and added interrupt handling, better transfers, and some interface improvements.

Running MicroPython with a Feather Huzzah32 (exact same wiring)

I then converted the Python code to Arduino. This way I can test in Python on an ESP32 with lots of memory and then run production in Arduino on something tiny.

The Python library is here on Github.

The Arduino library is here on Github.

Here’s a snippet showing a ping-pong test in Arduino and Micropython