#define BLYNK_TEMPLATE_ID "TMPL6iv2MRq_q"
#define BLYNK_TEMPLATE_NAME "DHT22 OLED Chackpoint1"
#define BLYNK_AUTH_TOKEN "H1QwB5UEx8vwU8dSZnQh71iLG5nKIMNe"
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <DHT.h>
// ตั้งค่าของเซ็นเซอร์ DHT
#define DHTPIN 4
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// ตั้งค่าของหน้าจอ OLED
#define OLED_RESET 16
Adafruit_SSD1306 display(OLED_RESET);
// พินของ LED
#define LED_PIN 13
// WiFi credentials
const char* ssid = "Wokwi-GUEST";
const char* password = "";
// Blynk Timer
BlynkTimer timer;
void setup() {
Serial.begin(115200);
delay(100);
// เริ่มการเชื่อมต่อ WiFi กับ Blynk
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, password);
dht.begin();
// เริ่มต้นหน้าจอ OLED
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3c)) {
Serial.println(F("ไม่สามารถเริ่มต้น SSD1306"));
for (;;);
}
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
// ตั้งค่า LED พิน
pinMode(LED_PIN, OUTPUT);
// ตั้งเวลาให้เรียกใช้ฟังก์ชัน sendDataToBlynk ทุก 5 วินาที
timer.setInterval(5000L, sendDataToBlynk);
}
void loop() {
Blynk.run();
timer.run();
}
// ฟังก์ชันส่งข้อมูลอุณหภูมิและความชื้นไปยัง Blynk
void sendDataToBlynk() {
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
if (isnan(humidity) || isnan(temperature)) {
Serial.println(F("อ่านค่าจากเซ็นเซอร์ DHT"));
return;
}
// ส่งข้อมูลไปยัง Virtual Pin ของ Blynk
Blynk.virtualWrite(V0, temperature); // V0 สำหรับอุณหภูมิ
Blynk.virtualWrite(V1, humidity); // V1 สำหรับความชื้น
Serial.print("อุณหภูมิ: ");
Serial.print(temperature);
Serial.println(" C");
Serial.print("ความชื้น: ");
Serial.print(humidity);
Serial.println(" %");
}
// ฟังก์ชันควบคุม LED จากแอป Blynk
BLYNK_WRITE(V2) {
int ledState = param.asInt(); // รับค่า LED จาก Blynk (0 หรือ 1)
digitalWrite(LED_PIN, ledState);
}