Static avr-libc library providing basic support for RFM95 radio modules

nbproject Rename to librfm95 (#4) 11 months ago
sheets Add SX1276 datasheet and AN1200.24 10 months ago
.gitignore Fix build and Makefile 1 year ago
CODE_OF_CONDUCT.md Initial commit 1 year ago
LICENSE Initial commit 1 year ago
Makefile Switch to MCU = avrxmega2 3 months ago
README.md Move to GitBucket (#1) 4 hours ago
librfm95.c Return actual size of payload received by receiver 4 months ago
librfm95.h Some recommendations from Semtech AN1200.24 (#7) 10 months ago
utils.h Initial commit 1 year ago
README.md

librfm95

About

Static avr-libc library providing basic support for RFM95 (SX1276) radio modules.
Other RFM9x radios might work as well, but were not tested.

This is work in progress. Currently available is (FSK and LoRa):

  • Transmit a packet
  • Blocking receive a single packet with timeout
  • Async'ly receive a packet (MCU sleeps or does something else until reception)

Usage

  1. Include librfm.h and librfm.a in the project
  2. Implement the _rfm* functions in librfm.h in the application
    (this is to make the library device and CPU frequency independent)
  3. Route interrupts occurring on DIO0 and DIO4(FSK)/DIO1(LoRa) to rfmIrq()

Range

FSK

At over 12 km distance line of sight, reception and response were stable with an RSSI
of -96 dBm and +9 dBm Tx power - with simple wire antennas. Quite impressive!

The configuration:

  • AGC auto on, boost on, 150% LNA current
  • Modulation shaping Gaussian filter BT = 0.5
  • Transmitter frequency deviation: 10 kHz
  • Receiver channel filter bandwith: 20.8 kHz

LoRa

With LoRa, reception and response were stable with an RSSI of -116 dBm and +17 dBm Tx power at 18 km
distance line of sight, with the following configuration (and as well just simple wire antennas):

  • LNA highest gain, boost on, 150% LNA current
  • Signal bandwidth: 41.7 kHz
  • Spreading factor: 10
  • Error correction code rate: 4/5
  • Low Data Rate Optimization

So, as expected, and without taking the RSSI too literally, range is increased with LoRa,
and the link is much more robust when there are obstacles in the path, such as buildings and terrain.

The latter seems to be the more advantageous improvement with LoRa, since the range with line of sight
is already long with FSK.

Anyway, these radio modules work very well with both modulation schemes!

Here's the transmitter placed at Mont-Saint-Aubert, with a nice view to Mont de L'Enclus: