The NRF24L01+ and RFM69 transceiver communicates with the Arduino board via the SPI interface.
It is important to always feed the radios with a stable and noisy-less power source of 3.3V providing enough current for your device, else erratic behaviour, degraded range and sensitivy can happen.
Refer to the notes about using a regulator or a coupling-capacitor below.
Wiring the NRF24L01+ Radio
NOTE: The input pins on the NRF24L01+ is 5V tolerant. However, you cannot feed the module with more than 3.3V on VCC. If you use a 5V Arduino you have to use a step-down regulator!
|Pro Mini / Nano||Mega||NRF24L01+||Color|
|5VReg -> 3.3V||3.3V||VCC||Red|
The IRQ is currently not used by the MySensors library so it can be left un-connected.
If you are using an Arduino Mega, the following needs to be added to your sketch before including MySensors.h:
Wiring the RFM69 Radio
NOTE: The NSS, MOSI and SCK are not 5V tolerant on RFM69. You will need to use a level converter if you're using a 5V Arduino.
Configuring MySensors for RFM69
MySensors is configured to use th NRF24 radio by default. To use RFM69, the following needs to be added before including MySensors.h
Base defines for non-High Power 868Mhz radio, and Atmel 328p mcus (mini pro, nano, uno etc.) is :
And if you need an advanced configuration, you may need to also add these defines :
//#define MY_RFM69_NETWORKID 100 // Default is 100 in lib. Uncomment it and set your preferred network id if needed //#define RF69_IRQ_PIN 4 // Default in lib is using D2 for common Atmel 328p (mini pro, nano, uno etc.). Uncomment it and set the pin you're using. Note for Atmel 328p, Mysensors, and regarding Arduino core implementation D2 or D3 are only available. But for advanced mcus like Atmel SAMD (Arduino Zero etc.), Esp8266 you will need to set this define for the corresponding pin used for IRQ // #define MY_RF69_IRQ_NUM 4 // Temporary define (will be removed in next radio driver revision). Needed if you want to change the IRQ pin your radio is connected. So, if your radio is connected to D3/INT1, value is 1 (INT1). For others mcu like Atmel SAMD, Esp8266, value is simply the same as your RF69_IRQ_PIN // #define RF69_SPI_CS 15 // If using a different CS pin for the SPI bus
You can find more infos about these define here : https://www.mysensors.org/download/sensor_api_20
Note : Mysensors RFM69 driver is interrupt driven.
RFM69 AntennaIMPORTANT: You MUST attach an antenna to the board. The antenna need to be single core inside, only one wire, not multi-wire breaded like you can find in common dupont cable (not good for antenna.) Aside from not working without an antenna, transmitters can be damaged if they transmit without an antenna present.
By cutting a wire to the proper length you can create a simple antenna for your RFM69 radio. Depending on the frequency of the radio, the antenna has to be cut to different lengths. Cut the antenna slightly longer to give room to solder it to your board. You can always trim it once soldered.
|Frequency||Length (in)||Length (mm)|
|434 MHz||6.47"||164.7 mm|
|868 MHz||3.22"||82.2 mm|
|915 MHz||3.06"||77.9 mm|
Above antenna length represent 1/4 wave. There is also commercial antennas to buy in proper length.
- a straight wire will perform the best for range and sensitivity.
- for space constrained application, you can coil the antenna. Of course, this will degrade your range but you still can have a very decent and competitive range. Up to you to test what fits the best for your case. The coil will perform better if following some rules https://github.com/OpenHR20/OpenHR20/wiki/2.1)--433-MHz-and-868-MHz--Antenna-Design-Examples
Connecting a Decoupling-Capacitor
If you experience bad reception or if transmitted data never reaches destination, try adding a decoupling capacitor of 4.7µ - 47µF (the exact size usually doesn't matter) across the radio's 3.3V and GND.
|- side||GND||Marked Black on radio|
|+ side||3.3V||Marked Red on radio|
The side with "< - < - "-marking should be connected to GND
Connecting a Voltage Regulator
NOTE: If you are using the 5V version of Arduino Pro Mini (that lacks the 3.3V regulated output) you'll have to connect a 5V->3.3V regulator between the Arduino and Radio.