Ultimate-weather-station
PublicLoading 3D model… large boards can take a moment.
Ultimate weather station
For a long time, I’ve wanted to know the current temperature, humidity, air quality, and more outside. Since weather forecasts are never accurate for my exact location, I wanted to know what the conditions really are. So, since I already have a lot of experience, I decided to build a complete weather station that would measure the values I wanted, based exactly on the sensors I chose. And since I have a Home Assistant at home, I could make the station smart and monitor the data from anywhere.
This project was more about 3D modeling than PCB design, but in the end, I’m very satisfied.
Features
- Contains sensors: SHT45, BMP280, SGP41, and the AS3935 and LM393 integrated circuits
- It can measure: temperature, humidity, pressure, air quality, lightning distance and energy, wind speed and whether it is raining
- It's connected to Home Assistant, so I can use the data to set up automations and monitor the readings even when I'm not at home
- The ESP32-S3 is the brain of the entire station
- It has two PCBs, one main board and another with sensors located inside the radiation shield that measure the readings. They are connected to each other with a 7-wire cable
- It has pull-up resistors for I2C on the main board, additional resistors can be added on the sensor board to extend the cable length beyond 2 meters
- It is programmable via USB-C
- It is powered by a 5V two-wire cable
⚠️The screw and nuts for the anemometer and the rods for the radiation shield must be made of brass, because brass is non-magnetic and therefore will not interfere with the lightning detection antenna, unlike iron or steel!
CAD model
It includes a box for the main board and a radiation shield, which is secured with M5 rods and nuts, on top is an anemometer propeller for measuring wind speed. I’ll be placing the weather station on the balcony, so I’ve made a mount for it. It will be attached to the railing, which has a 14° slope, so the mount is designed to keep the radiation shield straight. The shield is connected to the mount with an M6 rod and M6 nuts, there is also a mount for the rain sensor. The railing mount is secured with two parts connected by M6 bolts and nuts. All parts must be printed using at least ABS, but ASA would be much better, they must also be white! They will be kept outdoors permanently, and ASA is a material that is highly resistant to UV radiation, sunlight, and rain. It is also very strong, so it can withstand strong winds.
Made in Fusion360
PCBs
Main PCB:
Schematic
PCB
Sensors PCB:
Schematic
PCB
Made in KiCad
Wiring diagram
Firmware
This weather station uses ESPHome firmware. It is programmed via the USB-C port on the main board. Thanks to ESPHome, it connects to Home Assistant, where I can then create various automations and view data from anywhere.
BOM
It's very long, so you can find it in .csv format here.
Please read additional information about the BOM here.
Notes for v2 upgrades
Since I anticipated potential upgrades, I added additional I2C ports to both the main board and the sensor board. On the main board, you can also select a voltage of 5V or 3.3V, so you can connect a lot of other things. I did this so I wouldn’t have to replace the entire board when adding expansions. The main board also features a very powerful ESP32, which has enough performance for further expansion. I plan to add the following over time:
- A rain gauge that measures the amount of rainfall
- A dust sensor for measuring PM1.0, PM2.5, PM4, and PM10 particles, which can then be used in combination with the SGP41 to calculate air Quality Index (AQI) values
- Wind direction
- UV and light sensor
License
This project is licensed under the GNU GPL v3.
Matyas604/Ultimate-weather-station - Custom weather station for Home Assistant running on an ESP32
Copyright (C) 2026 Matyáš Caha
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
Made with ❤️ by @Matyas604
No comments yet. Be the first to ask about this board.