nRF24L01 Communication Problem

Hi Folks!

I'm trying to get working nRF24L01 with Arduino Uno R3 and I can't make it work with any lib (RF24, RF24network or Mirf).
I have a 10 pin nRF24L01 (2 VCC and 2 GND).
I'm using the folloing pinout
CE - D9
CSN - D10
MI - D11
MO - D12
SCK - D13

I'm using an old floppy flat cable, with male pins in on side. I've already checked the cable for continuity and it's OK.

After try all samples of all libs, with no luck, I decide do something "stupid".

I made a test with only one module+arduino running, and it's still getting/sending packets (from where I have no clue).

I used the samples without any changes.
Here are some more information from the serial output, all get from the same module+arduino, sometime running as sender, sometimes as receiver. As there is only one turned on I think I should get failed/timeouts replies, not the replies I'm showing now:

RF24/examples/GettingStarted/

ROLE: Pong back

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

STATUS		 = 0x00 RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=0 TX_FULL=0
RX_ADDR_P0-1	= 0x0000000000 0xffffffffff
RX_ADDR_P2-5	= 0xff 0xff 0x00 0x00
TX_ADDR		 = 0x0000000000
RX_PW_P0-6	= 0xff 0xff 0xff 0xff 0xff 0xff
EN_AA		 = 0xff
EN_RXADDR	= 0x00
RF_CH		 = 0xff
RF_SETUP	= 0xff
CONFIG		 = 0xff
DYNPD/FEATURE	= 0xff 0xff
Data Rate	 = 1MBPS
Model		 = nRF24L01
CRC Length	 = 16 bits
PA Power	 = PA_HIGH
Got payload 4294967295...Sent response.
Got payload 4294967295...Sent response.
Got payload 4294967295...Sent response.
Got payload 4294967295...Sent response.

And when I send "T" on the serial console I got:

*** CHANGING TO TRANSMIT ROLE -- PRESS 'R' TO SWITCH BACK
Now sending 179145...ok...Got response 4294967295, round-trip delay: 179295
Now sending 180295...ok...Got response 4294967295, round-trip delay: 180494
Now sending 181495...ok...Got response 4294967295, round-trip delay: 181678

As you can see it's sending 179145 (for example) and receiving 4294967295 as reply.

RF24/examples/GettingStarted/

ROLE: Pong back

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

STATUS		 = 0xff RX_DR=1 TX_DS=1 MAX_RT=1 RX_P_NO=7 TX_FULL=1
RX_ADDR_P0-1	= 0x0000000000 0x0000000000
RX_ADDR_P2-5	= 0x00 0xff 0xff 0xff
TX_ADDR		 = 0xffffffffff
RX_PW_P0-6	= 0x00 0x00 0x00 0x00 0x0d 0xff
EN_AA		 = 0xff
EN_RXADDR	= 0xff
RF_CH		 = 0xff
RF_SETUP	= 0x00
CONFIG		 = 0x7f
DYNPD/FEATURE	= 0xff 0xff
Data Rate	 = 1MBPS
Model		 = nRF24L01
CRC Length	 = 16 bits
PA Power	 = PA_HIGH
Got payload 4294967295...Sent response.
Got payload 4294967295...Sent response.
Got payload 4294967295...Sent response.

Again got 4294967295

With pingpair_dyn I got some similar results:

RF24/examples/pingpair_dyn/

ROLE: Ping out

STATUS		 = 0x1e RX_DR=0 TX_DS=0 MAX_RT=1 RX_P_NO=7 TX_FULL=0
RX_ADDR_P0-1	= 0xffffffffff 0xffffffffff
RX_ADDR_P2-5	= 0x00 0x00 0x00 0x00
TX_ADDR		 = 0x0000000000
RX_PW_P0-6	= 0xff 0xff 0xff 0xff 0xff 0xff
EN_AA		 = 0x00
EN_RXADDR	= 0xff
RF_CH		 = 0xff
RF_SETUP	= 0xff
CONFIG		 = 0xff
DYNPD/FEATURE	= 0x00 0x00
Data Rate	 = 1MBPS
Model		 = nRF24L01
CRC Length	 = 16 bits
PA Power	 = PA_HIGH
Now sending length 4...Got response size=255 value=ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
Now sending length 6...Got response size=255 value=ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
Now sending length 8...Got response size=255 value=ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
Now sending length 10...Got response size=255 value=ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
Now sending length 12...Got response size=255 value=ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
Now sending length 14...Got response size=255 value=ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ

