How to Build a Simple Arduino Weather Station with Humidity, Temperature, and Barometric Pressure Sensors


Building your own weather station with an Arduino is a fun and educational project that allows you to measure temperature, humidity, and barometric pressure right from your own home. With just a few common electronic components, some basic coding skills, and a couple hours of your time, you can have your own fully-functional weather monitoring system up and running.

In this article, I will walk through the entire process of assembling and coding a simple Arduino weather station using DHT11/DHT22 temperature and humidity sensors and a BMP180 barometric pressure sensor. I'll provide details on all the materials needed, wiring instructions, and the necessary Arduino code to get the sensors working. By the end, you'll have the knowledge to create your own customizable home weather station!

Bill of Materials

To build the weather station, you will need the following components:

Wiring the Temperature & Humidity Sensor

The DHT11 and DHT22 are basic digital temperature and humidity sensors that connect directly to the Arduino. Follow these steps to hook it up:

  1. Insert the sensor into the breadboard.

  2. Connect the VCC pin to Arduino 5V.

  3. Connect GND to Arduino GND.

  4. Connect the data pin to Arduino pin 7.

  5. Connect a 10K resistor between the data pin and VCC pin. This helps regulate power.

The sensor requires the DHT Library to operate. Be sure to install it before uploading code.

Wiring the Barometric Pressure Sensor

The wiring for the BMP180 pressure sensor is slightly more complex:

  1. Insert the BMP180 chip into the breadboard.

  2. Connect VCC to Arduino 3.3V.

  3. Connect GND to Arduino GND.

  4. Connect SCL to Arduino pin A5 (SCL).

  5. Connect SDA to Arduino pin A4 (SDA).

The BMP180 uses the I2C communication protocol to interface with the Arduino. So be sure to install the Adafruit BMP085 Library.

Uploading the Code

With the wiring complete, it's time to upload the code that reads the sensors and prints the data to the serial monitor.

The full code is available on GitHub, but the key portions are:

// Libraries

include ;


// Initialize sensors
Adafruit_BMP085 bmp;

void setup() {

// Initiate serial communication

// Initiate DHT22

// Initiate BMP180
if (!bmp.begin()) {
Serial.println("BMP180 init fail");

void loop() {

// Read humidity
float humidity = dht.readHumidity();

// Read temperature
float temperature = dht.readTemperature();

// Read pressure
float pressure = bmp.readPressure();

// Print readings
Serial.print("Temp: ");

Serial.print(" *C, Humidity: ");

Serial.print(" %, Pressure: ");

Serial.println(" Pa");

// Delay before next reading


This initializes the sensors, reads the data, and prints it out to the serial monitor every 2 seconds so you can observe the readings.

Upload this code, open the serial monitor, and you should start seeing temperature, humidity, and pressure outputs!

Displaying Readings on an LCD

For a more polished look, you can display the sensor readings on a 16x2 LCD display module. Just add the LiquidCrystal_I2C library and initialize the LCD:



LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup(){



void loop(){

lcd.print("Temp: " + String(temp) + " *C");

lcd.print("Humidity: " + String(humidity) + " %");

Now the weather data will be displayed on the LCD screen!


Building an Arduino weather station is a fun electronics project that teaches you a lot about integrating various sensors and modules. With the DHT sensor, BMP180 sensor, LCD display, and some simple code, you can start monitoring temperature, humidity, and barometric pressure right on your desktop. Just power the Arduino with a USB cable or battery pack and your weather station will provide endless environmental data. To expand it further, you could add WiFi to upload the readings to the cloud or attach an RTC to log timestamped data to an SD card. The possibilities are endless for customizing your own Arduino weather monitor!