#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; //กำหนดขา DHT22 = ขา 13
DHTesp dhtSensor; //ประกาศตัวแปร dhtSensor
#define GREEN_LED_PIN 15
#define RED_LED_PIN 2
#define DHTPIN 4
#define DHTTYPE DHT22
define BLYNK_TEMPLATE_ID "TMPL6D0zRoBo-"
#define BLYNK_TEMPLATE_NAME "Maiyacha"
#define BLYNK_AUTH_TOKEN "lH9RY5nLnwuPgZllWZ92uSdGNUN1966A"
#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(15, OUTPUT);
pinMode(2, 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("216");
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);
delay(200);
display.setCursor(45,48);
display.write(3);
display.write(3);
display.write(3);
delay(200);
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(2, LOW);
delay(200);
digitalWrite(15, HIGH);
delay(200);
}
else
{
digitalWrite(2, HIGH);
digitalWrite(15, LOW);
}
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);
}