Phần 4: Lập trình hệ thống tưới cây tự động
1. Thiết kế logic tưới cây dựa trên dữ liệu độ ẩm và API thời tiết, 2. Kết nối relay với ESP32 để điều khiển bơm nước, 3. Lập trình để tự động tưới cây khi độ ẩm thấp và không có mưa, 4. Tạo giao diện điều khiển (nếu có) để cài đặt lịch tưới cây, 5. Thử nghiệm và điều chỉnh hệ thống.
Phần 4: Lập trình hệ thống tưới cây tự động
Trong phần này, chúng ta sẽ thực hiện lập trình cho hệ thống tưới cây thông minh, dựa trên dữ liệu độ ẩm đất và tích hợp API thời tiết. Mục tiêu là tự động tưới cây khi độ ẩm thấp và không có mưa sắp tới. Chúng ta sẽ đi qua từng bước từ thiết kế logic cho đến thử nghiệm và điều chỉnh hệ thống.
1. Thiết kế logic tưới cây dựa trên dữ liệu độ ẩm và API thời tiết
Để thiết kế logic cho hệ thống tưới cây, chúng ta cần xác định các yếu tố sau:
- Độ ẩm đất: Sử dụng cảm biến độ ẩm để đo lường độ ẩm thực tế của đất. Nếu độ ẩm dưới một ngưỡng nhất định (ví dụ 30%), hệ thống sẽ kích hoạt bơm nước.
- API thời tiết: Tích hợp API để kiểm tra dự báo thời tiết. Nếu có khả năng mưa trong vòng 1-2 giờ tới, hệ thống sẽ bỏ qua việc tưới cây.
- Lịch tưới: Cho phép người dùng cài đặt lịch tưới theo ngày và giờ cụ thể.
2. Kết nối relay với ESP32 để điều khiển bơm nước
Để điều khiển bơm nước, chúng ta sử dụng relay để bật/tắt bơm nước. Dưới đây là sơ đồ kết nối:
ESP32 Relay Module
------- -------------
GPIO 23 ---- IN1
GND -------- GND
VCC -------- VCC
Trong đó, GPIO 23 là chân mà chúng ta sẽ sử dụng để điều khiển relay. Khi GPIO 23 được đặt HIGH, relay sẽ kích hoạt và bơm nước sẽ hoạt động.
3. Lập trình để tự động tưới cây khi độ ẩm thấp và không có mưa
Chúng ta sẽ sử dụng ngôn ngữ lập trình Arduino để lập trình cho ESP32. Dưới đây là mã nguồn mẫu:
#include <WiFi.h>
#include <HTTPClient.h>
// Thay đổi thông tin WiFi
const char* ssid = "YOUR_SSID";
const char* password = "YOUR_PASSWORD";
// Thông tin cảm biến độ ẩm
const int moistureSensorPin = 34; // Chân cảm biến
const int relayPin = 23; // Chân relay
// Hàm khởi tạo
void setup() {
Serial.begin(115200);
pinMode(relayPin, OUTPUT);
digitalWrite(relayPin, LOW); // Tắt bơm nước ban đầu
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Đang kết nối đến WiFi...");
}
Serial.println("Kết nối thành công!");
}
// Hàm kiểm tra độ ẩm và thời tiết
void loop() {
int moistureLevel = analogRead(moistureSensorPin);
Serial.print("Độ ẩm đất: ");
Serial.println(moistureLevel);
if (moistureLevel < 300 && !isRaining()) { // Kiểm tra độ ẩm và thời tiết
Serial.println("Tưới cây...");
digitalWrite(relayPin, HIGH); // Bật bơm nước
delay(5000); // Tưới trong 5 giây
digitalWrite(relayPin, LOW); // Tắt bơm nước
}
delay(60000); // Kiểm tra mỗi phút
}
// Hàm kiểm tra thời tiết
bool isRaining() {
HTTPClient http;
http.begin("https://api.weatherapi.com/v1/current.json?key=YOUR_API_KEY&q=YOUR_LOCATION");
int httpResponseCode = http.GET();
if (httpResponseCode > 0) {
String payload = http.getString();
// Phân tích JSON để lấy thông tin mưa
// Cần thư viện ArduinoJson để xử lý JSON
// ...
return false; // Thay đổi theo kết quả phân tích
}
http.end();
return false;
}
4. Tạo giao diện điều khiển (nếu có) để cài đặt lịch tưới cây
Để tạo giao diện điều khiển, chúng ta có thể sử dụng một ứng dụng web đơn giản hoặc giao diện di động. Dưới đây là một ý tưởng cho giao diện web:
<!DOCTYPE html>
<html>
<head>
<title>Hệ Thống Tưới Cây Thông Minh</title>
</head>
<body>
<h1>Cài đặt lịch tưới cây</h1>
<form action="/set_schedule" method="POST">
<label for="time">Chọn thời gian tưới:</label>
<input type="time" id="time" name="time">
<input type="submit" value="Lưu">
</form>
</body>
</html>
Chúng ta cần thêm mã xử lý trên ESP32 để nhận dữ liệu từ giao diện web và lưu trữ lịch tưới.
5. Thử nghiệm và điều chỉnh hệ thống
Cuối cùng, sau khi hoàn thành lập trình, chúng ta cần thử nghiệm hệ thống:
- Kết nối tất cả các linh kiện và tải mã lên ESP32.
- Giám sát độ ẩm đất và kiểm tra xem hệ thống có tự động tưới khi độ ẩm thấp không.
- Kiểm tra API thời tiết để đảm bảo rằng hệ thống không tưới khi có mưa.
- Điều chỉnh ngưỡng độ ẩm và thời gian tưới nếu cần thiết.
Lưu ý: Đảm bảo rằng bạn đã cài đặt các thư viện cần thiết như WiFi.h, HTTPClient.h và ArduinoJson cho mã nguồn hoạt động chính xác.
Như vậy, chúng ta đã hoàn thành phần lập trình cho hệ thống tưới cây thông minh. Hệ thống này không chỉ giúp tiết kiệm nước mà còn đảm bảo cây trồng luôn được chăm sóc tốt nhất.
