RF24Mesh - Dynamic Mesh Networking for NRF24L01+ Radio Modules
An Overview of Progress so FarOverview:
RF24Mesh is a C++/Arduino/Linux/Raspberry Pi library allowing many devices to simultaneously connect wirelessly and remain connected in a mesh style network using nrf24l01+ radio modules. Nodes can communicate with any other node on the network, including a master node that handles most of the 'mesh' type communication and addressing.
RF24Mesh builds upon the existing RF24Network and RF24 nrf24l01+ radio libraries, and automates addressing, so nodes can move around, discover other nodes, and route traffic accordingly, on even some of the smallest and most power efficient devices.
RF24Mesh supports the features of the lower layers (RF24, RF24Network), including large/fragmented payloads, multicasting, routing over extended distances, and allows users to interact with the lower layers directly.
Setting it Up:
The main thing when setting up a mesh network is to configure and test your devices accordingly, to make sure they are in a fully operational state. Most if not all of the available radio chips being sold are clones, so I've found it necessary to modify the radio devices slightly in some cases.
In the case of these modules, I've found that scraping off the last bit of the antenna, and soldering on a small 3-4" piece of wire greatly improves their performance:
The modules that are low powered with an antenna generally work out of the box.
I generally recommend using an adapter, to provide a stable power source, even for the low powered modules. I've been using these with all of my modules.
From there it is a matter of installing the Arduino libraries etc. which is covered in the documentation and in earlier blog posts.
Current status, testing etc.
RF24Mesh is now past the development/beta testing stage and considered (by me) to be stable, and well tested. The mesh can handle a large number of nodes, theoretically up to 255, but in practice, more like 15-25 nodes is a reasonable bet. It generally depends on the type of traffic and frequency with which it is generated, as a larger number of nodes reporting data every minute presents only a small load for the network.