#include <FirebaseESP32.h> // Thư viện FirebaseESP32 để kết nối đến Firebase Realtime Database
#include <WiFi.h> // Thư viện WiFi để kết nối đến mạng WiFi
#define FIREBASE_HOST "https://dht11-2b0a9-default-rtdb.firebaseio.com/" // Url của Firebase Realtime Database
#define FIREBASE_AUTH "SaQcNMcU8pVkJS61URHqDDxKBOViGL9g7xeFIgTo" // Token xác thực cho Firebase Realtime Database
#define WIFI_SSID "Wokwi-GUEST" // Tên mạng WiFi cần kết nối
#define WIFI_PASSWORD "" // Mật khẩu mạng WiFi
FirebaseData fbdo; // Đối tượng FirebaseData để lưu trữ dữ liệu cần gửi lên Firebase Realtime Database
#include "DHTesp.h" // Thư viện DHTesp để đọc dữ liệu từ cảm biến DHT22
const int DHT_PIN = 15; // Chân kết nối của cảm biến DHT22
DHTesp dhtSensor; // Đối tượng DHTesp để đọc dữ liệu từ cảm biến DHT22
void setup() {
Serial.begin(115200); // Khởi tạo Serial với tốc độ baud 115200
dhtSensor.setup(DHT_PIN, DHTesp::DHT22); // Cài đặt cảm biến DHT22 với chân kết nối và loại cảm biến
WiFi.begin (WIFI_SSID, WIFI_PASSWORD); // Kết nối đến mạng WiFi
Serial.print("Dang ket noi"); // In ra thông báo đang kết nối WiFi trên Serial Monitor
while (WiFi.status() != WL_CONNECTED) { // Kiểm tra trạng thái kết nối WiFi
Serial.print("."); // Xuất dấu chấm để biểu thị quá trình kết nối
delay(500); } // Chờ 0.5 giây
Serial.println (""); // Xuất dòng trống trên Serial Monitor
Serial.println ("Da ket noi WiFi!"); // In ra thông báo đã kết nối thành công trên Serial Monitor
Serial.println(WiFi.localIP()); // In ra địa chỉ IP của thiết bị trên Serial Monitor
Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH); // Kết nối đến Firebase Realtime Database
pinMode(27, OUTPUT);
}
void loop() {
TempAndHumidity data = dhtSensor.getTempAndHumidity(); // Đọc nhiệt độ và độ ẩm từ cảm biến DHT22
Serial.println("Temp: " + String(data.temperature, 2) + "°C"); // In ra nhiệt độ trên Serial Monitor
Serial.println("Humidity: " + String(data.humidity, 1) + "%"); // In ra độ ẩm trên Serial Monitor
Serial.println("---"); // Xuất dòng gạch ngang để phân biệt dữ liệu
Firebase.setInt(fbdo,"Nhiet do", data.temperature); // Gửi nhiệt độ lên Firebase Realtime Database
Firebase.setInt(fbdo,"Do am", data.humidity); // Gửi độ ẩm lên Firebase Realtime Database
if(data.temperature >= 40) digitalWrite(27, HIGH);
else digitalWrite(27, LOW);
delay(1000); // Chờ 1 giây trước khi lặp lại quá trình
}