The problem
Weather data is the classic first IoT project, and for a reason: it exercises the entire pipeline in one build — sensing, calibration, wireless telemetry, storage, visualization and alerting. This weather station does it properly. A DHT22 measures temperature and relative humidity, a BMP280 adds barometric pressure, a tipping-bucket rain gauge counts rainfall in 0.3 mm tips, and a cup anemometer with a reed switch reports wind speed. An ESP32 samples all four, converts raw counts to physical units, and publishes to a cloud dashboard over Wi-Fi using MQTT, where live values, 24-hour graphs, daily rainfall totals and heat-index calculations are displayed. Threshold alerts (heat, storm-level rain rate, high wind) fire push notifications. The project is honest about sensor accuracy: datasheet values are stated, and the calibration procedure against a reference thermometer is part of the deliverable.
How it works
- The ESP32 samples the DHT22, BMP280, rain-gauge tip counter and anemometer pulse counter on a fixed schedule.
- Raw counts are converted to physical units: tips × 0.3 mm for rainfall, pulses-per-interval for wind speed, with debouncing on the reed contacts.
- Readings are packed into a JSON payload and published over Wi-Fi via MQTT to the cloud broker.
- The dashboard backend stores the series and renders live values, 24-hour graphs, daily rainfall totals and heat-index values.
- When a reading crosses a configured threshold (heat, rain rate, gust), the alert service sends a push notification to the phone.
- A solar + Li-ion option with ESP32 deep-sleep between readings supports unattended outdoor deployment; the accuracy note in the report compares each sensor's datasheet tolerance with the buyer's calibration check.
Tech stack:
- ESP32 development board
- DHT22 temperature/humidity sensor
- BMP280 barometric pressure sensor
- Tipping-bucket rain gauge (reed-switch)
- Cup anemometer (reed-switch pulse)
- MQTT broker + cloud dashboard (web)
- Arduino IDE (C/C++ firmware)
| Parameter | Value |
|---|---|
| Controller | ESP32, Wi-Fi telemetry via MQTT (JSON payloads) |
| Sensors | DHT22 (temp/RH), BMP280 (pressure), tipping bucket (rain), anemometer (wind) |
| Sensor accuracy | DHT22: ±0.5 °C / ±2% RH typical (datasheet); BMP280: ±1 hPa typical (datasheet); rain: 0.3 mm per tip (design target) |
| Reporting | Configurable interval, design target 60 s; MQTT reconnect with backoff |
| Dashboard | Live values, 24-hour graphs, daily rainfall total, heat index, threshold configuration |
| Alerts | Push notification on heat-index, rain-rate and wind-gust thresholds |
| Power | USB 5 V, or solar + Li-ion with deep-sleep between readings |
Project features
- [Multi-sensor node] DHT22 (temperature/humidity), BMP280 (pressure), tipping-bucket rain gauge and reed-switch anemometer — four real sensing channels, each converted to physical units in firmware.
- [Live web dashboard] Current values, 24-hour trend graphs, daily rainfall total and computed heat index, served as a working dashboard alongside the hardware.
- [MQTT telemetry] ESP32 publishes JSON readings over Wi-Fi via MQTT with a configurable reporting interval (design target: 60 s) and reconnect handling.
- [Threshold alerts] Heat-index, rain-rate and wind-gust thresholds trigger mobile push alerts; thresholds are configurable from the dashboard.
- [Tipping-bucket rain gauge] Self-built or sourced tipping bucket with 0.3 mm-per-tip resolution; firmware debounces the reed contact and accumulates daily totals.
- [Heat-index computation] Apparent temperature is computed from temperature and humidity using the standard heat-index formula — a real derived quantity, not a raw sensor dump.
- [Solar/battery power option] The node runs from USB or a documented solar + battery option with deep-sleep between readings to extend field life.
What is included
- Working weather-station node prototype (ESP32, DHT22, BMP280, rain gauge, anemometer)
- Complete firmware source code (sensing, unit conversion, MQTT telemetry, deep-sleep)
- Cloud pipeline + working dashboard (live values, graphs, alerts) demonstrated with the prototype
- Circuit and wiring documentation with sensor calibration notes
- Component list with ratings
- Buyer-run calibration procedure (reference thermometer comparison)
- Project report PDF (meteorological sensing background, MQTT/IoT architecture, methodology, test procedure)
- PPT presentation for final review
- Viva Q&A preparation document (sensor principles, MQTT, heat-index derivation)
- Setup and demonstration guide
Limitations & prerequisites
- Sensor accuracies are datasheet values (DHT22 ±0.5 °C, ±2% RH typical); this is a teaching station, not a meteorological instrument — readings are compared against a reference during the buyer's calibration, not claimed as lab-grade.
- The rain gauge resolution is 0.3 mm per tip by design; drizzle below that per event is under-counted.
- Telemetry needs a stable 2.4 GHz Wi-Fi link; long outdoor runs depend on signal quality and are not part of the base build.
- The anemometer measures wind speed only; wind direction needs an additional vane sensor (listed as future scope).
- Push alerts need internet on both the node and the phone; local Wi-Fi outages queue nothing.
Frequently Asked Questions
What does the station measure?
Temperature and humidity (DHT22), barometric pressure (BMP280), rainfall via a tipping-bucket gauge, and wind speed via a cup anemometer — four real channels converted to physical units.
How does the dashboard work?
The ESP32 publishes JSON readings over Wi-Fi via MQTT; a cloud dashboard shows live values, 24-hour graphs, daily rainfall totals and computed heat index, with configurable alert thresholds.
How accurate are the readings?
Datasheet values are stated honestly (e.g. DHT22 ±0.5 °C typical). The calibration procedure shows how to check the station against a reference thermometer; no lab-grade claims are made.
Can it run outdoors unattended?
Yes, with the documented solar + Li-ion option and ESP32 deep-sleep between readings. Outdoor range still depends on Wi-Fi signal quality.
What are the main limitations?
Teaching-grade sensor accuracy, 0.3 mm rain resolution, wind speed only (no direction), and alerts need internet on both ends.
Is this project suitable for a final-year project?
Yes — for IoT and Embedded Systems programs. It covers the complete IoT loop: multi-sensor interfacing, MQTT telemetry, cloud dashboards, derived quantities and honest calibration, all strong viva material. Suitable for B.E./B.Tech final-year projects in IoT and Embedded Systems.
Components & software requirements
- ESP32 development board
- DHT22 temperature/humidity sensor
- BMP280 barometric pressure sensor
- Tipping-bucket rain gauge (reed-switch)
- Cup anemometer (reed-switch pulse)
- MQTT broker + cloud dashboard (web)
- Arduino IDE (C/C++ firmware)
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.