

Weather station ext
Self-sustaining weather monitoring system with dual-node architecture.
- Size
- 128 × 41.5 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 16
- Nets
- 37
- Pads
- 77
- Tracks, vias
- 86, 6
- Pours
- 1
- Routed
- Yes
- KiCad
- KiCad 10.0 (file 20260206)
- Created
- 28 Dec 2024
- Updated
- 13 May 2026
Overview
Weather station ext is an open-source printed circuit board by rbat05, from the rbat05/SolarWeatherStation repository on GitHub, published under the GPL-3.0 licence. It is a 2-layer board of 128 × 41.5 mm with 16 parts on 37 nets, routed with 86 tracks and 6 vias.
It is built around the BME280, FQP27P06 and HT7333, with the TP4056 among its other parts. Its parts include 9 connectors, 3 resistors, 2 capacitors, 1 IC and 1 diode. It belongs with the home automation and IoT boards of this library.
Main components
4BME280
LGA-8(2.5x2.5)-40℃~+85℃ 0%RH~100%RH 1.71V~3.6V 1.8uA 16bit I2C、SPI ±0.5℃ ±3%RH LGA-8(2.5x2.5) Temperature and Humidity Sensor ROHSBoschTemperature And Humidity SensorFQP27P06
TO-220-55℃~+175℃ 1 P-Channel 1.4nF 120W 27A 43nC@10V 4V 60V 70mΩ@10V TO-220 MOSFETs ROHSonsemiMOSFETsHT7333
SOT-89-40℃~+85℃ 1 1.5uA 20V 3.3V 300mA 300mV@(100mA) Fixed Positive Short Circuit Protection SOT-89 Voltage Regulators - Linear, Low Drop Out (LDO) Regulators ROHSMinosVoltage Regulators - Linear, Low Drop Out (LDO) RegulatorsTP4056
ESOP-8-40℃~+85℃ 1 1A 35uA 4.2V 4V~6.5V Charging IC Lithium Battery Support Support 恒流充电、恒压充电、涓流充电、自动再充电、充电终止、可编程充电电流、软启动、欠压锁定 ESOP-8 Battery Management ROHSUMWBattery Management
README
README.mdSolarWeatherStation
An end-to-end, off-grid IoT environmental telemetry system featuring custom hardware, low-power RF bridging, and a retro LCD-themed web dashboard.

Solar Weather Station Exterior (left) and Dashboard (right)
Table of Contents
- Overview
- Features
- Performance
- Design Showcase
- Bill of Materials
- System Architecture
- Firmware & Code
- 3D-Printed Parts
- License
1. Overview
The Solar Weather Station is a completely custom-engineered, three-tier IoT ecosystem designed to capture, transmit, and visualize highly accurate micro-climate data.
Currently measures temperature, humidity, absolute pressure, and battery voltage at 30 seconds intervals.
Operating entirely off-grid, the remote sensor node utilizes solar power and aggressive deep-sleep optimizations to monitor environmental conditions indefinitely. To bypass the extreme battery drain of standard WiFi, it broadcasts lightweight packets via ESP-NOW to a continuously powered indoor Relay node. This Relay acts as a bridge, forwarding the data into a local Python Flask server where it is logged, archived, and displayed on a visually striking, retro-commercial LCD-style dashboard.
2. Features
- 100% Off-Grid Operation: Powered by a localized solar charging circuit and Li-Po battery.
- Decoupled RF Architecture: Uses a low-latency, low-power ESP-NOW to WiFi bridge, saving massive amounts of battery life compared to direct-to-router connections.
- Bulletproof Failsafes: Features hardware brownout bypassing, local SD card data logging, offline memory buffering (RTC memory), and relay rate-limited backfilling so data is never lost during network dropouts.
- Retro LCD Dashboard: A beautiful, responsive, bespoke green-and-black dot-matrix web interface built with pure HTML/JS, Flask, and SQLite.
- Historical Replay Engine: A dual-database architecture allows you to dynamically load archived CSV data into a sandbox database to "replay" historical weather events on the dashboard without interrupting the live data stream.
- Local vs. Regional Analytics: Automatically fetches regional telemetry from the Open-Meteo API to compare your micro-climate directly against metropolitan averages.
3. Performance
Aggressive power-saving techniques were implemented in the ESP32 C++ firmware. By throttling the clock speed down to 80MHz, actively forcing the WiFi/Bluetooth modems off during boot initialization, and removing parasitic hardware LEDs (like the one on the DS3231 RTC), the remote station achieves incredible efficiency:
- Average Active Time: < 8.0 seconds per wake cycle.
- Average Active Current: ~60 mA (Peak during SD Write & ESP-NOW transmission).
- Average Sleep Current: ~2.5 mA.
- Weighted Average Draw: ~4.03 mA over a standard cycle.
This ultra-low consumption allows the station to easily survive extended periods of heavy cloud cover without dropping below critical battery voltages.
4. Design Showcase
-
Mechanical Design: Custom 3D-printed Stevenson Screen with integrated mounting points for the PCB and solar panel. The solar panel sits at a 35-degree angle to maximize sun exposure (in Auckland, NZ) while the louvers provide airflow to ensure accurate sensor readings.

3D-Printed Stevenson Screen Render -
Internal Assembly: Custom PCB secured inside the Stevenson Screen.

Custom PCB Mounted Inside Enclosure -
LCD Dashboard: A retro-inspired web interface displaying real-time and historical weather data.
Dashboard Features:
-
Live Mode: Continuously streams real-time environmental data directly from the local SQLite database.

Main Dashboard View (Live Mode) -
Historical Replay Engine: Dynamically loads archived 7-day CSV files into a sandbox database to replay historical weather events without interrupting live data ingestion. Can set custom timeframes to analyze specific events (e.g., a storm).

Replaying Historical Sandbox Data -
Local vs. Regional Comparison: Automatically polls regional telemetry from the Open-Meteo API to compare your micro-climate directly against metropolitan averages (displayed alongside the "Today" summary).

Local Micro-climate vs. Regional Averages -
Summary Statistics: Provides actionable insights and rolling statistics (High, Low, Average) across different timeframes:
- Today: Current day metrics.
- Yesterday: A rolling 24-hour window to spot diurnal patterns.
- 72 Hours & 7 Days: Extended views to analyze multi-day weather events and trends.
-
Interactive Graphing: Powered by Chart.js, the interactive graph can map individual metrics over adjustable time-scales (1 hour, 3 hours, 12 hours, 24 hours, 72 hours, or 7 days):
- Temperature
- Humidity
- Absolute Pressure
- Battery Voltage

Interactive 7-Day Telemetry Chart
5. Bill of Materials
Remote Weather Station
- Microcontroller: ESP32 (Throttled to 80MHz)
- Environmental Sensor: BME280 (Temperature, Humidity, Absolute Pressure)
- Real-Time Clock: DS3231 (Hardware power LED physically removed for power savings)
- Storage: MicroSD Card Module (SPI)
- Power: Solar Panel, TP4056 (or equivalent) Charge Controller, 3.7v Li-Po/18650 Battery
Indoor Relay Node
- Microcontroller: ESP8266
Local Server
- Hardware: Any local machine (e.g., Raspberry Pi) capable of running Python 3.
6. System Architecture
The system is broken into three distinct operational layers:
- Layer 1: Edge Telemetry (Weather Station) Wakes up on an interval timer, samples the BME280 and battery voltage, writes to the local SD card, and fires a rapid ESP-NOW string to the Relay before returning to deep sleep. For a detailed breakdown, see the Weather Station README.
- Layer 2: Network Bridge (Relay Node) Stays awake permanently on mains power. Listens for the ESP-NOW MAC address. Upon receiving a packet, it formats it into a JSON payload and executes an HTTP POST request over the home WiFi network. For a detailed breakdown, see the Relay Node README.
- Layer 3: Data Ingestion & Visualization (Dashboard)
A Python Flask server operating on a local machine. It intercepts the HTTP POST at the
/ingestendpoint, commits the data to an SQLite database, handles infinite 7-day auto-archiving to CSV, and serves the UI. For a detailed breakdown, see the Dashboard README.
7. Firmware & Code
The codebase is heavily modularized across three main directories. Please refer to their individual README.md files for deep dives into their logic.
/code/WeatherStationCode: C++ (PlatformIO) for the remote ESP32. Handles aggressive power management, hardware watchdog failsafes, I2C/SPI bus management, and RTC memory buffering./code/RelayCode: C++ (PlatformIO) for the indoor ESP8266. Features a non-blockingmillis()architecture, in-memory offline packet buffering, auto-WiFi reconnections, and OTA flashing support./code/DashboardCode: Python/Flask backend and HTML/JS frontend. Handles the API endpoints, Open-Meteo polling, database querying, and the retro Chart.js interactive graph rendering.
8. Custom Hardware Integration
Custom PCB (/pcb)
Rather than relying on messy jumper wires and breadboards, the Weather Station relies on a completely custom-designed Printed Circuit Board. This custom PCB integrates the ESP32, charge controllers, and sensor headers into a single, reliable footprint. This minimizes point-of-failure wire disconnects, reduces electrical noise on the I2C/SPI busses, and provides a perfectly dimensioned mounting solution for the 3D-printed case. Designed using KiCAD 10.
3D-Printed Parts (/cad)
All physical enclosures for the project were custom modeled in CAD to fit the bespoke electronics and withstand the elements.
- Stevenson Screen (Weather Station): A classic multi-louvered meteorological enclosure. It is specifically designed to shield the BME280 sensor from direct UV radiation and precipitation while allowing ambient wind/air to freely pass through. This prevents artificial greenhouse heating inside the case, ensuring the temperature readings are a true reflection of the outside air. Provided a .step file for easy modification of the full assembly in any CAD software.
- Low-Profile Relay Case: This enclosure can be found at Makerworld. Credit to Lyron for the original design. A hole was cut on the top for the heatsink.
9. License
This project is licensed under the GNU General Public License v3.0 (GPL-3.0).
Parts
16| Qty | Value | Footprint | References |
|---|---|---|---|
| 1 | 0.1uF | Capacitor_THT:C_Disc_D3.0mm_W1.6mm_P2.50mm | C1 |
| 1 | 100K | Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_Vertical | R3 |
| 1 | 10k | Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_Vertical | R1 |
| 1 | 10u | Capacitor_THT:C_Disc_D3.0mm_W1.6mm_P2.50mm | C2 |
| 1 | 1N5819 | Diode_THT:D_A-405_P7.62mm_Horizontal | D1 |
| 1 | 68K | Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_Vertical | R2 |
| 1 | BME280 | Connector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_Vertical | J1 |
| 1 | FQP27P06 | Package_TO_SOT_THT:TO-220-3_Vertical | J4 |
| 1 | HT7333 | Package_TO_SOT_THT:TO-92 | J5 |
| 1 | LIPO | TerminalBlock:TerminalBlock_MaiXu_MX126-5.0-02P_1x02_P5.00mm | J7 |
| 1 | SD | Connector_PinSocket_2.54mm:PinSocket_1x06_P2.54mm_Vertical | J2 |
| 1 | SOLAR | TerminalBlock:TerminalBlock_MaiXu_MX126-5.0-02P_1x02_P5.00mm | J6 |
| 1 | Switch | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J9 |
| 1 | TINYRTC | Connector_PinSocket_2.54mm:PinSocket_1x05_P2.54mm_Vertical | J3 |
| 1 | TP4056 | Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_Vertical | J8 |
| 1 | WeMos_S2_mini | wemoss2:wemoss2 | U1 |
Similar boards
- 2 layers80 × 35.6 mm

- 2 layers68.6 × 46 mm

- 2 layers80 × 58 mm

Radio 2
Shya-Bubu/pocket-fm-radio
This repository contains the complete design and documentation for an FM Pocket Radio project, developed as part of the EE2050 Design Principles and Manufacturing Technologies module at the University of Peradeniya…
58 parts - 2 layers68.5 × 57.5 mm

Load Sharing PCB
HiranGeeth/RescueMesh-Disaster-Rescue_Long-Range-Communication-System
RescueMesh uses a Long Range Communication System to send SOS signals to a central database where the rescue data is sent even without any mobile connectivity.
8 partsMIT - 2 layers46 × 90 mm

- 2 layers100.3 × 69.9 mm

CanSat 2019 Bodenstation
ApoapsisHGV/CanSat2019-electronics
Circuit and PCB design files related to our 2019 CanSat competition
70 parts1MIT - 2 layers110 × 90 mm

- 2 layers54.9 × 95 mm

Board v5
brev-dev/another_esp8266_sensor_board
PCB layout and instructions for a multi-purpose esp8266 sensor device, with optional LORA connectivity.
86 parts5GPL-3.0
Questions
How big is the Weather station ext PCB?
It measures 128 × 41.5 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Weather station ext use?
16 parts, built around the BME280, FQP27P06, HT7333 and TP4056. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the Weather station ext KiCad files?
From the rbat05/SolarWeatherStation repository on GitHub, at the commit this page was made from: the board is pcb/weather_station_ext/weather_station_ext.kicad_pcb and its schematic pcb/weather_station_ext/weather_station_ext.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Weather station ext design in my own project?
Its repository publishes it under the GPL-3.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).