Why Build This?
Most weather apps show you outdoor weather from a station kilometers away. This project puts sensors right where you need them — your room, your greenhouse, your server rack, wherever accurate readings actually matter.
The build is beginner-friendly, takes about an hour, and teaches you how to work with two of the most useful sensor protocols in electronics: I2C and single-wire.
Components
7 itemsNeed these parts? Get this build sheet by email
Parts list with buy links, plus new builds as they're published. By subscribing you agree to our Privacy Policy. Unsubscribe anytime.
Wiring
DHT22 → Arduino
- VCC → 5V
- GND → GND
- DATA → Pin 7 (with 10kΩ resistor to 5V)
BMP280 → Arduino (I2C)
- VCC → 3.3V
- GND → GND
- SCL → A5
- SDA → A4
OLED → Arduino (I2C)
- VCC → 3.3V
- GND → GND
- SCL → A5
- SDA → A4
BMP280 and OLED share the same I2C bus — that's fine, they have different addresses.
Understanding the Readings
Heat Index feels hotter than actual temperature when humidity is high. At 30°C with 80% humidity, it can feel like 38°C. This is what makes the DHT22 more useful than just a thermometer.
Altitude from BMP280 is calculated using sea-level pressure (1013.25 hPa by default). Adjust SEA_LEVEL_HPA to your local value for accurate altitude readings.
Common Issues
- OLED shows nothing: Check I2C address — try 0x3C or 0x3D
- DHT22 returns NaN: Add 10kΩ pull-up resistor; wait 2 seconds after powering before first read
- BMP280 not found at 0x76: Some modules use 0x77 — try both
