nRF24L01 write always fails on Arduino nano

I am trying to get wireless communication going between two Arduino Nano's using the nRF24L01 tranceivers. I have tried every sample program out there, but the radio.Write() function always fails. I started with this hardware: https://www.amazon.com/WayinTop-Transceiver-Regulator-ATmega328P-Communication/dp/B07ZCKMNRG/ref=sr_1_20?dchild=1&keywords=arduino+radio&qid=1606170834&sr=8-20.
I have checked my wiring over and over.
I have added a capacitor across the power to the module
I have tried every sample program I could find.
I have purchased two more tranceiver modules and swapped them out.
So far, nothing has worked.

The only thing I can think of is that the 5v line out of the Nano cannot power the transceiver module and power adapter. Could this be? It appears to be powered up and when I am able to communicate with the radio.

I looked at this post: https://forum.arduino.cc/index.php?topic=557451.0. #4 showed a sample program which I tried. Here is the output.

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 = 0xb00b1e5000 0xc2c2c2c2c2
RX_ADDR_P2-5 = 0xc3 0xc4 0xc5 0xc6
TX_ADDR = 0xb00b1e5000
RX_PW_P0-6 = 0x20 0x00 0x00 0x00 0x00 0x00
EN_AA = 0x3f
EN_RXADDR = 0x03
RF_CH = 0x4c
RF_SETUP = 0x01
CONFIG = 0x0e
DYNPD/FEATURE = 0x03 0x06
Data Rate = 1MBPS
Model = nRF24L01+
CRC Length = 16 bits
PA Power = PA_MIN
ARC = 15
Now send packet: 1
packet delivery failed
Now send packet: 1
packet delivery failed
Now send packet: 1
packet delivery failed
etc.

Is there anything else I could try?

A common problem with nRF24 modules is insufficient 3.3v current from the Arduino 3.3v pin. This seems to be a particular problem with the nano. The high-power nRF24s (with the external antenna) will definitely need an external power supply. At least for testing try powering the nRF24 with a pair of AA alkaline cells (3v) with the battery GND connected to the Arduino GND.

Have a look at this Simple nRF24L01+ Tutorial.

Wireless problems can be very difficult to debug so get the wireless part working on its own before you start adding any other features.

The examples are as simple as I could make them and they have worked for other Forum members. If you get stuck it will be easier to help with code that I am familiar with. Start by getting the first example to work

There is also a connection test program to check that the Arduino can talk to the nRF24 it is connected to. If the first example does not work be sure to try the connection test for both of your Arduinos. Nothing will work if the connection test fails.

If you are using the high-power nRF24s (with the external antenna) it may help to have a distance of about 3 metres between the two nRF24s so that the signal does not overwhelm the receiver. However someone on the Forum has had them working without that separation - I don’t have any personal experience with them. If you are new to nRF24s it may be better to start with a pair of low power modules with the pcb antenna.

…R

Thanks for the info.
I am using the high power modules with an antenna. They also have a power supply board that runs on 5v from the Arduino Nano.

In order for the write to work, do you need a working receiver running? I'm wondering if it fails because it does not receive an acknowledgement. Maybe the problem is with the receiver??

I'll start with your examples and see what happens from there.

sgomon:
In order for the write to work, do you need a working receiver running? I'm wondering if it fails because it does not receive an acknowledgement. Maybe the problem is with the receiver??

Until you can successfully receive data there is no way to know whether the fault is with the receiver or the transmitter. And if you can receive data you only know that both are working.

I'll start with your examples and see what happens from there.

Before that, start with the connection test program.

...R

I ran the connection test program on the transmitter and got this:

CheckConnection Starting

FIRST WITH THE DEFAULT ADDRESSES after power on
Note that RF24 does NOT reset when Arduino resets - only when power is removed
If the numbers are mostly 0x00 or 0xff it means that the Arduino is not
communicating with the nRF24

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 0xc2c2c2c2c2
RX_ADDR_P2-5 = 0xc3 0xc4 0xc5 0xc6
TX_ADDR = 0xe7e7e7e7e7
RX_PW_P0-6 = 0x00 0x00 0x00 0x00 0x00 0x00
EN_AA = 0x3f
EN_RXADDR = 0x03
RF_CH = 0x4c
RF_SETUP = 0x07
CONFIG = 0x0e
DYNPD/FEATURE = 0x00 0x00
Data Rate = 1MBPS
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 = 0x00 0x20 0x00 0x00 0x00 0x00
EN_AA = 0x3f
EN_RXADDR = 0x03
RF_CH = 0x4c
RF_SETUP = 0x27
CONFIG = 0x0e
DYNPD/FEATURE = 0x00 0x00
Data Rate = 250KBPS
Model = nRF24L01+
CRC Length = 16 bits
PA Power = PA_MAX
ARC = 0

This is the output of the first transmitter program in your tutorial:

SimpleTx Starting
Data Sent Message 0 Tx failed
Data Sent Message 0 Tx failed
Data Sent Message 0 Tx failed
Data Sent Message 0 Tx failed

Does a receiver have to be running at the same time or could it be failing because I was not running the receiver. Also if running both and it fails, how do you know whether it is the transmitter or receiver that is failing?

If I do run the receiver, I get the same message on the transmitter, and just SimpleRx Starting on the receiver.

sgomon:
I ran the connection test program on the transmitter and got this:

That suggests that the Tx Arduino is talking to its nRF24. But you also need to do that test for the Rx Arduino

Does a receiver have to be running at the same time or could it be failing because I was not running the receiver. Also if running both and it fails, how do you know whether it is the transmitter or receiver that is failing?

I guess you missed Reply #3

...R

Sorry, here is the output from the test run on the receiver:

CheckConnection Starting

FIRST WITH THE DEFAULT ADDRESSES after power on
Note that RF24 does NOT reset when Arduino resets - only when power is removed
If the numbers are mostly 0x00 or 0xff it means that the Arduino is not
communicating with the nRF24

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 = 0x00 0x20 0x00 0x00 0x00 0x00
EN_AA = 0x3f
EN_RXADDR = 0x02
RF_CH = 0x4c
RF_SETUP = 0x01
CONFIG = 0x0e
DYNPD/FEATURE = 0x00 0x00
Data Rate = 1MBPS
Model = nRF24L01+
CRC Length = 16 bits
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 = 0xe7e7e7e7e7 0x4141417852
RX_ADDR_P2-5 = 0xc3 0xc4 0xc5 0xc6
TX_ADDR = 0xe7e7e7e7e7
RX_PW_P0-6 = 0x00 0x20 0x00 0x00 0x00 0x00
EN_AA = 0x3f
EN_RXADDR = 0x02
RF_CH = 0x4c
RF_SETUP = 0x21
CONFIG = 0x0e
DYNPD/FEATURE = 0x00 0x00
Data Rate = 250KBPS
Model = nRF24L01+
CRC Length = 16 bits
PA Power = PA_MIN
ARC = 0

The Rx Arduino also seems to be communicating properly with its nRF24 - but the connection test does not test the wireless.

Have you some spare nRF24s in case one of them is faulty?

...R

Yes, I have another set, which I have tried. I'll give them another shot.

Tried a second set of transceivers, but had the same result. Nothing.

I did get something to kind of work. I am running the GettingStarted_HandlingData example from RF24. If I set one unit up as radioNumber = 1 and role = 1, and the other as radioNumber=0 and role = 0, data is transmitted. The transmitting unit still gets a return value of 0 when doing a radio.write(), but the data is getting picked up by the receiver. If I swap the radio numbers and roles, between the two units, nothing works.

I can think of no reason why another program would work and my examples would not. There must be a hardware difference.

...R