NRF24L01+ : sending failed

Hello everyone,

I'm going crazy trying to make to NRF24L01+ modules communicate.

I'm using the RF24 library and I uploaded the "Getting Started" program and I keep having a "sending : failed" result.

I checked the wiring and tried adding a 47uF capacitor between 3V3 and Ground pins of the Arduino Nano, with no luck. It also seems that the setup runs twice, as "radio.printDetails" is printed twice.

Here's what the console prints (which I don't quite know how to interpret) :

STATUS		 = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
RX_ADDR_P0-1	 = 0xf0f0f0f0e1 0xf0f0f0f0d2
RX_ADDR_P2-5	 = 0xc3 0xc4 0xc5 0xc6
TX_ADDR		 = 0xf0f0f0f0e1
RX_PW_P0-6	 = 0x08 0x08 0x00 0x00 0x00 0x00
EN_AA		 = 0x3f
EN_RXADDR	 = 0x02
RF_CH		 = 0x4c
RF_SETUP	 = 0x07
CONFIG		 = 0x0f
DYNPD/FEATURE	 = 0x00 0x00
Data Rate	 = 1MBPS
Model		 = nRF24L01+
CRC Length	 = 16 bits
PA Power	 = PA_MAX

The RX address P0 seems correct :

RF24 radio(9,10);

const uint64_t pipes[2] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL };

// The various roles supported by this sketch
typedef enum { role_ping_out = 1, role_pong_back } role_e;

// The debug-friendly names of those roles
const char* role_friendly_name[] = { "invalid", "Ping out", "Pong back"};

// The role of the current running sketch
role_e role = role_ping_out;

Any idea ?

You are aware of the fact that you need two Arduinos for that example to work?

You did not

  • mention the type of Arduinos you are running the sketch on
  • specify which of the many libraries you use
  • post the complete code
    The capacitor should be placed as close to the NRF as possible, between the adjacent pins on the connector
    worked good with my modules (some do not even need one), 2.2 µF up should work.

It seems you are using a library very near to the original ManiacBug library.

I would use Optimized High Speed NRF24L01+ Driver Class.

Robin2 has some nice working examples that he supports if there are problems.

I do realize I need two Arduinos (I'm using Chinese nanos). However as I never managed to make the example work, I just started with one, expecting successful sending and a time out response.

I am indeed using the maniacbug version of the RF24 Library and its GettingStarted code found here : RF24: GettingStarted.pde

I'll go check the links you provided, thanks.

Sending failed means "I got no acknowledgement", not "the transmitter is malfunctioning".

Ok, I got a bit confused by this message.

Thanks for your links : I used the library you suggested and got it to work with Robin2 examples (very useful post).

I’m glad I could help. :wink: