Table of Contents
NOTE: This project was a part of the authors' bachelor's thesis at Uppsala University.
The thesis can be found at:
MINTS is a network of small, energy-efficient measurement stations equipped with sensors to monitor ground-level air quality and noise pollution at a local scale. The stations can be placed around a city, where they report data to a central gateway. From the gateway, the data takes a streamlined path to reach the public-facing website, transforming raw numbers into an intuitive, real-time heatmap.
The goal is to create a plug-and-play system that can identify problem areas and reroute traffic to reduce pollution and congestion in local communities. By continually monitoring several streets, it is possible to identify traffic patterns that can be used to better plan future development and improve the quality of life in affected areas.
The primary beneficiaries of this project are the municipalities and the people who are troubled by pollution and traffic-related disturbances. Further, it provides the tools for responsive urbanism, making the day-to-day lives of citizens easier.
- Ground-level measurements: measures ground-level PM and noise pollution.
- Real-Time Heatmap Generation: Real-time visualisations of pollution data.
- Low-Cost system: ~100 USD per node.
- Low-Power LoRa Communication: Optimised for long-range, battery-efficient data transmissions within an urban, ground-level environment.
For further details, please see chapters 3.3 and 3.4 in the thesis.
The measuring station is designed to be compact, energy-efficient, and easily expandable. It is powered by a 9V supply, providing a 4V overhead to handle battery degradation and protect voltage-sensitive components.
The software architecture consists of four parts working together: frontend, database, gateway, and node (Figure 8). The goal is to collect data from the connected sensors, transmit it to the gateway, which uploads it to the database, which can be read from the frontend to update the heatmap.
For further details, please see chapter 3.2 in the thesis.
| Component | Model / Details | Purpose & Key Specifications |
|---|---|---|
| Particle Sensor | SEN-HM3301 | Monitors airborne fine particle concentrations ( |
| Sound Sensor | Waveshare (LM386 Amp) | Captures acoustic data (50–20,000 Hz range, 52 dB sensitivity). |
| LoRa Module | Core1262-HF (TCXO) | Handles wireless communication between nodes and the gateway. |
| Microcontroller | Arduino Nano (ESP32-S3 SoC) | Serves as the main processing board for each individual node. |
| Gateway | Raspberry Pi 3 Model B (1GB) | Bridges communication between the node network and the server. |
| LoRa HAT | Waveshare LoRa & GNSS | Gateway add-on board based on the SX1262 radio chip. |
| Antennas | 2J0C15-868-C885G & Bundled HAT Antenna |
Nodes: 868MHz antenna via SMA to U.FL adapters. Gateway: High-gain antenna bundled with the HAT. |
| Misc. Electronics | Capacitors, Resistors, Regulators | • 2x Electrolytic capacitors (10uF, 16V/50V) • Resistors: 200Ω, 140Ω, 20Ω • LD1117V33 voltage regulator (steps down to 3.3V, up to 0.95A). |
| Power Supply | 6x AA Batteries per node | Dual AA battery holder configuration per measurement station. |
| Enclosure | Custom 3D Printed Case | Custom PLA plastic chassis featuring an integrated PM10 insect/debris filter. |
| Tool / Library | Type | Function |
|---|---|---|
| RadioLib | Open-source Library | Provides low-level control and configuration for the SX1262 LoRa module. |
| MapBox API | Mapping Platform | Powering the interactive, customizable heatmap and layer handling. |
| Firestore | Database | Cloud-hosted NoSQL database used for storing and syncing station data. |
To get a local copy up and running, follow these steps.
Before running the backend or frontend web application, ensure you have the following installed:
- Node.js (LTS version
v24.xor higher recommended) - npm (v11.x or higher)
- TypeScript
- C++
Navigate to the part of the project you want to run and follow the specific instructions in the respective READMEs.
├── database/ # Firestore security rules and configurations
├── frontend/ # Web application source code and components (built with Svelte)
├── gateway/ # Packet forwarder configurations and gateway management scripts
├── node/ # Arduino/C++ firmware and PIN layouts for the LoRa sensor nodes
└── README.md # Main project documentation and overview
See the Gantt chart/roadmap for a full view of the project development.
See also the open issues for a full list of proposed features (and known issues).
Distributed under the project_license. See LICENSE.txt for more information.
For questions, support, or collaboration, reach out to the team:
Filip Hellgren
Frontend and database developer
Email: filip.hellgren04@gmail.com
Github: www.github.com/Filip-Shellbranch
LinkedIn: www.linkedin.com/in/filip-hellgren
Jenny Nilsson
Frontend and database developer
Email: nilssonjennylinnea@gmail.com
Github: www.github.com/jeni1263
LinkedIn: www.linkedin.com/in/jenny-nilsson-a7ab6a411
David Olmedo
Node and gateway developer
Email: david@olmedo.se
Github: www.github.com/DaOl6717
LinkedIn: www.linkedin.com/in/davolm/
Tim Schönning
Node and gateway developer
Email: timschonning@gmail.com
Github: www.github.com/TimSchonning
LinkedIn: www.linkedin.com/in/tim-sch%C3%B6nning-29a621226/
- Special thanks to our thesis advisor, Docent Calkin Suero Montero.