Built to order

ESP32-Based Wireless Weather Station with Rain Gauge and Cloud Logging

This project builds a wireless weather station on an ESP32: a BME280 measures temperature, humidity and pressure, a tipping-bucket rain gauge counts rainfall, and a cup anemometer with wind vane reports wind speed and direction. Readings publish over Wi-Fi via MQTT every 60 seconds to a cloud dashboard with live charts, a wind compass, hourly rainfall bars, station status and an event log. The student assembles the hardware, flashes the firmware, runs the rain-gauge calibration procedure and deploys the dashboard. Suitable for B.E./B.Tech final-year projects in Electronics, E&TC and IoT.

Electronics / E&TC GitTipping-bucket rain gaugeBME280 sensorMQTT · Wi-Fi telemetryESP32 · Arduino coreCup anemometer · wind vaneCloud dashboard · HTML · JS · canvas charts18650 battery · TP4056 chargingHybrid
ESP32-Based Wireless Weather Station with Rain Gauge and Cloud Logging — project thumbnail preview
More project photos (2)

The problem

College campuses, farms and hostels need local weather data, but commercial weather stations are expensive closed boxes, and DIY builds usually stop at an LCD readout that nobody can check from the hostel room. The gap is a complete, honest system: real sensors on a rooftop, wireless telemetry, and a cloud dashboard anyone can open. This project builds exactly that on an ESP32. A BME280 sensor module captures temperature, humidity and barometric pressure; a tipping-bucket rain gauge converts rainfall into countable pulses; a cup anemometer and 8-sector wind vane report wind speed and direction. Firmware publishes a JSON packet over Wi-Fi via MQTT every 60 seconds, and the cloud dashboard renders live KPI cards, 24-hour temperature/humidity charts, a wind compass, hourly rainfall bars and an event log with threshold alerts. Because every stage — sensing, pulse counting, MQTT telemetry, dashboard rendering — is built and documented in the open, the student can defend the full pipeline in the viva.

SYSTEM FLOW

7 components 6 connections

Live flow
Drag to explore
100%
sensorBME280 sensor

Measures temperature, humidity and barometric pressure over I2C.

Follow the working sequence

How it works

  1. The BME280 is read over I2C for temperature, humidity and pressure; the tipping bucket's reed switch is counted via interrupt, and anemometer pulses are timed over a 10-second window to derive wind speed.
  2. The 8-sector wind vane's position is decoded to a compass sector and averaged with the latest wind-speed reading.
  3. Every 60 seconds the ESP32 wakes, samples all channels, and publishes one JSON packet over Wi-Fi via MQTT to the configured broker topic.
  4. The cloud dashboard subscribes to the topic and updates KPI cards, appends to the 24-hour rolling charts, rotates the wind compass, and adds hourly rainfall bars from tip counts.
  5. Threshold rules run on each new packet: rain-burst, high-wind-gust, temperature-crossing and low-battery events are written to the timestamped event log.
  6. Between publishes the ESP32 enters deep sleep, waking on the timer (or a rain-tip interrupt) to keep battery drain at a design-target minimum.
  7. The student calibrates the rain gauge by pouring a measured water volume and counting tips, then records the verified mm-per-tip figure in the report — a real calibration exercise, not a copied spec.

Tech stack:

  • ESP32 devkit (Arduino core, C/C++ firmware)
  • BME280 (I2C: temperature, humidity, pressure)
  • Tipping-bucket rain gauge (reed-switch pulse counting)
  • Cup anemometer + 8-sector wind vane
  • MQTT over Wi-Fi (JSON telemetry, 60 s publish)
  • Cloud dashboard: single-file HTML, CSS, JavaScript, canvas charts
  • 18650 Li-ion + TP4056 charging module
  • Deep-sleep power management
