#include <WiFi.h>
#include <FirebaseESP32.h>
#include <DHT.h>
#include <LiquidCrystal_I2C.h>
//#include <ESP32Servo.h>
#define FIREBASE_HOST "https://vfgjgjfhghjghj-default-rtdb.firebaseio.com/"
#define FIREBASE_AUTH "AIzaSyBr0PyQI-ASlCODVSh2TfpS4U5C3IDdncs"
#define SSID "Wokwi-GUEST"
#define PASSWORD ""
#define DHTPIN 15
#define DHTTYPE DHT22
#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 20 cột và 4 dòng
lcd.backlight();
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 > 50) && (humidity < 60)) {
digitalWrite(LED_DO_PIN, HIGH);
delay(500);
digitalWrite(LED_DO_PIN, LOW);
delay(500);
//myServo.write(90);
} else if ((temperature < 50) && (humidity > 60)) {
digitalWrite(LED_DO_PIN, LOW);
delay(500);
//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 between sensor readings
}