🔧 TÀI LIỆU LẮP RÁP HỆ THỐNG TƯỚI RAU TỰ ĐỘNG ESP32 ¶
Dự án: garden_1 · Kệ 3 tầng (12 khay) · Tưới + châm dinh dưỡng tự động
Vật tư: xem vat-tu.md · Bản vẽ: simulate-smart-garden.md + .plan/plan3_final.md
Nguồn chuẩn: .plan/plan1_final_1_final.md (Master Plan v2.0) · .project/architecture.md · .project/patterns.md
Nguyên tắc chung:
- Lắp theo đúng thứ tự 6 giai đoạn dưới — KHÔNG nhảy cóc.
- Mỗi giai đoạn có mục Kiểm tra — phải pass trước khi sang giai đoạn sau.
- An toàn phần cứng cứng (phao ngắt cạn, bảo vệ MOSFET) là bắt buộc tuyệt đối — không bỏ, không sửa kiểu khác.
- Mọi thao tác điện: ngắt nguồn 220V trước khi đấu nối.
GIAI ĐOẠN 0 — CHUẨN BỊ ¶
0.1. Kiểm tra linh kiện sống/chết ¶
0.2. Bố trí tổng thể (theo bản vẽ) ¶
[Central Hub NGOÀI KỆ — hở bảo trì ≥ 200mm]
Chai mẹ 2L ──(peristaltic)──► Thùng 50L ──► [Van 1 chiều] ──► [Lọc 120 mesh]
[Bơm chìm sau-trái]·[Phao trước-phải]·[tee spare trên ống chính]
│
Ống trục PE16 (riser sau-phải kệ)
│
T1 ─ Manifold PE16 mép sau ─ 12 béc 2L/h (van tiết lưu đỏ đầu vào)
T2 ─ Manifold PE16 mép sau ─ 12 béc 3L/h (van tiết lưu đỏ đầu vào)
T3 ─ Manifold PE16 mép sau ─ 12 béc 4L/h + [Anti-Siphon đỉnh T3]
Hộp điện Sino (ESP32 + MOSFET + nguồn) gắn cạnh kệ gần Tầng 3
GIAI ĐOẠN 1 — KHUNG KỆ & KHAY ¶
1.1. Dựng khung kệ ¶
- Lắp kệ sắt V lỗ 3 tầng: cao ~1.6m, rộng ~1.3m, sâu ~0.5m.
- Gắn 4 chân đế cao su vào 4 góc đáy → chống trơn, chống ăn mòn sàn.
1.2. Đặt khay ¶
- Đặt 12 khay nhựa (~40×60cm), 4 khay/tầng, canh đều 2 bên kệ.
- Đổ giá thể trồng vào khay, cao ~60mm, để lại thành khay.
- (Trồng sau khi hệ thống tưới hoạt động — không trồng trước khi test.)
Kiểm tra: Kệ vững, không lắc lư. Khay nằm phẳng, không nghiêng.
GIAI ĐOẠN 2 — CENTRAL HUB (THÙNG + BƠM + PHAO) ¶
Hub đặt NGOÀI kệ, sát mép phải kệ, hở bảo trì ≥ 200mm so với khung (ADR-008 — để sau cấp chung nhiều kệ).
2.1. Thùng 50L ¶
- Đặt thùng nhựa HDPE/PP tối màu ngoài kệ (sát mép phải).
- Vị trí tham chiếu bản vẽ: thùng từ
x = rack_w + 200, thân 400×350×450mm.
2.2. Bơm chìm (góc sau-trái thùng) ¶
- Đặt bơm chìm 12V 15W đáy thùng, góc sau-trái.
- Đấu dây nguồn bơm chạy lên miệng thùng → sau đi qua hộp điện.
- Ống ra bơm hướng lên (chuẩn bị nối van/lọc).
2.3. Phao ngắt cạn + lồng PVC (góc trước-phải thùng) ¶
- Làm lồng bảo vệ: ống PVC Ø60mm, đục nhiều lỗ li ti quanh thân (chống rêu/lăng quăng kẹt phao).
- Luồng phao điện vào lồng, thả xuống thùng góc trước-phải — đối diện đầu hút bơm, không bị bơm hút kẹt.
- Đấu phao NỐI TIẾP trực tiếp dây +12V cấp cho bơm chìm:
+12V nguồn ──► Phao điện ──► (+ cực Bơm chìm) │ ngắt cạn🔒 AN TOÀN CỨNG (bắt buộc): phao ngắt cạn hoàn toàn độc lập MCU/code. Nước cạn → phao hạ → ngắt điện bơm ngay lập tức. TUYỆT ĐỐI không báo phao về GPIO để ngắt bằng phần mềm.
2.4. Chai dinh dưỡng mẹ (Option B — pha phân tay, đã chọn, ADR-011) ¶
- Đặt chai mẹ 2L tối màu kề cạnh thùng (
x ≈ tank_right_x + 80), cao ngang miệng thùng. - Option B (đã chọn): KHÔNG lắp bơm peristaltic — chai mẹ là bình pha phân tay: pha dung dịch mẹ rồi đổ trực tiếp vào bồn (xem Giai đoạn 5.2).
- (Option A — nếu nâng cấp sau này) Lắp bơm peristaltic 12V lên miệng chai: ống hút PE6 xuống đáy chai, ống xả PE6 thả tự do vào thùng góc đối diện đầu hút bơm chìm (sau-trái → trước-phải).
Kiểm tra: Bơm chìm chạy trong nước không kêu lạ. Phao ngắt khi nâng/tụt. Peristaltic hút/xả đúng chiều.
GIAI ĐOẠN 3 — ĐƯỜNG ỐNG & VAN THỦY LỰC ¶
Thứ tự bắt buộc trên cột đẩy: Bơm chìm → Van 1 chiều → Lọc 120 mesh → Ống trục PE16 → manifold tầng.
3.1. Cột đẩy đầu ra bơm (trong cụm hub) ¶
- Nối Van 1 chiều (Check Valve) PE16 ngay đầu ra bơm chìm — trước mọi đoạn ống ngang.
- Nối Lọc màng 120 Mesh ngay sau van 1 chiều.
- Tham chiếu bản vẽ: van + lọc trên cột đứng z 470–590 (nổi trên miệng thùng).
- Nối ống trục PE16 lên khỏi miệng thùng, băng ngang ra ngoài thùng, đổ xuống sàn → nối riser.
3.2. Tee dự phòng Multi-Rack (spare outlet) ¶
- Trên đoạn ống chính ngang (giữa hub và riser), gắn 1 tee PE16 + nắp bít đỏ hướng lên.
- Mục đích: sau này cấp thêm kệ khác — KHÔNG dựng sẵn hệ nhiều kệ.
- Kiểm tra tham chiếu bản vẽ:
spare_xnằm giữa cột đổ xuống và riser.
3.3. Trục chính + riser ¶
- Đi ống PE16 dọc sát mép sau-phải kệ (riser) từ sàn lên đỉnh Tầng 3 (
top_pipe_z ≈ 1570). - Cố định ống bằng dây rút/kẹp vào thanh kệ mỗi tầng.
3.4. Ống phân phối thẳng (manifold) mép sau mỗi tầng — ADR-012 ¶
Mỗi tầng chạy 1 ống PE16 thẳng dọc mép sau (thay cho loop kín — tiết kiệm ~6m ống):
- Cắt 1 đoạn PE16 ≈ chiều rộng kệ lùi vào ~40mm mỗi đầu (≈1.22m).
- Nối đầu góc sau-phải vào riser (nhánh ngắn ~10mm); bịt kín đầu xa bằng nắp bít.
- Gắn van tiết lưu tay (đỏ) tại đầu vào (góc sau-phải):
- Tầng 1: có van tiết lưu ✓
- Tầng 2: có van tiết lưu ✓
- Tầng 3: KHÔNG van (áp cao nhất — cấp đủ cho béc 4L/h)
- 12 béc/tầng trích TRỰC TIẾP lên ống này (xem 3.6); khi test chỉnh van tiết lưu cân lưu lượng từng tầng.
3.5. Van Anti-Siphon (đỉnh Tầng 3) ¶
- Gắn Van Anti-Siphon tại điểm cao nhất của ống PE16 Tầng 3 (cuối manifold hoặc đỉnh riser).
- Khi ngắt bơm, van tự mở hút khí phá chân không → chặn xả dồn nước T3/T2 xuống T1.
3.6. Béc tưới ¶
- Mỗi khay cắm 3 béc, chĩa xuống tâm khay:
- Tầng 1: béc 2L/h (áp mạnh nhất → béc nhỏ)
- Tầng 2: béc 3L/h
- Tầng 3: béc 4L/h (áp yếu nhất → béc lớn bù lưu lượng)
- Nối béc với ống phân phối bằng nhánh PE6mm (cắm thẳng vào ống manifold hoặc qua đầu nối PE16→PE6).
- Tổng 36 béc: 12×2L/h + 12×3L/h + 12×4L/h.
Kiểm tra: Manifold kín 2 đầu (nắp bít đầu xa + đầu nối riser) không rò. 36 béc đủ, đúng lưu lượng từng tầng, chĩa xuống tâm khay. Van/lọc đúng thứ tự đầu ra bơm.
GIAI ĐOẠN 4 — MẠCH ĐIỆN & HỘP ĐIỀU KHIỂN ¶
4.1. Đấu nối bên trong hộp điện Sino ¶
220V AC ──► Nguồn tổ ong 12V 5A
│ +12V Bus ──┬──► Tụ hóa 1000µF/25V (song song bus 12V)
│ │
│ ├──► Buck LM2596 ──► 5.0V ──► VIN ESP32
│ │
│ ├──► Phao ──► (+ Bơm chìm) ← NẾU phao ngoài
│ └──► (+ Bơm phân) cụm bơm
└── GND ──────┴──► GND chung
- Đặt ESP32, 2× MOSFET, Buck LM2596, nguồn vào hộp điện Sino chống nước (gắn cạnh kệ gần Tầng 3).
- Tụ hóa 1000µF/25V hàn song song trực tiếp tại cọc bus 12V (chống sụt áp inrush khi bơm khởi động).
4.2. MOSFET #1 — Bơm chính (GPIO26) ¶
| Điểm | Đấu |
|---|---|
| Gate | GPIO26 + trở 10kΩ pull-down → GND |
| Drain | Dây âm (−) bơm chìm 12V |
| Cọc bơm | Diode 1N4007 song song ngược cực (Anode → dây âm, Cathode → dây dương) |
4.3. MOSFET #2 — Bơm phân (GPIO27) ¶
Option B (pha tay): bỏ MOSFET #2. | Điểm | Đấu | |---|---| | Gate | GPIO27 + trở 10kΩ pull-down → GND | | Drain | Dây âm (−) bơm peristaltic 12V | | Cọc bơm | Diode 1N4007 song song ngược cực |
4.4. Nút bấm & LED ¶
- Nút bấm thủ công: giữa GPIO33 và GND (EXT0 wakeup, active LOW).
- LED trạng thái: GPIO2 (LED trên bo ESP32, không cần ngoài).
🔒 Bảo vệ bắt buộc (5 nguyên tắc):
- Phao ngắt cạn cứng nối tiếp +12V bơm chính (độc lập MCU).
- Trở 10k pull-down Gate→GND mỗi MOSFET — chống chớp bơm lúc boot/nạp code.
- Diode 1N4007 flyback tại cọc mỗi bơm — dập xung Back-EMF.
- Tụ 1000µF/25V bus 12V — chống sụt áp reset ESP32.
- Nguồn ra Buck = đúng 5.0V trước khi cắm ESP32.
Kiểm tra (quan trọng nhất):
GIAI ĐOẠN 5 — FIRMWARE & CALIBRATE DINH DƯỠNG ¶
5.1. Nạp firmware v2.0 ¶
- Lấy mã nguồn C++ từ
.project/modules/firmware.md(hoặc Master Plan §IV). - Điền thông số:
ssid/password(Wi-Fi)telegramBotToken/telegramChatIDthingspeakAPIKey— tạo channel miễn phí trên thingspeak.com → Tab API Keys → copy Write API Key (ADR-010, dashboard cloud 1 lần/ngày)- Option B (đã chọn): đặt
NUTRI_PUMP_TIME_SEC = 0→ mọi ca tưới chỉ bơm nước sạch (bỏ châm phân tự động + mixing delay, ADR-011). Nâng cấp Option A sau: mua bơm peristaltic + MOSFET #2, đổi lại8.
- Biên dịch + nạp bằng PlatformIO / Arduino IDE.
- Cấu hình mặc định chuẩn:
- Ca tưới: 6h45 (T1 slot1) & 17h00 (slot2)
- Bơm chính: 120s · Bơm phân: 8s (~15–20ml) · Mixing delay: 15s
- Chủ Nhật: Flush 180s nước sạch không châm phân
5.2. Calibrate nồng độ dinh dưỡng (Option B — pha tay) ¶
- Pha dung dịch mẹ đậm đặc ~100× vào chai 1.5–2L tối màu.
- Đổ trực tiếp một lượng nhỏ dung dịch mẹ vào bồn 50L đầy nước (bắt đầu ~15–20ml = tương đương 8s bơm của Option A).
- Bật bơm chính ~1–2 phút (hoặc khuấy tay) cho tan đều, nhúng bút TDS/EC đo — đạt EC 1.2–1.6 mS/cm (700–1000 ppm).
- Ghi lại số ml dùng cho bồn 50L → lần sau pha đúng tỷ lệ đó (lịch bù phân: quy-trinh §6.2).
5.3. Test 3 chế độ ¶
Kiểm tra cúp điện (quan trọng):
- Tắt nguồn 220V trong lúc tưới → bật lại → hệ thống KHÔNG tưới lặp lại ca đó (NVS
lastDay/lastSlotgiữ trạng thái).
GIAI ĐOẠN 6 — CHẠY THỬ TOÀN HỆ THỐNG ¶
6.1. Test tĩnh (chưa trồng) ¶
- Đổ đầy nước sạch thùng 50L.
- Chạy 1 ca tưới thủ công
/water(Option B — nước sạch, không châm phân):- Quan sát bơm chìm hút, nước lên van/lọc → riser → 3 manifold mép sau.
- 36 béc nhỏ giọt chảy đều, mỗi tầng đúng lưu lượng (T3 phải ra nước không bị nghẹt áp).
- Bơm tắt → không xả dồn nước tầng cao xuống tầng thấp (anti-siphon hoạt động).
- Chạy
/flush— nước sạch 180s, không châm phân. - Test phao: múc cạn nước → bơm ngắt ngay khi phao hạ (không cần MCU).
6.2. Test ngắt cạn + mất điện ¶
6.3. Trồng rau & vận hành ¶
- Sau khi test đạt → trồng rau vào 12 khay.
- Theo dõi độ ẩm giá thể 2–3 ngày đầu; chỉnh thời gian tưới/van tiết lưu nếu cần.
GIAI ĐOẠN 7 — BẢO TRÌ ĐỊNH KỲ ¶
| Chu kỳ | Việc cần làm |
|---|---|
| 2 tuần | Bù nước đầy thùng 50L, kiểm tra chai mẹ |
| 1 tháng | Tháo lọc 120 mesh xịt rửa sạch cặn rêu |
| Hàng tuần | Tự động Flush nước sạch 3 phút sáng Chủ Nhật (không cần làm gì) |
| Sửa chữa | Giữ nút >5s lúc cắm nguồn → Maintenance Mode (WebServer vĩnh viễn) |
| Nghẹt béc | Thay béc Non-PC (rẻ ~1.5k), không gắn van anti-drain từng béc |
XỬ LÝ SỰ CỐ THƯỜNG GẶP ¶
| Triệu chứng | Nguyên nhân khả dĩ | Xử lý |
|---|---|---|
| Bơm chính không chạy | Phao ngắt cạn hạ / chưa bấm đúng / MOSFET hỏng | Kiểm tra phao, đo Gate MOSFET |
| Bơm chớp lúc khởi động | Thiếu pull-down 10k | Hàn trở 10k Gate→GND |
| ESP32 reset khi bơm bật | Sụt áp 12V (thiếu tụ) | Hàn tụ 1000µF/25V bus 12V |
| Tầng 3 yếu/nghẹt | Lọc bẩn / béc sai lưu lượng / áp thấp | Xịt lọc, kiểm tra béc 4L/h, van tiết lưu T1/T2 |
| Tưới lặp sau cúp điện | NVS chưa ghi / lastSlot sai |
Kiểm tra prefs.putInt sau mỗi ca |
| Không nhận Telegram | Sai token/chatID, thiếu Wi-Fi | Kiểm tra cấu hình, WebServer / xem IP |
| Nước dồn T1 sau khi tắt bơm | Anti-siphon hỏng/bịt | Kiểm tra van đỉnh Tầng 3 |
Tài liệu lắp ráp tương thích Master Plan v2.0 + bản vẽ 3D plan3_final (ADR-008) + telemetry cloud ThingSpeak (ADR-010) + ống phân phối thẳng manifold (ADR-012). Mọi thay đổi mạch/thủy lực phải đối chiếu lại ADR trước khi sửa.