Hello! I'm currently working on a project that uses 3 nrf modules. I was testing a simple send and print code for single fixed role nrf but noticed that it wasn't working. Searching through yt, i found a tutorial on how to check the nrf status:
/*
If your serial output has these values same then Your nrf24l01 module is in working condition :
EN_AA = 0x3f
EN_RXADDR = 0x02
RF_CH = 0x4c
RF_SETUP = 0x03
CONFIG = 0x0f
This code is under public domain
Last updated on 21/08/28
https://dhirajkushwaha.com/elekkrypt
*/
#include <SPI.h>
#include <RF24.h>
#include <printf.h>
RF24 radio(7, 8);
byte addresses[][6] = {"1Node", "2Node"};
void setup() {
radio.begin();
radio.setPALevel(RF24_PA_LOW);
radio.openWritingPipe(addresses[0]);
radio.openReadingPipe(1, addresses[1]);
radio.startListening();
Serial.begin(9600);
printf_begin();
radio.printDetails();
}
void loop() {
// empty
}
every nrf module connected to the uno produces this output (not working according to the tutorial):
........
SPI Speedz = 10 Mhz
STATUS = 0x00 RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=0 TX_FULL=0
RX_ADDR_P0-1 = 0x0000000000 0x0000000000
RX_ADDR_P2-5 = 0x00 0x00 0x00 0x00
TX_ADDR = 0x0000000000
RX_PW_P0-6 = 0x00 0x00 0x00 0x00 0x00 0x00
EN_AA = 0x00
EN_RXADDR = 0x00
RF_CH = 0x00
RF_SETUP = 0x00
CONFIG = 0x00
DYNPD/FEATURE = 0x00 0x00
........
while the nano produces the same output with the working one.
what should i do to fix this?
notes:
-both uno and nano are clones
-i've connected everything accord to the yt instructions.
-both nano and uno are generally working
seen other cases similar to might but there seems to be no resolution.
we'll be using 2 unos and 1 nano for this project but the other uno is with my groupmate so i plan to test it with the other uno when we meet up. If it doesn't work, where seems to be the problem?
Connected everything according to the vid's instruction (see image above). How do i check if it's the power source? I've read that clones sometimes produce less than 3.3v. Is the 3.3v minimum required for the rf to work? I thought it tolerates lesser voltage?
When you said it works with a Nano, how did you test it? By a successful transmission between the Nano and another device? If so, what device? Another Nano?
That is a troubling configuration that is not reliable from user to user. Use an external power supply. Sometimes people get away with this by adding a capacitor many do not. Here is a simple guideline:
Gil's Crispy Critter Rules, they apply to processor hardware:
Rule #1. A Power Supply the Arduino is NOT!
Rule #2. Never Connect Anything Inductive to an Arduino!
Rule #3 Don't connecting or disconnecting wires with power on.
Rule #4 Do not apply power to any pin unless you know what you are doing.
LaryD's Corollary's
Coro #1 when first starting out, add a 220R resistor in series with both Input and Output pins.
Coro #2 buy a DMM (Digital Multi-meter) to measure voltages, currents and resistance.
Violating these rules tends to make crispy critters out of Arduinos.
Hint: It is best to keep the wires under 25cm/10" for good performance.
The following tutorial is excellent. I had een wrestling with exactly the same problems as you for weeks until I found the following post. I studied it carefully and after understanding it, it took me less than an hour and about 6 lines of new or altered code and the 3 nRF's I'm using started communication: Simple nRF24L01+ 2.4GHz transceiver demo
In my experience, the 10 microfarad capacitor is essential. Simply solder it across the power and gnd pins on the nRF board.
Again, my experiece is that the modules work best when connected through the pinout socket board that can be purchased of AliExpress or similar for less than a dollar. If you use one of those you can then apply 5v to the pinout socket board because it has its own power regulator to pass on 3.3v to the module. That eliminated all of the issues that I was having with the Arduino 3v3 pin. The nRFL modules draw a lot of power at the start of each transmiossion and I suspect that it is really too much for the 3v3 pin?
Very difficult to get an nRF to work if you are using a breadboard and jumper wires. All of the connections need to be robust - so I moved to experienting using made up (soldered connections) circuit boards.
The default channel on the nRF is channel 76. My modules will not work at all on channel 76 - too much competing interference. In my environment I found that channel 120 works best but you need to play around with this to find out what works best in your situation.
radio.setChannel(120); //select a channel (in which there is no noise!) 0 ... 125
Most of the things I has to change to get mine working related to addresses and understanding how the ack protocol is works. The tutorial I have provided a link to explains this stuff very well.
I also had to play around with the data rate and PAL level to refine things once the modules were talking . Initially the packet loss rate was very high but trying different data rates and PAL levels got me to the point where I am loosing perhaps 6 packets in two weeks - and my setup is writing about every 30 seconds.
so i recently tested the rf with another uno (clone as well but bought from another store) and it worked. Communication is successful from nano to uno. We still wanted to find out about the problem this particular uno has but for the project's sake, we'll probably buy another board.
thank you so much for this! Now that i can test data transfer of nrf, this would be helpful.
For the uno that we're having trouble with, we might buy a new one since it worked with another or buy an adapter so that we could connect it to 5v. All these will be decided after i try adding a capacitor (i'm still waiting for it to arrive)
I've not posted pictures before so I don't know if you will see these?
Picture of capacitor soldered directly to the board (be carefult to solder the capacitor positive to the VCC pin) and the adapter that I thing would help you a lot