Building your own Arduino-based weather station is a fun and educational project that doesn't require expensive or hard-to-find components. With just a few common household items, you can create a fully-functional station that measures temperature, humidity, barometric pressure, and wind speed/direction. In this comprehensive guide, I'll walk you through every step of the process.

What You Will Need

To build the weather station, you will need:

That's it! These are all very common components that you may already have on hand or can easily purchase online. Now let's start building.

Connecting the Temperature and Humidity Sensor

The DHT sensor measures air temperature and humidity. It provides fairly accurate readings and is easy to connect to an Arduino.

To hook it up:

In your Arduino sketch, include the DHT library and instantiate the sensor:


include "DHT.h"

define DHTPIN 2

define DHTTYPE DHT22


Call dht.readTemperature() and dht.readHumidity() in loop() to get the values.

That's it for the temperature and humidity part! Pretty simple.

Interfacing the Barometric Pressure Sensor

The BMP180 sensor allows us to measure atmospheric pressure, which can be used to forecast impending weather changes.

Hooking it up just takes 4 jumper wires:

In your code, include the Adafruit BMP085 library and create an instance:



Adafruit_BMP085 bmp;

Call bmp.readPressure() and bmp.readTemperature() to get values.

The barometric pressure sensor is also good to go!

Creating the Anemometer

The anemometer measures wind speed. You can buy one, but let's make a simple DIY version using household materials.

For this, you'll need:

To assemble:

  1. Use a push pin to poke holes in the sides of the cups, near the top.

  2. Thread the straws through the holes in the cups.

  3. Space the cups evenly and tape the ends of the straws so they are fixed in place.

  4. Attach one end of the straw assembly to a pivot point like a pencil eraser.

When wind blows across the cups, they will spin. By counting the rotations per minute, you can calculate wind speed.

Use a reed switch to detect when a magnet on the rotor passes by. Connect it to Arduino pin D3. Count the number of times it is triggered per minute to get RPM.

Building the Wind Vane

The wind vane detects wind direction. Here's how to build one from household items:

You'll need:


  1. Cut a triangle shape out of the plate. This is your vane.

  2. Drill a hole in the center of the wooden board. Push the straw through it, and attach the plate to the top.

  3. Push pin a small weight, like a paperclip, to the bottom end of the straw. This functions as the counterweight to keep it oriented into the wind.

  4. Insert the bottom end of the straw into the rotating platform or cake turntable.

Now you have a working wind vane!

Interfacing the Wind Vane

To detect the orientation of the wind vane, you can use a servo and a small magnet:

As the wind shifts direction, your code will activate the servo to rotate until the reed switch senses the magnet again. This gives you wind direction!

Reading the Sensor Data

With all the sensors interfaced, read each one in loop() and print the values to the Serial monitor:

void loop() {

float humidity = dht.readHumidity();

float tempC = dht.readTemperature();

float pressure = bmp.readPressure();

float windSpeed = calcSpeedFromRPM(windMillRPM); //based on anemometer RPM

int windDegrees = getWindDirection(); //based on vane servo position

Serial.print("Humidity: ");

//Print other values



You now have a fully functional Arduino weather station!

Displaying Readings on an LCD

For easier visibility, connect a 16x2 LCD display to your Arduino and have it print the sensor readings. Just wire it up using the liquid crystal library and print the values to the display in your loop.

Assembling the Enclosure

To complete your weather station, mount everything in an enclosure:

Now you can get accurate real-time weather data right from your own backyard! This Arduino weather station makes for a fun and satisfying DIY project that teaches you a ton about interfacing various sensors.