Embedded Radio-to-IP Gateway (AVR)

About AVR-based Radio-to-IP gateway solutions

Introduction

As the top dog RFM libraries like the LowPowerLab RFM69 library by Felix Rusu and the RadioHead library by Mike McCauley used to work best on the AVR, this is currently the most stable variant implementing such a gateway. All implementations showed here have these attributes in common:

  • Send radio messages from the sensor node
  • Receive radio messages on the gateway side
  • Forward them to the UART interface of the AVR
  • Receive messages from the UART interface on a SoC machine
  • Translate and forward them to TCP/IP, preferably by publishing them to the MQTT bus

We are using the BERadio C++ library to serialize radio message payloads on the MCU side and decode them on the SoC side using its counterpart BERadio Python, which translates and forwards them to the MQTT bus. The JeeLink is plugged into a RaspberryPi SoC machine.

The “Generic firmware” can be used on the sensor node as well as on the gateway side. For some documentation about it, see also:


JeeLink

The most simple thing is to use a JeeLink USB dongle:

JeeLink with RFM69

The JeeLink can be ordered with HopeRF’s RFM69CW wireless radio module. Plug & play! See The JeeLabs Shop - JeeLink (v3c).

JeeLink with RFM95

However, it is possible to solder a corresponding HopeRF RFM95 (LoRa) module. This is what we are actually using at one of our sites. See also:


Do-it-yourself

You can achieve similar things by building the same on a breadboard or using custom soldering.


LinkIt

The “LinkIt Smart 7688 Duo” is a promising platform as it combines a MIPS MPU with a WiFi module running a full fledged Linux with an AVR MCU, see:

Using this, we can get rid of the Raspberry Pi as a gateway machine.

@einsiedlerkrebs unlocked this for us, cheers! See also:

– However, there are currently two minor drawbacks: –

  • – Have to disconnect RFM chip before flashing the AVR, – Jumpers needs to be placed on SPI-Bus, for disconnecting radio during flashing.
  • – Mechanical robustness regarding durability (breadboard vs. soldering).-- Radio works stable if soldered.

Then the design lacks four 3state buffers; next time we meet I should give you some 74HC125 in SO14 (or DIP14 or even TSSOP14? what is needed?)

1 Like

@einsiedlerkrebs: @weef seems to know about some tricks to make this fly, see comment above.

In 2021, Felix Rusu discovered a flaw within his venerable lowpowerlab/RFM69 library, and reported about the observations, investigations, and the corresponding fix for setPowerLevel() on HW/HCW radios.

Enjoy reading https://lowpowerlab.com/2021/08/31/rfm69-tx-output-power-testing-library-fix/. The fix has been released with version 1.5.0.