Cheap Arduino Based Mesh Network… In Progress

I’ve been wanting to reproduce something similar to this. One adaptation I really wanted is for the sensor network to run as a mesh, automatically fixing dead links as well as making redundant routes easy (so that if one path fails at the worst time possible, another can be used without my intervention).

I chose to use the nRF24l01+ chips as my wireless backbone. From there I looked at the RF24 and RF24Network. There were two non-starters here. First, and biggest, is that they are both toxically licensed with GPV (Gnu Public Virus). I am all for GPL in main applications, but libraries really should be able to be used for people’s real purposes. At least that’s the Arduino (LLC, that is) model. Second, the RF24Network is actually a star network which requires the route to be statically determined via a preassigned address. That is just not savory enough.

So, I’ve been working on trying to implement an AODV mesh protocol on the nRF24 chips. It is LGPL so that people can modify it as they see fit (and release updates to the networking library), but use it for their own problems as they see fit. Today, is the initial release. It is NOT an AODV network yet, instead, it just has a few basic capabilities so far – broadcasting, forwarding, and filtering previously seen broadcasts.

This is not ideal yet, but it does work for low-bandwidth, mains powered arduino scenarios since it uses airspace and transmission power extremely inefficiently… All the same, many of the bones are hopefully in place. The next easy step is to change the code to skip broadcasts for known 1 hop destinations (and basically starting to wire in basic DV routing tables)… Anyway, source code here.

As far as my home automation project goes, the next big issue is creating an ethernet bridge for the network. I’d like to use the ENC28j60 ethernet adaptor, but all major libraries are GPL again… so I suppose I’ll just drop back to buying a more expensive shield (since those libraries are LGPL).