Hello I have been trying to get NRF2401+ transmitter to commiunicate with NRF2401+ receiver for a few days. I am using NANO boards for transmitter and receiver. I started using 3.3V output from Arduino to power NRF24 but learned it can't provide to amount of current required for NRF2401+. So I ordered some LM11177T-3.3 800mA output voltage regulators and now have dedicted power circuits for transmit and receive side. I also have caps on input and output of voltage regulators.
I am using the "Hello World" test program to verify communication but can't get it to work. The transmitter test program and receiver test program I am using are below:
Transmitter
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include "printf.h"
#define l1 10 // External LED (blue)
RF24 radio(5, 6, 1000000); // CE, CSN
const byte address[6] = "00001";
void setup() {
Serial.begin(9600);
printf_begin();
radio.begin();
radio.printDetails();
if (!radio.begin()) {
Serial.println(F("radio hardware not responding!"));
//while (1) {} // hold program in infinite loop to prevent subsequent errors
}
if (!radio.isChipConnected()) {
Serial.println(F("Chip not connected to SPI bus!"));
}
radio.openWritingPipe(address);
radio.setPALevel(RF24_PA_MIN,0);
radio.stopListening();
}
void loop() {
const char text[] = "Hello World";
radio.write(&text, sizeof(text));
if (radio.write(&text, sizeof(text))) {
digitalWrite(l1,HIGH);
}
else {
digitalWrite(l1,LOW);
//Serial.println("Payload sent but ack packet not received");
}
//Serial.println(digitalRead(l1));
//delay(1000);
}
Receiver
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include "printf.h"
RF24 radio(5, 6, 1000000); // CE, CSN
const byte address[6] = "00001";
void setup() {
Serial.begin(9600);
printf_begin();
radio.begin();
radio.printDetails();
if (!radio.begin()) {
Serial.println(F("radio hardware not responding!"));
//while (1) {} // hold program in infinite loop to prevent subsequent errors
}
if (!radio.isChipConnected()) {
Serial.println(F("Chip not connected to SPI bus!"));
}
radio.openReadingPipe(0, address);
radio.setPALevel(RF24_PA_MIN,0);
radio.startListening();
}
void loop() {
if (radio.available()) {
char text[32] = "";
radio.read(&text, sizeof(text));
Serial.println(text);
}
//Serial.println(radio.available());
//Serial.println(radio.begin());
//delay(2000);
}
The radio.begin function always returns true but when using the radio.write function to write "Hello World" to the receiver the ack bit is never received and "Hello World" never appears on the receive side.
The NRF2401+ transmit/receive settings are below.
Transmit settings
SPI Speedz = 1 Mhz
STATUS = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
RX_ADDR_P0-1 = 0x3130303030 0xc2c2c2c2c2
RX_ADDR_P2-5 = 0xc3 0xc4 0xc5 0xc6
TX_ADDR = 0x3130303030
RX_PW_P0-6 = 0x20 0x20 0x20 0x20 0x20 0x20
EN_AA = 0x3f
EN_RXADDR = 0x03
RF_CH = 0x4c
RF_SETUP = 0x00
CONFIG = 0x0e
DYNPD/FEATURE = 0x00 0x00
Data Rate = 1 MBPS
Model = nRF24L01+
CRC Length = 16 bits
PA Power = PA_MIN
ARC = 15
Receive Settings
SPI Speedz = 1 Mhz
STATUS = 0x0e RX_DR=0 TX_DS=0 MAX_RT=0 RX_P_NO=7 TX_FULL=0
RX_ADDR_P0-1 = 0x3130303030 0xc2c2c2c2c2
RX_ADDR_P2-5 = 0xc3 0xc4 0xc5 0xc6
TX_ADDR = 0xe7e7e7e7e7
RX_PW_P0-6 = 0x20 0x20 0x20 0x20 0x20 0x20
EN_AA = 0x3f
EN_RXADDR = 0x03
RF_CH = 0x4c
RF_SETUP = 0x00
CONFIG = 0x0e
DYNPD/FEATURE = 0x00 0x00
Data Rate = 1 MBPS
Model = nRF24L01+
CRC Length = 16 bits
PA Power = PA_MIN
ARC = 0
This is where my knowledge runs out. Does anything about these settings jump out at anyone as to the reason communication is failing?
