Nrf24l01 not connected Arduino Nano

Hi, I am attempting to use 2 nrf24 modules to communicate between an Arduino Nano and Pro Mico. I used the CheckConnection.ino code from Robin2's tutorial and it returned no connection.

I am using AZDelivery's adapter board to regulate the power input.

These were the results from the test:

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		= 0xff RX_DR=1 TX_DS=1 MAX_RT=1 RX_P_NO=7 TX_FULL=1
RX_ADDR_P0-1	= 0xffffffff7f 0xffffffffff
RX_ADDR_P2-5	= 0xff 0xff 0xff 0x00
TX_ADDR		= 0x0000000000
RX_PW_P0-6	= 0xff 0xff 0x00 0x7f 0xff 0xff
EN_AA		= 0xff
EN_RXADDR	= 0xff
RF_CH		= 0xff
RF_SETUP	= 0x00
CONFIG		= 0x00
DYNPD/FEATURE	= 0x00 0xff
Data Rate	= 1 MBPS
Model		= nRF24L01+
CRC Length	= 16 bits
PA Power	= PA_MAX
ARC		= 15

AND NOW WITH ADDRESS AAAxR  0x41 41 41 78 52   ON P1
 and 250KBPS data rate

SPI Speedz	= 10 Mhz
STATUS		= 0xff RX_DR=1 TX_DS=1 MAX_RT=1 RX_P_NO=7 TX_FULL=1
RX_ADDR_P0-1	= 0xffffffffff 0xffffffffff
RX_ADDR_P2-5	= 0x00 0xff 0xff 0xff
TX_ADDR		= 0xffffffffff
RX_PW_P0-6	= 0x00 0xff 0xff 0xff 0x00 0xff
EN_AA		= 0x00
EN_RXADDR	= 0x00
RF_CH		= 0xff
RF_SETUP	= 0xff
CONFIG		= 0xff
DYNPD/FEATURE	= 0xff 0x00
Data Rate	= 1 MBPS
Model		= nRF24L01+
CRC Length	= 16 bits
PA Power	= PA_MAX
ARC		= 15

I am unsure of what the next steps are for troubleshooting.

Thanks!

Step1: post an annotated schematic showing exactly how you have wired it. Be sure to note any leads over 10"25cm and how you and all power sources. Also post links to technical information on any other piece of hardware connected to the Arduino.
Step2: We will respond to your schematic.

My circuit is based off this schematic, the joysticks are not currently connected. The transciever connections are passed throught an nrf adapter board hence the 7.4V input.

I only had green wires when soldering so appologise for the mono-colour.


using the same SPI connections as your schematic of post ?
running the following code

//  Nano > NRF24L01 receiver test using a text string

// UNO/Nano connections
// arduino MOSI pin 11 goes to NRF24L10_pin MOSI
// arduino MISO pin 12 goes to NRF24L10_pin MI
// arduino SCK  pin 13 goes to NRF24L10_pin SCK
// NRF24L10 CE to arduino pin 9
// NRF24L10 CSN to arduino pin10
// NRF24L10 VCC to 3.3V and GND to GND

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

#define CE_PIN 9
#define CSN_PIN 10

bool radioNumber = 1;
const uint8_t pipes[][6] = { "1Node", "2Node" };

RF24 radio(CE_PIN, CSN_PIN);

char dataReceived[10];  // this must match dataToSend in the TX
bool newData = false;

//===========

void setup() {
  Serial.begin(115200);
  delay(1000);
  Serial.println("Nano > NRF24L01 Receive text");
  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(125);
  radio.setDataRate(RF24_1MBPS);
  //radio.setDataRate(RF24_250KBPS);
   printf_begin();             // needed only once for printing details
   radio.printDetails();       // (smaller) function that prints raw register values
   radio.printPrettyDetails(); // (larger) function that prints human readable data
  if (!radioNumber) {
    radio.openWritingPipe(pipes[0]);
    radio.openReadingPipe(1, pipes[1]);
  } else {
    radio.openWritingPipe(pipes[1]);
    radio.openReadingPipe(1, pipes[0]);
  }
  radio.startListening();
  // radio.setPayloadSize(sizeof(Struct1));
}

//=============