See, send 4, receive 255 with and strange value

When I connect D7-GND I got:

RF24/examples/pingpair_dyn/

ROLE: Pong back

STATUS		 = 0xff RX_DR=1 TX_DS=1 MAX_RT=1 RX_P_NO=7 TX_FULL=1
RX_ADDR_P0-1	= 0xffffffffff 0x0701000000
RX_ADDR_P2-5	 = 0x00 0x00 0x00 0x00
TX_ADDR		 = 0xffffffffff
RX_PW_P0-6	= 0xff 0xff 0xff 0xff 0x3f 0x00
EN_AA		 = 0x00
EN_RXADDR	= 0x7f
RF_CH		 = 0xff
RF_SETUP	= 0xff
CONFIG		 = 0xff
DYNPD/FEATURE	= 0x7f 0xff
Data Rate	 = 1MBPS
Model		 = nRF24L01
CRC Length	 = 16 bits
PA Power	 = PA_HIGH
Got payload size=255 value=ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
Sent response.
Got payload size=255 value=ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
Sent response.

Where is it geting this payloads if I only have one turned on?

Can anyone had this problem and/or could give me a piece of advise?
Thanks a lot for your time.
Carlos

See how the RX/TX addresses (and other values) seem to be all F or 0? The Arduino is not actually reading data from the module.

Did you remember to use 3.3v to power it?

Did you possibly wire the connector pins the wrong way? (by viewing the pin layout from the wrong side of the board

Do you have another device trying to use pin 10? (such as the W5100 Ethernet shield?

Hi JohnHoward,

Did you remember to use 3.3v to power it?

Yes, all the time I've connected on 3.3v

Did you possibly wire the connector pins the wrong way? (by viewing the pin layout from the wrong side of the board

I already checked this three times, the connection is right (and in order to reply to you with absolute certainty I check right now again :p)

Do you have another device trying to use pin 10? (such as the W5100 Ethernet shield?

At the time of the test only nRF24L01 was connected on arduino board.

I'd like to add one information. Using Poor Man's 2.4 GHz Scanner (http://forum.arduino.cc/index.php/topic,54795.0.html) I get result, for example:

Channel Layout

1 2 3 4 5 6 7 8 9 10 11 12 13 14 <
| | 0
| | 0
| | 0
| | 0
| WWWWW | 1
|W*=. .-=aRa. .==*Ra. ..=+*WW+: .-=aWR= .:+aRR+. .:=+RRR. .:=*a| 11
|aaRWRRaaaaaRRWWRRaRWWRaRaaaRRWRRaRRWRRaa+*aWWRRRa+*RWWWRaa| 17
|WWWRWWWRWWRWWWWWRWWWWWWWWWWWWWWWWRWWRWWWWWWWWRWWWWWWWRWWWWWWWWWR| 22
|WWRaaaRRRWWRaaaaRRRRaRaRRWRWRRRaaRRWRWRRaRRRRRWWRRaaRRRWRRRaRRRW| 29
|RRWWWWRRRRRRRRRRRaRRRWWWRRRWRRWRWRRRRaRRRRRRRRaRRRWRRRRRRWRWRRRR| 32
|RWWRWWRWRWRRWRWWWWWWWRWWWWWWWWWWWWWWWWWRRWWWRRRRRWWWWWWWWWRWWWWR| 33
|WWRRRRWWWWWRWWWWWWWWWWWWWWWWWWWWRRWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW| 35

As you can see I'm desperate, that's why I'm asking for help LOL :stuck_out_tongue:

Thanks a lot!

Must be a wiring problem or bad nRF module(s). Note that 4294967295 is decimal for FFFFFFFF so the test program is really NOT reading anything.

I found that it was somewhat easy to get the module into a confused state while experimenting. Resetting did not help, I would have to completely power down everything. By 'confused' I mean that the SPI protocol was not being followed and/or the select lines were not being being properly enabled/disabled. The outward appearance was just the sort of thing you indicated - reading all bits 'high'.

It's worth noting that the status printout can be misleading when the nRF isn't working correctly. For example, it will indicate the 1MBPS Data Rate when it really hasn't read that value from the nRF registers.

MI - D11
MO - D12
SCK - D13

Found yr issue,
D11 = MOSI on nRF
D12 = MISO on nRF

I made these nRF adapter with 3.3V Reg powered by Pin10 ( my CE=8,CSN=9 )