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

@Torsten Römer Torsten Römer authored on 30 Mar
GitHub committed on 30 Mar
nbproject Adjust doc & project type 1 year 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 Try to make device and CPU frequency independent 1 year ago
README.md Update README.md 12 months ago
librfm.c Return a boolean indicating radio init success 12 months ago
librfm.h Return a boolean indicating radio init success 12 months ago
utils.h Initial commit 1 year ago
README.md

librfm

About

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

This is work in progress. Simple Tx-Rx with response works so far.

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

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 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 kHz (transmitter)
RegFdevMsb = 0x00
RegFdevLsb = 0xa4

Receiver Bandwidth = 20.8 kHz
RegRxBw = 0x54