How do I know if my NRF24L01 is still working or not?

I have an ESP32 module, an NRF24L01 adapter, and also a USB port adapter for the NRF24L01. How can I find out the issue with my NRF24L01 to see if it's still in good condition or not?

I am a complete beginner at this.

Thank you.

have a read of how-to-get-the-best-out-of-this-forum

for example

  1. which specific ESP32 and NRF24L01 are you using? give links?
  2. what libraries did you use for testing?
  3. how were the ESP32 and NRF24L01 connected? give a schematic?
  4. post your code and the serial monitor output?

How many NRF24 do you have? You need at least two to test them out.

As @b707 stated you need two, one to listen and the other to talk. Also note these are very power sensitive so it is best to power them with a separate power supply not the Arduino 3v3 or 5V pins.
Here is something I posted a while back:

Power Stability Issues with RF24 Radio Modules

As described in the RF24 Common Issues Guide, radio modules, especially the PA+LNA versions, are highly dependent on a stable power source. The 3.3V output from an Arduino is often not stable enough for these modules in many applications. While they may appear to work with an inadequate power supply, you may experience lost packets or reduced reception compared to modules powered from a more stable source. The Nano/UNO 5V rail can also be a problem, as it may not supply enough current during transmit.

Symptoms of Power Issues:

Radio module performance may improve when touched, indicating power stability problems.

These issues are often caused by the absence of a local capacitor, a common cost-saving omission by some manufacturers.

Temporary Patch:

Add capacitors close to the VCC and GND pins of the radio module. A 10 uF capacitor is usually sufficient, but the exact value can depend on your circuit layout.

Use low ESR capacitors. Capacitors with low Equivalent Series Resistance (ESR) provide better power stability and improved performance.

Be sure the transmitter and receiver are at least one meter apart. More distance is better during testing.

Reference:

During TX (3.3V supply), worst case current depends on which module you have:

  1. Plain nRF24L01+ module (no PA/LNA, small PCB antenna)

TX current at 0 dBm (max power): typically about 11 to 12 mA.
Lower power levels are less, roughly 7 to 9 mA depending on setting.

Rule of thumb: budget at least 15 mA for the radio itself.

  1. nRF24L01+ PA+LNA long-range module (with external power amplifier, often SMA antenna)

TX current at max PA level: typically about 115 to 130 mA.
Current peaks can be higher. A safe design budget is 150 to 200 mA available at 3.3V.

Power notes:

Place local decoupling capacitors at the module: 0.1 uF ceramic plus 10 to 47 uF electrolytic or tantalum directly at VCC and GND.

For PA+LNA modules, do not rely on a weak 3.3V pin. Use a proper 3.3V regulator with adequate current capacity.

Using appropriate capacitors can greatly improve the reliability of your RF24 module by ensuring a stable power supply, minimizing packet loss, and improving overall performance. A separate regulated power supply for the radios is often the best long-term solution.

Hopefully this helps!

Please post links to the product pages for these items.

There are plenty of "getting started" guides for the NRF24L01, including at least one on this forum, posted by Robin2. Use the forum search tool to find it.




I have just it, and i wanna test nrf this can use or no,

I no have multitester and orther tester component

How to usa

@mudasir_rao

Your reply does not make sense. Care to elaborate?

typing mistake

have you two NRF24L01 modules connected to the same ESP32
I guess it is possible using VSPI and HSPI but never tried it

simpler to use two separate microcontrollers, e.g.

ESP32 as transmitter

//  ESP32 > NRF24L01 transmitter test

// ESP32 connections
// ESP32 SCK pin GPIO18 goes to NRF24L10_pin SCK
// ESP32 MISO pin GPIO19 goes to NRF24L10_pin MI
// ESP32 MOSI pin GPIO23 goes to NRF24L10_pin MO
// NRF24L10 CE to ESP32 pin GPIO4
// NRF24L10 CSN to ESP32 pin GPIO 5

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>


RF24 radio(4, 5);                 // CE, CSN pins
const byte address[6] = "00001";  // Address of the receiver
const uint64_t pipes = 0xF0F0F0F0E1LL;

char dataToSend[] = "hello world 0!";

