#include <DHT.h>
#include <ESP32Servo.h>
#define DHTPIN 33 // Chân DATA của DHT22
#define DHTTYPE DHT22 // DHT 22 (AM2302)
#define SERVO_PIN 32 // Chân điều khiển servo
#define TEMP_THRESHOLD 30.0 // Ngưỡng nhiệt độ (°C) để mở servo
// Khởi tạo đối tượng DHT
DHT dht(DHTPIN, DHTTYPE);
Servo myServo;
void setup() {
Serial.begin(115200);
dht.begin(); // Khởi tạo DHT
myServo.attach(SERVO_PIN); // Khởi tạo servo
myServo.write(0); // Đóng servo ban đầu (0 độ)
Serial.println("Bắt đầu đọc dữ liệu từ DHT22");
}
void loop() {
// Đọc độ ẩm và nhiệt độ
float h = dht.readHumidity();
float t = dht.readTemperature();
// Kiểm tra xem việc đọc có thành công không
if (isnan(h) || isnan(t)) {
Serial.println("Lỗi khi đọc từ DHT!");
return;
}
// In ra dữ liệu
Serial.print("Nhiệt độ: ");
Serial.print(t);
Serial.print(" °C\tĐộ ẩm: ");
Serial.print(h);
Serial.println(" %");
// Kiểm tra nhiệt độ và điều khiển servo
if (t > TEMP_THRESHOLD) {
myServo.write(90); // Mở servo (90 độ)
Serial.println("Mở servo do nhiệt độ cao");
} else {
myServo.write(0); // Đóng servo (0 độ)
Serial.println("Đóng servo do nhiệt độ bình thường");
}
delay(2000); // Đọc dữ liệu mỗi 2 giây
}