Overview
This project aims to create an autonomous and encrypted mesh communication system that can transmit weather report to a server.
A gateway board is configured in order to upload all the transmitted data to an MQTT server. Some scripts will then decode the received messages that are packed as Protobufs (that reduces the size and also makes them easy to decode by scripts).
The decoded data will then be pushed into a MySQL database, and a Grafana instance will connect to that database in order to show all the data that has been gathered.
Hardware
TTGO LoRa32 boards were used to transmit data via LoRa, in order to achieve the best range possible while still maintaining a really low tx power (~100 mW) to respect the EU laws about RF ISM bands (868 and 433 MHz).
The purple board is a BME680 environment sensor, which reads temperature, humidity, barometric pressure and air resistance.
The TTGO board is inside an electrical box, so that it is protected from rain and dust. An external antenna and a solar panel mounted on the box allows the best radio reception and a constant power source. There’s also a 3700mAh battery inside the box to keep the system running during the night or in cloudy days.
We assembled 3 box just like this one, to create a small mesh network.
One of these boards was configured as a Gateway: it connects to WiFi and it sends data from the mesh to an MQTT Server that it is hosted on a Raspberry Pi 3 for prototyping (after the project was finished, the system has been moved to a dedicated VM).
Software
The Meshtastic firmware is an open-source project that allows the creation of a decentralized and encrypted mesh network to share data and text messages even in remote areas without using the Internet.
All the TTGO boards used in this project were configured on the same channel so that they could connect together and create a mesh network to exchange weather data and board telemetry.
The boxes were placed in different places near Crema in order to gather data in different locations (blue squares in the map below).
When data are sent to the Pi, a script decode this data and re-publishes them in a different topic of the MQTT Server.
Another script take these data and pushes them into the MySQL database, from which Grafana can read and show the data on some graphs.
You can find the public dashboard at this link.