A mini weather station for a school science exhibition is one of the most visually impressive and educationally rich projects a student can build. It combines multiple sensors, data display, and real-world application in a single project — demonstrating knowledge of electronics, programming, and physical geography simultaneously. This guide walks you through building a complete indoor/outdoor weather monitoring station using Arduino that measures temperature, humidity, atmospheric pressure, and displays all data on an LCD screen.
Table of Contents
- Project Overview
- Components and Shopping List
- Circuit Diagram and Wiring
- Complete Arduino Code
- Adding an OLED Display for Better Visuals
- Presenting at Science Exhibition
- Frequently Asked Questions
Project Overview
This weather station measures:
- Temperature: in °C (suitable for India’s climate, typically 15–45°C)
- Humidity: relative humidity % (India’s monsoon season can exceed 90%)
- Atmospheric Pressure: in hPa/mbar (standard value ~1013 hPa at sea level)
- Heat Index: calculated “feels like” temperature accounting for humidity
All measurements update every 2 seconds and are displayed on a 16×2 LCD or OLED screen. An optional Serial Monitor output allows real-time data logging to a computer — useful for graphing data trends over hours or days at the exhibition.
Components and Shopping List
| Component | Model | Cost (INR) |
|---|---|---|
| Microcontroller | Arduino Uno R3 | ₹350–500 |
| Temp + Humidity Sensor | DHT22 (more accurate than DHT11) | ₹150–200 |
| Barometric Pressure Sensor | BMP280 or BMP180 | ₹80–150 |
| Display | 16×2 LCD with I2C adapter | ₹120–180 |
| Resistor (10kΩ for DHT22) | 10kΩ pull-up | ₹5–10 |
| Breadboard + jumper wires | Standard 830-point | ₹80–120 |
| USB power cable / 9V adapter | USB A-B | ₹80–150 |
Total cost: ₹865–1,310 for a complete, exhibition-ready weather station
Circuit Diagram and Wiring
DHT22 Connections
- DHT22 VCC → Arduino 5V
- DHT22 GND → Arduino GND
- DHT22 DATA → Arduino Pin 2 (with 10kΩ pull-up resistor to 5V)
BMP280 Connections (I2C)
- BMP280 VCC → Arduino 3.3V (important: BMP280 is a 3.3V device)
- BMP280 GND → Arduino GND
- BMP280 SDA → Arduino A4
- BMP280 SCL → Arduino A5
16×2 LCD with I2C Adapter
- LCD VCC → Arduino 5V
- LCD GND → Arduino GND
- LCD SDA → Arduino A4 (shared with BMP280)
- LCD SCL → Arduino A5 (shared with BMP280)
I2C allows multiple devices on the same SDA/SCL bus — the LCD and BMP280 have different I2C addresses so they coexist without conflict.
Complete Arduino Code
// Mini Weather Station - School Science Exhibition
// Sensors: DHT22 + BMP280, Display: 16x2 LCD I2C
#include <DHT.h>
#include <Wire.h>
#include <Adafruit_BMP280.h>
#include <LiquidCrystal_I2C.h>
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
Adafruit_BMP280 bmp;
LiquidCrystal_I2C lcd(0x27, 16, 2); // LCD I2C address 0x27
void setup() {
Serial.begin(9600);
dht.begin();
if (!bmp.begin(0x76)) { // BMP280 I2C address
Serial.println("BMP280 not found!");
while(1);
}
lcd.init();
lcd.backlight();
lcd.print("Weather Station");
lcd.setCursor(0, 1);
lcd.print(" Initialising");
delay(2000);
lcd.clear();
}
void loop() {
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
float pressure = bmp.readPressure() / 100.0F; // Convert Pa to hPa
float heatIndex = dht.computeHeatIndex(temperature, humidity, false);
if (isnan(humidity) || isnan(temperature)) {
lcd.clear();
lcd.print("Sensor Error!");
delay(2000);
return;
}
// Display Temperature and Humidity
lcd.setCursor(0, 0);
lcd.print("T:");
lcd.print(temperature, 1);
lcd.print((char)223); // Degree symbol
lcd.print("C H:");
lcd.print(humidity, 0);
lcd.print("%");
// Display Pressure and Heat Index
lcd.setCursor(0, 1);
lcd.print("P:");
lcd.print(pressure, 0);
lcd.print("hPa ");
lcd.print(heatIndex, 1);
lcd.print((char)223);
// Serial output for data logging
Serial.print("Temp: "); Serial.print(temperature);
Serial.print("C, Humidity: "); Serial.print(humidity);
Serial.print("%, Pressure: "); Serial.print(pressure);
Serial.print("hPa, HeatIdx: "); Serial.println(heatIndex);
delay(2000);
}
Adding an OLED Display for Better Visuals
For a more impressive exhibition display, swap the 16×2 LCD for a 0.96″ OLED screen (SSD1306). The OLED produces crisp white text on black background and can display custom graphics — making your weather station look far more professional.
// OLED display setup (replace LCD code with this)
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
void displayData(float temp, float hum, float pres) {
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(0, 0);
display.print(temp, 1);
display.print((char)247); // Degree
display.println("C");
display.setTextSize(1);
display.print("Humidity: "); display.print(hum, 0); display.println("%");
display.print("Pressure: "); display.print(pres, 0); display.println("hPa");
display.display();
}
Presenting at Science Exhibition
Tips for a winning science exhibition presentation:
- Display a printed circuit diagram next to the working model — shows understanding of the design
- Log data for 24–48 hours before the exhibition and present a graph showing temperature changes through day and night
- Relate to India’s climate — compare readings from Mumbai (high humidity) vs Delhi (seasonal variations)
- Explain the sensors scientifically — DHT22 uses capacitive humidity sensing, BMP280 uses a piezoelectric pressure sensor
- Highlight applications — agriculture (crop protection from temperature extremes), aviation (barometric altimeters), disaster warning systems
- Add a creative housing — 3D printed enclosure, wooden box, or painted cardboard housing looks professional
Frequently Asked Questions
What is the best sensor for measuring humidity in India for a school project?
DHT22 is the best choice for accuracy — it measures temperature from -40°C to 80°C (±0.5°C) and humidity from 0–100% RH (±2–5%). DHT11 is cheaper but less accurate. For a science exhibition, the DHT22’s better specifications make it worth the extra ₹80–100 investment.
How do I explain barometric pressure to judges at the science fair?
Barometric pressure measures the weight of the air column above a point. At sea level it’s approximately 1013 hPa. High pressure systems (1020+ hPa) typically bring clear weather; low pressure (below 1000 hPa) often precedes rain. In India, monitoring pressure is important for tropical cyclone prediction along coastal regions.
Can I add a rain sensor to this weather station?
Yes. A rain sensor module (resistive type, ₹50–80) detects rain drops through conductivity changes. Connect it to an Arduino analog pin and add a rain indicator to the display. This makes the weather station more complete and is particularly relevant for Indian monsoon season demonstrations.
How can I record weather data over time for my project report?
Open the Arduino Serial Monitor while connected to your laptop and copy the output, or use a Serial to CSV logger software to capture data to a file. For a standalone solution, add a microSD card module (₹80–120) and SD library code to save readings to a CSV file that can be opened in Excel for graphing.
Is this project suitable for CBSE Class 10 or Class 12 science exhibitions?
Yes — this project is well-suited for both Class 10 and Class 12. For Class 10, focus on the sensors and their working principles (links to Physics – Electricity chapter). For Class 12, discuss the semiconductor physics of the sensors and the computing aspects (links to Computer Science and Physics chapters on semiconductors).
Add comment