NRF24L01 PA + LNA impossible to get to work

Hi everyone,
I have a project where I need to make a RC Remote using the NRF24L01 PA + LNA but I can barely get it to work. First, when I got it I tried the simple code that How To Mechatronics made that sends Hello World to the other Arduino and it worked. But I never managed to get the modules to send data packages with several codes based on the How To Mechatronics code for his RC Transmitter, or the Electronoobs' one or the STM32 version on the ESP32 (I adapted the codes) even the Hello Wold code did not work.

So I got a STM32F103C8T6, and 2 other NRF24L01 PA + LNA modules, and the M1 adapters and 100uF capacitors, and I tried the Hello World code with these (The STM32 as a transmitter), but the Arduino as a receiver received the data within random intervals not every second, and sometimes it stopped transmitting, so I tried another time the Hello World code with the 2 arduinos, and I got the same results as with the STM32, then I got the moules to work properly, then everything did not work. I even set the PA to MIN so that the power consumption drops and hopefully the module works. I got the modules to work as a BLE device following this tutorial, and they were all detected by the phone, so I'm pretty sure that the modules are not damaged. I've also tried Robin 2's tutorial (I lost the link) and I always get on the transmitter's serial monitor (Arduino) TX failed, then it worked successfully for a while, then it got back to Tx failed.

Fast forward to today, I did not manage to get the modules to work even with the M2 adapters, or directly powering the modules using a breadboard power board and connecting the grounds to the arduinos, but nothing. Then, I accidently powered one of the modules with 5V, but when I tried to check if it was still working with the BLE code, it was still detected, so does this mean that the module is not damaged ? Can someone please provide me with some help !?

Please do us, and yourself, a favour and edit your post to break it into paragraphs to make it easier to read and understand

The easier that you make it the more chance of getting help

I cannot make it shorter unfortunately. I tried to give all the details to make it easier to solve since you know everything I tried.

You don't have to make it shorter, just more readable. Even the small change that you have made has done that and will encourage users to read it compared to the original

@00110010_techboy_00110010 , if you are experimenting with nRF24L01 boards, including the higher power variant you have, then the go-to starting point that you will most likely be directed to is this one from Robin2 (which you previously found):

You've discovered:

radio.setPALevel(RF24_PA_LOW);

to reduce the Tx RF power level. You may still need to separate the radio modules by a few feet as well.

In addition, make sure that you have a good 3.3V supply to the radio module.

Where are you getting the 3.3V from to power the radio modules?

As I said, I got the 3.3V from many sources including the M1 and M2 adapters, the Arduino and STM32 onboard voltage regulators, a breadboard power module...
Please note that in the Hello World code the Serial Monitor is only used when radio.available, however, I got the serial monitor running blank forever, and sometimes showing some random characters, but for a little moment, I got some random characters showing every second, and the Tx code is meant to send a data every second, so maybe the connection was established.
Note also that my 4 NRF24L01 PA LNA modules have no white markings on it as it should be , I don't even have the GND marking.
Oh, and I accidently set PA to MIN instead of LOW, I'll try fixing that.

@markd833 Apparently MIN setting for the PA is better that LOW since it reduces the power consumption more than LOW, so what I did is right, but I could not get anything to work. Any help or advice !?

Yes, on some versions of the PA+ modules, the PA setting makes little difference to the actual power output, its very close to max all the time.

So, any solutions to my problem !?

Lots of people have problems with these modules.

When I went throught the various NRF24 modules I had some time back, I binned 50% of them as not working.

Maybe complain to the supplier of the modules that you cannot get them to work.

From 2015;

Are you able to repeat this?

The assumption from your statement is that you had the modules connected correctly.

What do you see on the serial monitor when you run the CheckConnection.ino sketch from post #30 in Robins tutorial?

I would probably throw that module in the bin as it may "appear" to work now but would likely fail prematurely.

EN_AA		= 0x00
EN_RXADDR	= 0x00
RF_CH		= 0x00
RF_SETUP	= 0x00
CONFIG		= 0x00
DYNPD/FEATURE	= 0x00 0x00
Data Rate	= 1 MBPS
Model		= nRF24L01+
CRC Length	= Disabled
PA Power	= PA_MIN
ARC		= 0


