433 MHz Packet Radio Stacks: an easy to use frequency-diverse mesh network
Bhavik Joshi networking mesh mesh network 433mhz radio frequency diversityThis week, our team of summer undergrads began planning the integration of all of our projects together into one big integrated demo. So, I had to start making my networking code and hardware easy to add into and use in my peers’ projects. To do so, I switched from using the small 433 MHz packet radio breakout boards which were connected by wires to the 433 MHz Packet Radio Featherwing stack boards. Using these boards on top of our ESP32 feather boards, I made a network of three nodes that communicated to one another using both 2.4 GHz and 433 MHz simultaneously, and displayed the two way delay on the dashboard. Here is a video of the demonstration:
As you can see, the one node that is the MQTT bridge talking to the dashboard (the one on the right) is able to individually communicate with either node, and displays the delay onto the dash.
The biggest difference of this demo from last week’s is the fact that the IDs of the radios aren’t hardcoded in the header file anymore; now, when I begin the MQTT connection, the “master” node starts assigning every node currently connected over painlessMesh a unique radio id. If a new node joins the network, it gets assigned the next number. The cool part of this is that even if the master node gets disconnected from the network after the set up, the other nodes will still be assigning new nodes the next id number. This adds further robustness to the system since the robots will still be able to operate somewhat normally if any other robots go offline. Each node also gets a synchronized table that matches the radio ids to the painlessMesh ids (which are derived from each board’s MAC address).
Another interesting point that I wanted to bring up this week was choosing which antenna to use on the radio featherwings. Last week, a lot of the antennas that I made out of the solid core copper wire kept snapping since they’re so brittle. Today, I tried using a stranded wire instead. Here is a picture of a stranded wire antenna (left) and a solid core antenna (right).
The stranded wire is a lot floppier, so it won’t snap off if it gets brittle from too much movement; however, it does seem weaker and that it can be ripped off easier. There may be a benefit to using one or the other on specific robots depending on their environments and movement, so that is something to explore in the future.