Intermediate
4 hours
Arduino Multi-Sensor Weather Station
This weather station reads three sensors simultaneously and combines their data for a comprehensive local weather picture. The BMP280 measures barometric pressure (which, alongside a historical trend, predicts weather changes), the DHT22 measures temperature and humidity, and a rain sensor detects precipitation. A small colour TFT display shows all readings on a dashboard-style screen.
What You’ll Need
- Arduino Uno (or Mega for more pins)
- DHT22 temperature and humidity sensor
- BMP280 barometric pressure sensor (I2C)
- FC-37 rain / moisture sensor module
- 1.8″ TFT SPI colour display (ST7735)
- Breadboard and jumper wires
- 9 V power supply
Step-by-Step Instructions
- Install libraries: Adafruit DHT Sensor, Adafruit BMP280, Adafruit ST7735 and GFX.
- Wire BMP280: SDA → A4, SCL → A5, VCC → 3.3 V, GND → GND. (I2C address 0x76 or 0x77 depending on SDO pin.)
- Wire DHT22: Data → pin 2, 10 kΩ pull-up to 3.3 V.
- Wire rain sensor: AO pin to A0, VCC to 5 V, GND to GND.
- Wire TFT: CS → pin 10, RST → pin 9, DC → pin 8, SDA → pin 11, SCK → pin 13, VCC → 3.3 V, GND → GND.
- Display layout: Use tft.setTextColor() for colour coding. Top third: large temperature and humidity (blue if cool, red if warm). Middle: barometric pressure in hPa with trend arrow (rising/falling based on last 30-minute comparison). Bottom: rain status (dry/wet) and a small precipitation intensity bar.
- Pressure trend: Store barometric pressure readings every 5 minutes in a 6-element array. Compare current to 30-minute-ago reading: >1 hPa rise = improving; >1 hPa fall = worsening.
Safety Notes
- Mount the rain sensor outside (it’s designed to get wet) but keep all other electronics and the display indoors or in a weatherproof enclosure.
- The ST7735 display is 3.3 V — do not connect its VCC to 5 V.
Tips & Troubleshooting
- If the TFT shows garbled colours, try swapping the INITR_GREENTAB or INITR_BLACKTAB parameter in tft.initR() — different ST7735 boards use different initialisation sequences.
- Log readings to an SD card (add an SD module) to record hourly weather data over months for pattern analysis.
- Calibrate the BMP280 pressure by comparing against a local official weather station’s current reading and adding an offset.