I am testing communication between two nRF24L01 modules. The receiver is getting the transmitted message but is also continuously reading (null) data from a closed pipe? I am using the RF24 by TMRh20 version 1.3.12 library on an Arduino Pro Mini with some modified example code. Has anyone else experienced this phenomenon or have any fix for the issue?
Transmitter:
/*
* Arduino Wireless Communication Tutorial
* Example 1 - Transmitter Code
*
* by Dejan Nedelkovski, www.HowToMechatronics.com
*
* Library: TMRh20/RF24, https://github.com/tmrh20/RF24/
*/
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <printf.h>
RF24 radio(9, 10); // CE, CSN
const byte address[6] = "00001";
void setup() {
Serial.begin(9600);
printf_begin();
while (!Serial);
Serial.println("[radioSend]");
if (radio.begin()) {
Serial.println("Radio Receiver starting");
} else {
Serial.println("Radio Receiver start failed");
while (1);
}
radio.setChannel(120);
radio.openWritingPipe(address);
radio.setPALevel(RF24_PA_MIN);
radio.stopListening();
radio.printPrettyDetails();
}
void loop() {
const char text[] = "Hello World";
radio.write(&text, sizeof(text));
delay(10000);
}
Receiver:
/*
* Arduino Wireless Communication Tutorial
* Example 1 - Receiver Code
*
* by Dejan Nedelkovski, www.HowToMechatronics.com
*
* Library: TMRh20/RF24, https://github.com/tmrh20/RF24/
*/
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <printf.h>
RF24 radio(9, 10); // CE, CSN
const byte address[6] = "00001";
long counter = 0;
void setup() {
Serial.begin(9600);
printf_begin();
while (!Serial);
Serial.println("[radioReceive]");
if (radio.begin()) {
Serial.println("Radio Receiver starting");
} else {
Serial.println("Radio Receiver start failed");
while (1);
}
radio.setChannel(120);
radio.openReadingPipe(0, address);
radio.setPALevel(RF24_PA_MIN);
radio.startListening();
radio.printPrettyDetails();
}
int dpls3;
char text3[32] = "";
void loop() {
uint8_t pipeNum;
if (radio.available(&pipeNum)) {
int dpls = radio.getDynamicPayloadSize();
char text[32] = "";
radio.read(&text, sizeof(text));
if (pipeNum != 3) {
Serial.print("[Pipe=");
Serial.print(pipeNum);
Serial.print("|Size=");
Serial.print(dpls);
Serial.print("|");
Serial.print(text);
Serial.print("] [Pipe=3|Size=");
Serial.print(dpls3);
Serial.print("|");
Serial.print(text3);
Serial.print("|Count=");
Serial.print(counter);
Serial.println("]");
} else {
memcpy(&text3, &text, 32);
counter += 1;
dpls3 = dpls;
}
}
}
Transmitter output:
[radioSend]
Radio Receiver starting
SPI Frequency = 10 Mhz
Channel = 120 (~ 2520 MHz)
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 = 0
Multicast = Disabled
Custom ACK Payload = Disabled
Dynamic Payloads = Disabled
Auto Acknowledgment = Enabled
Primary Mode = TX
TX address = 0x3130303030
pipe 0 ( open ) bound = 0x3130303030
pipe 1 ( open ) bound = 0xc2c2c2c2c2
pipe 2 (closed) bound = 0xc3
pipe 3 (closed) bound = 0xc4
pipe 4 (closed) bound = 0xc5
pipe 5 (closed) bound = 0xc6
Receiver output:
[radioReceive]
Radio Receiver starting
SPI Frequency = 10 Mhz
Channel = 120 (~ 2520 MHz)
RF Data Rate = 1 MBPS
RF Power Amplifier = PA_MIN
RF Low Noise Amplifier = Disabled
CRC Length = 16 bits
Address Length = 3 bytes
Static Payload Length = 32 bytes
Auto Retry Delay = 250 microseconds
Auto Retry Attempts = 15 maximum
Packets lost on
current channel = 0
Retry attempts made for
last transmission = 0
Multicast = Disabled
Custom ACK Payload = Disabled
Dynamic Payloads = Disabled
Auto Acknowledgment = 0b011111
Primary Mode = RX
TX address = 0x1010101010
pipe 0 ( open ) bound = 0x1010101010
pipe 1 (closed) bound = 0x2020270610
pipe 2 (closed) bound = 0xc1
pipe 3 (closed) bound = 0xc0
pipe 4 (closed) bound = 0xc0
pipe 5 (closed) bound = 0xc2
[Pipe=0|Size=32|Hello World] [Pipe=3|Size=0||Count=195500]
[Pipe=0|Size=32|Hello World] [Pipe=3|Size=0||Count=216665]
[Pipe=0|Size=32|Hello World] [Pipe=3|Size=0||Count=835055]
[Pipe=0|Size=32|Hello World] [Pipe=3|Size=0||Count=882618]
[Pipe=0|Size=32|Hello World] [Pipe=3|Size=0||Count=1168025]
[Pipe=0|Size=32|Hello World] [Pipe=3|Size=0||Count=1310725]
[Pipe=0|Size=32|Hello World] [Pipe=3|Size=0||Count=1405856]
[Pipe=0|Size=32|Hello World] [Pipe=3|Size=0||Count=1500987]