I am building a mesh network inspired by networks and swarm behaviours. When we think about swarms, we typically visualize flocking behaviours of birds and insects. They move as individual autonomous entities, but work and act together to accomplish common goals.

There are many mathematical models to simulate this phenomenon, producing complex group behaviours and patterns with simple sets of prescribed rules to individual agents:

  1. Separation

  2. Alignment

  3. Cohesion

Braitenberg vehicles are a series of thought experiments by Valentino Braitenberg, whereby mobile agents with basic sensors (such as Light Dependent Resistors) can stimulate behaviours that imply aggression, love, and so forth.

We are all part of swarms as well. A game I had recently played that illustrates this idea is KIDS. “A short interactive animation drawn by Michael Frei and coded by Mario von Rickenbach… KIDS allows you to move with and against crowds until everyone is gone”.

Another game that comes to mind is a game by Pixel Pushers Union 512 titled Tonight We Riot. The game in itself is comedically simplistic, but it is unapologetic about its stance on socialism, worker liberation, and police brutality. Interestingly, it abandons the stereotypical tropes of a singular hero or heroine, instead playing as a movement of people. When the flag holder dies, they pass to flag (torch) onto another person in the group. Often, there is no singular face to a revolution.

In Lasermice, Kanno So used the same loop time length for each mouse. Each emits a laser light and activates a solenoid on the condition that the current time minus the time the laser is detected divided by loop time length is a whole number. This loop restarts when it detects the laser. This allows them to sync and produce interesting emergent behaviors.

Screen Shot 2018-12-21 at 17.25.48

Although I am not making a swarm per se, I am still figuring out the best ways to have a decentralised network with simple agents.

D1 mini boards (ESP8826) are able to have direct communication with each other, or be connected over a local WiFi network and have their own IP addresses. With  the WiFi and painlessMesh libraries, they are able to serialize data in JSON format, broadcast these messages to the rest of the network or have point to point (or single point to multipoint connections). The receiving nodes would deserialize these messages and execute codes, and send messages back if necessary.

D1 Mini FlashingLED2.jpeg

Photo: Left node broadcasting to right 3 nodes once every second. When the right 3 nodes acknowledge the message, their LEDs will flash and they remain connected to the left node.

For example, this allows a server node to connect to 3 nodes, and each node would connect to another 3 nodes, and so forth, forming a much larger network.

I can also have all nodes broadcasting and receiving data, although at this point I still have to work out the technicalities of syncing.


Typically, a benefit of this system would be if one node was to fail, the others would continue operating. Strangely, and perhaps due to the recent events, I feel there is an odd connection to the idea of collective action.

Ideally they would also appear semi-autonomous, and I would like to continue exploring the idea of consumption, possibly by having each node monitor their own power levels and be able to self-charge or locate a charging point.

At this time, these boards serve as a physical manifestation / medium for the ideas I have been exploring. My next steps would be to consider battery level indicators, potential ways of sharing energy, and implementing IR emitters and transistors.