#define BLYNK_TEMPLATE_ID "YOUR_BLYNK_TEMPLATE_ID"
#define BLYNK_DEVICE_NAME "YOUR_DEVICE_NAME"
#define BLYNK_AUTH_TOKEN "YOUR_BLYNK_AUTH_TOKEN"
// **สำคัญ:** สำหรับ Wokwi ให้ใช้ SSID และรหัสผ่านนี้
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
#define BLYNK_PRINT Serial // เปิดการดีบักไปยัง Serial Monitor
#include <WiFi.h>
#include <WiFiClient.h>
//#include <BlynkSimpleEsp32.h>
#include "DHTesp.h" // ไลบรารี DHTesp แนะนำสำหรับ ESP32
#define DHT_PIN 4 // กำหนดขา GPIO ที่ต่อกับ DHT22 (ใน Wokwi มักใช้ GPIO4 หรือ 15)
DHTesp dhtSensor;
BlynkTimer timer;
// Virtual Pins ใน Blynk IoT
#define V_TEMP V0 // Virtual Pin สำหรับอุณหภูมิ (°C)
#define V_HUMIDITY V1 // Virtual Pin สำหรับความชื้น (%)
// ฟังก์ชันสำหรับอ่านค่า DHT และส่งไปยัง Blynk
void sendSensorData()
{
// อ่านค่าอุณหภูมิและความชื้นพร้อมกัน
TempAndHumidity data = dhtSensor.getTempAndHumidity();
float t = data.temperature;
float h = data.humidity;
// ตรวจสอบสถานะการอ่าน
if (dhtSensor.getStatus() != 0) {
Serial.println("DHT Read error: " + dhtSensor.getStatusString());
return;
}
// ส่งข้อมูลไปยัง Blynk Virtual Pins
Blynk.virtualWrite(V_TEMP, t);
Blynk.virtualWrite(V_HUMIDITY, h);
// แสดงผลใน Serial Monitor
Serial.print("Temp: " + String(t, 1) + " *C | ");
Serial.println("Humidity: " + String(h, 1) + " %");
}
void setup()
{
Serial.begin(115200);
// เริ่มต้นเซนเซอร์ DHT22 บนขาที่กำหนด
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
// เริ่มการเชื่อมต่อ Blynk (Wokwi จะจัดการการเชื่อมต่อ WiFi ให้โดยอัตโนมัติ)
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
// ตั้งค่า Timer ให้เรียกใช้ฟังก์ชัน sendSensorData ทุกๆ 5 วินาที
timer.setInterval(5000L, sendSensorData);
}
void loop()
{
Blynk.run(); // ต้องรันฟังก์ชัน Blynk.run() เสมอ
timer.run(); // รัน BlynkTimer
}