Go Down

Topic: NRF24L01 Problems (Read 3844 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

Go Up