#include <WiFi.h> // Thư viện kết nối WiFi
#include "DHTesp.h" // Thư viện đọc dữ liệu từ cảm biến nhiệt độ và độ ẩm DHT
#include <ESP32Firebase.h> // Thư viện hỗ trợ tích hợp Firebase với ESP32
// Định nghĩa URL và mã xác thực cho Firebase Realtime Database
#define REFERENCE_URL "https://c2-lab3-1e0d4-default-rtdb.firebaseio.com/"
#define FIREBASE_AUTH "z3sjXDOZ1kibtS6GRI507JgZ3Cq7XsH34yHgoy8A"
const int DHT_PIN = 14; // Chân kết nối với cảm biến DHT
const char* WIFI_NAME = "Wokwi-GUEST"; // Tên mạng WiFi
const char* WIFI_PASSWORD = ""; // Mật khẩu mạng WiFi
DHTesp dhtSensor; // Tạo đối tượng cảm biến DHT
WiFiClient client; // Tạo đối tượng client WiFi
Firebase firebase(REFERENCE_URL); // Khởi tạo đối tượng Firebase với URL đã định nghĩa
void setup() {
Serial.begin(115200); // Khởi tạo Serial với baud rate 115200 để debug
dhtSensor.setup(DHT_PIN, DHTesp::DHT22); // Cấu hình cảm biến DHT
WiFi.begin(WIFI_NAME, WIFI_PASSWORD); // Kết nối tới WiFi
while (WiFi.status() != WL_CONNECTED){
delay(1000); // Đợi cho đến khi kết nối WiFi thành công
Serial.println("Wifi not connected"); // In ra thông báo chưa kết nối WiFi
}
Serial.println("Wifi connected !"); // Thông báo kết nối WiFi thành công
Serial.println("Local IP: " + String(WiFi.localIP())); // In ra địa chỉ IP cục bộ
WiFi.mode(WIFI_STA); // Đặt chế độ WiFi thành Station
// float t = firebase.getFloat("Temp");
// float h = firebase.getFloat("Humidity");
}
void loop() {
TempAndHumidity data = dhtSensor.getTempAndHumidity();
float h = data.humidity; // Đọc độ ẩm từ cảm biến
float t = data.temperature; // Đọc nhiệt độ từ cảm biến
if (isnan(h) || isnan(t)) { // Kiểm tra dữ liệu có hợp lệ không
Serial.println("Failed to read from DHT sensor!"); // Thông báo lỗi đọc dữ liệu
return;
}
Serial.println("Temp: " + String(t, 2) + "°C"); // In nhiệt độ ra màn hình Serial
Serial.println("Humidity: " + String(h, 1) + "%"); // In độ ẩm ra màn hình Serial
Serial.println("---");
firebase.setFloat("Humidity", h); // Gửi dữ liệu độ ẩm lên Firebase
firebase.setFloat("Temp", t); // Gửi dữ liệu nhiệt độ lên Firebase
delay(200); // Thời gian chờ trước khi đo lần tiếp theo
}