Miniature-scale IoT Weather Station

Miniature-scale IoT Weather Station in its casing

Overview

This project explores a miniature-scale IoT weather station built around a compact multi-parameter sensor module. The system is designed to collect synchronized environmental data including temperature, humidity, barometric pressure, particulate matter, and gas-related air quality signals. With LoRaWAN connectivity, long operational lifetime, and support for modern data formats, it is well suited for dense urban sensing, research deployments, and small-scale smart environment monitoring.

Specifications:

The station uses several sensors to capture a broad set of environmental measurements. A Texas Instruments TMP116 is used for high-accuracy temperature measurement, offering accuracy of up to ±0.2°C. Environmental measurements are also handled by the Bosch BME690, which provides temperature accuracy of ±0.5°C, humidity accuracy of ±3% RH, and barometric pressure accuracy of ±1.3 Pa. For air quality and particle monitoring, the station uses the Bosch BMV080, which measures PM1, PM2.5, and PM10, each with an accuracy of ±10 µg/m³ or ±10%. In addition, the BME690 provides gas sensing for VOCs, ozone-related signals, and IAQ estimation, though the datasheet notes that quantitative measurement accuracy for specific gases is still pending calibration.

Embedded programming

I use STM32 microcontroller as a MCU for this project. I have successfully used Google Antigravity in combination with Google Gemini Pro to write C programming language based embedded firmware for the STM32 to capture the data in a way that saves energy. We measure data for couple seconds each 5 minutes after which we turn the unit into deep sleep mode and wake it up using RTC after 5 minutes have passed. Also the operation mode of each sensor has been tuned to be the most energy-efficient.

Data output from web-based UI.

Data output from web-based UI.

Layout of the PCB.

Layout of the PCB.

BOM of the PCB.

BOM of the PCB.