nRF24 ManualAcknowledgement.ino example not working

145 Views Asked by At

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. 
0

There are 0 best solutions below