garden_1

🔄 QUY TRÌNH VẬN HÀNH & BẢO TRÌ HỆ THỐNG TƯỚI RAU TỰ ĐỘNG

Dự án: garden_1 · ESP32 · Tưới + châm dinh dưỡng tự động Liên quan: vat-tu.md (vật tư) · lap-rap.md (lắp ráp) · simulate-smart-garden.md (bản vẽ) Nguồn chuẩn: .plan/plan1_final_1_final.md · .project/architecture.md · .project/patterns.md · .project/decisions.md

Mục tiêu tài liệu: hệ thống chạy trơn tru, bền >3–5 năm, điện ~5–6 mAh/ngày (đã gồm push telemetry ThingSpeak), độ tin cậy >98%. Mọi thao tác dưới đây tuân theo 4 trụ cột: tiết kiệm điện · không mòn Flash · không nghẹt béc · chống cúp điện.


1. VÒNG ĐỜI HỆ THỐNG (TỔNG QUAN)

Vận hành tự động ──► Bảo trì định kỳ ──► Phát hiện lỗi ──► Sửa chữa ──► Vận hành lại
      ▲                                    │                              │
      └────────────── Kiểm tra sau sửa ◄──┘                              │
      └────────────── Nâng cấp Phase 2 (3–6 tháng) ◄─────────────────────┘

2. CHU TRÌNH VẬN HÀNH TRONG NGÀY

2.1. Nhịp thức–ngủ (lý do chỉ ~5–6 mAh/ngày)

Thời điểm Hoạt động Năng lượng
6h45 Thức → tưới ca sáng ~phút hoạt động
17h00 Thức → tưới ca chiều + push telemetry ThingSpeak ~phút hoạt động
Giữa các ca Deep Sleep (< 10µA) ~0
Ngẫu nhiên Bấm nút GPIO33 → WebServer 3 phút ~3–5 mAh/lần bấm

Nguyên lý: ESP32 chỉ "thức" khi có việc (2 ca tưới + khi bấm nút). Toàn bộ thời gian còn lại Deep Sleep. Không có loop() chạy liên tục — mọi logic nằm trong setup() rồi ngủ. 📡 Telemetry cloud (ADR-010): trong cửa sổ ca chiều 17h00–17h25, ESP32 đẩy 1 HTTP GET/ngày lên ThingSpeak (~5–10s Wi-Fi trong lần thức đã có sẵn) → tổng tiêu thụ ~5–6 mAh/ngày, vẫn trong thiết kế. Bộ đếm (bootCount, streak lỗi...) sống trong RTC RAM — không ghi NVS thêm (giữ ADR-005 2 lần/ngày). ⚠️ Mỗi lần bấm nút mở WebServer tốn ~3–5 mAh ≈ gần bằng cả ngày ngân sách — hạn chế bấm nút, ưu tiên theo dõi qua Telegram/ThingSpeak.

2.2. Trình tự 1 ca tưới (bất biến — không đổi thứ tự)

Thức dậy (Timer/EXT0)
  │
  ├─ [Giữ nút >5s?] ─► MAINTENANCE MODE (WebServer vĩnh viễn)
  │
  ├─ [EXT0 bấm nút?] ─► WebServer 3 phút (tưới tay / xả ống)
  │
  └─ [Timer ca tưới] ─► Wi-Fi + NTP
        │  lỗi ─► ngủ 15 phút, thử lại (không ngủ vĩnh viễn)
        ▼
        Đọc NVS (lastDay, lastSlot)
        │
        ├─ [Đã tưới ca này hôm nay?] ─► ngủ đến ca sau
        │
        ├─ [Pin < ngưỡng yếu?] ─► Buzzer 5s + Telegram "PIN YẾU" + BỎ ca tưới → ngủ
        │     (chỉ khi chạy solar — Phase 2, ADR-009; dùng nguồn lưới bỏ qua)
        │
        └─ Chưa tưới ─►
              1–2. [Option A] Châm phân 8s + Mixing 15s   ← BỎ ở Option B (pha tay, ADR-011)
              3. Bơm chính 120s (Flush CN: 180s)   ← tưới 12 khay
              4. GHI NVS (lastDay, lastSlot)        ← chống cúp điện
              5. Telegram báo kết quả
              6. (Ca chiều 17h00–17h25) Push telemetry ThingSpeak 1 lần/ngày  ← ADR-010
              ▼
        Tính giây ngủ → Deep Sleep

