NRF24L01 Problems

I am relevantly new to Arduino and have very much to learn on it. I have spent days trying to solve this problem I have but have no luck at all.
I have been using 2 Arduino Nanos with low power NRF24L01 Transceivers with the Led_remote example in the RF24 Library.
All works fine but the range was poor so I upgraded to the higher power versions with an SMA aerial as they said it was a direct replacement for the low power device and there wasn't any need to change the software.
This is where my problems begin. The high power devices didn't work.
After lots of messing, I found the following combinations,
low power to low power = work :slight_smile:
high power to high power = don't work :frowning:
low power to high power = work :slight_smile:
high power to low power = don't work :frowning:
I have even swapped the high power devices around and they both receive fine. They both also seem to fine in the serial status.
I then tried the pingpair example and both the high power devices work fine.
I really need the led_remote example to work. Can anyone help?

I use 9 the NRF24L01 from sparkfun : SparkFun Transceiver Breakout - nRF24L01+ (RP-SMA) - WRL-00705 - SparkFun Electronics with the right antenna 2.4GHz Duck Antenna RP-SMA - WRL-00145 - SparkFun Electronics

1 sender and 8 receivers and they work over 80 meters !!! without ant trouble.

Where did you bought yours ?

I got both the high power and low power ones from ebay. They both have the same 8 pins with only 7 being used.
The low power ones look like this

and the high power ones look like this
http://www.siliconray.com/media/catalog/product/cache/1/image/9df78eab33525d08d6e5fb8d27136e95/n/r/nrf24l01plwtm-1.jpg

I've got the sames.

For the high power you need to provide an external 3.3V (because these modules are not 5V compatible), for the reason it's drain more power (mA) than an arduino can provide, you can use an LM340-333 or 7803 regulator.

Don't forget that if you want to go 'far' you need to adapt the power transmiter with the

radio.setPALevel( Power_Const );

where Power_Const can be either one of : RF24_PA_MIN,RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX

according to the RF24.h file in the library.

As I said, I got up to 80 meters without any trouble with a rate of 250kbps.

If I can help you more, don't hesitate.

Best Regards.

Thanks for the suggestion but unfortunately still no luck.
I have run the high power transmitter from a separate 3.3v supply. The serial says "Now sending...failed". Yet it still works fine with the low power module.
The high power still seems to work with the pingpair example though

what is the result of radio.printDetails(); function ?

If you don't use it, put it in the setup() at the end of it.

Here you go

Low Power Device Transmit

STATUS                      = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
RX_ADDR_P0-1         = 0xf0f0f0f0e1 0xc2c2c2c2c2
RX_ADDR_P2-5         = 0xc3 0xc4 0xc5 0xc6
TX_ADDR                   = 0xf0f0f0f0e1
RX_PW_P0-6             = 0x20 0x00 0x00 0x00 0x00 0x00
EN_AA                        = 0x3f
EN_RXADDR              = 0x03
RF_CH                        = 0x4c
RF_SETUP                  = 0x23
CONFIG                       = 0x0c
DYNPD/FEATURE       = 0x00 0x00
Data Rate                   = 250KBPS
Model                         = nRF24L01+
CRC Length                = 16 bits
PA Power                    = PA_LOW

High Power Device Transmit

STATUS                      = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
RX_ADDR_P0-1         = 0xf0f0f0f0e1 0xc2c2c2c2c2
RX_ADDR_P2-5         = 0xc3 0xc4 0xc5 0xc6
TX_ADDR                   = 0xf0f0f0f0e1
RX_PW_P0-6             = 0x20 0x00 0x00 0x00 0x00 0x00
EN_AA	                     = 0x3f
EN_RXADDR              = 0x03
RF_CH                        = 0x4c
RF_SETUP                  = 0x23
CONFIG                       = 0x0c
DYNPD/FEATURE       = 0x00 0x00
Data Rate                   = 250KBPS
Model                         = nRF24L01+
CRC Length                = 16 bits

PA Power                    = PA_LOW

Low Power Device Receive

