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:
More in-depth info on the LoRa modulation scheme but this is way beyond what's needed for the simulator:
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.
Contact Marc Juul at firstname.lastname@example.org if you end up working on this challenge and have questions or just want to talk about the challenge.