#include <ESP32Firebase.h>
#include <LiquidCrystal_I2C.h>
#include "DHT.h"
#include <WiFi.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#define DATABASE_URL "https://le-truc-thi-default-rtdb.firebaseio.com/" // Url của Firebase Realtime Database
#define WIFI_SSID "Wokwi-GUEST" // Your WiFi SSID
#define WIFI_PASSWORD "" // Your WiFi Password
#define DHTTYPE DHT22 // Định nghĩa loại cảm biến DHT22
const int myChannelNumber = 2571116;
const char* myApiKey = "JET2GE1PDHOT8LD6";
const char* server = "api.thingspeak.com";
#define DHTPIN 14 // Chân GPIO kết nối cảm biến DHT
#define air 12
#define water 13
#define TRIG_PIN 26 // ESP32 pin GPIO26 connected to Ultrasonic Sensor's TRIG pin
#define ECHO_PIN 25 // ESP32 pin GPIO25 connected to Ultrasonic Sensor's ECHO pin
float duration_us, distance_cm;
DHT dht(DHTPIN, DHTTYPE); // Khởi tạo cảm biến DHT
Firebase firebase(DATABASE_URL);
WiFiClient client;
void setup() {
Serial.begin(9600);
delay(1000);
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
pinMode(air, OUTPUT);
pinMode(water, OUTPUT);
pinMode(TRIG_PIN, OUTPUT); // config trigger pin to output mode
pinMode(ECHO_PIN, INPUT); // config echo pin to input mode
// ThingSpeak.begin(client);
lcd.init();
lcd.backlight();
//lcd.setCursor(1,0);
//lcd.print("TEN");
//lcd.setCursor(0,1);
//lcd.print("21161436");
}
//////////////////////////////////////////////////
void StatusCheck()
{
float h = dht.readHumidity();
float t = dht.readTemperature();
// Kiểm tra nhiệt độ và độ ẩm và cập nhật trạng thái
int LightStatus = (t > 30) ? 1 : 0;
int WaterStatus = (h > 50) ? 1 : 0;
// Điều khiển thiết bị dựa trên trạng thái
if(LightStatus == 1)
{
digitalWrite(air, HIGH);
Serial.println("Bat air condition");
}
else
{
digitalWrite(air, LOW);
Serial.println("Tat air condition");
}
if(WaterStatus == 1)
{
digitalWrite(water, HIGH);
Serial.println("Bat water");
}
else
{
digitalWrite(water, LOW);
Serial.println("Tat water");
}
}
////////////////////////////////////////////
void loop() {
float h = dht.readHumidity();
float t = dht.readTemperature();
Serial.print("Nhiet do: ");
Serial.print(t);
Serial.print("ºC ");
Serial.print("Do am: ");
Serial.print(h);
Serial.println("% ");
String temperatureString = String(t) + "°C";
String humidityString = String(h) + "%";
firebase.setString("temp_humi_pH/Nhiệt độ", temperatureString);
firebase.setString("temp_humi_pH/Độ ẩm", humidityString);
//ThingSpeak.setField(1,t);
//ThingSpeak.setField(2,h);
//int x = ThingSpeak.writeFields(myChannelNumber, myApiKey);
if(x == 200){
Serial.println("Channel update successful.");
}
else{
Serial.println("Problem updating channel. HTTP error code " + String(x));
}
StatusCheck();
////////////////////////////////////////////
//Hiển thị nhiệt độ độ ẩm lên LCD
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Temp: " + temperatureString);
lcd.setCursor(0,1);
lcd.print("Humi: " + humidityString);
///////////////////////////////////////////////////
// generate 10-microsecond pulse to TRIG pin
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
// measure duration of pulse from ECHO pin
duration_us = pulseIn(ECHO_PIN, HIGH);
// calculate the distance
distance_cm = 0.017 * duration_us;
Serial.print("distance (cm): ");
Serial.println(distance_cm);
//////////////////////////////////////////////////
delay(5000); // Delay 10 giây trước khi đọc lại dữ liệu
}