RF24Mesh - Automated Networking for nrf24L01 radios  1.1.6
TMRh20 2020 - A user friendly mesh overlay for sensor neworks using RF24Network
Setup And Config

The initial testing version of RF24Mesh is built as a simple overlay for RF24Network. Users currently need to be familiar with the basics of sending and receiving data via RF24Network, but do not need to understand the topology, routing or addressing systems. RF24Mesh will attempt to construct and maintain a mesh network, keeping all nodes connected together.

Requirements

Hardware Requirements

  • 1 Raspberry Pi or Arduino to act as the Master Node
  • 1 or more Arduino, Raspberry Pi, etc. (Sensor Nodes)
  • 2 or more NRF24L01+ radio modules
  • 1 or more various sensors for your sensor nodes

Software Requirements

Installation

  1. Use the Arduino Library Manager. Selecting RF24Mesh should also install RF24Network and RF24 Core libraries
  2. Configure and test the hardware using examples from RF24 and RF24Network prior to attempting to use RF24Mesh
  3. Once testing is complete:
    • In Arduino IDE
      • File > Examples > RF24Mesh > RF24Mesh_Example
    • For a Raspberry Pi
      • Run make from the examples directory. Then sudo ./RF24Mesh_Example_Master to begin an example as the master node
  4. Once configured and running, the Master Node will begin to assign addresses to the sensor nodes, which will find their way onto the network, and display incoming data from the sensor examples. Usage is very much the same as RF24Network, except for address assignment and network management.

Configuration

As per the examples, nodes are configured with a unique value between 1 and 253. This allows them to change positions on the network while still being identified.

For pre-configuration of the mesh, some options are available by editing RF24Mesh_config.h prior to compiling:

Restrict number of children

#define MESH_MAX_CHILDREN 4

The MESH_MAX_CHILDREN option restricts the maximum number of child nodes/node and limits the number of available addresses on the network. Max: 4

Reduce resource consumption

#define MESH_NOMASTER

The MESH_NOMASTER macro optionally reduces program space and memory usage. Can be used on any node except for the master (nodeID 0)

See also
General Usage for information on how to work with the mesh once connected