
Hey everyone,
I wanted to share an open-source weather station I recently finished designing and coding. My goal was to create something small, clean, and extremely power-efficient that I could just leave on my desk.
Here is how it works:
- Fetches real-time weather data (City, Temp, Real Feel, Min/Max, Wind, Sunrise/Sunset) via the OpenWeatherMap API.
- Uses a Waveshare 1.54" Tri-Color (Red/Black/White) e-Paper display with custom-designed, pixel-perfect icons.
- Aggressive Deep Sleep: It wakes up, updates the screen, and deep sleeps for 4 hours. If it fails to fetch data, it does a "Silent Fail" (preserves the last known weather on the screen to avoid ugly error messages) and retries in 10 minutes.
The Hardware & Custom Enclosure: The core of the project runs on a Seeed Studio XIAO ESP32C3. I specifically chose the XIAO because it has a built-in battery charging circuit. This means you can wire a single 18650 Li-ion battery directly to the BAT+ and BAT- pads underneath the board. You don't need any external charging modules or boost converters! You just plug a Type-C cable into the XIAO to charge the device.
I also designed a custom 3D printable enclosure using OpenSCAD to house everything perfectly. It uses M3 brass inserts and screws for a premium, sturdy feel.
(Note: If you have a classic ESP32-WROOM lying around, the code and documentation fully support that too, you'll just need an external charger/boost converter for the battery).
All the code, Fritzing wiring diagrams, and the OpenSCAD 3D models are fully open-source.
GitHub (Code, Wiring & Docs)
MakerWorld (3D Models)
Let me know what you think! I'm really happy with how clean the hardware assembly turned out.