Introduction: Arduino Weather Station Using DHT11 Temperature & Humidity Sensor and Arduino

About: Youtuber | Electrical Engineer | Electronics Lover | Project Developer | Article Writer |

Hello guys, In this post I'll show you how to make an Arduino weather station using DHT11 Temperature & Humidity sensor & Arduino Uno in a few steps. So without wasting more time Let's get started.....

For complete Article Visit >> Click For More

Step 1: Tutorial Video

Subscribe to "Techno-E-Solution" for more interesting videos.

Step 2: Material Required

Step 3: Circuit Diagram

Refer to the following circuit diagram to make the connection.

Step 4: Arduino Code

Simply copy the following code & Upload it to the Arduino Uno.

/*

*Project Name:- Simple Arduino Weather Station

*Arduino Code By Techno-E-Solution

*Subscribe Here:- https://www.youtube.com/c/TechnoESolution

*Website:- https://technoesolution.blogspot.com/

*/

#include <LiquidCrystal_I2C.h> // Include this library ( https://youtu.be/u2c5-TMQWuM )

LiquidCrystal_I2C lcd(0x27,16,2);

byte degree_symbol[8] =

{

0b00111,

0b00101,

0b00111,

0b00000,

0b00000,

0b00000,

0b00000,

0b00000

};

int gate=8;

volatile unsigned long duration=0;

unsigned char i[5];

unsigned int j[40];

unsigned char value=0;

unsigned answer=0;

int z=0;

int b=1;

void setup()

{

lcd.init();

lcd.backlight();

lcd.setCursor(0,0);

lcd.print("[ ARDUINO ]");

lcd.setCursor(0,1);

lcd.print("WEATHER STATION");

delay(3000);

lcd.clear();

lcd.setCursor(0,0);

lcd.print(" BY ");

lcd.setCursor(0,1);

lcd.print(" TechnoEsolution");

delay(5000);

lcd.clear();

lcd.setCursor(0,0);

lcd.print("TEMP = ");

lcd.setCursor(0,1);

lcd.print("HUMIDITY = ");

lcd.createChar(1, degree_symbol);

lcd.setCursor(10,0);

lcd.write(1);

lcd.print("C");

lcd.setCursor(14,1);

lcd.print("%");

}



void loop()

{


delay(1000);

while(1)

{

delay(1000);

pinMode(gate,OUTPUT);

digitalWrite(gate,LOW);

delay(20);

digitalWrite(gate,HIGH);

pinMode(gate,INPUT_PULLUP);//by default it will become high due to internal pull up

// delayMicroseconds(40);


duration=pulseIn(gate, LOW);

if(duration <= 84 && duration >= 72)

{

while(1)

{

duration=pulseIn(gate, HIGH);


if(duration <= 26 && duration >= 20){

value=0;}


else if(duration <= 74 && duration >= 65){

value=1;}


else if(z==40){

break;}


i[z/8]|=value<<(7- (z%8));

j[z]=value;

z++;

}

}

answer=i[0]+i[1]+i[2]+i[3];


if(answer==i[4] && answer!=0)

{

lcd.setCursor(7,0);

lcd.print(i[2]);

lcd.setCursor(11,1);

lcd.print(i[0]);

}


z=0;

i[0]=i[1]=i[2]=i[3]=i[4]=0;

}

}