one to multi one communications (rf 2401 communication)

I originally posted this in the networking forum but got no response (rf24 - one to multi one communications - Networking, Protocols, and Devices - Arduino Forum) I am hoping someone here will be able to give me some feedback.

Below is a description of what I have, the problem and what I think the solution is. Your comments on whether this makes sense or not, will be greatly appreciated.

What I have:
I have 2 Uno's connected with nRF2401 and 16x2 LCD.
Master - One Uno with an ethernet shield, LCD & nRF2401 radio.
Slave 1: Uno with nRF2401 and 16x2 LCD

I am able to call a web server page with query strings from PC browser to Uno webserver (Master), and transfer the query string parameter to the other Uno (Slave 1) and display it on the LCD screen. :slight_smile:

I am using Maniacbug RF24 library.

What I'm struggling with:
I need to add multiple Slaves (slave2, slave3 etc)
Each slave will be used to display different information.

What I can't figure out is, how do I tell Uno 1 - you are Slave1 with address xyz, then to Uno2, how would i tell it you are slave2 with address abc.

And finally, how would I tell Uno Master, send this data to slave1 or send that data to slave 2.

I am passing a query string parameters which identifies to which uno i want to communicate, but i'm just lost as to how the addressing (on the rf2401) actually works.

My idea:
If this was an ip network, then i know that if my query string parameters is 10, i send the text to and if the query string is 20, i send it to in TCP/IP this is direct communications.

In the RF world, I assume I need to broadcast the message? (I need to send 6 digits).
For example, if i want to send the value 350120 to slave2 (coded with device id 1002) I can send from Master the value 1002350120. then in all slaves which will receive this packet, I can do a look up on first 4 digits, if they are equal to the device id, then process the communication, otherwise drop it. does this make sense?

Device ID will have to be entered individually to each Uno (is there a way around it, some kind of unique eeprom address?).

In my sketch for the master I have this for the MAC address:

static uint8_t mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0xD0, 0x9A };

for the radio I have

const uint64_t pipes[2] = { 0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL };

I can only assume this is some sort of addressing (identification?).
What is this code actually used for? Can all my Slaves use the same code? If not, why not?
Do these have to be in the format above? if only 5th pair changes (E1 to D2), then I can have a maximum of 256 nodes. What if I want to have more then that? Can I change the 4th pair from F0 to any other value? this will give me over 65000 nodes, which is way more then enough for my intended application.

Thanks for reading the whole post, and for your comments.


As a follow up, I must note that this is not a typical network were many nodes sends data to one master, but the reverse.
One master is sending different data to many nodes.

So the master doesn't actually get data from the many nodes (unless of course this is a confirmation of what was sent).