Background:
I am testing the nRF24L01 modules for a personal project, where I have a “controller” module which communicates with one or more “worker” modules. The “workers” should respond accordingly to the query sent by the “controller” with a custom message, which is not always the same.
Due to this need for an up-to-date “worker” response message, dependent on the query sent by the “controller”, I chose the “ManualAcknowledgements.ino” example. It specifically uses the ACK packages to achieve this, without needing to implement a more complex communication mechanisms with waits manually implemented.
Note that I used the aforementioned code “as is”, I did not modify it in any way. Even the CE and CSN used are the same, reason for which I am not posting my code.
My current issue:
I am consistently seeing the follwoing message on the module configured as “Transmitter” (0):
**Transmission failed or timed out**
I am also consistently receiving the message on the module configured as “Receiver” (1):
**Received 8 bytes on pipe 1: Hello 0 Response failed**
This tells me that the message is correctly arriving to the receiver, but something is failing when a response is sent. I strongly suspect something wrong with the ACK feature or its configuration.
Has anyone been confronted with this problem while testing this particular official example?
Additional details about the test:
For now, I am performing my tests using two Arduino UNOs (even if the target project uses a Raspberry as a “controller).
I would also like to point out that I am using quality material (original Arduinos, quality nRF modules, etc…) and short cables, with the two modules separated by less than a meter.
I am also using the latest version of the nRF24 library to date (v1.4.7).
If I modify the code to return the “PrettyPrint” details on the Serial monitor, I receive the following information for each module:
Report for the TX module:
SPI Frequency = 10 Mhz
Channel = 76 (~ 2476 MHz)
Model = nRF24L01+
RF Data Rate = 1 MBPS
RF Power Amplifier = PA_LOW
RF Low Noise Amplifier = Enabled
CRC Length = 16 bits
Address Length = 5 bytes
Static Payload Length = 8 bytes
Auto Retry Delay = 1500 microseconds
Auto Retry Attempts = 15 maximum
Packets lost on
current channel = 15
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
Transmission failed or timed out
Report from the RX module:
SPI Frequency = 10 Mhz
Channel = 76 (~ 2476 MHz)
Model = nRF24L01+
RF Data Rate = 1 MBPS
RF Power Amplifier = PA_LOW
RF Low Noise Amplifier = Enabled
CRC Length = 16 bits
Address Length = 5 bytes
Static Payload Length = 8 bytes
Auto Retry Delay = 1500 microseconds
Auto Retry Attempts = 15 maximum
Packets lost on
current channel = 15
Retry attempts made for
last transmission = 15
Multicast = Disabled
Custom ACK Payload = Disabled
Dynamic Payloads = Disabled
Auto Acknowledgment = Enabled
Primary Mode = RX
TX address = 0x65646f4e32
pipe 0 (closed) 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
Received 8 bytes on pipe 1: Hello 0 Response failed.