#define BLYNK_TEMPLATE_ID "TMPL6oRZgcJcl"
#define BLYNK_TEMPLATE_NAME "Weather Station to Wokwi"
#define BLYNK_AUTH_TOKEN "vMSXcddSk4uFNT6GDBlVjivhyB8zGDec"
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <DHT.h>
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP085_U.h>
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
#define DHTPIN 25
#define DHTTYPE DHT21
DHT dht(DHTPIN, DHTTYPE);
// กำหนดขาสำหรับไฟ LED ตามภาพ (Pin 26, 27, 14)
#define LED_ORANGE 26
#define LED_BLUE 27
#define LED_RED 14
Adafruit_BMP085_Unified bmp = Adafruit_BMP085_Unified(10085);
BlynkTimer timer;
// ฟังก์ชันควบคุมไฟจากปุ่มใน Blynk
BLYNK_WRITE(V5) { // ปุ่มส้ม
digitalWrite(LED_ORANGE, param.asInt());
}
BLYNK_WRITE(V6) { // ปุ่มน้ำเงิน
digitalWrite(LED_BLUE, param.asInt());
}
BLYNK_WRITE(V7) { // ปุ่มแดง
digitalWrite(LED_RED, param.asInt());
}
void sendSensorData() {
float h = dht.readHumidity();
float t = dht.readTemperature();
sensors_event_t event;
bmp.getEvent(&event);
float p = 0;
float a = 0;
if (event.pressure) {
p = event.pressure;
a = bmp.pressureToAltitude(1013.25, p);
}
if (!isnan(h) && !isnan(t)) {
Blynk.virtualWrite(V0, t);
Blynk.virtualWrite(V1, h);
}
Blynk.virtualWrite(V4, p);
Blynk.virtualWrite(V3, a);
// --- เพิ่มบรรทัดนี้กลับเข้าไป ---
Serial.printf("T:%.2f H:%.2f P:%.2f A:%.2f\n", t, h, p, a);
}
void setup() {
Serial.begin(115200);
// ตั้งค่าขา LED เป็น OUTPUT
pinMode(LED_ORANGE, OUTPUT);
pinMode(LED_BLUE, OUTPUT);
pinMode(LED_RED, OUTPUT);
dht.begin();
if (!bmp.begin()) {
Serial.println("Could not find BMP180 sensor!");
}
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
timer.setInterval(5000L, sendSensorData);
}
void loop() {
Blynk.run();
timer.run();
}