NRF24L01+: bad range of few meters



  • Hi everyone,

    i´m using the following setup:

    Controller:
    Raspberry Pi 2 B, powered with an USB- Power-Supply Max. 2A

    Serial Gateway (v1.5):
    Arduino Nano 5V directly connected via USB,
    NRF24L01+ with SMA Antenna direct soldered to the Arduino, capacitor 0,47uF between GND and Vin

    Sensor-Node (v1.5):
    Arduino Pro Mini 3,3V, powered with new a battery: (one "SAFT" AA-Format cell, 3,6V 2000mAh)
    NRF24L01+ without external Antenna (and also tried the mod with soldered 83,3mm wire antenna), capacitor 0,47uF between GND and Vin

    Environment:
    Controller and gateway indoor directly behind a window (double shielded), sensor outside:
    5m away from window: connection OK.
    7m away from window: connection FAIL.

    What can i do, for better range:?

    • Is there a better way for powering the gateway or the battery sensor (but sensor needs to by battery powered, and power efficient)?
    • Any other hardware mods?
    • I´ve read in another post something about NRF24-library settings:
      radio.setPALevel(RF24_PA_MAX);
      radio.setDataRate(RF24_250KBPS);
      radio.setPayloadSize(4);
      radio.setChannel(2);
      radio.setRetries(15, 15);
    

    Is there a way to set these parameters via MySensors Library?


  • Mod

    @vga said:

    radio.setChannel(2);

    This channel could possibly overlap with WiFi channels. Better use high channel numbers, like default 76.



  • thanks, i would take channel 76, but how can i set these parameters, also the other ones?

    in MyConfig.h i see the following:

    #define MY_RF24_CHANNEL	76
    #define MY_RF24_DATARATE RF24_250KBPS
    #define MY_RF24_PA_LEVEL RF24_PA_MAX
    

    ...but what about the PayloadSize? can i set this too?


  • Mod

    @vga if you don't change the channel it will default to 76.
    Why are you configuring the nRF directly by calling the driver methods? Are you using the mysensors library at all?



  • @Yveaux said:

    @vga if you don't change the channel it will default to 76.
    Why are you configuring the nRF directly by calling the driver methods? Are you using the mysensors library at all?

    do you mean the radio.set lines?
    this is only a quote from another post. i don't do it this way.
    i´m using My Sensors library v2.0 beta.

    I´ve found 3 parameters in the MyConfig.h, and they all set by default, as i see.
    But ni can´t find the payload size. Can i set it anywhere, or see what value it is set to?


  • Mod

    @vga when using the library you should not have to call any of the radio.xxx methods. The #defines are sufficient.
    The size of the payload is automatically determined by the library, and depends on what you transmit in the message.



  • sure, as i said, i don´t use the radio.set methods.

    So are there any other hardware tipps?



  • Hi @vga!

    This thread presents a lot of hardware considerations related to the nrf24l01 module.

    The nrf24 should then perhaps be supplied separately instead of through a Pi or Arduino supply pin. I will go for this approach myself. Even though your USB supply provides 2A the 3V pin is of course limited to perhaps 50 mA?!



  • i´ve got the solution!

    in MyConfig.h i have set:

    #define RF24_PA_LEVEL_GW   RF24_PA_MAX
    

    befor it it was LOW! 😏



  • Ok, so you see an improvement?

    In the referenced thread Korttoma actually mentioned that one could expect a lower range if you set the power to max as the Arduino is not able to supply enough power.

    Good to know, learning by doing. 😊


 

342
Online

7.9k
Users

8.7k
Topics

93.6k
Posts