Can't send data via NRF24l01 via RF24 library

Hi
I am trying to get the RF24 library from Maniacbug to work on an Arduino Uno
I am using the example "Getting Started", and I am getting errors when it tries to transmit data.

Anyone have any clue as to what could be wrong. The wiring should be ok, I have checked it several times.

Here is the log from the serial monitor:

RF24/examples/GettingStarted/

ROLE: Pong back

*** PRESS 'T' to begin transmitting to the other node

STATUS		 = 0x83 RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=1 TX_FULL=1
RX_ADDR_P0-1	 = 0x8383838383 0x8383838383
RX_ADDR_P2-5	 = 0x83 0x83 0x83 0x83
TX_ADDR		 = 0x8383838383
RX_PW_P0-6	 = 0x83 0x83 0x83 0x83 0x83 0x83
EN_AA		 = 0x83
EN_RXADDR	 = 0x83
RF_CH		 = 0x83
RF_SETUP	 = 0x83
CONFIG		 = 0x83
DYNPD/FEATURE	 = 0x83 0x83
Data Rate	 = 1MBPS
Model		 = nRF24L01
CRC Length	 = Disabled
PA Power	 = PA_LOW
*** CHANGING TO TRANSMIT ROLE -- PRESS 'R' TO SWITCH BACK

Now sending 12319...failed.

Failed, response timed out.

Now sending 13530...failed.

Failed, response timed out.

Now sending 14739...failed.

Failed, response timed out.

Now sending 15947...failed.

Failed, response timed out.

Now sending 17156...failed.

Failed, response timed out.

Now sending 18365...failed.

LarsSorensen:
RX_ADDR_P0-1 = 0x8383838383 0x8383838383
RX_ADDR_P2-5 = 0x83 0x83 0x83 0x83
TX_ADDR = 0x8383838383
RX_PW_P0-6 = 0x83 0x83 0x83 0x83 0x83 0x83
EN_AA = 0x83

The connections between your arduino and the nrf24l01 are not correct. You should not be getting all these 83's as responses. You should be seeing numbers like

ROLE: Ping out
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 0x02 0x70
TX_ADDR          = 0xf0f0f0f0e1

Your responses may not be exactly the same but they should be similar.

Well,
It seems something is very unstable...
I have two rf modules and an Uno and a Nano.
No matter which combination I use them in, I get varying results.
Even from reset to reset with the same board/module combination.
I tried switching hook-up wires without success...
I am a bit at loss here...

I get al kinds of startup statuses:

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	 = 0x20 0x20 0x00 0x00 0x00 0x00
EN_AA		 = 0x3f
EN_RXADDR	 = 0x03
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
------------------------------------

STATUS		 = 0x00 RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=0 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	 = 1MBPS
Model		 = nRF24L01
CRC Length	 = Disabled
PA Power	 = PA_MIN
------------------------------------
X_ADDR_P0-1	 = 0xe7e7e7e7e7 0xf0f0f0f0d2
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	 = 0x07
CONFIG		 = 0x0f
DYNPD/FEATURE	 = 0x00 0x00
Data Rate	 = 1MBPS
Model		 = nRF24L01+
CRC Length	 = 16 bits
PA Power	 = PA_MAX
--------------------------

LarsSorensen:
Well,
It seems something is very unstable...

That response looks ok but if you are getting unstable results then the answer is probably the supply to the nrf24l01. The modules are very sensitive to disturbance on the 3.3v supply rail so my solution was to solder 1uF capacitors directly across the vcc and gnd connections on the top of the nrf24l01 module. The value of the capacitor does not seem to be critical but with the extra smoothing the modules should be rock solid.

Hmm... Well, not matter how, the status info looked, it would fail transmitting data.

I will try the capacitor trick, though I only have 100uF, so I will probably have to go get some smaller ones...

Thanks for your tip!!

LarsSorensen:
I will try the capacitor trick, though I only have 100uF, so I will probably have to go get some smaller ones...

The 100uF should be ok to try but I would want to work out the initial charging current first. If the resistance between the capacitor and the voltage regulator is only 1 ohm then the peak charging current is 3.3 amps. I presume that the regulators used on the arduino are current limited but you could put a resistor in series with the cap to reduce the peak current. Of course this then changes the resonant frequency of the circuit so .. try and find a small capacitor!

Ok, so I tried soldering a 1uF 100V (was advised to use this component by the shop) and soldered it on top of the RF module, capacitor "-" to ground on the module and "+" to VCC on the module.

The status message looks ok, but It still says: "Now sending 13530...failed. Failed, response timed out."

Anyone have any clue as to what could be wrong. The wiring should be ok, I have checked it several times.

Post a link to the nRF24 module you are using, and exactly how you have it wired, including power and ground.

Are you using pins 9 and 10 or 8 and 9 for ce, csn?
How far apart are the two units? (I noticed you have PA_Low)
Do you have one transmitting and the other receiving?
Post your code, It might be a dumb little problem.

-Marc

Hi, I also had the same problem as you.

I was using the "Getting Started" example from the library to communicate two modules nRF24L01 with two Arduino Uno.
At first they didn't communicate at all, the programme freezed when coming to the line radio.write(xxx), and it didn't go further.

I used a 3.3V regulator to power the two nRF24L01 (only one regulator for both, because I only had one, but it would be better to use one regulator for each, basically to separate them some meters). Then it started communicating but said "Failed" everywhere.

Then I unplugged and plugged the two Arduinos again and they just worked fine.

Hope it helps someone.