Over the past week, I have been looking into what are the best tools/ways to create a mesh network for our ESP32 boards that will be attached to the blimps.
The three frequencies we want to add to diversify are 2.4 GHz, 433 MHz radio, and mmWave 20 GHz. For the 2.4 GHz option, ESP-now looked like a promising solution. When I read about ESP-Now, it sounded very similar to wifi, and so I wondered what the difference would be between using ESP-Now versus Wifi stations and access points. So, I compiled a table noting significant differences I could find.
Based on what I’ve found, ESP-Now seems to be the better option for our project. This is because it has better peer-to-peer communication with up to 20 connections per node.
I also found two libraries called ESP-Mesh and painlessMesh which seem to use Wifi and have most functions of a mesh network already, such as self-regenerating if a node goes offline, automatically connecting new nodes into the mesh, etc. However, I believe that for our project, and the fact that we want to add frequency diversity, we shouldn’t use ESP-Mesh because it is a black box. Furthermore, ESP-Mesh isn’t really a mesh network but a tree-mesh network. The issue with this is, as it says in one of Ankur’s research papers TDMA-Based Dual-Mode Communication for Mobile Wireless Sensor Networks, “a multihop tree topology would be susceptible to loss of connectivity from the failure of a single node. As such, the network must form a multihop mesh topology, where nodes can have multiple neighbors, and data can pass through several nodes on their way to and from the base station” (Mehta et al.). Basically, with a tree-mesh like in ESP-Mesh, the loss of connectivity from a parent node in the tree would require the tree to be restructured, which could have side-effects such as taking away processing power from the blimp’s other function.
Thus, I believe that we should write our own mesh network using ESP-Now using a graph-like structure. The redundancy of a graph mesh with multiple connections mitigates the issue of the system breaking if an intermediate node loses connection.
Additionally, this week I also was able to make two ESP32 boards send and receive messages between one another using ESP-Now. ESP-Now is simple in that the sending board just needs to know the mac address of the receiver. From the initial node, we can use the graph’s adjacency matrix to determine the multihop path to reach the destination node. If each node in the graph has a unique id which is also tied to a mac address, we can lookup the mac address of the nodes we need to hop over to reach our destination, and then use the ESP-Now protocol to deliver the packet.