void loop() {
  if (radio.available()) {
    char testString[10] = "";
    radio.read(testString, sizeof(testString));
    Serial.print("Test string:      ");
    Serial.println(testString);
  }
}

the serial monitor displays

Nano > NRF24L01 Receive text
Receiver NF24 connected to SPI
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	= 0x65646f4e32 0x65646f4e31
RX_ADDR_P2-5	= 0xc3 0xc4 0xc5 0xc6
TX_ADDR		= 0x65646f4e32
RX_PW_P0-6	= 0x20 0x20 0x20 0x20 0x20 0x20
EN_AA		= 0x3f
EN_RXADDR	= 0x03
RF_CH		= 0x7d
RF_SETUP	= 0x01
CONFIG		= 0x0e
DYNPD/FEATURE	= 0x00 0x00
Data Rate	= 1 MBPS
Model		= nRF24L01+
CRC Length	= 16 bits
PA Power	= PA_MIN
ARC		= 15
SPI Frequency		= 10 Mhz
Channel			= 125 (~ 2525 MHz)
Model			= nRF24L01+
RF Data Rate		= 1 MBPS
RF Power Amplifier	= PA_MIN
RF Low Noise Amplifier	= Enabled
CRC Length		= 16 bits
Address Length		= 5 bytes
Static Payload Length	= 32 bytes
Auto Retry Delay	= 1500 microseconds
Auto Retry Attempts	= 15 maximum
Packets lost on
    current channel	= 0
Retry attempts made for
    last transmission	= 15
Multicast		= Disabled
Custom ACK Payload	= Disabled
Dynamic Payloads	= Disabled
Auto Acknowledgment	= Enabled
Primary Mode		= TX
TX address		= 0x65646f4e32
pipe 0 ( open ) bound	= 0x65646f4e32
pipe 1 ( open ) bound	= 0x65646f4e31
pipe 2 (closed) bound	= 0xc3
pipe 3 (closed) bound	= 0xc4
pipe 4 (closed) bound	= 0xc5
pipe 5 (closed) bound	= 0xc6
Test string:      text v
Test string:      text w
Test string:      text x
Test string:      text y
Test string:      text z
Test string:      text {
Test string:      text |
Test string:      text }

have you an oscilloscope so you can check the MOSI, MISO, etc signals?

I tested your code.

Nano > NRF24L01 Receive text
NF24 is NOT connected to SPI

I can get access to an oscilloscope in college but I will have to wait till Monday for it.

I am going to remove the 3rd party adapter and test the NRF directly, I will update the form if anything changes.

looking at the second photo in post 2 which shows the soldering some of the connections look very doubtful
have you checked the connections with a multimeter for continuity and short circuits?

for initial prototyping I tend to use solderless breadboards with Dupont jumper wires - not suitable for long term testing as one can have problems with poor connections

for soldered prototypes I use PCB stripboard, e.g. using a Nano

the strips make it easy to solder devices and make good conductors between devices

a tool is used to cut the strips at appropriate points, e.g. between the pins of the nano

adapted a stripboard PCB with Nano to take a NRF24L10
if pins are adjacent it is possible to cut the stripboard tracks, e.g.

with tracks close together and cutting tracks between adjacent pins it is easy when soldering to short circuit tracks, etc - testing for continuity and short circuits using a multi-meter is essential

top of PCB

with NRF24L01 fitted

tested as a transmitter

// Nano > NRF24L01 transmitter test using a text string

// RP2040 connections
// RP2040 SPIO_SCK pin GP18 goes to NRF24L10_pin SCK
// RP2040 SPIO_RX pin GP16 goes to NRF24L10_pin MISO
// RP2040 SPIO_TX pin GP19 goes to NRF24L10_pin MOSI
// RP2040 pin SPIO_CSn GP17 to NRF24L10 CSN
// RP2040 pin GP20 to NRF24L10 CE
// RP2040 GND and 3.3V to NRF24L10  GND and VCC

// Leonardo connections ???
// Leonardo ICSP SCK  pin 15 to NRF24L10_pin SCK
// Leonardo ICSP MISO pin 14 to NRF24L10_pin MISO
// Leonardo ICSP MOSI pin 16 to NRF24L10_pin MOSI
// Leonardo pin 10 to NRF24L10 CSN
// Leonardo pin 9  to NRF24L10 CE
// Leonardo GND and 3.3V to NRF24L10  GND and VCC

