Home ARDUINO How to Build An Arduino Weather Station

How to Build An Arduino Weather Station


I will show you how to make temperature and humidity sensors using Arduino Uno. My ultimate goal is to create a PCB with Attiny84 and make a PCB for it. Although I have parts to do this, the weather outside does not work together. Below 10 degrees Fahrenheit, it is hard to etch a circuit board in my garage. It will be a different indication to be able at a later date.

Collect the Hardware to Build An Arduino Weather Station

First of all, this project needs the following:-

All parts are available on sparkfun, adafruit and AliExpress. Or you can do it like me and save as much as you can from the old device.

  • Arduino (I used an UNO R3, but 5V any will work) Buy Now
  • Breadboard Buy Now
  • DHT11 temperature and humidity sensor Buy Now
  • 10k ohm potentiometer
  • 16×2 LCD screen
  • tactile button
  • USB A-B cable
  • Power Bank
  • Jumper Wires

So, Connect all the wires to the device. Please refer to the Fritzing schematic (note that there are no jumpers between the two power rails on the breadboard, which are required if both are used):

The LCD monitor I use is recovered from an old fire alarm panel. Pins 15 and 16 are located before pin 1, while pin 16 is not Gnd, in fact 5v, and pin 15 is Gnd. Please double-check your own monitor and make sure your pins are correct. Since my monitor pinout is almost different from the rest, I used the “standard” display to make Fritzing schematics, not my exact pinout.

Wired Up

Wired up very thing as I mention in the below




Gnd –> negative rail on breadboard

5v –> positive rail on breadboard


Pin1 –> 5v and 10k ohm resistor

Pin2 –> Arduino Pin8 and 10k ohm resistor

Pin3 –> no connection

Pin4 –> Gnd

16×2 LCD Screen

Pin1 –> Gnd

Pin2 –> 5v

Pin3 –> 10k ohm potentiometer wiper pin ( middle pin. the other two pins on the POT go to 5v and Gnd)

Pin4 –> Arduino Pin12

Pin5 –> Gnd

Pin6 –> Arduino Pin11

Pin7 –> no connection

Pin8 –> no connection

Pin9 –> no connection

Pin10 –> no connection


Pin11 –> Arduino Pin5

Pin12 –> Arduino Pin4

Pin13 –> Arduino Pin3

Pin14 –> Arduino Pin2

Pin15 –> 5v

Pin16 –> Tactile button (other side of tack button goes to Gnd)

Note: If you are very new in Arduino then please have a look on Beginner Tutorial of Arduino Beginner Guide for Arduino


// include the library code:

#include <LiquidCrystal.h>

#include “DHT.h”


// set the DHT Pin

#define DHTPIN 8


// initialize the library with the numbers of the interface pins

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

#define DHTTYPE DHT11



void setup() {

// set up the LCD’s number of columns and rows:

lcd.begin(16, 2);



// Print a message to the LCD.

lcd.print(“Temp:  Humidity:”);



void loop() {


// set the cursor to column 0, line 1

// (note: line 1 is the second row, since counting begins with 0):

lcd.setCursor(0, 1);

// read humidity

float h = dht.readHumidity();

//read temperature in Fahrenheit

float f = dht.readTemperature(true);


if (isnan(h) || isnan(f)) {










So then you will see the data of sensors in the Character LCD as the mentioned image right below

Hope my article “How to Build An Arduino Weather Station” helps you to Build An Arduino Weather Station. If you have any query, feel free to comment.