RFM69 IoT-knoop

_images/RFM69a.png

RFM69 module

We gebruiken de RFM69-radio als voorbeeld van radio’s in de 868MHz-band, voor gebruik in en rond het huis (of de school). Andere voorbeelden zijn: ZigBee, Z-wave. (De LoRa-radio gebruikt ook deze radioband, maar richt zich op een ander soort gebruik, met een veel groter bereik.)

Voor ons doel is de RFM69 erg geschikt, omdat deze modules uitwisselbaar zijn met de LoRa-modules. In het bijzonder is de RFM69HCW pin-compatibel met de LoRa-module RFM95. Dit betekent dat dezelfde printed-circuit boards kunnen gebruiken voor deze beide modules. (Bijvoorbeeld: https://www.thethingsnetwork.org/labs/story/creating-a-ttn-node.) Ook de Adafruit-breakout-modules voor de RFM69 en de RFM95 zijn pin-compatibel.

We beschrijven hier de hardware voor de knoop en de basissoftware.

De software en de keten beschrijven we in RFM69.

Een RFM69-radio kun je gebruiken met verschillende soorten hardware, bijvoorbeeld ESP8266, Arduino (in verschillende varianten), Raspberry Pi, enz. Voor het aansturen van deze radio zijn er verschillende Arduino-libraries in gebruik, onder andere:

Een uitgebreide uitleg vind je bij de Adafruit-beschrijving van de RFM69-module

In deze module gebruiken we een eigen RFM69-library: rf69min (minimal). Dit is een eenvoudige library (o.a. zonder interrupts), afgeleid van de JeeLabs-library.

In de software gebruiken we de volgende pinout:

Arduino pin RFM69 pins
13 LED_BUILTIN
13 RFM69 SCK
12 RFM69 MISO
11 RFM69 MOSI
10 RFM69 CS
9 RFM69 RESET

Als je de RFM69-interrupts wilt gebruiken, moet je RFM IRQ verbinden met één van de Arduino interrupt-pinnen: 2 en 3. Sommige libraries gebruiken interrupts.

Gebruik

Je kunt de RFM69-radio gebruiken in combinatie met allerlei microcontrollers: Arduino, ESP8266, Adafruit Feathers enz. In de voorbeeld-implementatie gebruiken we een Arduino Pro Mini, op eenzelfde bordje als voor de LoRa radio.

Deze microcontrollers kun je eenvoudig combineren met allerlei sensoren en actuatoren.

Configuratie

Het programma rfm69-mini-client-2 is geconfigureerd met nodeid ff02 en lokaal RFM69-adres 2. Als je meerdere clients gebruikt, moet je deze beide aanpassen:

String nodeID = "ff02";  // appl.node-ID, must be 4-digit hex number
const int nodenr = 2;    // RFM network-id

De frequentie en andere instellingen voor de radio moet gelijk zijn aan die voor de bijbehorende gateway. In ons geval zijn deze waarden:

const int gatewaynr = 1;
const int groupnr = 42;
....
rf.init(nodenr, groupnr, 8686);

Je kunt encryptie gebruiken voor de RFM69 radioberichten. De encryptiestring (maximaal 16 bytes) moet voor de clients en voor de gateway gelijk zijn:

rf.encrypt("mysecret");  // max. 16 bytes

Hardware

Opmerking voor de aansluitingen tussen de RFM69-module en de Arduino gebruiken we dezelfde pinnen als voor de LoRa-module. We kunnen dan hetzelfde PCB gebruiken als voor de LoRa-module; en we kunnen dezelfde software gebruiken voor de PCB en de breadboard-opstelling. (Op de LoRa-PCB zijn DIO0, DIO1 en DIO2 verbonden met pinnen D4, D5 en D7. …DIO5 is verbonden met D6??… deze wordt door LMIC niet gebruikt… … we kunnen beter een van de pinnen D4, D5, D6, D7 gebruiken als Reset… Deze worden niet gebruikt in de breadboard-schakeling. Bij de LoRa-module is de Reset niet verbonden.)

_images/Arduino-rfm69_bb.png

IoT-knoop met RFM69 (breadboard)

_images/Arduino-rfm69_schema.png

IoT-knoop met RFM69 (schema)