Arduino Weather Station Using DHT11 Temperature & Humidity Sensor and Arduino
by Technoesolution2020 in Circuits > Arduino
839 Views, 3 Favorites, 0 Comments
Arduino Weather Station Using DHT11 Temperature & Humidity Sensor and Arduino
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
Tutorial Video
Subscribe to "Techno-E-Solution" for more interesting videos.
Material Required
For making this project we need the following components.
Circuit Diagram
Refer to the following circuit diagram to make the connection.
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;
}
}