I need radio control for a project, and am using the NRF24L01+PA+LNA (link here) and the accompanying base module (link here). I have tried multiple wiring/codes, and I even bought new parts in case the old ones were defective, but nothing solves the problem. I am using an Arduino nano. The receiver keeps receiving a blank message, even when transmitter is not plugged in. If anyone has a tested code/wiring for nano, I would appreciate it.
Known good and well proven demo code is available on this site, be sure to get the linked library.
If your modules are too close then they will not work.
Wireless problems can be very difficult to debug so get the wireless part working on its own before you start adding any other features.
The examples in the link in Reply #1 are as simple as I could make them and they have worked for other Forum members. If you get stuck it will be easier to help with code that I am familiar with. Start by getting the first example to work
There is also a connection test program to check that the Arduino can talk to the nRF24 it is connected to.
A common problem with nRF24 modules is insufficient 3.3v current from the Arduino 3.3v pin. This seems to be a particular problem with the nano. The high-power nRF24s (with the external antenna) will definitely need an external power supply. At least for testing try powering the nRF24 with a pair of AA alkaline cells (3v) with the battery GND connected to the Arduino GND.
If you are using the high-power nRF24s (with the external antenna) make sure there is sufficient distance between the two nRF24s so that the signal does not overwhelm the receiver - try 3 metres separation. If you are new to nRF24s it may be better to start with a pair of low power modules with the pcb antenna.
...R
Just on that theme of the minimum distance between 2 modules of the type NRF24L01+PA+LNA.
I have a pair of such modules in a test project on my desk at the moment and these still inter-communicate even if the antennas are touching each other.
The transmitter part is, however, configured for the lowest power:
radio.setDataRate(RF24_250KBPS);
radio.setPALevel(RF24_PA_LOW);
I wrote up the whole design recently of the main project (a mailbox notifier) here: Arduino NRF24L01 Mailbox Monitor/Notifier - Exhibition / Gallery - Arduino Forum
I tried the connection test code twice and received the following result both times.
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
SPI Speedz = 10 Mhz
STATUS = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
RX_ADDR_P0-1 = 0xe7e7e7e7e7 0x4342417852
RX_ADDR_P2-5 = 0xc3 0xc4 0xc5 0xc6
TX_ADDR = 0xe7e7e7e7e7
RX_PW_P0-6 = 0x00 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
SPI Speedz = 10 Mhz
STATUS = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
RX_ADDR_P0-1 = 0xe7e7e7e7e7 0x4141417852
RX_ADDR_P2-5 = 0xc3 0xc4 0xc5 0xc6
TX_ADDR = 0xe7e7e7e7e7
RX_PW_P0-6 = 0x00 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
It looks like it is half 0x00, but the rest is random. Is the Arduino communicating with the module? Also, I am using the NRF base module, which has an on-board voltage regulator that allows the NRF to run on Nano 5V. The base module also has caps between power and ground, so power shouldn't be an issue. I tried separating them across the room, ~8-10 ft, and there nothing was received. I think the Arduino and the NRF aren't communicating.
It think the connection is OK. The data rate has been changed from 1MBPS to 250KBPS
...R
I know that the two Arduino's are communicating with the NRF's, so I suspect something went wrong with the NRF's. The transmitter side keeps trying to send and receives no acknowledgement. The receiver shows nothing. Also, what do you mean by,
The data rate has been changed from 1MBPS to 250KBPS
The code you tried that @Robin2 provided checks the communication between your Arduino and the NRF24L01. As part of the comms check, the code changes the data rate (the rate at which data is transmitted and received by the NRF24L01) from 1MBPS down to 250KBPS.
Now that you know you can communicate with your NRF24L01 devices, have you tried the simple comms sketches that were suggested earlier in this thread?
Yes, and they don't work.
Time for some good photos of the system. We need to know how they’re wired and to what.
Power problems are the most common cause of issues with these radios, especially so for the high power units.
I attached the two pictures. The one with the r shaped wires on the breadboard is the receiver, and the one with the t shaped wires is the transmitter. More information on the parts I am using is in the first post.
I have something you can try. If you use the first examples - SimpleTx.ino and SimpleRx.ino, and add the following line to the end of setup() in both sketches:
radio.setPALevel(RF24_PA_MIN)
See if the example code now works.
The NRF24L01 defaults to maximum transmit power on startup. Adding this line tells the radio to use the minimum transmit power setting, which in turn reduces the electrical demands on your power supply.
If the sketches now work, then your power supply is the problem.
Image from Reply #11 so we don't have to download it. See this Simple Image Posting Guide
and from Reply #12
...R
@tesseract1, photos of you hardware are not a reliable indication of the wiring connections. Just make simple pencil drawings showing all the connections and post photos of the drawings. Please also note that smaller images are kinder to those of us with slow or expensive internet connections. 640x480 pixels should be fine.
@markd833, I understand where you are coming from in Reply #13 but I much prefer if people just stick with the code in the Tutorials. Once changes are encouraged there is no knowing what mayhem ensues. The programs in the Tutorial have worked for several Forum members as well as for me.
...R
OK. I agree it is irritating if you are trying to help a user and the user is bombarded with all sorts of alternative suggestions and other things to try.
However, I'd also be curious to see if reducing the radio transmitter power, does help in this particular case.
The requirement for a minimum physical separation, between some types of module under test, does introduce a variable element which could possibly (subject to further verification) be eliminated by a revised test procedure. I've already mentioned my own experience in post #4
tesseract1:
I need radio control for a project, and am using the NRF24L01+PA+LNA (link here) and the accompanying base module (link here). I have tried multiple wiring/codes, and I even bought new parts in case the old ones were defective, but nothing solves the problem. I am using an Arduino nano. The receiver keeps receiving a blank message, even when transmitter is not plugged in. If anyone has a tested code/wiring for nano, I would appreciate it.
Hi. When I first started with nrf24 I had a lot of problems. I tried a lot of tutorials and for me electronoobs's tutorial worked. Here is the link Arduino NRF24 example 2019 library range
Here you have got schematic and code.
If you have also problem with this you can put radio.setDataRate 1MBPS instead of 250KBPS. You need to do this on receiver and transmitter code. If this doesn't work you can put 2MBPS on receiver and transmitter code. I hope this will help you. In my opinion this tutorial from electronoobs is great, it helped me.
KarlaSvalina:
Hi. When I first started with nrf24 I had a lot of problems. I tried a lot of tutorials and for me electronoobs's tutorial worked. Here is the link Arduino NRF24 example 2019 library range
Here you have got schematic and code.
If you have also problem with this you can put radio.setDataRate 1MBPS instead of 250KBPS. You need to do this on receiver and transmitter code. If this doesn't work you can put 2MBPS on receiver and transmitter code. I hope this will help you. In my opinion this tutorial from electronoobs is great, it helped me.
This could be completely different. There is, in this respect, at least one important difference between the nrf24L01 and the nrf24L01+. That is, the nrf24L01 (without the '+') does not support the 250KBPS data rate, and that is clear from the data sheet. Some libraries may handle this. Some may not and cause a mess.
Edit
Not only that, the link Arduino NRF24 example 2019 library range leads to a zip file with an undeclared version of an RF24 library for manual installation. Only in desperate troubleshooting cases, with experienced users, should such experiments be suggested. For one thing, it would all have to be cleanly backed out afterwards.
It worked after I added that line of code. Thank you for your help. How much range will I get with this low power level? And how would I increase the power level if I wanted to?