RFM69 IoT-knoop¶
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:
- LowPowerLab library: https://github.com/LowPowerLab/RFM69
- Ayrspace RadioHead library: http://www.airspayce.com/mikem/arduino/RadioHead/
- JeeLabs Embello library: https://github.com/jeelabs/embello/blob/master/lib/driver/rf69.h
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
- Adafruit RFM69-module: https://www.adafruit.com/product/3070
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.)