Drone mesh network, concept using ESP-WIFI-MESH


I made a simple implementation of this concept using esp32 and esp-wifi-mesh library, as per the concept, the node 0 encodes and decodes data between mesh and host, the data are encoded and decoded in base64

I tested with my two available fc minipix and pixhawk 6c, and the system works*

Two fc’s with esp32

decoder esp32

mission planner

I believe there are much more room for improvement, but for now when connecting the node 0 sends all drones data with the mix, some times gcs stuck in loading parameters or loads one drone data not the other and when switching it reading data all over again,
For now to overcome this problem i need to power cycle the drone one after another or try plugging in and out node 0 multiple times to get all drone data with the parameters

This bottleneck in node 0 might be the problem that I am guessing, or it could be a bad code.

Tried something to solve?
I try to read the gcs data that is broadcasting so that i can create a scheduler that helps to connect drones orderly and relieves some bottleneck on the node 0. So the data from gcs i read in both hex and ascii, initially the data is random and then sends mission planner version, Afterwards this data is followed {a….b….c….d….e…(so on) …y… z} might be the parameter reading? Then steady length data stream, i observed this from node 1, but i couldn’t find any differentiating factor for reading particular drone data alone

I am out of options, any solution or suggestions would be helpful

This is the code i using, its a arduino code using painless mesh library

remember to change node 0 ie router-base address in node code
node-v1.ino line 29



I have accept this as blog even if it is a starting POC as it could bring some good discussion

From your code : raise baudrate, raise your buffer as if you have message bigger than 256bytes, they won’t pass.
Then, why encode in base64 ? mavlink msg are already serialized, so you should be able to forward them directly.

One optimization would be to know the packet size limit that the meshing allow and start packing your mavlink msg (which means to parse them to know their id and size) to fit the mesh packet ! You will save air time doing so.

1 Like

I would recommend adding proper mavlink routing with relaying and packet deduplication.

hey there
thank you for accepting this blog

As per the comment, i have raised the baudrate and buffer from 115200 to 921600 and 256 to 512 (ig we can push more in esp-wifi-mesh) , now I am able to get steady connection from both the drones (v1.2)!
i tried to send mavlink msg directly, but the gcs couldn’t able to connect, it says “connection failed” and then painless mesh library allows only char data to sent so i have to convert the data, each time to sent and receive
parsing the messages into batches of mesh package limit is great, and i have tried it in v3.1 code, where you can mention batch size and buffer size

although esp-wifi-mesh has package limit of 1,456 bytes we can push more ig, but for low throughput communication like lora batching the message will be great

1 Like

i am looking to modify the mavesp8266 project

added mavlink parse in v4

1 Like