Rất sẵn lòng. Đây là một dự án khá lớn, tương đương một đồ án tốt nghiệp hoặc một sản phẩm IoT hoàn chỉnh. Vì vậy mình đề xuất hướng dẫn theo từng chương, từ cơ bản đến nâng cao. Sau khi hoàn thành, bạn sẽ có một hệ thống tưới cây tự động có thể hoạt động ngoài thực tế.
Mục tiêu của dự án
Xây dựng một hệ thống có các chức năng:
- Đo độ ẩm đất.
- Đo mực nước trong bồn.
- Điều khiển máy bơm tự động.
- Tưới theo ngưỡng độ ẩm hoặc theo lịch.
- Điều khiển và giám sát bằng điện thoại qua WiFi.
- Hiển thị trạng thái trên màn hình LCD.
- Bảo vệ máy bơm khi hết nước.
Chương 1: Lập kế hoạch hệ thống
Bước 1. Xác định yêu cầu
Ví dụ:
- 01 bồn chứa nước.
- 01 máy bơm 12V.
- 01 khu vườn.
- 04 luống rau.
- Tự động tưới khi đất khô dưới 40%.
- Dừng khi đạt 70%.
- Có nút bật/tắt bằng điện thoại.
Bước 2. Lựa chọn linh kiện
| Thiết bị | Số lượng |
|---|---|
| ESP32 DevKit V1 | 1 |
| Cảm biến độ ẩm đất điện dung | 1–4 |
| Module Relay 5V | 1 |
| Máy bơm DC 12V | 1 |
| Adapter 12V | 1 |
| Module hạ áp LM2596 (12V xuống 5V) | 1 |
| LCD I2C 16×2 hoặc OLED | 1 |
| Cảm biến mực nước (phao hoặc siêu âm) | 1 |
| DHT22 (tùy chọn) | 1 |
| Van điện từ 12V (nếu chia vùng tưới) | 1–4 |
Chương 2: Thiết kế sơ đồ nguyên lý
Khối nguồn
220VAC
│
▼
Adapter 12V
│
├──────────────► Máy bơm
│
▼
LM2596
12V → 5V
│
▼
ESP32
Nguồn 12V cấp trực tiếp cho máy bơm. ESP32 được cấp 5V qua chân VIN hoặc cổng USB. Tất cả các thiết bị phải dùng chung chân GND.
Khối điều khiển
ESP32
GPIO34 <──── Cảm biến độ ẩm
GPIO27 <──── Cảm biến mực nước
GPIO26 ────► Relay
GPIO21 ────► LCD SDA
GPIO22 ────► LCD SCL
GPIO4 ────► DHT22
Chương 3: Thiết kế mạch công suất
Máy bơm không được nối trực tiếp vào ESP32 mà phải qua relay hoặc MOSFET.
GPIO26
│
▼
Relay Module
│
▼
Máy bơm 12V
+12V ───── Máy bơm ───── Relay ───── GND
Nếu máy bơm công suất lớn (trên khoảng 5A), nên dùng MOSFET hoặc contactor thay relay để tăng độ bền.
Chương 4: Thiết kế hệ thống ống nước
Ví dụ cho vườn khoảng 50 m²:
Bồn nước
│
│
Máy bơm 12V
│
Ống PVC Φ27
│
┌────────┴────────┐
│ │
Ống PE Ống PE
│ │
Đầu nhỏ giọt Đầu nhỏ giọt
Khuyến nghị:
- Ống chính: PVC Φ27 hoặc Φ34.
- Ống nhánh: PE 16 mm.
- Mỗi đầu nhỏ giọt: 2–4 lít/giờ.
Chương 5: Đấu dây chi tiết
Cảm biến độ ẩm
ESP32
3.3V -------- VCC
GND -------- GND
GPIO34 ------- AO
Relay
ESP32
5V ---------- VCC
GND --------- GND
GPIO26 ------ IN
LCD I2C
ESP32
GPIO21 ---- SDA
GPIO22 ---- SCL
5V -------- VCC
GND ------- GND
Cảm biến mực nước
Nếu dùng phao:
Một đầu → GPIO27
Một đầu → GND
Kích hoạt điện trở kéo lên (pull-up) trong phần mềm.
Chương 6: Viết chương trình
Chia thành các phần độc lập.
Phần 1
Đọc cảm biến độ ẩm:
int moisture = analogRead(34);
Phần 2
Chuyển sang phần trăm:
int percent = map(moisture, 3000, 1200, 0, 100);
Lưu ý: Hai giá trị 3000 và 1200 chỉ là ví dụ, cần hiệu chuẩn theo cảm biến thực tế.
Phần 3
Điều khiển relay:
if(percent < 40)
{
digitalWrite(RELAY, LOW);
}
else
{
digitalWrite(RELAY, HIGH);
}
Nhiều module relay kích hoạt mức LOW, vì vậy hãy kiểm tra loại relay bạn sử dụng.
Phần 4
Hiển thị LCD
Moisture : 38%
Pump : ON
Phần 5
Kết nối WiFi
ESP32 sẽ:
- kết nối WiFi,
- gửi dữ liệu lên ứng dụng IoT hoặc web,
- nhận lệnh bật/tắt máy bơm.
Chương 7: Thuật toán hoàn chỉnh
Khởi động
↓
Khởi tạo WiFi
↓
Đọc cảm biến đất
↓
Đọc mực nước
↓
Đất khô?
↓
Không
↓
Quay lại
↓
Có
↓
Bồn còn nước?
↓
Không
↓
Báo lỗi
↓
Có
↓
Bật relay
↓
Máy bơm chạy
↓
Đợi 20 giây
↓
Đọc lại độ ẩm
↓
Đủ ẩm?
↓
Chưa
↓
Lặp lại
↓
Đã đủ
↓
Tắt máy bơm
↓
Gửi thông báo
Chương 8: Hiệu chuẩn cảm biến độ ẩm
Đây là bước rất quan trọng vì mỗi cảm biến có sai số khác nhau.
- Cắm cảm biến vào không khí, đọc giá trị ADC và ghi lại (ví dụ 3000).
- Cắm cảm biến vào đất bão hòa nước, đọc giá trị ADC (ví dụ 1200).
- Dùng hai giá trị đó trong hàm
map()để quy đổi sang phần trăm. - Kiểm tra trên nhiều mẫu đất và điều chỉnh ngưỡng bật/tắt (ví dụ bật dưới 40%, tắt trên 70%) sao cho phù hợp với loại rau bạn trồng.
Chương 9: Nâng cấp thành hệ thống chuyên nghiệp
Khi hệ thống cơ bản hoạt động ổn định, bạn có thể bổ sung:
- Điều khiển nhiều vùng tưới bằng nhiều van điện từ.
- Ghi nhật ký tưới vào thẻ nhớ hoặc máy chủ.
- Gửi thông báo khi bồn hết nước hoặc bơm hoạt động bất thường.
- Tích hợp cảm biến mưa để không tưới khi trời mưa.
- Theo dõi nhiệt độ, độ ẩm không khí và ánh sáng để tối ưu lịch tưới.
- Sử dụng nguồn điện mặt trời kết hợp pin dự phòng nếu khu vườn ở nơi không có điện lưới.
Đề xuất lộ trình học
Mình khuyên nên triển khai theo từng bài thay vì làm ngay toàn bộ hệ thống:
- Đọc cảm biến độ ẩm đất bằng ESP32.
- Điều khiển relay bật/tắt máy bơm.
- Hiệu chuẩn cảm biến và thiết lập ngưỡng tưới.
- Đọc cảm biến mực nước.
- Kết nối WiFi và điều khiển qua điện thoại.
- Thêm màn hình LCD/OLED.
- Hẹn giờ tưới.
- Chia nhiều vùng tưới bằng van điện từ.
- Thiết kế mạch PCB và hộp điều khiển chống nước.
Theo cách này, bạn sẽ hiểu rõ nguyên lý của từng phần và dễ dàng sửa lỗi khi mở rộng hệ thống.