🔒 Trật tự 2–3 là cứng (chỉ khi chạy Option A châm phân tự động): châm phân → đợi 15 giây → mới bật bơm chính. Rút ngắn 15s = phân chưa tan, khay đầu hứng đậm đặc → cháy rễ (ADR-006). 🪙 Option B (đã chọn, ADR-011): không có bước châm phân tự động — phân pha tay, đổ trực tiếp vào bồn rồi để bơm chính trộn ~1–2 phút (xem §6.2).

2.3. Ca Flush Chủ Nhật

2.4. Các chế độ vận hành

Chế độ Kích hoạt Hành vi Dùng khi
Tự động Mặc định 2 ca tưới + Flush Chủ Nhật Hằng ngày
WebServer 3 phút Bấm nút GPIO33 (EXT0) / dashboard · /water tưới 2 phút · /flush xả sạch Tưới tay, kiểm tra
Maintenance Giữ nút >5s lúc cắm nguồn WebServer vĩnh viễn, KHÔNG ngủ, không tự tưới Sửa chữa, vệ sinh
Pin yếu (solar) Áp pin < ngưỡng 11.6V Buzzer kêu + Telegram báo + BỎ ca tưới, giữ pin Cắm pin dự phòng tạm thời

3. NGUYÊN LÝ BỀN BỈ NHIỀU NĂM (4 TRỤ CỘT)

Trụ 1 — Không mòn Flash: ghi NVS đúng 2 lần/ngày

Trụ 2 — Chống cúp điện 100%