// ESP8266 connections
// ESP8266 SCK pin GPIO14 goes to NRF24L10_pin SCK
// ESP8266 MISO pin GPIO12 goes to NRF24L10_pin MI
// ESP8266 MOSI pin GPIO13 goes to NRF24L10_pin MO
// NRF24L10 CE to ESP8266 pin GPIO4
// NRF24L10 CSN to ESP8266 pin GPIO5

// UNO/Nano connections
// arduino MOSI pin 11 goes to NRF24L10_pin MOSI
// arduino MISO pin 12 goes to NRF24L10_pin MI
// arduino SCK  pin 13 goes to NRF24L10_pin SCK
// NRF24L10 CE to arduino pin 9
// NRF24L10 CSN to arduino pin10
// NRF24L10 VCC to 3.3V and GND to GND


#include <SPI.h>
#include "RF24.h"
#include <printf.h>

#define CE_PIN 9
#define CSN_PIN 10

bool radioNumber = 0;
RF24 radio(CE_PIN, CSN_PIN);

byte addresses[][6] = { "1Node", "2Node" };

void setup() {
  Serial.begin(115200);
  delay(2000);
  Serial.println("\n\nNano > NRF24L01 transmit text");
  radio.begin();
  if (radio.isChipConnected())
    Serial.println("Transmitter NF24 connected to SPI");
  else {
    Serial.println("NF24 is NOT connected to SPI");
    while (1)
      ;
  }
  radio.setChannel(125);
  radio.setPALevel(RF24_PA_MIN);
  printf_begin();  // needed only once for printing details
  radio.printDetails();
  radio.powerUp();
  radio.setDataRate(RF24_1MBPS);
  //radio.setDataRate(RF24_250KBPS);

  if (radioNumber) {
    radio.openWritingPipe(addresses[1]);
    radio.openReadingPipe(1, addresses[0]);
  } else {
    radio.openWritingPipe(addresses[0]);
    radio.openReadingPipe(1, addresses[1]);
  }
  radio.stopListening();
  //radio.setPayloadSize(sizeof(Struct1));
}

// loop transmiting data packet
void loop() {
  static char testString[10] = "text 0";
  radio.write(testString, sizeof(testString));
  Serial.print("transmit ");
  Serial.println(testString);
  delay(1000);
  testString[5]++;
}

serial monitor output

Nano > NRF24L01 transmit text
Transmitter NF24 connected to SPI
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	= 0x65646f4e31 0x65646f4e32
RX_ADDR_P2-5	= 0xc3 0xc4 0xc5 0xc6
TX_ADDR		= 0x65646f4e31
RX_PW_P0-6	= 0x20 0x20 0x20 0x20 0x20 0x20
EN_AA		= 0x3f
EN_RXADDR	= 0x03
RF_CH		= 0x7d
RF_SETUP	= 0x01
CONFIG		= 0x0e
DYNPD/FEATURE	= 0x00 0x00
Data Rate	= 1 MBPS
Model		= nRF24L01+
CRC Length	= 16 bits
PA Power	= PA_MIN
ARC		= 2
transmit text 0
transmit text 1
transmit text 2
transmit text 3
transmit text 4
transmit text 5
transmit text 6
transmit text 7
transmit text 8
transmit text 9
transmit text :
transmit text ;
transmit text <

Sorry for the delay in responding. I brought the NRF modules into college today where I could test them with multiple microcontrollers and using breadboards. The connections were tested with a multimeter to ensure correct connections. Unfortunately, after testing and with help from others, the modules are still not producing results.

Thanks for the help though!

what code were you using?
how did you connect and power the modules?
on the serial monitor did you get the Transmitter NF24 connected to SPI or the NF24 is NOT connected to SPI message?
anything else on serial monitor?
share a photo?

What is the battery voltage? From what to what as it is charged and discharged?

I was using the code you had sent in previously and the Robin2's CheckConnection.ino

Originally I was using 2 3.7V Lipo batteries in series which I measured having a 7.3V output. These were connected to the nano's Vin pin. But today I was testing using the power input via the USB port.

Nano > NRF24L01 Receive text
NF24 is NOT connected to SPI

