projects
Pico 2W + Raspberry Pi 3 Weather Station
A personal weather station combining a MicroPython node on Raspberry Pi Pico 2W, several environmental sensors, MQTT publishing, and a local dashboard on Raspberry Pi 3.
Status: In active development
Repository: GitHub
Documentation: Lien
Overview
This personal weather station is built around two complementary repositories.
The first, weather_web_sensors, runs acquisition on a Raspberry Pi Pico 2W with MicroPython. The second, rpi3-meteo, receives the measurements on a Raspberry Pi 3, stores them, displays them in a local interface, and enriches them with forecast pages.
Together they form a small autonomous observation chain designed for home or nearby outdoor use, with an architecture that stays simple, repairable, and easy to extend.

View of the acquisition prototype on Pico 2W with temperature, humidity, and pressure sensors, along with an OLED display.

View of the display on the Raspberry Pi 3 screen, with raw data and reduced data.
Project architecture
The current chain is organized into four blocks:
- local acquisition on the Pico 2W
MQTTpublication of measurements- ingestion and storage on the Raspberry Pi 3
- local visualization on screen or in a browser
The MicroPython node reads several sensors in parallel, computes an aggregated reference measurement, updates a small OLED display, and also exposes a lightweight local web interface. The useful data is then published to a Mosquitto broker and consumed by the FastAPI application, which stores it in PostgreSQL and serves it through a local dashboard.
weather_web_sensors
The weather_web_sensors repository is the embedded acquisition layer of the project. It relies on:
- a
Raspberry Pi Pico 2W - a
BME680for temperature, humidity, pressure, and gas - a
DHT22 - an
AHT20+BMP280pair - an
SSD1306display - a
DS3231real-time clock module
The software handles:
- two separate
I2Cbuses - autonomous acquisition at boot
NTPsynchronization with write-back to theRTC- a local web page with cross-sensor comparison
UDPorMQTTexport
This layer is especially useful when comparing several temperature, humidity, and pressure sensors on the same setup in order to monitor offsets and choose a working reference.

View of the embedded web server display on the Pico 2W, with raw data, reduced values, statistics, and cross-sensor comparisons.
rpi3-meteo
The rpi3-meteo repository is the local server layer and the visualization interface for the weather station.
It is based on:
- a
FastAPIbackend - a
Mosquittobroker PostgreSQLstorage- a touchscreen-friendly interface
- forecast pages powered in particular by
Open-Meteo
The application consumes two MQTT streams published by the Pico:
- a raw stream for detailed acquisitions
- an aggregated stream for the summary display
It can then:
- store both messages and individual sensor values
- expose the latest useful readings
- compute a local air-quality indicator from the
BME680 - display current, hourly, and daily forecast pages
- generate remote plots from
WSLby querying thePostgreSQLserver in Python
Below are a few screenshots of the pages available in the user interface:

View of the Raspberry Pi 3 home page with real-time data and reduced data.

View of the Raspberry Pi 3 real-time page with raw data transmitted every minute through the MQTT broker.

View of the Raspberry Pi 3 summary page with reduced data, here grouped by hour.

View of the current conditions page sourced from Open-Meteo.

View of the short-term forecast page sourced from Open-Meteo.

View of the 4-day forecast page sourced from Open-Meteo.
Why this project matters
The main strength of this weather station is the way it connects lightweight electronics with application software:
- compact embedded acquisition with
MicroPython - measurement transport through
MQTT - persistence and queries with
PostgreSQL - modern local interface with
FastAPI - independent evolution of the sensor layer and the dashboard layer
The project also remains a useful experimental platform: future addition of an anemometer, a rain gauge, improved air-quality heuristics, sensor comparison, and richer historical visualizations.
A weather shelter made of PETG could also be built with a 3D printer, and the current Wi-Fi data transmission could later be replaced with two HC-12 433 MHz serial transceivers.
Intended audience
This weather station is meant for people who want to:
- build an open and modifiable personal weather station
- keep local control over their data
- compare several environmental sensors
- run an autonomous dashboard on
Raspberry Pi - reuse simple building blocks based on
Python,MicroPython, andMQTT
Links
MicroPythonsensor node: weather_web_sensorsRaspberry Pi 3dashboard and storage: rpi3-meteo