#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Định nghĩa chân cho cảm biến độ ẩm đất và relay
#define SOIL_PIN 35 // Chân analog kết nối với cảm biến độ ẩm đất
#define PUMP_PIN 25 // Chân GPIO điều khiển relay cho máy bơm
// Ngưỡng độ ẩm để kích hoạt relay (giá trị từ 0 đến 4095 cho ESP32)
#define SOIL_THRESHOLD 3500 // Thay đổi theo nhu cầu
// Khởi tạo đối tượng LCD
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(115200);
lcd.init(); // Khởi tạo LCD
lcd.backlight(); // Bật đèn nền LCD
// Khởi tạo chân relay
pinMode(PUMP_PIN, OUTPUT);
digitalWrite(PUMP_PIN, LOW); // Tắt relay ban đầu (tắt máy bơm)
// Khởi tạo chân cảm biến độ ẩm đất
pinMode(SOIL_PIN, INPUT);
}
void loop() {
delay(1000); // Đợi 1 giây giữa các lần đọc dữ liệu
// Đọc giá trị từ cảm biến độ ẩm đất
int soilMoisture = analogRead(SOIL_PIN);
// Hiển thị giá trị độ ẩm đất lên màn hình LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Do am dat: ");
lcd.print(soilMoisture);
// Điều khiển relay dựa trên độ ẩm đất
if (soilMoisture < SOIL_THRESHOLD) {
digitalWrite(PUMP_PIN, HIGH); // Kích hoạt relay (bật máy bơm)
Serial.println("May bom duoc kich hoat");
} else {
digitalWrite(PUMP_PIN, LOW); // Tắt relay (tắt máy bơm)
Serial.println("May bom tat");
}
// In ra giá trị độ ẩm đất lên Serial Monitor để debug
Serial.print("Do am dat: ");
Serial.println(soilMoisture);
}