Over the past few years, we've noticed the difficulty and inaccessibility of communication in rural areas, which mostly rely on mobile telecommunication towers that are stretched too thinly, or satellite phones which are expensive and inconvenient. This does not allow communication for groups of people such as hikers, for example, in areas where mobile towers are not present.
For this reason, we created a communication system that connects communities together from a radio mesh network that can be used off grid / does not rely on mobile telecommunication towers.
What it does
The radio modules (or nodes) carried by users will set up its own local access point, which can be accessed by the users. This node will automatically connect to all other nodes in range (3km in an open field) and form a wide network with multiple nodes. Users can then find all other users connected to the network (which can span vast distances), and send and receive messages from all users in the network, allowing for communication completely independent of the internet / satellite.
How we built it
We built it with an Arduino MKR Wifi 1010, which handles the local server and client requests. the Arduino is connected to an Xbee radio module, which has an in built algorithm to create a mesh network with other nearby Xbee modules, hence connecting multiple nodes through radio bridges (RF links). An intuitive and user-friendly interface was needed to easily exchange messages among users. We opted to develop a Swift-written iOS App. The app allows the user to register with his or her name. This allows to join every 'What a mesh!' compatible network thanks to unique user ID. The App then runs through handshaking and continuous data fetching to display any incoming message in realtime. We tried to develop a iMessage-like user interface for usability.
Challenges we ran into
Many challenges were faced in the traffic from handling multiple requests from clients within the Arduino server, whilst handling incoming messages from other radio modules. Another challenge was to create unique identifiers for users across the network through the use of a local IP Address and the local Arduino's Mac Address. Finally, a strenuous challenge was to integrate the server from the Arduino with the mobile app.
Accomplishments that we're proud of
That it's working ;)
What we learned
Handling multiple client requests asynchronously with Arduino is quite challenging. We also learned how to integrate the Xbee radio modules with the Arduino to send and receive serial messages between multiple nodes.
What's next for What A Mesh
Improve stability and reliability of the network. Also, we are planning to add a GPS for an SOS (emergency) signal to send out through the network in the case of an emergency.