Go Down

Topic: NRF24L01 Problems (Read 5370 times) previous topic - next topic

memmop

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  :)
high power to high power = don't work  :(
low power to high power = work  :)
high power to low power = don't work  :(
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?




Grag38

I use 9 the NRF24L01 from sparkfun : https://www.sparkfun.com/products/705 with the right antenna https://www.sparkfun.com/products/145

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

Where did you bought yours ?

memmop

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
http://www.elecfreaks.com/store/images/Wireless_RF_2.4G_RFM01_01.jpg

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

Grag38

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.

memmop

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


Grag38

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

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

memmop

Here you go
Code: [Select]
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

aditya12345

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

iforce2d

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.

reddriver20

#9
Jun 22, 2015, 03:58 pm Last Edit: Jun 22, 2015, 03:58 pm by 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. http://imgur.com/mHOLvoY It is connected to UNO. Thank's for your reply!

reddriver20

Could you give me some advice, please? Thanks

skydve76

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

reddriver20

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

aditya12345

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.

reddriver20

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

Go Up