โปรเจคนี้เราจะใช้ NodeMcu และ DHT11 Module มาวัดสถาพอากาศเหมือนเดิม แต่จะให้แสดงผลออกจอ LCD แทนซีเรียลมอนิเตอร์
1.ต่อ NodeMcu, DHT11 Module, LCD ดังนี้
NodeMcu DHT11
VCC--------------VCC
GND--------------GND
D6--------------DATA
NodeMCU LCD
VCC-------------VCC
GND------------GND
D1---------------SCL
D2---------------SDA
2.ก๊อปโค๊ดข้างล่างไปวางและทำการอัพโหลด
3.หากไม่มีอะไรผิดพลาดจะได้ผลตามนี้ หากไม่ออกลองทบทวนขั้นตอนที่ผ่านมาให้ดีๆ
#include
ตอบลบ#include
#include "DHT.h"
#define BLYNK_PRINT Serial
#include
#include
#define DHTPIN D7 // what digital pin we're connected to
#define DHTTYPE DHT22 // DHT 11
char auth[] = "c242f24f93874adfa30e39fed91b5b70";
char ssid[] = "John";
char pass[] = "JOHN19195";
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x3F, 20, 4);
int inPin = D8;
int outPin = D0;
int RY1 = D3;
int RY2 = D4;
int state = HIGH;
int reading;
int previous = LOW;
float h, t;
WidgetLED led1(V1);
WidgetLED led2(V2);
BLYNK_WRITE (V3){
state = param.asInt();
digitalWrite(inPin,state);
}
void setup()
{
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
dht.begin();
lcd.begin();
lcd.backlight();
pinMode(inPin, INPUT);
pinMode(outPin, OUTPUT);
pinMode(RY1, OUTPUT);
pinMode(RY2, OUTPUT);
}
void loop() {
Blynk.run();
reading = digitalRead(inPin);
delay(500);
if (reading == HIGH && previous == LOW) {
if (state == HIGH)
state = LOW;
else
state = HIGH;
}
digitalWrite(outPin, state);
previous = reading;
fog();
h = dht.readHumidity();
t = dht.readTemperature(); // or dht.readTemperature(true) for Fahrenheit
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
fan();
lcd.setCursor(1,1);
lcd.print("Temp");
//lcd.setCursor(1,1);
lcd.print(t);
lcd.print((char)223);
lcd.print("C ");
lcd.setCursor(1,0);
lcd.print("Humidity");
lcd.print(h);
lcd.print("%H");
Blynk.virtualWrite(V5, h);
Blynk.virtualWrite(V6, t);
}
void fog()
{
if(state == HIGH){
digitalWrite(RY1,LOW);
digitalWrite(outPin,HIGH);
led1.on();
delay(2000);
digitalWrite(RY1,HIGH);
digitalWrite(outPin,LOW);
led1.off();
delay(3000);
}else{
digitalWrite(RY1,HIGH);
digitalWrite(outPin,LOW);
led1.off();
}
}
void fan()
{
if( t >= 30)
{
digitalWrite(RY2,LOW);
led2.on();
}else{
digitalWrite(RY2,HIGH);
led2.off();
}
}
ความคิดเห็นนี้ถูกผู้เขียนลบ
ตอบลบความคิดเห็นนี้ถูกผู้เขียนลบ
ลบ