STATUS                      = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
RX_ADDR_P0-1         = 0xf0f0f0f0e1 0xc2c2c2c2c2
RX_ADDR_P2-5         = 0xc3 0xc4 0xc5 0xc6
TX_ADDR                   = 0xf0f0f0f0e1
RX_PW_P0-6             = 0x20 0x00 0x00 0x00 0x00 0x00
EN_AA                        = 0x3f
EN_RXADDR              = 0x03
RF_CH                        = 0x4c
RF_SETUP                  = 0x23
CONFIG                       = 0x0f
DYNPD/FEATURE       = 0x00 0x00
Data Rate                   = 250KBPS
Model                         = nRF24L01+
CRC Length                = 16 bits
PA Power                    = PA_LOW

High Power Device Receive

STATUS                      = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
RX_ADDR_P0-1         = 0xf0f0f0f0e1 0xc2c2c2c2c2
RX_ADDR_P2-5         = 0xc3 0xc4 0xc5 0xc6
TX_ADDR                   = 0xf0f0f0f0e1
RX_PW_P0-6             = 0x20 0x00 0x00 0x00 0x00 0x00
EN_AA	                     = 0x3f
EN_RXADDR              = 0x03
RF_CH                        = 0x4c
RF_SETUP                  = 0x23
CONFIG                       = 0x0f
DYNPD/FEATURE       = 0x00 0x00
Data Rate                   = 250KBPS
Model                         = nRF24L01+
CRC Length                = 16 bits
PA Power                    = PA_LOW

I am also having problem with nrf24l01 module. i have bought them two times because i thought the first one was defective but i continue to have the same problem. i can't have them communicate. i used all the codes, example and libraries but they are not communicating. when i use the pingpair example i get this output on the serial monitor-
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 = 0xf0f0f0f0d2
RX_PW_P0-6 = 0x08 0x08 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_HIGH

Do you realize this thread is three years old? :o

Try setting the data rate to something other than 1Mbps. If it still says 1Mbps in the printDetails, then you have some connections wrong. Don't bother trying to get two modules to connect to each other until you have your arduino talking to the radio properly first.

Hi, I have problem with this module too. I check connections for many times. I tried connect capacitor 10uF between VCC and GND, without success. I also tried change speed to 250 kbps. Imgur: The magic of the Internet It is connected to UNO. Thank's for your reply!

Could you give me some advice, please? Thanks

Im working on mine now, where are you getting your 3.3V from?

It's not original Arduino Uno, it's chinese copy. I am getting power supply from arduino pin 3V3

I have succeeded in communicating them but there are many packets lost.i am using a 10 uf capacitor in the 3.3v supply from arduino.

Today I tried original mega and i got same issue. Maybe wrong both modul nrf24l10?

If u are using 2 separate supply sources, remember to connect the grounds.

Arduino has power via USB and nrf via 3V3

reddriver20:
Hi, I have problem with this module too. I check connections for many times. I tried connect capacitor 10uF between VCC and GND, without success. I also tried change speed to 250 kbps. Imgur: The magic of the Internet It is connected to UNO. Thank's for your reply!

@reddriver : The above is your first post which does not speak to the nature of your problem, other than it being a problem.

If you are expecting help, you need to post specific information outlining your problem.
I also suggest you start a new/separate thread with an appropriate heading.

I recommend ordering the base boards for these, they have the power supply and caps installed.

With that said, I have a sender and receiver and have a very good connection between two devices going ONE WAY. If I switch the sender/receiver roles of the hardware it still works.

However if I attempt to have the receiver send data back (stopListening, radio.write) all kinds of problems show up.

I am trying to have a "heartbeat" or confirmation of commands send but I have issues doing that, one way communication only seems to work fine though.

I'll report back here with my findings but I ordered the base boards from amazon and hope that clears up my issues.

The example given in the arduino wiki for a "joystick" is also only one way communication. There is a pingpair_blokcing example in a fork of the code that works ok, but still has issues.

Its just odd though, 1 way communication is very fast an 0 errors, its like there is a glitch in the stopListening and StartListening switch.

I am working on a wireless trailer harness here. I want to have a "heartbeat" so if it loses connection I can have a warning of some sort. However its spray and pray for now until I get this tracked down. I'll be posting a video and some code shortly on my project. You may get some information eventually if you watch.

The ACK packets act as a confirmation that the packet went through.