Introduction: 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
Step 1: Tutorial Video
Subscribe to "Techno-E-Solution" for more interesting videos.
Step 2: Material Required
For making this project we need the following components.
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;
}
}