Trụ 3 — Chống nghẹt béc (điểm hỏng #1 của hệ thống tưới)

Trụ 4 — Chống rêu/muỗi & ăn mòn


4. DẤU HIỆU HỆ THỐNG HOẠT ĐỘNG ĐÚNG / SAI

Dấu hiệu Đúng Sai
Telegram mỗi ca Báo tưới thành công 2×/ngày Im lặng >1 ngày → lỗi Wi-Fi/nguồn
Béc Nhỏ giọt đều, T3 không yếu Béc khô/đầy, T3 yếu → nghẹt/van sai
Bơm chính Chạy 120s đúng giờ, êm Kêu lạ, chạy khan, không dừng
Sau khi tắt bơm Không xả dồn nước T3→T1 Có xả dồn → anti-siphon hỏng
Ngày Chủ Nhật Flush 180s không phân Không flush / có châm phân
Cúp điện Bật lại không tưới lặp Tưới lặp → NVS lỗi
ThingSpeak Data mới mỗi ngày (biểu đồ/status cập nhật) Không có data >1–2 ngày → lỗi Wi-Fi/API key/nguồn
Điện năng ~5–6 mAh/ngày (đã gồm push telemetry) Tiêu hao cao → chưa Deep Sleep

5. LỊCH BẢO TRÌ ĐỊNH KỲ

Hàng ngày (kiểm tra nhanh, ~1 phút)

Hàng tuần

2 tuần/lần

1 tháng/lần

3 tháng/lần (quý)

6 tháng / 1 năm


6. QUY TRÌNH TỪNG HẠNG MỤC BẢO TRÌ

6.1. Vệ sinh lọc 120 mesh (1 tháng)

  1. Tắt nguồn 220V (hoặc cúp bơm).
  2. Xoáy mở nắp lọc, lấy lưới ra.
  3. Xịt nước sạch rửa cặn/rêu cả 2 mặt lưới.
  4. Lắp lại, xiết kín, mở nguồn, chạy /flush 1 lần kiểm tra.

6.2. Bù nước & duy trì dinh dưỡng

  1. Bù nước sạch đầy thùng 50L (luôn để nước ngập đầu hút bơm).
  2. Kiểm tra chai mẹ: còn ~1/3 thì pha lại dung dịch đậm đặc mới.
  3. Khi bồn bị pha loãng sau nhiều lần bù nước → bù phân tay (Option B): đổ dung dịch mẹ trực tiếp vào bồn theo tỷ lệ đã calibrate (lap-rap §5.2), để bơm chính trộn ~1–2 phút rồi đo EC.
  4. Duy trì EC 1.2–1.6 mS/cm — chỉnh thời gian châm trong code nếu lệch nhiều.

6.3. Vệ sinh thùng & chống muỗi (3–6 tháng)

  1. Vào Maintenance Mode (giữ nút >5s lúc cắm nguồn).
  2. Tắt nguồn, tháo bơm chìm + phao, đổ bớt nước.
  3. Cọ rửa thành thùng bằng bàn chải mềm (không dùng hóa chất độc hại rau).
  4. Rửa lồng PVC, kiểm tra phao.
  5. Lắp lại, đổ nước sạch, bù dinh dưỡng, thoát Maintenance (reset tay).

6.4. Thay béc nghẹt (khi cần)

  1. Maintenance Mode → tắt nguồn.
  2. Rút béc Non-PC cũ khỏi ống PE6.
  3. Cắm béc mới đúng lưu lượng tầng (T1=2L/h, T2=3L/h, T3=4L/h).
  4. Mở nguồn, chạy /flush kiểm tra.

7. CHẨN ĐOÁN & SỬA CHỮA SỰ CỐ

Quy trình chung: ① Xác định triệu chứng → ② Cô lập phân đoạn (điện / thủy lực / firmware) → ③ Sửa → ④ Test → ⑤ Vận hành lại.

7.1. Bảng sự cố nhanh

Triệu chứng Phân đoạn Nguyên nhân Xử lý
Không nhận Telegram Firmware/nguồn Mất Wi-Fi, sai token, ESP32 chết Kiểm tra nguồn 5V Buck, WebServer / xem IP, thử lại token
Bơm chính không chạy Điện Phao cạn ngắt, MOSFET hỏng, pull-down đứt Kiểm tra phao (nhấc lên/xuống), đo Gate MOSFET, đo 12V đầu ra
Bơm chớp lúc boot Điện Thiếu pull-down 10k Gate→GND Hàn trở 10k
ESP32 reset khi bơm bật Điện Sụt áp 12V (thiếu tụ 1000µF) Hàn tụ song song bus 12V
Tưới lặp sau cúp điện Firmware NVS chưa ghi đúng, lastDay/lastSlot sai Kiểm tra prefs.putInt sau ca tưới
Béc tầng 3 khô/yếu Thủy lực Lọc bẩn, béc sai lưu lượng, van tiết lưu T1/T2 đóng hết Vệ sinh lọc, kiểm tra béc 4L/h, mở van tiết lưu
Nước dồn T1 sau tắt bơm Thủy lực Anti-siphon kẹt/bịt Kiểm tra van đỉnh T3
Bơm chạy nhưng không lên nước Thủy lực Mất mồi (van 1 chiều hỏng), lọc nghẹt cứng Kiểm tra van 1 chiều đầu bơm, xả khí
Peristaltic không hút phân Thủy lực Ống hút rời, tắc, chai cạn Kiểm tra ống hút chìm đáy chai, vệ sinh
Tiêu hao điện cao Firmware Chưa Deep Sleep, ngủ ngắn liên tục Kiểm tra wakeup cause, tính giây ngủ
Không có data mới trên ThingSpeak Firmware/cloud Chưa tới 17h00, Wi-Fi fail, sai Write API Key, push fail Xác minh API key, kiểm tra Telegram/RSSI, xem log [TELEMETRY] qua Serial
ESP32 nóng/kêu Điện Buck sai áp, MOSFET kẹt ON Đo 5.0V, đo nhiệt, thay linh kiện
Bỏ ca tưới + buzzer kêu Điện Pin yếu (ngưỡng 11.6V) Cắm pin dự phòng tạm thời, kiểm tra solar sạc

7.2. Quy trình cô lập lỗi nhanh

  1. Maintenance Mode → có WebServer?
    • Không → lỗi nguồn/ESP32 (đo 5.0V Buck, kiểm tra nạp lại code).
    • Có → bước 2.
  2. Mở /flush → bơm chính chạy?
    • Không → lỗi điện bơm (phao/MOSFET/đấu dây).
    • Có → bước 3.
  3. Mở /water → peristaltic + bơm chính?
    • Peristaltic không chạy → lỗi MOSFET #2/GPIO27.
    • Chạy nhưng béc không ra → lỗi thủy lực (lọc/van/ống phân phối/béc).
  4. Kiểm tra Telegram → firmware gửi OK?

7.3. Sửa firmware (lỗi logic)

7.4. Rollback an toàn


8. NÂNG CẤP PHASE 2 (SAU 3–6 THÁNG, TÙY CHỌN)

Nguyên tắc: chỉ thêm khi hệ thống vận hành ổn định. Mỗi cảm biến mới = 1 điểm hỏng tiềm năng (ADR-007). 📊 Dashboard cloud + lịch sử telemetry ĐÃ CÓ từ Phase 1 (ThingSpeak, ADR-010) — không nằm trong danh sách nâng cấp dưới đây.

8.1. Nguồn năng lượng mặt trời + cảnh báo hết pin (ưu tiên #1)

Yêu cầu user: ESP32 chạy bằng năng lượng mặt trời; khi hết pin phải BÁO KÊU để người lắp pin dự phòng tạm thời.

Hạ tầng nguồn (ADR-009):

Luồng bảo vệ pin (đã chốt — phương án A, user duyệt):

  1. Trước mỗi ca tưới, ESP32 đo áp pin qua ADC (cầu chia áp).
  2. Pin < ngưỡng yếu (3S ≈ 11.6V) → buzzer kêu ~5s + Telegram "⚠ PIN YẾU — cắm pin dự phòng" + BỎ QUA ca tưới, ngủ tiếp.
  3. Pin < ngưỡng nguy hiểm (≈ 11.0V) → ngừng mọi hoạt động, ngủ sâu nhất (bảo vệ pin khỏi xả sâu — pin chết hẳn thì không còn gì báo).
  4. Người lắp pin dự phòng tạm thời → ESP32 thức kế tiếp đo áp đủ → tự phục hồi bình thường.

🔒 Quyết định đã chốt: pin yếu = BỎ ca tưới, không cố tưới hết pin. Rau chịu khô vài ngày, pin chết vĩnh viễn thì hệ thống tê liệt. (ADR-009)

Nhu cầu công suất (rất nhỏ): tưới 2 ca × 120s × 15W ≈ 1 Wh/ngày + ESP32 ~5 mAh → pin 3S 5000mAh (~55Wh) đủ chạy > 30 ngày không nắng. Panel 20W dư sức.

8.2. Bảng ưu tiên nâng cấp

Ưu tiên Nâng cấp Lợi ích Điều kiện
1 Nguồn solar + báo pin yếu Tự chủ năng lượng, biết khi cần thay pin Panel/sạc/pin/buzzer + ADC chia áp
2 Cảm biến mực nước bình Báo "bình cạn" cho người (khỏi canh lịch 2 tuần) Điện cực/phao mức + 1 GPIO
3 DHT22 (nhiệt/ẩm không khí) Điều chỉnh thời gian tưới theo mùa Có sẵn chân GPIO
4 OTA update Nạp firmware qua Wi-Fi, không tháo hộp Cần bổ sung thư viện + route
5 INA219 (dòng) Phát hiện bơm kẹt/chạy khan Thêm vào bước đọc trước khi tưới
Camera / EC-pH Tuỳ nhu cầu Để vị trí trống trên kệ (đã chừa trong bản vẽ)

Trước khi nâng cấp: đối chiếu ADR (decisions.md) tránh vi phạm quyết định cũ. Sau khi thay đổi: cập nhật .project/ + working.md + state.md.


9. AN TOÀN & KHÓA AN TOÀN (TUYỆT ĐỐI KHÔNG BỎ)

  1. Phao ngắt cạn cứng nối tiếp +12V bơm chính — độc lập 100% MCU. Cạn nước = ngắt điện bơm tức thì.
  2. Bảo vệ MOSFET: trở 10k pull-down Gate→GND, diode 1N4007 flyback tại cọc bơm, tụ 1000µF/25V bus 12V.
  3. Bơm châm phân dùng peristaltic — KHÔNG dùng Venturi (đã chứng minh liệt với bơm áp thấp 12V, ADR-003).
  4. Mixing delay 15s sau châm phân trước khi bật bơm chính — KHÔNG rút ngắn.
  5. Ghi NVS 2 lần/ngày — KHÔNG ghi nhiều hơn (bảo vệ Flash 136 năm).
  6. Thao tác điện: ngắt 220V trước khi đụng dây. Đo 5.0V Buck trước khi cắm ESP32.
  7. Nước + điện: hộp điện kín, đấu nối ngoài trời có gen nhiệt, thùng đậy kín chống rêu/muỗi.
  8. Bảo vệ pin (solar, Phase 2 — ADR-009): pin yếu = bỏ ca tưới, giữ pin; mạch chống xả sâu cứng. Buzzer báo TRƯỚC ngưỡng chết pin.

Tài liệu vận hành tuân thủ Master Plan v2.0 + ADR-001→012. Mọi thay đổi quy trình/thiết kế phải cập nhật .project/ và đối chiếu ADR.

JotBird Logo
Published with JotBird