Radio-0

Doel:

  • kennismaking met een pakket-radio

nodig:

  • RFM69 radio module (868MHz)
  • LED met serieweerstand

Voorkennis:

  • LED
  • SPI interfaces

Met de RFM69 radio-module kun je kleine pakketten met data versturen en ontvangen. We gebruiken hiervoor de 868MHz band: deze is vrij te gebruiken mits je minder dan 1% van de tijd zendt, met laag vermogen.

Schakeling

Verbind de RFM69 module:

  • SPI: SCK, SDO(MOSI), SDI(MISO), SEL(CS) met Arduino pin 13, 12, 11, 10
  • IRQ met Arduino pin 2
  • VCC met Arduino 5V
  • GND met Arduino GND (0V)

Gebruik voor de dataverbindingen (SPI en IRQ) een draadbundel met 5 draden, tussen de Arduino en het breadboard met de radio-module. Daarmee verminder je de kans op fouten, en krijg je een nettere opbouw van je schakeling.

Testprogramma

Om de radio te testen heb je naast je eigen Arduino nog een andere Arduino met een radio-module nodig.

Gebruik als testprogramma voor beide Arduino's: rfm69demo. Dit programma stuurt steeds pakketten met test-data, en drukt de ontvangen pakketten af.

Library

Gebruik de library rf69. Voeg deze eerst (eenmalig) toe aan de Arduino IDE, via Bibiliotheek gebruiken... ZIP bibliotheek toevoegen.

De library is te vinden via https://infvo.nl/labfiles/arduino/programs/libraries/rf69/ 

Opdracht 1

  • test de radio met rfm69demo
  • pas de nodeID in het testprogramma aan, met een waarde in het bereik 1..59
  • ga na dat de ontvangen berichten deze nieuwe nodeID weergeven.
  • kies een unieke ID (in overleg met andere radiogebruikers)
  • de nodeID van de afzender vind je in het tweede byte van het ontvangen pakket.

Opdracht 2

Hoe ver kun je je Arduino van de andere zender/ontvanger plaatsen? Wat is het bereik?

  • voeg een LED met serieweerstand toe (bijv. aan pin 3)
  • laat deze LED 10 ms knipperen bij ontvangst van een pakket (Led aan; delay(10); Led uit)
  • gebruik een USB-batterij voor het voeden van je Arduino: je hoeft deze dan niet aan een computer te verbinden.

  • is het bereik symmetrisch? (Dat wil zeggen: als radio A radio B ontvangt, is het omgekeerde dan ook het geval?)

Hardware

We gebruiken bij deze opdracht twee soorten "breakout" bordjes voor de RFM69-radio:

  • Adafruit  RFM69 breakout

https://learn.adafruit.com/adafruit-rfm69hcw-and-rfm96-rfm95-rfm98-lora-packet-padio-breakouts/overview

Bijv. via: https://www.sossolutions.nl/3070-adafruit-rfm69hcw-transceiver-radio-breakout-868-or-915-mhz 

  • Jeelabs RFM69 board

https://www.digitalsmarties.net/products/rfm-board

Gebruik deze radio's nooit zonder antenne: dan kunnen ze kapot gaan!

Bij het Adafruit-bordje hoef je alleen de header-pinnen eraan te solderen.

Het Jeelabs-bordje moet je helemaal zelf solderen.

De RFM69HCW-versie heeft een hoog-vermogen radio ("H"-versie); de RFM69CW heeft een lager vermogen, en is daardoor ook energie-zuiniger.

We gebruiken deze radio's meestal met een draadantenne (82mm lang, "1/4 lambda").

Je kunt het bereik vergroten door een betere antenne te gebruiken. Het Adafruit-bordje heeft extra soldeeraansluitingen voor een antenne-connector.

Bovenstaande breakout-boards zorgen ook voor de aanpassing van de Arduino 5V (voeding, signalen) naar de RFM69 3.3V.

Layout van het pakket (bij ontvangst):

  • header1 (bits 0..5: destination ID)
  • header2 (bits 0..5: origin ID)
  • payload (max. 62 bytes)

Bij het verzenden wordt alleen de payload meegegeven als buffer; de destination is een aparte parameter.

Destination=0: broadcast pakket.

Deze indeling wordt door de rf69-library bepaald; bij andere libraries kan dit anders zijn

Arduino lessen Radio-0     --