NRF24L01+PA - MAX Power Output not working

Hello,
I am using a NRF24L01+PA to send a signal to a drone which has a standard NRF24L01 on it. I am trying to get the best range possible. I would like to go out 1000m+ always clear line of sight. I have been doing a few tests using the simple code below that controls an LED on the drone. I can only get the MIN and LOW power levels to successfully send a signal to the receiver. In the LOW power mode I can get to about 300m successfully. I would like to figure out how I can get the MAX power level to successfully send a signal.

I am using a breakout board shown below to power the transmitter and have also added a capacitor to the transmitter. I have tried to shield the transmitter as well and tried multiple channels. What is weird is that while in MAX power output I can sometimes get a signal to the receiver if I hold the antenna of the transmitter in my hand. I figured that the transmitter might be over powering the receiver with its signal. However, i took my drone out to 300m and I still wont receive a signal in MAX.

Any suggestions on how I can get a consistent transmission with full power from the transmitter?

TRANSMITTER

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

RF24 radio(7, 8); // CE, CSN

const byte address[6] = "00001";

const int button = 4;
int buttonState = 0;

void setup() {
  Serial.begin(115200);
  pinMode(button, INPUT);
  radio.begin();
  radio.setDataRate(RF24_250KBPS);
  radio.setChannel(35);
  radio.setPALevel(RF24_PA_LOW);
  radio.openWritingPipe(address);
}

void loop() {
  buttonState = digitalRead(button);
  if (buttonState == HIGH) {
    radio.openWritingPipe(address);
    radio.write(&buttonState, sizeof(buttonState));
  }
  Serial.println(buttonState);
  }

RECEIVER

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

RF24 radio(7, 8); // CE, CSN
const byte address[6] = "00001";

int buttonState = 0;
int ledpin = 10;

void setup() {
  Serial.begin(115200);
  pinMode(ledpin, OUTPUT);
  radio.begin();
  radio.setDataRate(RF24_250KBPS);
  radio.setChannel(35);
  radio.openReadingPipe(1, address);
  radio.startListening();
}

void loop() {
  if (radio.available()) {
    radio.read(&buttonState, sizeof(buttonState));
  
    if (buttonState == HIGH) {
      analogWrite(ledpin, 600);
      Serial.println("Receiving!");
      delay(200);
    }
  }
  else {
      analogWrite(ledpin,630);
      Serial.println("No Signal");
      delay(10);
    }
}

Hi,

I am using a breakout board shown below to power the transmitter

Those are usually a good answer to nRF24L01 problems.

What power (voltage, current capability) are you feeding to the breakout board? How is that wired?

Power is coming from the Vin pin on an Arduino Mega. Power for the whole system is being provided from a USB power brick through the usb port on the mega.

Would powering the transmitter directly from the battery change anything you think?

Would powering the transmitter directly from the battery change anything you think?

Hmmm. Possibly. The breakout board power input should be 5V or more if available. It's 3.3V regulator needs some voltage margin to work with...

Can you measure these voltages??

terryking228:
Can you measure these voltages??

The voltage going to the NRF24 is 4.48v. Do you think this is sufficient?

kadorosz:
The voltage going to the NRF24 is 4.48v. Do you think this is sufficient?

My understanding is that the max for an nRF24 is 3.6v. Perhaps you have broken it?

...R

Sorry, I was unclear. 4.48v is going to the breakout board which the NRF24 is powered through.

4.48v is going to the breakout board

That is marginal at best. The breakout board has a "Low Drop Out Regulator" but it has only 4.5-3.3=1.2 volts of difference. Since you have strange symptoms (the hand-capacitance on the antenna etc) it is suspect.

Suggest you use some external source to test: A separate 5V supply, 5 AA batteries , 9V battery etc...

The regulator specs:

Output Voltage3.3V
PolarityPositive
Maximum Output Current0.8A
Maximum Input Voltage15V

Okay, Thanks. I will try a different power source and let you know what happens.

Thanks,
Kyle

Well that was it! Hooked it up to a 12v power source and it works great. Haven't tested the range yet but it works much more reliably when in close proximity.

Thanks for your help!