#include <FirebaseESP32Client.h>
#include <DHT.h>
#include <ESP32WiFi.h>
#define FIREBASE_HOST "https://dht22-89261-default-rtdb.firebaseio.com/"
#define FIREBASE_AUTH "5w0e78sHNav3vqQdJOtZk8w5u0E8g87pOs3dZAIh"
// Cấu hình WiFi
const char* WIFI_SSID = "MKH"; // Tên mạng WiFi
const char* WIFI_PASSWORD = "23149238"; // Mật khẩu WiFi
// Khai báo đối tượng Firebase
FirebaseData firebaseData;
#define DHTPIN 14 // Chân dữ liệu của DHT 11 , với NodeMCU chân D5 GPIO là 14
#define DHTTYPE DHT 22 // DHT 11
DHTesp dhtSensor; // Đối tượng cảm biến DHT
void setup() {
Serial.begin(115200); // Bắt đầu Serial Monitor
dhtSensor.setup(DHT_PIN, DHTesp::DHT22); // Khởi tạo cảm biến DHT
// Kết nối WiFi
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("WiFi connected!");
// Kết nối Firebase
Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH); // Kết nối Firebase
Firebase.reconnectWiFi(true); // Tự động kết nối lại WiFi
}
void loop() {
TempAndHumidity data = dhtSensor.getTempAndHumidity(); // Đọc dữ liệu từ cảm biến DHT
// Hiển thị dữ liệu trên Serial Monitor
Serial.println("Temp: " + String(data.temperature, 2) + "°C");
Serial.println("Humidity: " + String(data.humidity, 1) + "%");
// Gửi dữ liệu lên Firebase
if (Firebase.setFloat(firebaseData, "/Temperature", data.temperature)) { // Gửi nhiệt độ
Serial.println("Temperature updated!");
} else {
Serial.println("Failed to update temperature: " + firebaseData.errorReason());
}
if (Firebase.setFloat(firebaseData, "/Humidity", data.humidity)) { // Gửi độ ẩm
Serial.println("Humidity updated!");
} else {
Serial.println("Failed to update humidity: " + firebaseData.errorReason());
}
Serial.println("----");
delay(10000); // Chờ 10 giây trước lần cập nhật tiếp theo
}