Hello everyone, sorry for my bad English, today I have a question about NRF24L01, I have 3 Arduino and 3 NRF24L01, I want to send and receive data two communication with 1 arduino master and 2 slave. With 1 master and 1 slave are normally but when I use more than slave isn't data receive, so today I want to ask about how send and receive with more than 3 arduino. Thanks you
It seems to me that there are two options - either to select a separate tube for each slave, or to communicate all on a common tube by turning off the confirmation of acceptance
Why would you want to switch off AutoAck?
because AutoAck can't be used with more than one client in the same tube in the moment - confirmations from different clients will get mixed up
Nope, that is not true.
There is no limit for clients to send to the same pipe.
It would be clever to include some type of source identification in the packet,
to distinguish them at the receiver side.
you absolutely right, but clients shouldn't use autoAck, because for server no way to distinguish clients automatic respoces
You are misunderstanding the transfer process.
Each of the transmissions are processed using the address of the target.
The source switches to the address of the target for the ACK-packet.
What do you mean by target address in this case? The name of the tube? Or some internal identification inside the data packet, what you mentioned in post #5?
What you call tube is named pipe.
openWritingPipe is used to define the pipe address that will be used in transmissions.
The raw packet format has a target address only, no source address.
I would suggest loosing any master/slave concept,
try to imagine each of the nodes as peers.
It is no problem to transmit from many nodes to a specific address,
and if this address is only acknowledged by one node,
all communications can use ACKs without interfering.
Other nodes can eavesdrop on such communications,
so reporting nodes could listen to the reports of other reporters.
Ok
Return to my first post.
OP has two options - a) use separate pipe for each client, or b)use the same pipe for all clients, but in this case he have to switch autoAck off.
No, no, no.
Okay, I'm not arguing, but you yourself say the same thing,
autoAck can be used only one node on the pipe:
All nodes use a personal address if they are to be reached,
and report their data to a single pipe in the receiver.
personal address? on the same pipe? I don't understand...
Ok, do not answer, let's not confuse OP with our disputes
I can see that you are confused, but it is really easy.
A node can listen to up to six pipes at the same time (with some address restrictions),
auto-ACK can be configured for each pipe individually,
and it can transmit to a single pipe.
To use ACK, the pipe should have exactly one node listening with ACK, to issues them.
For the TX/ACK process, the sender puts out the packet with the target pipe address,
then switches to exactly that pipe to listen.
The receiver gets the packet and responds to the very same pipe address with an ACK packet.
If you want to use multiple nRF2401 modules I suggest looking at the RF24Network library.
https://nrf24.github.io/RF24Network/
I would not recommend that, if all nodes can communicate with each other.
What is wrong with nodes being able to communicate with each other?
Nothing, but it renders routing and networking superfluous.