5

I am trying to connect my Arduino Pro Mini 3.3V to an nRF24L01 transceiver and cannot see what I am doing wrong. I've checked my wiring a million times because the problem hints there is an invalid or no connection between the Arduino and the transceiver. I have the following pin connections:

Arduino --------------- nRF24L01

--GND ------------------- GND

--VCC ------------------- VCC

---D9 --------------------- CE

--D10 -------------------- CSN

--D13 -------------------- SCK

--D11 -------------------- MOSI

--D12 -------------------- MISO

I am using the following sketch

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

RF24 radio(9, 10);

const uint64_t pipes[2] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0C2LL };     //Addresses to send/receive

void setup()
{
  printf_begin();
  Serial.begin(9600);
  radio.begin();
  radio.setRetries(15, 15);
  radio.openReadingPipe(1, pipes[0]);
  radio.printDetails();
  radio.stopListening();
}

void loop()
{
  const char text[] = "Hello World";
  radio.write(&text, sizeof(text));

  delay(1000);
}

I have no clue where I am going wrong. This setup works well on my Uno, however I cannot replicate it on the Arduino Pro Mini. Can anyone tell me if I am doing something super wrong that would prevent this from working? I'm all out of ideas. Appreciate any help in advanced!

Update:

I forgot to copy and paste the output from printDetails():

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 
Data Rate   = 1MBPS 
Model   = nRF24L01 
CRC Length  = Disabled 
PA Power = PA_MIN
3
  • Sorry guys quick update: forgot to copy and paste the output from printDetails(): 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 Data Rate = 1MBPS Model = nRF24L01 CRC Length = Disabled PA Power = PA_MIN Commented Oct 27, 2016 at 10:16
  • The printdetails output indicate bad connection or faulty module. Check your wiring and try again.
    – Avamander
    Commented Oct 27, 2016 at 22:44
  • Aside from the fact your program does not look like this one, I would venture to guess that you are trying to use the address of the pointer to the first letter in your character string. Try it again w/o the '&'. I think that way you will just use the pointer to the first letter in your character string.
    – st2000
    Commented Oct 28, 2016 at 0:41

1 Answer 1

1

Whenever you get an all zeros output from the printDetails() function you can bet you are having a communication issue between the Arduino and the nRF24 module.

Start by checking your connections.

Check your connections again, using a multimeter to ensure continuity.

Check your connections again (no, I'm not joking).

Finally add a capacitor (anything between 1uF and 100uF will do) between the VCC and GND pins of your nRF24 module: those modules are pretty sensitive to voltage fluctuations and they are subject to current consumption spikes at startup.

Pair that with a possibly not state of the art voltage regulator (especially on cheap Arduino clones) and you end up with a non responding nRF24 module: the capacitor will provide the extra juice whenever it's required by the radio module.

This is such a common problem that I started soldering the capacitors directly onto the modules to save breadboard space!

enter image description here

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.