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

@Torsten Römer Torsten Römer authored on 13 Apr
GitHub committed on 13 Apr
nbproject Incorporate changes from librfm95 (#3) 11 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 Rename to librfm69 (#4) 11 months ago
README.md Update README.md 11 months ago
librfm69.c Incorporate changes from librfm95 (#3) 11 months ago
librfm69.h Incorporate changes from librfm95 (#3) 11 months ago
utils.h Initial commit 1 year ago
README.md

librfm69

About

Static avr-libc library providing basic support for RFM69 radio modules.

I'm impressed how well these radio modules work; the range achieved with simple wire antennas as well as the reliable packet transmission.

This is work in progress. Currently available is:

  • 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 librfm69.h and librfm69.a in the project
  2. Implement the _rfm* functions in librfm69.h in the application (this is to make the library device and CPU frequency independent)
  3. Route interrupts occurring on DIO0 and DIO4 to rfmIrq()

Range

Setting RegPaLevel to 0x5f, which gives +13 dBm with PA1, indoor range is very good and in an actual "field" test, packet reception was still reliable with an RSSI of about -90 dBm at about 2.2 km distance - with simple wire antennas. What would be the range with +20 dBm and decent antennas?

FieldTest3

Susceptibility to Temperature Changes

With the default frequency deviation of 5 kHz and receiver bandwidth of 10.4 kHz, packet transmission is very unreliable and fails completely for me when the temperature of the transmitter is below 10°C and above 40°C, while the receiver temperature is at 20°C. The receiver does not seem to be prone to temperature changes.
Increasing frequency deviation to 10 kHz and receiver bandwidth to 20.8 kHz, temperature susceptibility is eliminated; when testing with transmitter temperature from -20°C to 50°C, packet transmission is perfectly reliable.

Frequency Deviation = 10.4 kHz (transmitter)
RegFdevMsb = 0x00
RegFdevLsb = 0xa4

Receiver Bandwidth = 20.8 kHz
RegRxBw = 0x54