All posts by johan

mMESH – Technical deep dive

Folder structure for mMesh[1]:

  • src/spi # Serial Peripheral Interface (SPI)
  • src/test # GTest
  • src/test/mesh # GTest
  • src/syscalls # Wrapper for calls like sleep and timers, differs between different platforms.
  • src/netAlgorithm # Implementation for network algorithms for choosing parent, neighbour and routing for packets.
  • src/mesh # Mesh implementation
  • src/network # Network adapter and network drivers
  • src/network/RF24 # RF24 driver ported from https://github.com/nRF24/RF24
  • src/node # Is used for testing, a node simulates a radio with network functionality
  • src/GPIO # General Purpose Input Output (GPIO)
  • src/islands # Is used for testing, simulates physical boundaries, if two nodes reside in one island they are able to speak with each other.

Continue reading mMESH – Technical deep dive

mMesh – Mesh Network

I have created a mesh network algorithm for embedded systems. This implementation is released be released under MIT License.

Me and a friend have started an Internet Of Things project and we wanted to have a radio module to our microcontroller for communication. The radio module we choose was the NRF24L01+.

One question might arise: Why not use the NRF24Mesh[1] solution that’s already been developed? I’ve looked at the design and noticed that it could be improved which are mentioned in the features, and I also wanted to create it by myself, because I can 🙂

In this post I will discuss about the architectural design of the Mesh Network.

Features of this implementation:
Address range: ~2^18 addresses (262144).
Decentralized network topology: a master is needed, all grouping and addressing will be decentralized, which means that the closest “parent” is responsible to address it’s children’s.
Mesh with multiple routes: All the nodes in the network has always a “default” route to master. Nodes can also pair to other nodes in the network that is physically close. If node A and node B needs to communicate with each other they don’t need to send the packet via the master node, if there is an opportunity to send the packet to a physically near node, and the number of hops is less than via the master, the packet will be sent to that neighbour, which will route it onwards.

Continue reading mMesh – Mesh Network

Espressobin – install nginx and php

Espressobin is my new toy which eventually be my new bridge to the internet while it hosts my connected home. Eventually it will be hosting Home Assistant, OpenVPN and be the WLAN Access Point.

The Espressobin has all the “horse power” i need, it is equipped with 1 gigabyte of ram and a dual core ARM Cortex A53 processor with a clock speed up to 1.2GHz. Which will be plenty enough for my setup. Technical details about the Espressobin is available on their homepage: http://espressobin.net/tech-spec/

Continue reading Espressobin – install nginx and php