Project thumbnail - Screenshot of website. Contains boxes with current temperature, humidity and pressure. Chart of temperature, humidity and pressure for the last 24h. Chart displaying data updates for the last 24h.

Cloudy

Weather station project based on the BME280 sensor with live database updates and a web ui.

Cloudy

A weather station with a fronted UI and PHP backend was my first-ever web project. It has been more than 4 years since I finished it, and I've decided to do it again but with my current knowledge.

Another reason for this project is that I wanted to learn how to design schematics and PCBs.
You can see the (hopefully) live data on the website.

Hardware

The station uses a BME280 sensor to measure temperature, humidity and pressure. Besides uploading the data, it's also shown on a 0.96" OLED display (Not included in schematic).

The schematics and PCB use an ESP32-C3-MINI-N4, but because of the costs of manufacturing, assembly/stencil and shipping, I've decided to assemble it on a breadboard with an ESP32-WROOM devkit.

The schematics also include a 3.3V voltage regulator, USB type C for power and programming, and a IDC header for a PMS7003 air quality sensor that I could integrate later if I'd like to.

As for the future sensors, aside from the PM2.5 sensor, I'd like to add a rain sensor and an anemometer.The first one is cheap and easy to do, but the second one is not so much. Anemometers are expensive, and I don't have the tools to make one myself. Even if I had one, I do not have an appropriate location to install it.

Software

The software for the station is in the driver folder. It's written in C++ and uses Arduino libraries. For the backend, I've decided to use Supabase, because of the REST database API and the real-time features which allowed an easy integration with the microcontroller.

Back to top