Issues with nRF24L01

Hello All,

Several years ago, I designed a project using the nRF24L01 wireless module. I recall struggling greatly to get this to work, but eventually I did succeed and the results were excellent.

Well... I'm now at it again, and once again I'm stuck with issues getting the nRF modules to communicate.

I came across this excellent tutorial on the Arduino forum: "Simple nRF24L01+ 2.4GHz transceiver demo" by Robin2.

I have been attempting to follow it, but I am now stuck and looking for advice. After uploading the transmitting and receiving sketches described in the first post in the aforementioned tutorial, I power on my 'receiver' module but don't seem to be getting anything. My serial monitor only shows: "SimpleRX Starting". Nothing comes after that, so it seems I am not receiving anything from the 'transmitter' unit.

To help diagnose the issue, I tried running the sketch given by Robin2 at the end of his tutorial (post #29). When I run this sketch on both the transmitting and receiving units, I get the following output:

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

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

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

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

Here are my questions:

  1. I believe the above results mean the units are communicating properly with the Arduinos. Is this correct?
  2. Is it OK to have both units powered by my computer USBs when trying to get them to communicate, or should they be power by different devices? I have tried powering one of the units with a 9V battery but it didn't seem to help.
  3. Any other suggestions on how to get these two units to communicate?

I look forward to any suggestions.

Thank you,

Dustin

It is OK to power both the Rx and Tx Arduinos from USB but they must each be using a different COM port so you need 2 separate instances of the IDE running.

What do you see in the Serial monitor of the Tx Arduino ?

Thank for taking the trouble to provide a comprehensive description of your suggestion. It is a nice contrast the the very common "it won't work". :slight_smile:

Your results certainly suggest that the Arduinos are communicating with their attached nRF24 modules. However that test does not check whether the wireless part works.

You have not said what type of Arduinos you are using and whether it is a genuine Arduino or a clone. And you have not said if you are using the high power nRF24 modules (with external antenna) or the low power modules (with pcb antenna).

A common problem is an inadequate 3.3v power supply for the nRF24. I have some Mega clones that cannot power a low-power nRF24 from their 3.3v pin and I don't think any type of Arduino could power a high-power nRF24 from its 3.3v pin.

Try powering the nRF24s from a pair of AA alkaline cells (3v) with the battery GND connected to the Arduino GND.

If none of this helps please post diagrams showing exactly how you have everything connected. See this Simple Image Guide

...R

Hello UKHeliBob,

The Tx arduino serial monitor is repeatedly printing the following:

Data Sent Message 0 Tx failed

Robin2, thank you for your answers. I had not considered that the nRF24 module may not be getting enough power. I am currently using:

Rx: Genuine Arduino Uno
Tx: Cloned Pro-mini
nRF24 module: high power with external antenna

Based on what you have said, I guess this is likely my problem. Although, I have to say I am a bit surprised. I previously used this same configuration quite successfully, as I detailed in an earlier post on this forum:
Wireless (nrf24l01) altimeter for RC plane (completed project with code)

I will find an external power supply for the nRF24 units and see if this helps. As an interesting side note, I have recently moved to China for a job opportunity. Previously, I had purchased nearly all of my electronic components from China, and thus when considering the move to China, believed that one 'perk' would be rapid access to these cheap electronics. Surprisingly (and confusingly) it is actually harder (and more expensive) for me to purchase the same electronics I used to get off of ebay now that I am physically located in China. To make matters worse, when located in North America, I always received free shipping when I purchased from China. Now that I'm in China, I have to pay for shipping! Anyway, I will go this weekend to the electronics market in Shenzhen. I should be able to pick up some basic supplies, and will report back if a better power supply allows the nRF24 units start communicating properly.

Thanks again,

Dustin

I believe there can also be problems with high-power nRF24s if they are too close together. Try them with a distance of about 3 metres or more.

...R