and

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		= 0x00 RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=0 TX_FULL=0
RX_ADDR_P0-1	= 0x0000000000 0xffffffffff
RX_ADDR_P2-5	= 0x00 0xff 0xff 0x00
TX_ADDR		= 0x0000000000
RX_PW_P0-6	= 0x00 0xff 0x00 0x00 0xff 0xff
EN_AA		= 0xff
EN_RXADDR	= 0x00
RF_CH		= 0x00
RF_SETUP	= 0x00
CONFIG		= 0x00
DYNPD/FEATURE	= 0x00 0x00
Data Rate	= 1 MBPS
Model		= nRF24L01+
CRC Length	= 16 bits
PA Power	= PA_MIN
ARC		= 15

AND NOW WITH ADDRESS AAAxR  0x41 41 41 78 52   ON P1
 and 250KBPS data rate

SPI Speedz	= 10 Mhz
STATUS		= 0xff RX_DR=1 TX_DS=1 MAX_RT=1 RX_P_NO=7 TX_FULL=1
RX_ADDR_P0-1	= 0xffffffffff 0xffffffffff
RX_ADDR_P2-5	= 0x00 0x00 0xff 0xff
TX_ADDR		= 0xffffffffff
RX_PW_P0-6	= 0x00 0x00 0xff 0xff 0x00 0x00
EN_AA		= 0x00
EN_RXADDR	= 0x00
RF_CH		= 0xff
RF_SETUP	= 0xff
CONFIG		= 0xff
DYNPD/FEATURE	= 0xff 0x00
Data Rate	= 1 MBPS
Model		= nRF24L01+
CRC Length	= Disabled
PA Power	= PA_MAX
ARC		= 15

The serial monitor did not display anything else.

I never ended up taking a photo of the setup and do not have it with me currently. I could recreate it tomorrow.

The tests today I used the power from the USB port. Previously I was using 2 3.7V lipo batteries in series connected to the nano's Vin port. This was measured at 7.3V.
I have the Vcc pin on the NRF connected to the 3V3 pin on the nano, and have a 10uF capacitor between Vcc and GND.

this means the basic SPI connection is not working
check the connections

// UNO/Nano connections
// arduino MOSI pin 11 goes to NRF24L10_pin MOSI
// arduino MISO pin 12 goes to NRF24L10_pin MI
// arduino SCK  pin 13 goes to NRF24L10_pin SCK
// NRF24L10 CE to arduino pin 9
// NRF24L10 CSN to arduino pin10
// NRF24L10 VCC to 3.3V and GND to GND

looking at the pins of the PCB

this photo may give you an idea

you can clearly see VCC (red) CSN (yellow) MOSI (orange) MISO (green) and GND (blue) more difficult to see is CE (grey) and CLK (purple)


I know it ain’t a pretty circuit but it’s the best I could do with what I had on hand. I’ve tested each connection with a multimeter.

I double checked my connections and they are the same as you’ve listed.

Note: I do not have a capacitor I can use with me.

Power Stability Issues with RF24 Radio Modules

As described in the RF24 Common Issues Guide, radio modules, especially the PA+LNA versions, are highly reliant on a stable power source. The 3.3V output from Arduino is not stable enough for these modules in many applications. While they may work with an inadequate power supply, you may experience lost packets or reduced reception compared to modules powered by a more stable source.

Symptoms of Power Issues:

  • Radio module performance may improve when touched, indicating power stability issues.
  • These issues are often caused by the absence of a capacitor, a common cost-saving omission by some manufacturers.

Temporary Patch :

  • Add Capacitors: Place capacitors close to the VCC and GND pins of the radio module. A 10uF 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) are recommended, as they provide better power stability and performance.

Adding the appropriate capacitors can greatly improve the reliability of your RF24 module by ensuring a stable power supply, thus minimizing packet loss and enhancing overall performance. A separate power supply for the radios is the best solution.

difficult to see clearly looking at your photo

have you
MISO connected to pin D13
and SCK connected to pin D12

should be MISO to D12 and SCK to D13?

Yeah you're right I had the MISO and SCK mixed up in my example. I swapped them around, tested the NRF with a 3.7V exteral battery and managed to get hold of a 10uF capacitor. I am still recieving the same results.

Nano > NRF24L01 Receive text
NF24 is NOT connected to SPI

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.