ElectronicZoologyfield notes from the garage
ESP32 5 May 2026

Solar-Powered ESP32 Weather Station

A fully wireless weather logger running on solar and battery power. Wakes once a day, takes readings, saves to NVS, serves data over WiFi. No mains power, goes anywhere.

ESP32SolarDeep SleepNVSWiFiSensors

Parts List

Part Qty Price (AUD) Buy
ESP32 Dev Board Deep sleep mode for power efficiency 1 $5 -
Solar panel (small, 5V) 1 $8 -
LiPo battery 1 $10 -
LiPo charge controller (TP4056 or CN3791) 1 $3 -
BME280 (temperature, humidity, pressure) 1 $6 -
Wind speed sensor (anemometer) 1 $15 -
Weatherproof enclosure (3D printed) Custom designed 1 filament -

The idea

A weather station that goes anywhere without needing a power cable. Solar panel keeps the battery topped up, the ESP32 sleeps almost all the time, and once a day it wakes up, reads the sensors, and saves the data.

Pull out your phone, connect to the station’s WiFi, and fetch everything it has recorded as a CSV. No cloud, no subscription, no infrastructure. Just a small box on a post that has been quietly watching the weather.

Why deep sleep matters

Running an ESP32 flat out with WiFi active will drain a LiPo in a few hours. Running it in deep sleep between readings drops the current to microamps. A small solar panel can keep up with that easily — even on a cloudy day.

The plan is to wake once at a set time, take readings, save them, then go back to sleep. WiFi only activates when a phone connects to fetch data. Everything else stays off.

Storage: LittleFS, not NVS

NVS is shaped for key-value config — settings and calibration values that get written once and read often. It is not designed for accumulating records and hits its ceiling faster than expected with structured data.

LittleFS with a rolling CSV file is the right tool here. More headroom, a cleaner mental model, and you pull a CSV straight to your phone instead of awkwardly enumerating key names. The LittleFS guide in the memory series covers exactly this.

What it measures

The anemometer is a reed switch type: one GPIO interrupt counting magnet pulses over a sample window, multiplied by the manufacturer’s calibration constant. Because the ESP32 is asleep most of the time, the approach is to wake up, sample for 30-60 seconds, log the average, then sleep again. Gusts between readings are missed, but that is acceptable for a once-daily station.

Placement

The whole point is that it has no mains cable. Mount it on a fence post, a roof bracket, a balcony rail — wherever makes sense. The solar panel handles the rest.

Status

Planning. Anemometer already purchased. Enclosure not designed.