Mesh Network Simulator for disaster.radio

Contributed By 

disaster.radio

Description 

The Disaster radio is building a hardware and software platform for a long distance, low bandwidth mesh network powered by the sun. Everything is 100% open source and open hardware. Due to bandwidth constraints the mesh routing protocol will need to be somewhat different from existing protocols and in order to rapidly test different strategies we need a network simulator capable of simulating the limitations in the RFM95W LoRa radio chip used.

The simulator should provide a simple API that let's you:

* Place mesh nodes on a virtual 2D map (could be done semi-randomly by specifying average distance between nodes, number of nodes, etc)
* Specify maximum transmit/receive range for each node (with a random factor specified in percent)
* Send a data packet
* Receive data packets
* Change radio parameters

When a packet is transmitted the simulator should be smart enough to know which nodes received a packet based on:

* How far apart the nodes are and their specified range
* Whether the nodes are on the same channel (spreading factor) as the transmitting node
* Whether another node within range transmitted a packet at the same time (overlapping the transmission window)

The people writing the mesh algorithm will then hook into this API and write code that uses the send and receive functions to implement the mesh routing/forwarding.

Existing data, content, code 

This is a spreadsheet calculator that tells you how much bandwidth you get with different settings and more importantly how long it takes to transmit a packet:

LoRa airtime calculator Google Doc

More in-depth info on the LoRa modulation scheme but this is way beyond what's needed for the simulator:

LoRa Github Website

The datasheet for the RFM95 LoRa chip we use, but again this is probably not needed for writing the simulator. A basic understanding of the LoRa parameters in the spreadsheet calculator should be enough.

We started working on some code here but for now it's just a javascript port of the spreadsheet calculator:

disaster radio simulator GitHub website

Contact Marc Juul at disasterradio@juul.io if you end up working on this challenge and have questions or just want to talk about the challenge.

Related Skills

Javascript