void setup() {
  Serial.begin(115200);
  Serial.println("\n\nESP32 > NRF24L01 transmit test");
  radio.begin();
  if (radio.isChipConnected())
    Serial.println("Transmitter NF24 connected to SPI");
  else Serial.println("\n\nNF24 is NOT connected to SPI");
  radio.setChannel(100);
  radio.setPALevel(RF24_PA_MIN);
  radio.powerUp();
  radio.setDataRate(RF24_1MBPS);
  radio.openWritingPipe(pipes);
  radio.stopListening();
  Serial.println(sizeof(int));
  radio.setPayloadSize(sizeof(dataToSend));
  Serial.println(sizeof(dataToSend));
}
void loop() {

  radio.write(&dataToSend, strlen(dataToSend) + 1);
  Serial.println(dataToSend);
  if (++dataToSend[12] > '9') dataToSend[12] = '0';
  delay(1000);
}

and a Nano as a receiver

//  Nano > NRF24L01 receiver test

// UNO/Nano connections
// arduino SCK pin 11 goes to NRF24L10_pin SCK
// arduino MISO pin 12 goes to NRF24L10_pin MI
// arduino MOSI pin 13 goes to NRF24L10_pin MO
// NRF24L10 CE to arduino pin 9
// NRF24L10 CSN to arduino pin10

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

//create an RF24 object
RF24 radio(9, 10);  // CE, CSN

//address through which two modules communicate.
const byte address[6] = "00001";
const uint64_t pipes = 0xF0F0F0F0E1LL;

void setup() {
  Serial.begin(115200);
  delay(3000);
  Serial.println("\n\nNano > NRF24L01 Receive");
  radio.begin();
  if (radio.isChipConnected())
    Serial.println("Receiver NF24 connected to SPI");
  else {
    Serial.println("NF24 is NOT connected to SPI");
    while (1)
      ;
  }
  radio.setChannel(100);
  radio.setDataRate(RF24_1MBPS);
  //radio.setDataRate(RF24_250KBPS);
  radio.printDetails();  //set the address
  radio.openReadingPipe(0, pipes);
   //Set module as receiver
  radio.startListening();
    radio.setPayloadSize(15);
}

void loop() {
  if (radio.available()) {
    char data[32] = { 0 };
    radio.read(&data, sizeof(data));
    Serial.println(data);
  }
}

the first thing when testing a NRF24L01 is to check the SPI connection which the above programs do
e.g. transmitter serial monitor output

ESP32 > NRF24L01 transmit test
Transmitter NF24 connected to SPI
4
hello world 0!
hello world 1!
hello world 2!
hello world 3!
hello world 4!
hello world 5!
hello world 6!
hello world 7!
hello world 8!
hello world 9!
hello world 0!
hello world 1!
hello world 2!
hello world 3!
hello world 4!
hello world 5!


receiver

Nano > NRF24L01 Receive
Receiver NF24 connected to SPI
hello world 1!
hello world 5!
hello world 7!
hello world 8!
hello world 4!
hello world 0!
hello world 2!
hello world 4!
hello world 5!
hello world 8!
hello world 9!
hello world 0!
hello world 5!
hello world 6!
hello world 8!
hello world 0!

if you get the message "NF24 is NOT connected to SPI" check the wiring!

also note power supply problems outlined in post 4 by @gilshultz
without good power supplies the NRF24L01 will connect to SPI but may not have sufficient power to transmit


this right or wrong?

sorry im begginer

jumper wires are a major cause of poor connections and intermittent problems

why so many interconnections?

simplify by connecting one NRF24L01 directly to an ESP32 ?

also you appear to have two NRF24L01 modules connected to a ESP32
why not use two microcontrollers as hosts?

You want the two NRF24L01 modules at least a few feet apart. If they are close together they can overload each other and fail to communicate.

It seems like my breadboard size is too small, so the ESP32 can't be mounted like that. However, was the method I used correct? And do you have a picture of the jumper wire installation?

Oh, so the NRF shouldn't be too close? Does that mean the person who made this was wrong?

use two breadboards connected together
remove one of the power strips

connect the two breadboards together using the lugs

will now be able to insert a ESP32 - also will still be able to insert other microcontrollers

in post 10 the ESP32 connections were

// ESP32 connections
// ESP32 SCK pin GPIO18 goes to NRF24L10_pin SCK
// ESP32 MISO pin GPIO19 goes to NRF24L10_pin MI
// ESP32 MOSI pin GPIO23 goes to NRF24L10_pin MO
// NRF24L10 CE to ESP32 pin GPIO4
// NRF24L10 CSN to ESP32 pin GPIO 5

omg i must buy 1 more breadboard,
ok thanks horace, i'll come back when have buy :grin: