Search models, users, collections, and posts

Solar IoT Weather Station - ESP32 & Home Assistant

Print Profile(1)

All
A1 mini
X1E
P2S
P1S
X1
P1P
X1 Carbon
H2D
H2D Pro
A1
H2C
H2S
X2D
A2L

0.2mm layer, 2 walls, 15% infill
0.2mm layer, 2 walls, 15% infill
Designer
27.4 h
8 plates
5.0(1)

Open in Bambu Studio
Boost
125
486
9
4
148
13
Released 

Description

🌦️ Smart Solar Weather Station – ESP32-C3 & BME280

V2 version is avaible, new shape e new mesurement Print it!

This IoT Weather Station is a fully autonomous environmental monitoring system. Designed with a professional "Stevenson Screen" (solar shield) architecture, it protects internal sensors from direct sunlight and rain while ensuring optimal airflow for precise readings.

Powered by a Seeed Studio Xiao ESP32-C3, the station leverages ultra-low power Deep Sleep modes to run indefinitely using only solar energy.

🚀 Features

  • Total Autonomy: Powered by a 18650 Li-ion battery recharged by a 1W solar panel.
  • Precision Sensing: High-quality BME280 for Temperature, Humidity, and Barometric Pressure.
  • Energy Monitoring: Integrated INA219 sensor to track battery voltage and solar charging efficiency.
  • Weatherproof Design: Optimized for PETG 3D printing to withstand UV rays and high temperatures.
  • Dual Compatibility: Ready for Home Assistant (ESPHome) or custom Arduino firmware.

🛠️ Bill of Materials (BOM)

Electronics

  • 1x Seeed Studio Xiao ESP32-C3 (or equivalent logic board).
  • 1x BME280 (3.3v version) Sensor.
  • 1x MCU-219 INA219 Current/Voltage Sensor.
  • 1x TP4056 Li-ion Charger Module.
  • 1x Solar Panel 6V 1W (110x60mm).
  • 1x 18650 Li-ion Battery & 18650 Battery Case.

Hardware & Assembly

  • 3x Threaded bars M4x120mm.
  • 3x M4 Nuts.
  • 1x M6x55mm Screw (for mounting bracket).
  • 1x M6 Nut.

🖨️ 3D Printing Settings

  • Material: PETG is mandatory (PLA will warp under the sun). ASA is a great premium alternative.
  • Color: White (highly recommended) to reflect solar radiation and prevent heat build-up.
  • Layer Height: 0.2mm or 0.24mm.
  • Infill: 15-20% (Gyroid suggested).
  • Wall Loops: 3 for extra durability.

🔌 Wiring Diagram

The sensors use the I2C protocol. Connect them to the Xiao ESP32-C3 as follows:

Sensor PinXiao ESP32-C3 Pin / Power
VCC (BME & INA)3V3
GND (BME & INA)GND
SDA (BME & INA)GPIO 4 (D4)
SCL (BME & INA)GPIO 5 (D5)

Note: The Solar Panel connects to the IN pads of the TP4056. The Battery connects to the BAT pads. Use the OUT pads of the TP4056 to power the Xiao 5V pin.

💻 Software Options

Option A: ESPHome (Home Assistant)

Best for seamless integration with Home Assistant. The device wakes up every 20 minutes, sends data, and sleeps.

YAML

 

esphome:
 name: weather-station-c3

esp32:
 board: esp32-c3-devkitm-1

deep_sleep:
 run_duration: 30s
 sleep_duration: 20min

i2c:
 sda: GPIO4
 scl: GPIO5

sensor:
 - platform: bme280_i2c
   temperature:
     name: "Outdoor Temperature"
   humidity:
     name: "Outdoor Humidity"
   pressure:
     name: "Pressure"
   address: 0x76

 - platform: ina219
   address: 0x40
   bus_voltage:
     name: "Battery Voltage"
   current:
     name: "Solar Current"

Option B: Arduino Sketch (C++ Native)

For users who prefer custom coding. Requires Adafruit BME280 and Adafruit INA219 libraries.

C++

#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#include <Adafruit_INA219.h>

#define TIME_TO_SLEEP  1200        // Sleep time in seconds (20 min)
#define uS_TO_S_FACTOR 1000000     // Microseconds to Seconds conversion

Adafruit_BME280 bme; 
Adafruit_INA219 ina219;

void setup() {
 Serial.begin(115200);
 Wire.begin(4, 5); // SDA = D4, SCL = D5

 if (!bme.begin(0x76)) Serial.println("BME280 Error!");
 if (!ina219.begin()) Serial.println("INA219 Error!");

 // Read data
 Serial.printf("Temp: %.2f °C, Bat: %.2f V\n", bme.readTemperature(), ina219.getBusVoltage_V());

 // Enter Deep Sleep
 esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
 esp_deep_sleep_start();
}

void loop() {}

🔧 Assembly Tips

  1. Sensor Placement: Place the BME280 in the middle plates, away from the battery and TP4056, to avoid heat interference.
  2. Weatherproofing: Apply a thin layer of silicone or conformal coating to the electronics to prevent corrosion from humidity.
  3. Calibration: If your temperature readings seem high, ensure the station is not placed directly against a dark wall that absorbs heat.

Boost Me (for free)

If you found this model useful or enjoyed the print, please consider giving it a Boost! 🚀 Your support is essential for me to keep designing and sharing new free models with the community. Thank you and happy printing!

Comment & Rating (9)

(0/1000)

License

This user content is licensed under a Standard Digital File License.

You shall not share, sub-license, sell, rent, host, transfer, or distribute in any way the digital or 3D printed versions of this object, nor any other derivative work of this object in its digital or physical format (including - but not limited to - remixes of this object, and hosting on other digital platforms). The objects may not be used without permission in any way whatsoever in which you charge money, or collect fees.