Am I using the best Nrf24L01 library for my project.

I believe I have asked this question before sometime ago. I have chosen the Radio head library for my project and now I am second guessing my decision. So before I invest a lot of time with the Radio head library I would like some advice. So here is what I require from my project.

I would like to communicate with 10 servers from a remote control client.
I want a range of 100 meters using the NRF24 modules.
I need to send a struct with 15-20 members to all servers every 250 ms without blocking.
Each client needs to send back a struct with 10-15 members with its status every 250 ms without blocking.
I am using a Mega with my own shield that I have developed that addresses the issues with the NRF module.

Not having much experience with these modules and laboring to find good examples for networking 10 clients with the Radio head Library. I have been struggling with getting the modules to communicate without long delays. I can get it down to around a minute, but no quicker. About 15 hrs into it and a couple of different methods and now frustration.

I have started looking at some of the other libraries. Some are way easier to understand from the documentation point of view. I believe I can accomplish this from the hardware side of things. However, am I using the right Library?

Any thoughts?

Dave.

I have been using the TMRh20 version of the RF24 library which solves some problems from the earlier ManiacBug version. I have never tried the Radiohead library.

From studying the Nordic datasheet for the nRF24 I don't think there are any major deficiencies in theTMRh20 library.

...R
Simple nRF24L01+ Tutorial

Robin2:
From studying the Nordic datasheet for the nRF24 I don't think there are any major deficiencies in theTMRh20 library.

I miss access to the OBSERVE_TX register that lets you see how many retries the last send took,
and how many packets got lost (both up to 15).

Thanks guys,

I see this library is used a lot. I took a peek and it is documented well This library seems to have good control of the radio. I will give it a whirl when I get back from vacation.

It also seems that most of the addressing is done for you. Can you use the shock burst feature of the radio and get an acknowledgement from each node back to the base? This function would be nice to have. My project requires sending out a set of parameters to each node. This could be done by one struct. Then each node would send status and results back with a separate struct. The return struct then would have to be scheduled to avoid collisions. I need to pull this off in about 400 ms. Is this a solid approach?

Thanks.

Dave.

If you found the library well documented, why didn't you read that documentation?

After studying the NRF datasheet of course.

weldsmith:
Can you use the shock burst feature of the radio and get an acknowledgement from each node back to the base?

Did you study my tutorial? ALL the examples use automatic acknowledgements and the 2nd example uses it to send data back to base.

...R

Whandall,

That was the Problem, as I was looking through I did not see where shock burst mode would acknowledge messages. If my memory serves me right, the radio head library does not support this function. However I did learn that there are hardware and software acknowledgment. May be the hardware does this on its own? I will have to look at the data sheet again!

Robin,

I have not read that piece. I have learned a lot from your writings. I see you have included it for me.

Ok, Now after reading through the data sheet i realized I miss spoke. I mentioned shock burst when I was talking about a broadcast. I want to broadcast the parameters to all nodes at the same time and then receive an acknowledgement from each node. I then need all nodes to report back, one by one with there status (a node status struct). Has any one done something like this with the TMRh20 RF24 library.

weldsmith:
I want to broadcast the parameters to all nodes at the same time and then receive an acknowledgement from each node. I then need all nodes to report back, one by one with there status (a node status struct).

That can't work with automatic acknowledgements. If you want the master to send the same message to several slaves then you must disable auto-acknowledgements. If you don't then all the acknowledgements will happen at the same time causing garbage so that none of them is received.

I guess you could implement a system in which each slave is pre-programmed to wait a specific time before replying - perhaps 5 millisec intervals between each successive reply. But it would probably be quicker and less trouble for the master to send a message separately to each slave and get the auto-ack.

The second example in my tutorial is a very simple way for each slave to send data as part of the acknowledgement.

...R