Hệ thống tưới cây tự động

Hệ thống tưới cây tự động (Smart Plant Watering): Ứng dụng Analog và Relay cho người mới bắt đầu

Độ khó: 1/5

1. Giới thiệu dự án

Nếu bạn thường xuyên đi công tác xa nhà hoặc hay “não cá vàng” quên tưới chậu cây cảnh trên bàn làm việc, thì đây chính là dự án sinh ra dành cho bạn. Hệ thống này là một ví dụ hoàn hảo về mạch điều khiển vòng kín (Closed-loop control) cơ bản: Hệ thống liên tục đo lường môi trường (độ ẩm đất), tự động ra quyết định (bật máy bơm) khi thiếu nước, và tự động dừng lại khi đất đã đủ ẩm.

Dự án có chi phí siêu rẻ, linh kiện dễ tìm và tỷ lệ thành công gần như 100%, tạo động lực rất lớn cho người mới nhập môn.

2. Danh sách linh kiện (BOM)

  • Arduino Uno (hoặc Nano): Bo mạch vi điều khiển trung tâm để nạp code và xử lý tín hiệu.
  • Cảm biến độ ẩm đất (Analog Soil Moisture Sensor): Gồm 2 phần: Một chiếc nĩa 2 chấu để cắm xuống đất và một mạch khuếch đại nhỏ (thường dùng IC LM393) để xuất tín hiệu về Arduino.
  • Module Relay 5V (1 Kênh): Đóng vai trò như một chiếc công tắc điện tử an toàn.
  • Bơm chìm mini 5V + Ống dẫn nước: Loại bơm nhỏ xíu thả chìm trực tiếp vào trong bình chứa nước.
  • Nguồn điện: Adapter 5V (như sạc điện thoại cũ) để cấp nguồn cho Arduino và máy bơm.

3. Bản chất kỹ thuật 1: Đọc tín hiệu Analog từ môi trường

Máy tính và vi điều khiển chỉ hiểu tín hiệu Digital (0 hoặc 1, tức là Tắt hoặc Bật). Nhưng độ ẩm của đất lại là một đại lượng vật lý thay đổi liên tục (từ cực khô, hơi ẩm, đến ngập nước). Làm sao Arduino hiểu được?

  • Cơ chế điện trở của đất: Chiếc nĩa 2 chấu cắm xuống đất thực chất là một điện trở biến thiên. Nước dẫn điện, nên khi đất càng ướt, điện trở giữa 2 chấu càng thấp, dòng điện truyền qua càng dễ dàng. Khi đất khô, điện trở tăng cao.
  • Bộ chuyển đổi ADC: Tín hiệu điện áp biến thiên này được đưa vào chân Analog (từ A0 đến A5) của Arduino. Chân này được tích hợp bộ chuyển đổi Analog-to-Digital Converter (ADC) độ phân giải 10-bit. Nó sẽ “băm” dải điện áp (thường từ 0-5V) thành 1024 bậc.
  • Kết quả: Arduino sẽ đọc được một con số dao động từ 0 đến 1023. Ví dụ: Đất khô ran trả về giá trị > 800. Đất ẩm ướt trả về giá trị < 300. Từ đó, bạn chỉ cần dùng lệnh if (giá trị > ngưỡng_khô) để ra quyết định tưới.

4. Bản chất kỹ thuật 2: Điều khiển tải cảm an toàn qua Relay

Sai lầm kinh điển của người mới: Cắm trực tiếp 2 dây của máy bơm 5V vào chân Digital và chân GND của Arduino. Kết quả: Cháy Arduino ngay lập tức!

  • Sự nguy hiểm của Tải cảm (Inductive Load): Động cơ máy bơm bên trong là các cuộn dây đồng. Khi hoạt động, nó ngốn dòng điện rất lớn (có thể lên tới 200mA – 500mA), trong khi một chân GPIO của Arduino chỉ chịu tối đa 20mA – 40mA. Hơn nữa, khi động cơ ngưng quay đột ngột, nó sẽ sinh ra điện áp đánh thủng ngược (Flyback voltage) làm hỏng IC.
  • Giải pháp mang tên Relay: Module Relay là cầu nối cách ly hoàn hảo. Arduino chỉ cần xuất ra một tín hiệu Digital cực nhỏ (khoảng 5mA) để kích hoạt cuộn hút nam châm điện bên trong Relay. Nam châm này sẽ hút thanh kim loại, đóng tiếp điểm để nối điện từ bộ nguồn 5V ngoài trực tiếp vào máy bơm.
  • Bằng cách này, mạch điều khiển (Arduino) và mạch công suất (Máy bơm) được cách ly vật lý hoàn toàn, đảm bảo an toàn tuyệt đối cho hệ thống.

5. Thuật toán chống “úng nước” (Watering Logic)

Viết code cho dự án này rất dễ, nhưng nếu không cẩn thận, cây của bạn sẽ bị tưới úng rễ. Cần lưu ý tư duy lập trình sau:

  • Khi đất khô, bật máy bơm.
  • Bắt buộc phải có hàm Delay (Chờ): Chỉ bật bơm trong khoảng 2 – 3 giây (tương đương 1 lượng nước nhỏ).
  • Sau khi tưới, phải tiếp tục Delay (khoảng 10 – 20 giây) để nước có thời gian ngấm dần xuống rễ cây và chạm tới cảm biến. Nếu không có độ trễ này, cảm biến chưa kịp nhận ra đất đã ướt, Arduino sẽ ra lệnh tưới liên tục làm tràn cả chậu cây.

6. Nguồn dự án tham khảo

Để xem sơ đồ cắm dây trên Breadboard chi tiết, cách lấy thông số 0-1023 chuẩn xác cho từng loại đất, và copy đoạn code mẫu đã được tối ưu, bạn hãy truy cập trực tiếp vào bài hướng dẫn gốc sau:

Hướng dẫn chi tiết trên Instructables: Arduino Automatic Watering System For Plants


Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *