2 nRF24L01 won't transmit or receive, but seem to be functional

I'm trying to make an Uno and Nano talk to each other with nRF24L01 modules (those with external antennas) but they aren't sending any data.
I'm using code from this tutorial for testing. I've followed it to the bit, my Uno is connected to the module exactly as this picture shows (plus I'm using a 10uF capacitor between 3.3V and GND) and the second transceiver is connected to the same pins on Arduino Nano (again with that capacitor)


I'm directly copy pasting code from the tutorial, the first example. No matter which board I make the transmitter, it keeps printing "Data Sent Message 0 Tx failed" and the receiver always gets stuck at "SimpleRx Starting"
Powering the nRF24L01 modules with 2 AA batteries doesn't fix this.
Using some test code (can't find it now but I'm sure it was somewhere in the linked tutorial) I could see both boards are connecting properly to their transceiver modules.
Scanner example provided with the RF24 library does work correctly on both boards

Is there something I forgot to check? My jumper cables are good and the setup won't work even with some distance between the boards

need its own power source, that from UNO is too weak.

The 3.3V supply for the Nano is taken from the USB to serial chip so is is capable of supplying little current. Not enough for the RF24 to transmit, especially the higher powered RF24 modules.

The Uno 3.3V may work with a cap included with heavy emphasis on may.

A solution can be the RF24 power interface modules that take 5V and drop it to 3.3V with an external regulator. I use homemade versions with good success.

Do not expect it to work properly and realabibly without using an external power supply.

If you did this with both installations and remembered to have a common ground between the NRF24L01 and its Arduino (which does not appear in your illustration) then power should not be the problem here.

Post #30 in that tutorial.

Here are photos and simple diagram of my setup. Arduinos are powered from my laptop with USB cables and batteries are fully charged



Test, Uno:

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	= 0x0000000070 0x0000000070
RX_ADDR_P2-5	= 0x38 0x38 0x1c 0xc6
TX_ADDR		= 0x4141417852
RX_PW_P0-6	= 0x20 0x1c 0x20 0x38 0x38 0x1c
EN_AA		= 0x3f
EN_RXADDR	= 0x1c
RF_CH		= 0x38
RF_SETUP	= 0x1c
CONFIG		= 0x0e
DYNPD/FEATURE	= 0x38 0x38
Data Rate	= 2 MBPS
Model		= nRF24L01+
CRC Length	= 16 bits
PA Power	= PA_HIGH
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	= 0x0000000070 0x0000000070
RX_ADDR_P2-5	= 0x38 0x38 0x1c 0xc6
TX_ADDR		= 0x4141417852
RX_PW_P0-6	= 0x20 0x1c 0x20 0x38 0x38 0x1c
EN_AA		= 0x3f
EN_RXADDR	= 0x1c
RF_CH		= 0x38
RF_SETUP	= 0x1c
CONFIG		= 0x0e
DYNPD/FEATURE	= 0x38 0x38
Data Rate	= 2 MBPS
Model		= nRF24L01+
CRC Length	= 16 bits
PA Power	= PA_HIGH
ARC		= 0

Test, Nano

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	= 0x20 0x20 0x20 0x20 0x00 0x20
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 0x00 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 second test on the Uno failed. The data rate is still 2MBPS and the first test on the Nano shows 1MBPS.
There is something wrong. Try forcing them both to 250KBPS to get them talking to each other.

 radio.setDataRate( RF24_250KBPS );

EDIT

or try this form of the constructor on both Uno and Nano:

RF24 radio(9, 10, 4000000); // set SPI speed to 4MHz instead of default 10MHz

from: https://github.com/nRF24/RF24/blob/master/COMMON_ISSUES.md

I added the 4000000 to the constructor and ran the test. On Uno both default and AAAxR addresses show SPI speed 4Mhz and data rate stays at 2 MBPS. On Nano speed is also 4Mhz, data rate on default address is 1MBPS and with AAAxR address it changes to 250 KBPS. Communication still doesn't work

It appears that you are unable to set the devices to a common data rate which they can both use. It has to be the same for communications to work.
Did you power cycle both the Uno and the Nano before doing these tests ?

Maybe swap the NRF24L01 modules between the Nano and Uno and see if the problem moves.

The high power (with antenna) units may have trouble communicating if they are too close together.

I swapped them and data speed is 2MBPS on both no matter what. I was unplugging VCC wires from the modules before each test. I'm considering buying some replacement modules from a different seller and see if they will work

It may just be a trick of the light but on the Uno the black negative jumper attached to capacitor on the breadboard sliver appears to loop back on itself.

If you check the data sheet for the radios I believe you will find they are not 5V but 5V tolerant. The outputs are 3V3 which is not compatible with 5V inputs as your schematic is showing. This will not damage anything, at best it would be intermittent. You need something to translate the voltages for the control/data pins. There are inexpensive modules that these plug into that give you the 3V3 and translate the signals.

It may just be a trick of the light but on the Uno the black negative jumper attached to capacitor on the breadboard sliver appears to loop back on itself.

These are two separate jumpers. The one above capacitor goes through the mess of cables and comes down to attach to Uno. The other one goes to the module

You need something to translate the voltages for the control/data pins.

I'll try that

I bought the adapters and two new NRF24L01 modules. Now I'm powering the modules with 4xAA battery packs (the output through the adapters is 3.3V) and the 10 uF capacitors are wired before the adapters. The adapters don't change logic voltage so I wired pins 9-13 through 100 Ohm resistors and with that setup I got these test results:

Nano

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	= 4 Mhz
STATUS		= 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
RX_ADDR_P0-1	= 0x4141417852 0xc2c2c2c2c2
RX_ADDR_P2-5	= 0xc3 0xc4 0xc5 0xc6
TX_ADDR		= 0x4141417852
RX_PW_P0-6	= 0x20 0x20 0x20 0x20 0x20 0x20
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		= 5


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

SPI Speedz	= 4 Mhz
STATUS		= 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
RX_ADDR_P0-1	= 0x4141417852 0x4141417852
RX_ADDR_P2-5	= 0xc3 0xc4 0xc5 0xc6
TX_ADDR		= 0x4141417852
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		= 5

Uno

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	= 4 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	= 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	= 4 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


Both modules reliably get 250 KBPS data rate with custom addresses but when I try to run the simple TX and RX codes, again, the transmitter is stuck printing "Data Sent Message 0 Tx failed" and receiver doesn't print anything beyond "SimpleRx Starting". I doubt it't because the antennas are too close together, but I keep them about 2 meters apart when running these codes

I give up. According to this the issue might also be with the clock, one video suggests twisting one jumper cable (I think it was CSN) around ground cable, I'm leaving this here in case someone stumbles upon this topic in the future and I'll be using another module for my project

Before you give up, check this post. I had the same problem you are describing. The solution I found was to solder a wire to connect the capacitors to the ground terminal on the power breakout board.

1 Like

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