Skip to content
Intermediate 4 hours

Arduino Multi-Sensor Weather Station

By Amit1379
July 13, 2026

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

  1. Install libraries: Adafruit DHT Sensor, Adafruit BMP280, Adafruit ST7735 and GFX.
  2. Wire BMP280: SDA → A4, SCL → A5, VCC → 3.3 V, GND → GND. (I2C address 0x76 or 0x77 depending on SDO pin.)
  3. Wire DHT22: Data → pin 2, 10 kΩ pull-up to 3.3 V.
  4. Wire rain sensor: AO pin to A0, VCC to 5 V, GND to GND.
  5. Wire TFT: CS → pin 10, RST → pin 9, DC → pin 8, SDA → pin 11, SCK → pin 13, VCC → 3.3 V, GND → GND.
  6. 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.
  7. 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.

Leave a Comment

Your email address will not be published. Required fields are marked *