AND NOW WITH ADDRESS AAAxR  0x41 41 41 78 52   ON P1
 and 250KBPS data rate

SPI Speedz	= 10 Mhz
STATUS		= 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
RX_ADDR_P0-1	= 0x0000000000 0x0000000000
RX_ADDR_P2-5	= 0x00 0x00 0x00 0x00
TX_ADDR		= 0x0000000000
RX_PW_P0-6	= 0x00 0x00 0x00 0x00 0x00 0x00
EN_AA		= 0x00
EN_RXADDR	= 0x00
RF_CH		= 0x00
RF_SETUP	= 0x00
CONFIG		= 0x00
DYNPD/FEATURE	= 0x00 0x00
Data Rate	= 1 MBPS
Model		= nRF24L01+
CRC Length	= Disabled
PA Power	= PA_MIN
ARC		= 0

I got that with all 4 modules with the Arduino Mega 2560 but with the Uno I got

EN_AA		= 0x3f
EN_RXADDR	= 0x03
RF_CH		= 0x4c
RF_SETUP	= 0x07
CONFIG		= 0x0e
DYNPD/FEATURE	= 0x00 0x00
Data Rate	= 1 MBPS
Model		= nRF24L01+
CRC Length	= 16 bits
PA Power	= PA_MAX
ARC		= 0


AND NOW WITH ADDRESS AAAxR  0x41 41 41 78 52   ON P1
 and 250KBPS data rate

SPI Speedz	= 10 Mhz
STATUS		= 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
RX_ADDR_P0-1	= 0xe7e7e7e7e7 0x4141417852
RX_ADDR_P2-5	= 0xc3 0xc4 0xc5 0xc6
TX_ADDR		= 0xe7e7e7e7e7
RX_PW_P0-6	= 0x20 0x20 0x20 0x20 0x20 0x20
EN_AA		= 0x3f
EN_RXADDR	= 0x03
RF_CH		= 0x4c
RF_SETUP	= 0x27
CONFIG		= 0x0e
DYNPD/FEATURE	= 0x00 0x00
Data Rate	= 250 KBPS
Model		= nRF24L01+
CRC Length	= 16 bits
PA Power	= PA_MAX
ARC		= 0

The STM32F407VET6 gave me the same results as the UNO, so does this mean that the modules work fine ? It's the first time that I tried with the STM32F407VET6 on the NRF24L01's onboard socket, I did not try transmitting. I also noticed that the data was printed on the monitor very slowly, 2 characters at a time in average and it stopped here

AND NOW WITH ADDRESS AAAxR  0x41 41 41 78 52   ON P1
 and 250KBPS data rate

Is this normal or is the FTDI converter not working properly !? When I plug the converter, it stops any sound coming from my Bluetooth Speaker connected to the computer for one or two seconds, so maybe it does have a short circuit !?

What wiring, as in pin numbers, did you use for the Mega ?

SPI 50 51 52 and CE 7 and CSN 8 (I changed them in the code) I now remembered that I accidently lowered the SPI pins by 1 row, so I connected them to 52 53 and GND. By wiring the wrong pins, could I damage the SPI port ?

Possibly, but not normally.

So the modules work, I'll try sending and receiving data with the UNO and the STM32F407VET6, then with the STM32F103C8T6 and the STM32F407VET6 as they are meant to be my project's boards and I'll return to you guys

Well I tried the Hello World program of How To Mechatronics, it worked when I sent data from the STM32 to the Arduino, it printed on the Serial Monitor of the Arduino Hello World each second, and sometimes each 2 seconds, and sometimes it printed Hello World 2 times successively, but showing 2 different timings separated by 1 second(I activated the option that shoes the timing on the Serial Monitor). When I tried the opposite, I also got the message printing on the STM32F4's Serial monitor, so the next step is to try to send data packages and increase the PA power without having power issues. For that, the module on the transmitter will be connected to the NRF24L01 socket, that will be connected to 2 18650 batteries connected in series, so I should not have any power issue on the transmitter's side. However I cannot use this method on the receiver because the NRF24L01 will be directly connected to the board via the onboard socket, thus, using the onboard power regulator. I hope it will work fine :slight_smile:

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.