---
title: garden_1-lap-rap.md
url: https://share.jotbird.com/curious-courageous-crow
updated_at: 2026-08-17T03:08:58.170979+00:00
---

# 🔧 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](vat-tu.md) · **Bản vẽ:** [simulate-smart-garden.md](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
- [ ] Nạp code **Blink** cho ESP32 (xác nhận bo chạy).
- [ ] Cấp 12V qua Buck LM2596, dùng đồng hồ vạn năng **chỉnh ra đúng 5.0V** TRƯỚC khi cắm vào ESP32.
- [ ] Kích mở MOSFET bằng 3.3V từ pin/ESP32, xác nhận bơm 12V chạy/tắt đúng.

### 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ệ
1. Lắp kệ sắt V lỗ 3 tầng: cao ~1.6m, rộng ~1.3m, sâu ~0.5m.
2. 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
1. Đặt **12 khay nhựa** (~40×60cm), 4 khay/tầng, canh đều 2 bên kệ.
2. Đổ **giá thể trồng** vào khay, cao ~60mm, để lại thành khay.
3. *(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
1. Đặt thùng nhựa HDPE/PP tối màu ngoài kệ (sát mép phải).
2. 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)
1. Đặt bơm chìm 12V 15W **đáy thùng, góc sau-trái**.
2. Đấu dây nguồn bơm chạy lên miệng thùng → sau đi qua hộp điện.
3. Ố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)
1. 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).
2. 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.
3. **Đấ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)
1. Đặt chai mẹ 2L tối màu **kề cạnh thùng** (`x ≈ tank_right_x + 80`), cao ngang miệng thùng.
2. **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).
3. *(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)
1. Nối **Van 1 chiều (Check Valve) PE16** ngay đầu ra bơm chìm — trước mọi đoạn ống ngang.
2. 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).
3. 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)
1. 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ệ.
2. Kiểm tra tham chiếu bản vẽ: `spare_x` nằm giữa cột đổ xuống và riser.

### 3.3. Trục chính + riser
1. Đ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`).
2. 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):
1. Cắt 1 đoạn PE16 ≈ chiều rộng kệ lùi vào ~40mm mỗi đầu (≈1.22m).
2. 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.
3. 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)
4. 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)
1. 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).
2. 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
1. 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)
2. 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).
3. 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
```
1. Đặ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).
2. **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
1. Nút bấm thủ công: giữa **GPIO33** và **GND** (EXT0 wakeup, active LOW).
2. 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):**
> 1. Phao ngắt cạn cứng nối tiếp +12V bơm chính (độc lập MCU).
> 2. Trở 10k pull-down Gate→GND mỗi MOSFET — chống chớp bơm lúc boot/nạp code.
> 3. Diode 1N4007 flyback tại cọc mỗi bơm — dập xung Back-EMF.
> 4. Tụ 1000µF/25V bus 12V — chống sụt áp reset ESP32.
> 5. Nguồn ra Buck = đúng 5.0V trước khi cắm ESP32.

**Kiểm tra (quan trọng nhất):**
- [ ] Đo 5.0V đầu ra Buck bằng đồng hồ vạn năng — pass mới cắm ESP32.
- [ ] Pull-down: Gate MOSFET đo ~0V khi chưa cấp tín hiệu → bơm tắt.
- [ ] Kích GPIO26/27 bằng tay → bơm tương ứng chạy.
- [ ] Nút GPIO33 → đo về GND khi bấm.

---

## GIAI ĐOẠN 5 — FIRMWARE & CALIBRATE DINH DƯỠNG

### 5.1. Nạp firmware v2.0
1. Lấy mã nguồn C++ từ `.project/modules/firmware.md` (hoặc Master Plan §IV).
2. Điền thông số:
   - `ssid` / `password` (Wi-Fi)
   - `telegramBotToken` / `telegramChatID`
   - `thingspeakAPIKey` — 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ại `8`.
3. Biên dịch + nạp bằng PlatformIO / Arduino IDE.
4. 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)
1. Pha dung dịch mẹ đậm đặc ~100× vào chai 1.5–2L tối màu.
2. **Đổ 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).
3. 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)**.
4. 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ế độ
- [ ] **Tự động:** ngủ đến 6h45/17h00 → bơm **nước sạch** 120s (Option B — không châm phân) → ghi NVS → Telegram → ngủ lại.
- [ ] **WebServer:** bấm nút GPIO33 → thức dậy, mở `/` (dashboard), `/water`, `/flush`.
- [ ] **Maintenance:** giữ nút >5s lúc cắm nguồn → WebServer vĩnh viễn, không ngủ.
- [ ] **Telemetry:** sau ca tưới 17h00, mở ThingSpeak channel → có entry mới (field1..8 + status tóm tắt ca tưới).

**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`/`lastSlot` giữ 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)
1. Đổ đầy nước sạch thùng 50L.
2. 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).
3. Chạy `/flush` — nước sạch 180s, không châm phân.
4. 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
- [ ] Phao cạn → bơm chính ngắt lập tức (cứng, cơ học).
- [ ] Cúp điện giữa ca tưới → bật lại → không tưới lặp.
- [ ] NTP lỗi → ESP32 ngủ 15 phút rồi thử lại (không ngủ vĩnh viễn).

### 6.3. Trồng rau & vận hành
1. Sau khi test đạt → trồng rau vào 12 khay.
2. 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.*
