#include "DHTesp.h"
#include <DHT.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
const int DHT_PIN = 13;
DHTesp dhtSensor;
#define RED_LED_PIN 12
#define GREEN_LED_PIN 14
#define DHTPIN 4
#define DHTTYPE DHT22
#define BLYNK_TEMPLATE_ID "TMPL6eGouzwKy"
#define BLYNK_TEMPLATE_NAME "hippomorakot"
#define BLYNK_AUTH_TOKEN "ZXi0pUZTZf5cWxbInVX3GcdNQ-PCoL8y"
#define BLYNK_PRINT Serial
DHT dht(DHTPIN, DHTTYPE);
#include <BlynkSimpleEsp32.h>
#include <ESP32Servo.h>
char auth[] = BLYNK_AUTH_TOKEN ;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
Servo servo;
String currentPlace = "unknown";
void setup() {
Serial.begin(115200); //ให้ Serial เริ่มทำงาน ที่ความเร็ว 115200 bps
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
dhtSensor.setup(DHT_PIN, DHTesp::DHT22); //เริ่มใช้งาน DHT22
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(WHITE);
pinMode(14, OUTPUT);
pinMode(12, OUTPUT);
Blynk.begin(auth, ssid, pass);
servo.attach(18);
}
void loop() {
TempAndHumidity data = dhtSensor.getTempAndHumidity(); //อ่านค่าอุณหภูมิและความชื้นเก็นที่ตัวแปร data
Serial.println("Temp: " + String(data.temperature, 2) + "°C"); //แสดงผลอุณหภูมิ
Serial.println("Humidity: " + String(data.humidity, 1) + "%"); //แสดงผลความชื้น
Serial.println("---");
display.clearDisplay();
display.setCursor(45,0);
display.println("331");
display.setCursor(9, 11);
display.print("Temp:");
display.print(String(data.temperature, 1));
display.setCursor(10, 30);
display.print("Humi:");
display.print(String(data.humidity, 1));
display.setCursor(45,48);
display.write(3);
display.write(3);
display.write(3);
display.display();
delay(1000);
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
if (Serial.available() > 0) {
String input = Serial.readStringUntil('\n');
if (input.startsWith("place=")) {
currentPlace = input.substring(6);
}
}
if (temperature <= 40 && humidity <= 40)
{
digitalWrite(14, LOW);
digitalWrite(12, HIGH);
else if(temperature >= 40 && humidity >= 40)
{
digitalWrite(12, LOW);
digitalWrite(14, HIGH);
Serial.print("Place: ");
Serial.println(currentPlace);
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.print(" °C, Humidity: ");
Serial.print(humidity);
Serial.println(" %");
delay(2000);
}
Blynk.run();
}
BLYNK_WRITE(V0)
{
servo.write(param.asInt());
}
BLYNK_WRITE(V1)
{
servo.write(0);
}
BLYNK_WRITE(V2)
{
servo.write(180);
}