#define BLYNK_TEMPLATE_ID "TMPL6HOwbZwq0"
#define BLYNK_TEMPLATE_NAME "test1"
#define BLYNK_AUTH_TOKEN "fH3hMFwJM4_QML6UoBZJMGqou4aa_kR8"
#define BLYNK_PRINT Serial
/* include Library ที่เกี่ยวข้องมาใช้งาน */
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include "DHT.h"
#define DHTPIN 22 // กำหนดขา I/O ให้เซ็นเซอร์ DHT
#define DHTTYPE DHT22 // กำหนดชนิดของเซ็นเซอร์ DHT คือ DHT22 (AM2302), AM2321
#define RelayPIN 5 // กำหนดขา I/O ให้เซ็นเซอร์ DHT
DHT dht(DHTPIN, DHTTYPE); //สร้าง Opject dht และกำหนดพารามิเตอร์ 2 ค่า
char auth[] = BLYNK_AUTH_TOKEN; // สร้าตัวแปรอาเรย์ auth[] เก็บ่คาจากตัวแปร BLYNK_AUTH_TOKEN
char ssid[] = "Wokwi-GUEST"; // สร้าตัวแปรอาเรย์ ssid[] กำหนดชื่อ ssid
char pass[] = ""; // สร้าตัวแปรอาเรย์ pass[] กำหนดรหัสผ่านของ ssid
BlynkTimer timer; // เรียกฟังก์ชั่นเวลา หรือ timer
unsigned long previousMillis = 0; // เก็บค่าเวลาล่าสุด
const long interval = 2000; // ช่วงเวลาที่ต้องการ
void setup()
{
Serial.begin(115200); // สร้างการเชื่อต่อการแสดงผลข้อมูลผ่านทาง Serial Monitor
Serial.println(F("DHT22 example!")); // สั่งพิมพ์ข้อความบันทึกใน Flash Memory
Blynk.begin(auth, ssid, pass); // คำสั่งเชื่อมต่อ WiFi และเริ่มต้นการทำงานของ Blynk
pinMode(RelayPIN, OUTPUT);
}
void loop()
{
unsigned long currentMillis = millis(); // ดึงค่าเวลาปัจจุบัน
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
humtemValue(); // เรียกฟังก์ชั่น humtemValue ให้ทำงาน
}
if(dht.readTemperature() > 40 && dht.readHumidity() > 50 ){
digitalWrite(RelayPIN, HIGH);
Blynk.virtualWrite(V7, 1);
}else{
digitalWrite(RelayPIN, LOW);
Blynk.virtualWrite(V7, 0);
}
Blynk.run(); // สั่งให้ Blynk ทำงาน
timer.run(); // สั่งให้ timer ทำงาน
}
/* function จัดการข้อมูลจากเซ็นเซอร์*/
void humtemValue() { // สร้างฟังก์ชั่น
float h = dht.readHumidity(); // สร้างตังแปร h ให้อ่านค่า Humidity จากเซ็นเซอร์
float t = dht.readTemperature(); // สร้างตังแปร h ให้อ่านค่า Temperature จากเซ็นเซอร์
if (isnan(h) || isnan(t)) { // ใช้ if เช็คการทำงานของเซ็นเซอร์
Serial.println("Failed to read from DHT sensor!"); // ถ้าไม่ทำงานให้พืมพ์ข้อความ
return; // คืนค่าที่ได้จากเซ็นเซอร์
}
Serial.print(" Humidity :: "); // พิมพ์ข้อความ
Serial.println(h); // ให้พิมพ์ค่า Humidity ที่ได้จากเซ็นเซอร์
Serial.print(" Temperature :: "); // // พิมพ์ข้อความ
Serial.println(t); // ให้พิมพ์ค่า Temperature ที่ได้จากเซ็นเซอร์
Blynk.virtualWrite(V5, t); // กำหนด Virtual Pin 5 ส่งค่า Temperature ไปที่ Blynk app
Blynk.virtualWrite(V6, h); // กำหนด Virtual Pin 6 ส่งค่า Humidity ไปที่ Blynk app
}