#include <WiFi.h>
#include <FirebaseESP32.h>
#include <DHT.h>
#include <LiquidCrystal_I2C.h>
#include <ESP32Servo.h>
#define FIREBASE_HOST "AIzaSyBU8jotNn0hcjpNvT6mV_v0VFAt7k1A3xk"
#define FIREBASE_AUTH "https://final-ea18c-default-rtdb.firebaseio.com/"
#define SSID "Wokwi-GUEST"
#define PASSWORD " "
#define DHTPIN 15
#define DHTTYPE DHT22
#define LED_XANH_PIN 2
#define LED_DO_PIN 4
#define PIR_PIN 15
#define SERVO_PIN 18
FirebaseData firebaseData;
DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 20, 4);
Servo myServo;
void setup() {
Serial.begin(115200);
WiFi.begin(SSID, PASSWORD);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("Connected to WiFi");
Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
Firebase.reconnectWiFi(true);
dht.begin();
lcd.begin(20, 4); // Khởi tạo LCD với 16 cột và 2 dòng
lcd.backlight();
pinMode(LED_XANH_PIN, OUTPUT);
pinMode(LED_DO_PIN, OUTPUT);
pinMode(PIR_PIN, INPUT);
myServo.attach(SERVO_PIN);
}
void loop() {
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(temperature);
Serial.println(" *C");
if (temperature < 10) {
digitalWrite(LED_XANH_PIN, HIGH);
delay(500);
digitalWrite(LED_XANH_PIN, LOW);
delay(500);
} else if (temperature > 50) {
digitalWrite(LED_DO_PIN, HIGH);
delay(500);
digitalWrite(LED_DO_PIN, LOW);
delay(500);
}
if (digitalRead(PIR_PIN) == HIGH) {
myServo.write(90);
delay(1000);
myServo.write(0);
}
if (Firebase.setFloat(firebaseData, "/temperature", temperature)) {
Serial.println("Temperature data sent to Firebase");
} else {
Serial.println("Failed to send temperature data");
}
if (Firebase.setFloat(firebaseData, "/humidity", humidity)) {
Serial.println("Humidity data sent to Firebase");
} else {
Serial.println("Failed to send humidity data");
}
delay(2000); // Delay giữa các lần đọc cảm biến
}