RFM69

Te doen

  • rfm69 radio - eigenschappen
  • rfm69 radio modules
  • keten met rfm69-knopen en gateway
  • rfm69 driver(s) (verschillende alternatieven)

Opmerkingen

  • kleiner bereik, grotere bitrate dan LoRa
  • goed geschikt voor gebruik op school: geen interferentie met WiFi/schoolnetwerk
  • geschikt voor home control - minder beperkingen dan LoRa
    • (als je niet zo vaak een bericht kunt sturen is testen ook lastig…)
    • en goedkoper dan LoRa (scheelt 5-10 euro/knoop)
  • Raspberry Pi als RFM69-gateway? (nog uitzoeken…)
  • ESP8266 als (lokale) RFM69-gateway
  • hoe configureer je een RFM69 netwerk?
    • hoe kun je een node toevoegen? zoiets als MAC-adres?
    • NB: voor Arduino UNO kun je evt. EEPROM gebruiken? Dan voorkom je dat je het programma voor elke node moet aanpassen. Eventueel kunnen we een node daarvoor een random waarde laten invullen?
    • Maar: deze oplossing werkt niet voor de nieuwere Arduino’s, zoals de M0 Ook EEPROM-emulatie werkt daar niet altijd… Een alternatief is het gebruik van de unieke 128-bits ID van de M0.

RFM69-radio

De RFM69-radio is een eenvoudige radio voor gebruik in de vrije Industrial, Scientific and Medical (ISM)-banden: 433 MHz, 868MHz (Europa) en 900 MHz (USA). Je kunt deze radio op verschillende manieren gebruiken. Wij gebruiken deze radio voor pakket-communicatie in de 868MHz band.

Er zijn meer radio’s die dezelfde banden gebruiken, met ongeveer dezelfde eigenschappen. Voorbeelden hiervan zijn: ZigBee, Z-wave, enz. De belangrijkste redenen waarom wij hier de RFM69 te gebruiken zijn: goedkoop, eenvoudig in het gebruik, overal beschikbaar, en ondersteund met Open-Source Software. (Zie de hardware-links.)

868 MHz-band

De 868 MHz-band is vrij te gebruiken: je hebt geen licentie nodig. Voor dit gebruik gelden de volgende beperkingen:

  • het zendvermogen mag niet groter zijn dan 25mW (14dB);
  • de duty-cycle mag niet groter zijn dan 1%.

Met de duty-cycle wordt hier bedoeld: het deel van de tijd dat de zender actief is. Een duty-cycle van 1% betekent dan dat een zender gemiddeld max. 36 s per uur mag zenden. De duur van een bericht (air time) hangt af van (i) de grootte van het bericht; (ii) de bitrate.

In de voorbeelden gebruiken wij een bitrate van ca. 50 kbits/s. De grootte van de berichten is beperkt tot ca. 64 bytes: ca. 500 bits. (De payload is dan ca. 60 bytes.) De duur van een bericht (air time) is dan: ca. 500/50.000 = 20ms. Dit betekent dat je maximaal ca. 1 bericht per 2 s. mag versturen. Sommige radio’s (zoals LoRaWan) dwingen dit af: na het versturen van een bericht van (bijv.) 20ms wordt er de volgende 99*20ms geen bericht verstuurd. Het bereik is enkele honderden meters (o.a. afhankelijk van de antenne’s en van obstakels).

We zullen later zien dat de bitrate in het geval van LoRa veel lager is, om een grotere afstand te kunnen overbruggen. Je mag dan maar enkele 10-tallen berichten per uur versturen.

Merk op dat als een radioband minder strenge eisen stelt aan de duty-cycle of aan het zendvermogen, de kans op verstoring door anderen in die band groter is.

De RFM69-radio is met deze instellingen goed te gebruiken voor IoT-toepassingen rond het huis, bijvoorbeeld voor “home control”.

RFM69-hardware

Je kunt de RFM69-radio gebruiken als losse module, eventueel gemonteerd op een “breakout board”. Of je gebruikt een microcontroller-bordje met deze module.

De module wordt in verschillende versies geleverd:

  • RFM69W
  • RFM69CW (pin-compatibel met de oudere RFM12B)
  • RFM69HW (high-power)
  • RFM69HCW (high-power; pin-compatibel met de RFM95 LoRa-module)

De Adafruit-module en de Adafruit Feather gebruiken de RFM69HCW-versie. De verschillende versies zijn niet zonder meer uit te wisselen: deze hebben een verschillende formaat en een verschillende pin-out.

Datasheet

De RFM69-module wordt geleverd door Hope; deze module is gebaseerd op het Semtech SX1231H ic. Als de HopeRF-datasheet niet duidelijk genoeg is, kun je de oorspronkelijke Semtech datasheet raadplegen.