Here is my situation:
I have a network of 96 XBee S2B and S2C modules. My application runs on an ARM module and has an XBee S2C module. All modules (97 in total) are on the same network and can communicate with each other.
The software starts up and knows the 64-bit addresses of all modules. It will perform network discovery (Local AT β ND) and will wait for responses. Each response updates the 16-bit address of each module. If the module did not respond to network discovery, it will be sent again every 30 seconds (in most tests, after 60 seconds, all nodes are detected.
Then, while saving all 64-bit and 16-bit addresses, the application will send a message to each node using unicast. He will not wait between sending messages. I tried this with 36, 42, 78 and now 96 nodes. With 36 nodes, messages are received within 3 seconds by each node (as expected), with 42 and 78 for each node, respectively, requiring 4 and 7 seconds. With 96, however, it takes 90 seconds (at least).
There is no external interference that I can detect, and all nodes are within reach (if not, network discovery would fail).
I also tried using 64-bit messaging and ignored the 16-bit address, this takes even longer when using this method.
I am using xbee3library made by attie ( https://github.com/attie/libxbee3 ).
My question is: how to speed up the communication time of 96 nodes (keep in mind that the goal is to be able to process even larger networks) and why there is such a big difference between 78 and 96 nodes (why is the network suddenly so slow?)
If you need more information about my situation, I will be happy to provide it. When I manage the code, I can run tests if you need more information.