Parameter Value
Controller ESP32 devkit, 240 MHz dual-core, 802.11 b/g/n Wi-Fi (datasheet)
Temperature ±0.5°C typical (BME280 datasheet)
Humidity ±3%RH typical (BME280 datasheet)
Pressure ±1 hPa absolute typical (BME280 datasheet)
Rainfall resolution 0.2 mm per tip (design value; verified by buyer's water-volume calibration)
Wind speed Pulse frequency to m/s conversion (design value; buyer-run spin calibration)
Wind direction 8 sectors: N, NE, E, SE, S, SW, W, NW
Publish interval 60 s over MQTT (configurable in firmware)
Telemetry format JSON packet: 5 weather channels + battery V + RSSI + tip counters
Power 2 × 18650 cells + TP4056 charger; deep sleep between publishes (multi-day backup is a design target)
Dashboard Single-file web app: live charts, wind compass, rainfall bars, status, event log

Project features

  • [BME280 ambient sensing] Temperature, humidity and barometric pressure from a single digital sensor over I2C — temperature ±0.5°C, humidity ±3%RH, pressure ±1 hPa (datasheet typical values, stated honestly).
  • [Tipping-bucket rain gauge] A funnel-and-twin-bucket gauge tips a reed switch once per calibrated water volume; firmware counts tips and converts to millimetres. The mm-per-tip figure is a design value verified by the student with a measured water volume, not a factory claim.
  • [Cup anemometer + wind vane] Three-cup rotor with a Hall/pulse sensor for wind speed and an 8-sector vane (N, NE, E, SE, S, SW, W, NW) for direction — the pulse-to-m/s conversion is a design value tuned in the buyer's calibration step.
  • [MQTT cloud logging] The ESP32 publishes a JSON telemetry packet over Wi-Fi via MQTT every 60 seconds: all five weather channels plus battery voltage, RSSI and tip counters.
  • [Live cloud dashboard] Single-file web dashboard with KPI cards and sparklines, 24-hour temperature/humidity charts, a wind compass, hourly rainfall bars, station status (uplink, battery, RSSI) and a timestamped event log.
  • [Threshold alerts] Dashboard flags rain bursts, high-wind gusts, temperature crossings and low-battery states as tagged events — demonstrated in the event log, not claimed as measured field performance.
  • [Battery power with deep sleep] 18650 cells with TP4056 charging; firmware deep-sleeps between publish cycles so the station is a genuine field-style build (multi-day backup is a design target, stated honestly).
  • [Buyer-run calibration procedures] Step-by-step rain-gauge volume calibration and anemometer spin-check procedures the student performs on their own build and documents in the report.

What is included

  • Weather-station hardware set: ESP32 devkit, BME280 module, tipping-bucket rain gauge, cup anemometer + wind vane, breadboard, jumper wires, 18650 holder + TP4056 module
  • Complete ESP32 firmware source (sensing, pulse counting, MQTT publish, deep sleep)
  • Cloud dashboard source (single-file HTML/CSS/JS, the working demo shown in the gallery)
  • Wiring diagram and rooftop-mounting notes
  • Rain-gauge and anemometer calibration procedures
  • Project report PDF (background, sensor theory, telemetry design, methodology, calibration results)
  • PPT presentation for final review
  • Viva Q&A preparation document (sensors, MQTT, calibration, power budgeting)

Limitations & prerequisites

  • The rain gauge resolves 0.2 mm per tip by design — a hobby figure, not a professional 0.1 mm gauge; drizzle below one tip per interval registers as zero.
  • Wind-speed conversion is a design value tuned by the buyer's spin calibration; no wind-tunnel-verified accuracy is claimed.
  • The BME280 needs a radiation shield outdoors — in direct sun the temperature reading runs several °C high; the kit documents a simple shielded enclosure, not a certified Stevenson screen.
  • Wi-Fi range limits placement to roughly 30–50 m of the router with clear line of sight; walls and metal roofs reduce this, and there is no cellular fallback.
  • Deep-sleep duty cycling means gusts between publish windows are sampled, not continuously tracked — brief gust peaks can be under-reported.
  • Multi-day battery backup is a design target dependent on publish interval, Wi-Fi retries and sunlight for the optional solar trickle; the report shows the buyer's own power budget, not a measured endurance figure.
  • The dashboard is a demo-grade single-file web app, not a hardened production service — no authentication or multi-station fleet management is included.

Frequently Asked Questions

How accurate is the rain gauge?

Each bucket tip equals 0.2 mm of rain by design. The honest answer: it is a hobby-grade gauge, and the exact figure is established by the buyer's calibration — pouring a measured volume of water through the funnel and counting tips — then documented in the report. Drizzle too light to tip the bucket does not register.

Does the station need Wi-Fi at the install spot?

Yes — it publishes over Wi-Fi via MQTT, so the rooftop or balcony needs a reachable access point (roughly 30–50 m with clear line of sight). There is no GSM/cellular option in the base build; adding one is listed as future scope.

How long does it run on battery?

Two 18650 cells with TP4056 charging power the build, and deep sleep between the 60-second publishes keeps drain at a design-target minimum aimed at multi-day backup. Actual endurance depends on publish interval and Wi-Fi conditions, so the report works through the buyer's own power budget rather than quoting a measured figure.

Where does the dashboard live?

The dashboard is a single-file HTML/CSS/JS app that subscribes to the station's MQTT topic — the same working demo shown in the gallery. The student points it at any MQTT broker (a free public broker for the demo, their own for the final setup); no server-side code is needed.

How is wind direction sensed?

An 8-sector vane (N, NE, E, SE, S, SW, W, NW) decoded by the ESP32 and shown on the dashboard compass. It reports the sector the wind comes from — fine for a student station, not a substitute for a calibrated meteorological vane.

Is this project suitable for a final-year project?

Yes — for Electronics, E&TC and IoT programs. It combines sensor interfacing, interrupt-driven pulse counting, wireless telemetry, cloud visualization and a genuine calibration exercise, which gives strong viva material. Suitable for B.E./B.Tech final-year projects in Electronics, E&TC and IoT.

Components & software requirements
  • ESP32 devkit (Arduino core, C/C++ firmware)
  • BME280 (I2C: temperature, humidity, pressure)
  • Tipping-bucket rain gauge (reed-switch pulse counting)
  • Cup anemometer + 8-sector wind vane
  • MQTT over Wi-Fi (JSON telemetry, 60 s publish)
  • Cloud dashboard: single-file HTML, CSS, JavaScript, canvas charts
  • 18650 Li-ion + TP4056 charging module
  • Deep-sleep power management
Delivery information

Built-to-order project. Delivery timeline is shared after order confirmation based on current queue.

Support terms

Complete documentation, setup guide, and viva preparation included. Support for setup and explanation provided.

Download free synopsis (PDF)

Enter your name and email — the synopsis PDF downloads immediately. We may send occasional project updates; no spam, unsubscribe anytime.

Get a quotation