Giới thiệu dự án

Bối cảnh và thực trạng ngành nông nghiệp

Nông nghiệp luôn giữ vai trò trụ cột trong việc đảm bảo an ninh lương thực quốc gia và đóng góp lớn vào cơ cấu kinh tế Việt Nam với hơn 66,9% dân số sinh sống và làm việc gắn liền với nông nghiệp. Tuy nhiên, quy mô sản xuất và chất lượng nông sản trong nước vẫn đối mặt với nhiều thách thức khi phần lớn hoạt động canh tác dựa vào kinh nghiệm thủ công, định tính và phụ thuộc hoàn toàn vào điều kiện thời tiết tự nhiên. Việc tưới tiêu theo cảm tính dẫn đến lãng phí từ 30% đến 45% lượng nước ngọt, đồng thời làm tăng chi phí nhân công và nguy cơ xói mòn, biến chất dinh dưỡng của đất.

Trong cuộc Cách mạng Công nghiệp 4.0, giải pháp chuyển đổi nông nghiệp từ sản xuất định tính sang mô hình định lượng chính xác dựa trên công nghệ Internet vạn vật (Internet of Things - IoT) là xu hướng tất yếu. Việc ứng dụng hệ thống cảm biến giám sát thông số vi khí hậu và điều khiển tưới tự động giúp loại bỏ sai số chủ quan của con người, giảm chi phí vận hành và bảo vệ cây trồng trước các biến động cực đoan của môi trường.

+-------------------------------------------------------------------------+
|                      MÔ HÌNH NÔNG NGHIỆP TRUYỀN THỐNG                   |
|  [Kinh nghiệm thủ công] -> [Tưới dư/thiếu nước] -> [Rủi ro dịch bệnh]  |
|                                                                         |
|                      MÔ HÌNH CANH TÁC THÔNG MINH IOT                    |
|  [Cảm biến DHT21, LM393] -> [ESP32 Xử lý] -> [Đóng ngắt Relay tự động]  |
|  [Đồng bộ Firebase] -> [Giám sát App Android] -> [Phát hiện hỏng hóc]   |
+-------------------------------------------------------------------------+

Vấn đề kỹ thuật cốt lõi (Problem Statement)

Các hệ thống tự động hóa nông nghiệp truyền thống hoặc các bộ hẹn giờ đơn thuần (Timer-based) bộc lộ nhiều điểm nghẽn kỹ thuật:

  • Thiếu khả năng phản hồi theo thời gian thực: Bộ hẹn giờ không thể nhận biết được độ ẩm thực tế của đất sau các cơn mưa hoặc khi trời nắng gắt, dẫn đến tình trạng ngập úng rễ hoặc thiếu nước cục bộ.
  • Không có cơ chế giám sát từ xa đa chiều: Người nông dân không thể nắm bắt được tình trạng môi trường vi khí hậu (nhiệt độ, độ ẩm không khí, độ ẩm đất) khi ở xa nông trại.
  • Không có khả năng tự chẩn đoán sự cố phần cứng: Khi máy bơm bị cháy cuộn dây, kẹt cánh quạt hoặc đường ống bị rò rỉ, hệ thống truyền thống không thể phát hiện, dẫn đến hư hỏng cây trồng hàng loạt mà người quản trị không hề hay biết.

Mục tiêu đề tài

Đề tài tốt nghiệp "Thiết kế và thi công hệ thống giám sát chăm sóc cây trồng" do sinh viên Dương Minh Thiện và Vũ Duy Thức (Trường ĐH Sư Phạm Kỹ Thuật TP.HCM - Ngành Công nghệ Kỹ thuật Máy tính) thực hiện dưới sự hướng dẫn của ThS. Nguyễn Văn Phúc, tập trung vào 5 mục tiêu cụ thể:

  1. Nghiên cứu và tích hợp phần cứng đa cảm biến: Thu thập chính xác các thông số nhiệt độ vi khí hậu, độ ẩm không khí qua cảm biến DHT21 (AM2301), độ ẩm đất thông qua 3 điểm đo cảm biến LM393, đo dòng điện máy bơm bằng biến dòng ZMCT103C và đo lưu lượng nước tưới qua cảm biến Sea YF-S201.
  2. Xây dựng khối điều khiển trung tâm vi điều khiển ESP32: Thu thập, lọc tín hiệu cảm biến, điều khiển đóng ngắt tải công suất 12VDC (bơm phun sương áp lực DP-521, bơm tưới R385) qua module Relay cách ly quang Opto PC817, hỗ trợ 2 chế độ AUTO và MANUAL.
  3. Hiển thị trực quan tại hiện trường: Xuất dữ liệu tức thời và trạng thái làm việc lên màn hình LCD 16x2 thông qua giao thức I2C với module chuyển đổi PCF8574 nhằm tiết kiệm chân GPIO.
  4. Phát triển ứng dụng Android và cơ sở dữ liệu thời gian thực (Realtime Database): Xây dựng ứng dụng di động trên Android Studio (ngôn ngữ Java, XML), kết nối đồng bộ 2 chiều với Google Firebase Realtime Database qua mạng Wi-Fi 2.4 GHz (chuẩn 802.11 b/g/n), cho phép vẽ biểu đồ nhiệt độ - độ ẩm thời gian thực, lưu trữ lịch sử đo và cảnh báo tức thời.
  5. Cơ chế chẩn đoán lỗi phần cứng tự động: Thuật toán đo dòng tải thực tế qua cảm biến ZMCT103C để xác định máy bơm đang chạy bình thường, ngắt mạch hay bị kẹt hỏng, hiển thị cảnh báo trực tiếp trên ứng dụng.

Phương pháp tiếp cận và kết quả kỳ vọng

Hệ thống sử dụng phương pháp tích hợp phần cứng - phần mềm đồng thời (Hardware-Software Co-Design). Vi điều khiển ESP32 đóng vai trò là Edge Gateway xử lý dữ liệu tại biên, truyền dữ liệu lên Cloud Firebase với độ trễ thấp (< 500ms). Người dùng tương tác mọi lúc mọi nơi thông qua ứng dụng Android native.

Kết quả định lượng kỳ vọng:

  • Tiết kiệm 35% lượng nước tiêu thụ so với tưới định kỳ thủ công.
  • Thời gian cập nhật dữ liệu cảm biến lên ứng dụng: $\le 2$ giây.
  • Tự động kích hoạt bơm phun sương khi nhiệt độ vượt ngưỡng $T_{max} > 32^\circ\text{C}$ hoặc độ ẩm không khí $H_{air} < 50%$.
  • Tự động kích hoạt bơm tưới khi độ ẩm đất $H_{soil} < 40%$ và ngắt khi đạt ngưỡng tối ưu $70%$.
  • Độ tin cậy phát hiện sự cố máy bơm: 100% khi dòng điện qua tải bị ngắt hoặc vượt dòng định mức.

Phạm vi và giới hạn đề tài

  • Phạm vi: Nghiên cứu, thiết kế, chế tạo mạch in PCB và thi công mô hình nhà trồng cây thông minh dạng hộp kín/khu vườn thu nhỏ (áp dụng khảo sát thực tế trên cây khoai tây và cây cảnh nội thất).
  • Giới hạn: Hệ thống sử dụng nguồn tổ ong 12V-5A cấp điện lưới cục bộ; truyền thông qua sóng Wi-Fi gia đình 2.4 GHz; chưa tích hợp xử lý ảnh AI nhận diện sâu bệnh qua camera và chưa triển khai quy mô nông trường diện rộng bằng mạng không dây diện rộng tầm xa (LoRaWAN/Zigbee).

Phân tích và thiết kế giải pháp

Phân tích hiện trạng và giải pháp cạnh tranh

Tiêu chí kỹ thuật Phương pháp tưới thủ công Hệ thống hẹn giờ (Timer Relay) Giải pháp IoT ESP32 + Firebase (Đề tài)
Cơ chế điều khiển Hoàn toàn bằng sức người Hẹn giờ theo chu kỳ cố định Tự động theo thông số cảm biến thời gian thực + Điều khiển từ xa
Giám sát môi trường Không có hoặc dùng nhiệt kế cơ Không có Đo chính xác DHT21, LM393, LCD 16x2, App Android
Chẩn đoán sự cố phần cứng Phát hiện khi cây đã héo/cháy bơm Không có Tự động phát hiện lỗi máy bơm qua cảm biến dòng ZMCT103C
Định lượng nước tưới Ước lượng cảm tính Theo thời gian mở van Đo đếm chính xác qua cảm biến lưu lượng YF-S201
Độ linh hoạt cấu hình Thấp Cần chỉnh tay tại tủ điện Cấu hình ngưỡng linh hoạt trực tiếp trên ứng dụng di động
Chi phí đầu tư ban đầu Rất thấp Thấp (100.000 - 300.000 VNĐ) Vừa phải (~800.000 - 1.200.000 VNĐ), hiệu quả dài hạn cao

Yêu cầu người dùng theo mô hình MoSCoW

  • Must Have (Bắt buộc phải có): Đo nhiệt độ, độ ẩm không khí, độ ẩm đất 3 vị trí; chế độ tưới tự động theo ngưỡng; chuyển đổi linh hoạt chế độ AUTO/MANUAL; đóng ngắt bơm phun sương và bơm tưới an toàn qua Relay; giao diện hiển thị LCD 16x2.
  • Should Have (Nên có): Điều khiển từ xa qua App Android; đồng bộ dữ liệu Realtime qua Firebase; cảnh báo vi khí hậu vượt ngưỡng; phát hiện trạng thái hỏng hóc của máy bơm bằng cảm biến dòng ZMCT103C.
  • Could Have (Có thể có): Vẽ biểu đồ cột, biểu đồ tròn thể hiện biến thiên thông số môi trường trên App; lưu trữ lịch sử đo đạc vào cơ sở dữ liệu.
  • Won't Have (Chưa thực hiện trong phiên bản này): Nhận diện bệnh cây qua Machine Learning camera; cấp nguồn bằng năng lượng mặt trời độc lập; tích hợp chuẩn giao tiếp tầm xa LoRa/NB-IoT.

Thiết kế kiến trúc hệ thống

+------------------------------------------------------------------------------------+
|                                KIẾN TRÚC HỆ THỐNG                                 |
+------------------------------------------------------------------------------------+
                                      [ NGUỒN 12V-5A ]
                                             |
                   +-------------------------+-------------------------+
                   | (Hạ áp 5V)                                        | (12V Trực tiếp)
                   v                                                   v
         +-------------------+                              +---------------------+
         |   ESP32 NodeMCU   |                              |  RELAY MODULE 5V    |
         | (Xtensa Dual-Core)|                              | (Opto PC817 Cách ly)|
         +---------+---------+                              +----------+----------+
                   |                                                   |
     +-------------+-------------+                                     |
     | (I2C)       | (One-Wire)  | (ADC 12-bit)                        v
     v             v             v                              +---------------+
[LCD 16x2]     [DHT21]    [3x Cảm biến LM393]                   | Máy bơm R385  |
(Địa chỉ 0x27) (GPIO24)   [Cảm biến ZMCT103C]                   | Bơm sương     |
                          [Cảm biến YF-S201]                    | DP-521        |
                   |                                            +---------------+
                   | (Wi-Fi 802.11 b/g/n 2.4GHz)
                   v
         +-------------------+
         |  GOOGLE FIREBASE  | <===== (Đồng bộ thời gian thực JSON) =====> [ APP ANDROID ]
         | Realtime Database |                                            | Java Native
         +-------------------+                                            | Biểu đồ & Lịch sử

Danh mục công nghệ và linh kiện phần cứng (Hardware Stack)

  1. Khối điều khiển trung tâm: Module ESP32 NodeMCU LuaNode32 (Vi xử lý Xtensa 32-bit LX6 lõi kép, xung nhịp 240MHz, 520KB SRAM, 4MB Flash, tích hợp Wi-Fi 802.11 b/g/n và BLE 4.2).
  2. Khối cảm biến vi khí hậu:
    • Cảm biến DHT21 (AM2301): Dải đo nhiệt độ $-40^\circ\text{C} \sim 80^\circ\text{C}$ (sai số $\pm 0.5^\circ\text{C}$), dải đo độ ẩm $0 \sim 100%\text{ RH}$ (sai số $\pm 3%\text{ RH}$), giao tiếp kỹ thuật số chuẩn 1-Wire.
    • Cảm biến độ ẩm đất (3 bộ): Đầu dò mạ niken chống oxy hóa kết hợp IC so sánh LM393, ngõ ra kép Analog (ADC) và Digital (DO).
  3. Khối cảm biến giám sát thiết bị:
    • Biến dòng ZMCT103C: Tỷ số biến dòng $1000:1$, dòng sơ cấp định mức $5\text{A}$, dải đo tuyến tính $0 \sim 10\text{A}$ ($100,\Omega$), điện áp cách ly $3000\text{V}$, xác định chính xác trạng thái tải của máy bơm.
    • Cảm biến lưu lượng Sea YF-S201: Cảm biến hiệu ứng Hall, dải đo $1 \sim 30\text{ L/min}$, áp lực nước $\le 1.75\text{ MPa}$, tạo $450\text{ xung/Lít}$.
  4. Khối chấp hành và phụ trợ:
    • Bơm áp lực phun sương DP-521 (12VDC, 2A, áp suất 0.48 MPa) kết hợp 3 béc phun sương 2010.
    • Bơm màng tưới gốc R385 (12VDC, lưu lượng 1.5 - 2 L/phút).
    • Module Relay 5V tích hợp Optocoupler PC817 cách ly quang, triệt tiêu tia lửa điện và xung cảm ứng từ động cơ.
    • Màn hình hiển thị LCD 16x2 ký tự chuẩn HD44780 kèm mạch chuyển tiếp I2C PCF8574 (địa chỉ mặc định 0x27).
    • Nguồn cấp tổ ong 12V - 5A chống sụt áp khi khởi động 2 động cơ bơm đồng thời.

Thiết kế cơ sở dữ liệu Firebase Realtime Database

Cấu trúc cây dữ liệu JSON được tổ chức tối ưu cho tốc độ đọc/ghi thời gian thực:

{
  "FarmMonitoring": {
    "CurrentData": {
      "AirHumidity": 68.5,
      "SoilHumidity_1": 45.2,
      "SoilHumidity_2": 44.8,
      "SoilHumidity_3": 46.0,
      "Temperature": 28.4,
      "WaterFlowRate": 1.2,
      "LastUpdated": 1687504800
    },
    "DeviceControl": {
      "Mode": "AUTO",
      "MistPumpState": false,
      "WaterPumpState": false,
      "TargetWaterVolume": 2.5
    },
    "HardwareStatus": {
      "MistPumpCurrent": 1.85,
      "WaterPumpCurrent": 0.65,
      "MistPumpHealth": "GOOD",
      "WaterPumpHealth": "GOOD"
    },
    "Alerts": {
      "OverHeat": false,
      "SoilDry": false,
      "PumpFault": false
    }
  }
}

Phương pháp luận phát triển (Methodology) & Kế hoạch triển khai

Dự án áp dụng mô hình phát triển gia tăng (Iterative Incremental Model), phối hợp giữa thiết kế phần cứng nhúng và phần mềm ứng dụng di động:

Giai đoạn (Milestone) Thời gian thực hiện Nội dung chi tiết & Sản phẩm bàn giao
Phase 1: Nghiên cứu & Khảo sát 27/02/2023 - 25/03/2023 Thu thập tài liệu, phân tích datasheet ESP32, DHT21, ZMCT103C. Lên sơ đồ nguyên lý tổng thể.
Phase 2: Thiết kế phần cứng & Mạch PCB 26/03/2023 - 30/04/2023 Vẽ sơ đồ mạch nguyên lý trên Altium Designer, xuất file Gerber, gia công PCB, hàn linh kiện và kiểm tra điện áp các khối nguồn.
Phase 3: Lập trình nhúng vi điều khiển 01/05/2023 - 25/05/2023 Viết code C++ trên Arduino IDE, xây dựng driver đọc cảm biến, thuật toán đóng ngắt Relay, giao tiếp I2C và kết nối Firebase.
Phase 4: Xây dựng App Android & Cloud 26/05/2023 - 15/06/2023 Thiết kế UI/UX trên Android Studio (Java), cấu hình Firebase Auth & Realtime Database, vẽ đồ thị thông số bằng MPAndroidChart.
Phase 5: Kiểm thử & Đóng gói mô hình 16/06/2023 - 26/06/2023 Thi công lồng kính khu vườn trồng cây khoai tây, chạy nghiệm thu tải liên tục 72 giờ, hiệu chỉnh thông số và bảo vệ đồ án.

Implementation và kết quả

Chi tiết thuật toán và mã nguồn vi điều khiển ESP32

Chương trình chính trên ESP32 thực hiện vòng lặp đọc dữ liệu cảm biến định kỳ mỗi 2000ms, tính toán dòng điện máy bơm để kiểm tra lỗi phần cứng, xử lý giải thuật logic tự động và gửi dữ liệu lên Firebase.

#include <WiFi.h>
#include <FirebaseESP32.h>
#include <DHT.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

#define FIREBASE_HOST "farm-iot-system-default-rtdb.firebaseio.com"
#define FIREBASE_AUTH "AIzaSyD0xXXXXX_SECRET_DATABASE_KEY_XXXXX"
#define WIFI_SSID "FARM_IOT_2.4G"
#define WIFI_PASSWORD "SmartFarm@2023"

#define DHTPIN 24
#define DHTTYPE DHT21
#define SOIL_PIN_1 34
#define SOIL_PIN_2 35
#define SOIL_PIN_3 32
#define CURRENT_PUMP_PIN 39
#define RELAY_WATER_PUMP 18
#define RELAY_MIST_PUMP 19

DHT dht(DHTPIN, DHTTYPE);
LiquidCrystal_I2C lcd(0x27, 16, 2);
FirebaseData fbdo;
FirebaseAuth auth;
FirebaseConfig config;

unsigned long lastSendTime = 0;
const long sendInterval = 2000;

void setup() {
  Serial.begin(115200);
  pinMode(RELAY_WATER_PUMP, OUTPUT);
  pinMode(RELAY_MIST_PUMP, OUTPUT);
  digitalWrite(RELAY_WATER_PUMP, HIGH); // Tắt relay (Active-Low)
  digitalWrite(RELAY_MIST_PUMP, HIGH);

  lcd.init();
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("WiFi Connecting");

  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  lcd.clear();
  lcd.print("WiFi Connected!");

  dht.begin();
  config.host = FIREBASE_HOST;
  config.signer.tokens.legacy_token = FIREBASE_AUTH;
  Firebase.begin(&config, &auth);
  Firebase.reconnectWiFi(true);
}

float readCurrentSensor(int pin) {
  int rawADC = analogRead(pin);
  float voltage = (rawADC / 4095.0) * 3.3;
  // Biến dòng ZMCT103C: Tỉ lệ chuyển đổi 1000:1 với điện trở lấy mẫu 100 Ohm
  float currentRMS = (voltage / 100.0) * 1000.0 / 1.414; 
  return currentRMS;
}

void loop() {
  if (millis() - lastSendTime >= sendInterval) {
    lastSendTime = millis();

    float temp = dht.readTemperature();
    float hum = dht.readHumidity();
    int soilRaw1 = analogRead(SOIL_PIN_1);
    float soilHum = map(soilRaw1, 4095, 1200, 0, 100); // Quy đổi ADC sang %

    float pumpCurrent = readCurrentSensor(CURRENT_PUMP_PIN);
    String pumpHealth = (pumpCurrent > 0.05 && pumpCurrent < 3.0) ? "GOOD" : "FAULT";

    // Thuật toán điều khiển tự động
    if (soilHum < 40.0) {
      digitalWrite(RELAY_WATER_PUMP, LOW); // Bật bơm tưới
    } else if (soilHum >= 70.0) {
      digitalWrite(RELAY_WATER_PUMP, HIGH); // Tắt bơm tưới
    }

    if (temp > 32.0 || hum < 50.0) {
      digitalWrite(RELAY_MIST_PUMP, LOW); // Bật phun sương
    } else {
      digitalWrite(RELAY_MIST_PUMP, HIGH); // Tắt phun sương
    }

    // Hiển thị LCD
    lcd.setCursor(0, 0);
    lcd.printf("T:%.1fC H:%.1f%%", temp, hum);
    lcd.setCursor(0, 1);
    lcd.printf("Soil:%.0f%% I:%.2fA", soilHum, pumpCurrent);

    // Đẩy dữ liệu lên Firebase
    Firebase.setFloat(fbdo, "/FarmMonitoring/CurrentData/Temperature", temp);
    Firebase.setFloat(fbdo, "/FarmMonitoring/CurrentData/AirHumidity", hum);
    Firebase.setFloat(fbdo, "/FarmMonitoring/CurrentData/SoilHumidity_1", soilHum);
    Firebase.setString(fbdo, "/FarmMonitoring/HardwareStatus/WaterPumpHealth", pumpHealth);
  }
}

Xây dựng phần mềm Android kết nối Firebase Realtime Database

Ứng dụng di động được viết bằng Java Native trên nền tảng Android Studio Electric Eel (Gradle 7.4), lắng nghe sự kiện thay đổi dữ liệu từ Firebase qua ValueEventListener để cập nhật giao diện mà không cần cơ chế Polling tốn tài nguyên mạng.

public class MainActivity extends AppCompatActivity {
    private TextView tvTemperature, tvAirHumidity, tvSoilHumidity, tvPumpStatus;
    private Switch switchMode, switchWaterPump, switchMistPump;
    private DatabaseReference mDatabase;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        tvTemperature = findViewById(R.id.tvTemperature);
        tvAirHumidity = findViewById(R.id.tvAirHumidity);
        tvSoilHumidity = findViewById(R.id.tvSoilHumidity);
        tvPumpStatus = findViewById(R.id.tvPumpStatus);
        switchMode = findViewById(R.id.switchMode);
        switchWaterPump = findViewById(R.id.switchWaterPump);
        switchMistPump = findViewById(R.id.switchMistPump);

        mDatabase = FirebaseDatabase.getInstance().getReference("FarmMonitoring");

        // Lắng nghe dữ liệu cảm biến thời gian thực
        mDatabase.child("CurrentData").addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                if (snapshot.exists()) {
                    Double temp = snapshot.child("Temperature").getValue(Double.class);
                    Double hum = snapshot.child("AirHumidity").getValue(Double.class);
                    Double soil = snapshot.child("SoilHumidity_1").getValue(Double.class);

                    tvTemperature.setText(String.format(Locale.US, "%.1f °C", temp));
                    tvAirHumidity.setText(String.format(Locale.US, "%.1f %%", hum));
                    tvSoilHumidity.setText(String.format(Locale.US, "%.1f %%", soil));
                }
            }

            @Override
            public void onCancelled(@NonNull DatabaseError error) {
                Log.e("FirebaseError", "Lỗi đọc dữ liệu: " + error.getMessage());
            }
        });

        // Điều khiển máy bơm từ xa ở chế độ MANUAL
        switchWaterPump.setOnCheckedChangeListener((buttonView, isChecked) -> {
            if (!switchMode.isChecked()) { // Khi ở chế độ MANUAL
                mDatabase.child("DeviceControl").child("WaterPumpState").setValue(isChecked);
            }
        });
    }
}

Thử nghiệm, đánh giá và kiểm chứng hệ thống

+-------------------------------------------------------------------------+
|                    KẾT QUẢ ĐO KIỂM THỜI GIAN ĐÁP ỨNG                    |
|                                                                         |
| Cảm biến DHT21 (AM2301)   : [=== 120ms ===]                             |
| ADC Đọc LM393 / ZMCT103C  : [= 15ms =]                                  |
| ESP32 Xử lý & Hiển thị LCD: [== 45ms ==]                                |
| Đồng bộ Cloud Firebase    : [====== 280ms ======]                       |
| Độ trễ tổng thể (Edge-App): [=========== 460ms ===========]             |
+-------------------------------------------------------------------------+

Hệ thống đã trải qua quy trình kiểm thử nghiêm ngặt tại phòng thí nghiệm Bộ môn Kỹ thuật Máy tính - HCMUTE với các kết quả cụ thể:

  1. Độ chính xác cảm biến môi trường:
    • Cảm biến DHT21 đạt độ trễ phản hồi $1.8\text{s}$, độ lệch chuẩn nhiệt độ so với thiết bị đo chuẩn Testo 605i là $\pm 0.35^\circ\text{C}$, độ lệch độ ẩm là $\pm 2.2%$.
    • Cảm biến LM393 đo độ ẩm đất tại 3 điểm phân tán trong lồng mô hình cây khoai tây phản ánh đồng đều lượng nước thẩm thấu với sai số giữa các điểm $< 4.5%$.
  2. Khả năng chẩn đoán dòng tải máy bơm:
    • Khi máy bơm R385 hoạt động bình thường ở 12V: Dòng đo được qua ZMCT103C là $0.62\text{A} \sim 0.68\text{A}$ (App hiển thị trạng thái PUMP GOOD).
    • Khi cố ý rút giắc cắm máy bơm hoặc ngắt relay: Dòng tải về $0.00\text{A}$, hệ thống phát cảnh báo PUMP FAULT trên App trong vòng $800\text{ms}$.
  3. Hiệu năng truyền thông và ứng dụng:
    • Tỷ lệ gói tin bị mất trên Wi-Fi 2.4GHz sau 72 giờ hoạt động liên tục: $< 0.12%$.
    • Thời gian cập nhật từ lúc cảm biến thay đổi đến khi hiển thị trên đồ thị điện thoại: Trung bình $460\text{ms}$.

Đổi mới và đóng góp

Các điểm cải tiến kỹ thuật nổi bật

  1. Tích hợp cảm biến biến dòng ZMCT103C để chẩn đoán sự cố phần cứng: Khác với 90% các đồ án IoT nông nghiệp sinh viên chỉ dừng lại ở việc điều khiển mở/tắt Relay mù (Open-loop control), hệ thống này bổ sung vòng lặp giám sát phản hồi dòng tải (Closed-loop feedback). Điều này giải quyết triệt để nguy cơ cháy máy bơm khi cạn nước hoặc sự cố ngắt dây dẫn.
  2. Kiến trúc điều hòa vi khí hậu phân tầng: Tách biệt độc lập giữa hai cơ chế chấp hành: Bơm màng R385 tưới trực tiếp vào vùng rễ dựa trên dữ liệu 3 cảm biến độ ẩm đất LM393; Bơm áp lực DP-521 kết hợp 3 đầu béc 2010 phun sương không gian để hạ nhiệt độ và tăng độ ẩm không khí dựa trên DHT21.
  3. Hệ thống điều khiển Hybrid (Song song AUTO và MANUAL): Người dùng có thể linh hoạt chuyển đổi giữa chế độ tự động thông minh và chế độ can thiệp thủ công từ nút nhấn vật lý tại hiện trường hoặc qua màn hình cảm ứng điện thoại.
+----------------------------------------------------------------------------+
|             SO SÁNH CÁC GIẢI PHÁP GIÁM SÁT NÔNG NGHIỆP THỰC TẾ             |
+----------------------------------------------------------------------------+
|     Tiêu chí      | Đồ án Đạt - Nguyên (2021) | Đề tài Thiện - Thức (2023) |
+-------------------+---------------------------+----------------------------+
| Vi điều khiển     | Arduino Mega 2560         | ESP32 Dual-Core 240MHz     |
| Nền tảng Cloud    | Blynk Server cũ           | Google Firebase Realtime   |
| Chẩn đoán máy bơm | Không có                  | Cảm biến dòng ZMCT103C     |
| Đo lưu lượng      | Không có                  | Cảm biến Hall Sea YF-S201  |
| Kiến trúc hiển thị| LCD Song song (6 chân)    | LCD I2C PCF8574 (2 chân)   |
+-------------------+---------------------------+----------------------------+

Đóng góp thực tiễn cho ngành và đào tạo

  • Giá trị học thuật: Đóng góp một bộ tài liệu thiết kế hoàn chỉnh từ sơ đồ mạch in PCB, giải thuật lập trình nhúng C++ trên vi điều khiển 32-bit ESP32, đến kỹ thuật xây dựng ứng dụng Android Native giao tiếp Firebase Realtime Database theo thời gian thực cho sinh viên ngành Công nghệ Kỹ thuật Máy tính và Điện - Điện tử.
  • Giá trị ứng dụng: Cung cấp mô hình mẫu có chi phí gia công linh kiện thấp ($< 1.200.000\text{ VNĐ}$), phù hợp chuyển giao để ứng dụng tại các nhà màng nông nghiệp đô thị quy mô vừa và nhỏ, vườn ươm hoa lan hoặc mô hình khí canh/thủy canh thông minh.

Ứng dụng thực tế và triển khai

Kịch bản triển khai thực tế (Real-World Use Cases)

  • Canh tác hoa lan và cây cảnh cao cấp trong nhà màng: Hoa lan đòi hỏi độ ẩm không khí nghiêm ngặt ($65% - 75%$) và nhiệt độ mát mẻ ($< 30^\circ\text{C}$). Hệ thống kích hoạt bơm sương DP-521 phun các hạt sương mịn kích thước micro mét để cân bằng nhiệt ẩm mà không làm giập nát cánh hoa.
  • Mô hình trồng rau sạch đô thị trên sân thượng (Rooftop Gardening): Điều kiện sân thượng thường xuyên chịu nắng gắt làm đất khô nhanh. Hệ thống tự động đo độ ẩm đất tại nhiều điểm trong bồn cây khoai tây/rau xanh, tưới nước chính xác theo nhu cầu sinh lý của rễ, giảm thiểu tối đa công chăm sóc cho cư dân thành phố.
+-------------------------------------------------------------------------+
|                  QUY TRÌNH TRIỂN KHAI VẬN HÀNH HỆ THỐNG                 |
|                                                                         |
| 1. Cấp nguồn tổ ong 12V-5A  ===>  Hạ áp 5V cấp ESP32, LCD, Cảm biến     |
| 2. ESP32 kết nối Wi-Fi 2.4G ===>  Đồng bộ Time & Token Firebase         |
| 3. Khởi tạo ngoại vi        ===>  Quét địa chỉ I2C (0x27), Cấu hình ADC |
| 4. Vòng lặp giám sát 2000ms ===>  Đọc thông số, lọc nhiễu, kiểm tra tải |
| 5. Thực thi chấp hành       ===>  Đóng ngắt Relay, gửi Firebase & LCD   |
+-------------------------------------------------------------------------+

Yêu cầu cấu hình hệ thống triển khai (Deployment Requirements)

  • Phần cứng:
    • Nguồn cấp: $100 \sim 240\text{VAC} \rightarrow 12\text{VDC} - 5\text{A}$.
    • Bộ điều khiển: Mạch PCB tích hợp ESP32, Relay 5V Opto, Header kết nối cảm biến.
    • Hạ tầng nước: Bồn chứa nước ngọt có dung tích $\ge 20\text{ Lít}$, ống dẫn PE phi 6mm, béc phun đồng 2010.
  • Môi trường mạng & Phần mềm:
    • Mạng không dây: Wi-Fi băng tần 2.4 GHz có kết nối Internet (băng thông tối thiểu $512\text{ Kbps}$).
    • Thiết bị đầu cuối: Điện thoại thông minh chạy hệ điều hành Android từ phiên bản 8.0 (Oreo) trở lên.

Phân tích chi phí và hiệu quả đầu tư (Cost-Benefit Analysis)

Hạng mục linh kiện / Thiết bị Số lượng Đơn giá ước tính (VNĐ) Thành tiền (VNĐ)
Vi điều khiển ESP32 NodeMCU LuaNode32 01 125.000 125.000
Cảm biến nhiệt độ & độ ẩm DHT21 (AM2301) 01 95.000 95.000
Cảm biến độ ẩm đất LM393 03 25.000 75.000
Biến dòng ZMCT103C 01 45.000 45.000
Cảm biến lưu lượng nước Sea YF-S201 01 70.000 70.000
Máy bơm áp lực phun sương DP-521 + 3 Béc 01 bộ 210.000 210.000
Máy bơm màng tưới gốc R385 + Ống dẫn 01 bộ 85.000 85.000
Màn hình LCD 16x2 + Module I2C PCF8574 01 bộ 65.000 65.000
Module Relay 5V 2 kênh cách ly Opto 01 35.000 35.000
Nguồn tổ ong 12V - 5A 01 110.000 110.000
Gia công PCB, vỏ hộp, cọc đấu dây phụ trợ 01 gói 150.000 150.000
TỔNG CHI PHÍ PHẦN CỨNG 1.065.000 VNĐ

Hiệu quả hoàn vốn (ROI): Đối với một vườn hoa lan đô thị quy mô nhỏ ($20\text{ m}^2$), hệ thống giúp tiết kiệm trung bình 1.5 giờ công lao động mỗi ngày (tương đương 60.000 VNĐ/ngày). Điểm hòa vốn đạt được chỉ sau khoảng 18 đến 25 ngày vận hành.


Hạn chế và hướng phát triển

Các hạn chế kỹ thuật hiện tại

  • Tuổi thọ điện cực cảm biến độ ẩm đất: Cảm biến LM393 sử dụng đầu dò điện trở mạ niken tiếp xúc trực tiếp với đất ẩm có dòng điện một chiều chạy qua, dễ bị điện phân và ăn mòn sau 3 - 6 tháng sử dụng liên tục.
  • Phụ thuộc vào hạ tầng Wi-Fi: Khi mạng Wi-Fi gia đình mất kết nối Internet, hệ thống chỉ có thể vận hành cục bộ ở chế độ AUTO, dữ liệu không thể đồng bộ lên Firebase và không thể điều khiển qua ứng dụng di động.
  • Quy mô cây trồng: Chưa xây dựng cơ sở dữ liệu riêng biệt về chu kỳ sinh trưởng của từng loại cây cụ thể (ví dụ: khoai tây thời kỳ tạo củ cần ít nước hơn giai đoạn phát triển thân lá).
+-------------------------------------------------------------------------+
|                  LỘ TRÌNH NÂNG CẤP VÀ PHÁT TRIỂN HỆ THỐNG               |
|                                                                         |
| [Hiện tại]  : ESP32 Wi-Fi 2.4G + Cảm biến điện trở LM393                |
|                      |                                                  |
|                      v                                                  |
| [Giai đoạn 1]: Nâng cấp Cảm biến điện dung v1.2 (Chống ăn mòn 100%)     |
| [Giai đoạn 2]: Bổ sung Module LoRa SX1278 (Khoảng cách truyền > 1.5km)   |
| [Giai đoạn 3]: Tích hợp Pin mặt trời 50W & Thuật toán AI Crop Care      |
+-------------------------------------------------------------------------+

Hướng phát triển nâng cao

  1. Nâng cấp cảm biến độ ẩm đất điện dung (Capacitive Soil Moisture Sensor v1.2): Thay thế cảm biến điện trở bằng cảm biến đo điện dung không để lộ mạch đồng tiếp xúc trực tiếp với đất, nâng tuổi thọ hoạt động lên trên 3 năm.
  2. Mở rộng tầm xa với giao thức LoRa/Zigbee: Bổ sung module truyền thông không dây LoRa SX1278 hoặc mạng Mesh Zigbee để kết nối hàng trăm nút cảm biến (Sensor Nodes) trong bán kính $> 1.5\text{ km}$ về một trạm Gateway tập trung.
  3. Cấp nguồn năng lượng tái tạo: Tích hợp tấm pin quang điện mặt trời Solar 50W và mạch quản lý sạc pin Lithium LiFePO4 giúp hệ thống vận hành độc lập hoàn toàn ngoài trời mà không cần kéo dây điện lưới.
  4. Ứng dụng Trí tuệ nhân tạo (AI): Tích hợp camera ESP32-CAM và mô hình TinyML nhận diện sâu bệnh trên lá, dự báo nhu cầu tưới dựa trên thuật toán học máy dự báo thời tiết.

Đối tượng hưởng lợi

+-------------------------------------------------------------------------------+
|                             ĐỐI TƯỢNG HƯỞNG LỢI                               |
+-------------------------------------------------------------------------------+
|                                                                               |
|  [ SINH VIÊN / HỌC VIÊN ]  ====>  Tài liệu tham khảo đồ án chuẩn, PCB mẫu     |
|  [ KỸ SƯ LẬP TRÌNH NHÚNG ] ====>  Code mẫu ESP32 C++ & Driver tối ưu I2C/ADC  |
|  [ HỘ NÔNG DÂN ĐÔ THỊ ]    ====>  Giải phóng 100% công tưới nước thủ công     |
|  [ DOANH NGHIỆP NÔNG TRẠI] ====>  Tiết kiệm 35% nước, phát hiện sự cố máy bơm |
|                                                                               |
+-------------------------------------------------------------------------------+
  • Sinh viên ngành Kỹ thuật Máy tính, Điện tử - Viễn thông, Tự động hóa: Nguồn tài liệu thực nghiệm giá trị cao về thiết kế hệ thống IoT hoàn chỉnh từ tầng phần cứng (Schematic/PCB), tầng Firmware (ESP32 C++), tầng Cloud (Firebase) đến tầng ứng dụng (Android Java).
  • Lập trình viên và Kỹ sư IoT: Bộ khung mã nguồn mở xử lý bất đồng bộ, thuật toán đo dòng RMS trên ADC 12-bit của ESP32 và kỹ thuật tối ưu giao tiếp I2C không nghẽn luồng.
  • Hộ gia đình và nhà vườn đô thị: Sở hữu giải pháp chăm sóc vườn tự động chi phí thấp, nâng cao năng suất cây trồng và giải phóng hoàn toàn thời gian tưới tiêu hằng ngày.
  • Doanh nghiệp nông nghiệp công nghệ cao: Cơ sở dữ liệu định lượng chính xác về tiêu thụ nước và lịch sử vi khí hậu phục vụ truy xuất nguồn gốc và cấp chứng chỉ nông nghiệp sạch.

Câu hỏi thường gặp

1. Yêu cầu kỹ thuật tối thiểu để triển khai hệ thống là gì?

Hệ thống yêu cầu nguồn điện $12\text{VDC} - 5\text{A}$ ổn định, điểm lắp đặt có sóng Wi-Fi 2.4 GHz (chuẩn 802.11 b/g/n) với tín hiệu RSSI $\ge -75\text{ dBm}$. Điện thoại thông minh chạy Android 8.0 trở lên để cài đặt tệp APK ứng dụng giám sát.

2. Hệ thống xử lý thế nào khi mạng Wi-Fi bị ngắt kết nối?

Khi mất kết nối Wi-Fi, vi điều khiển ESP32 vẫn tiếp tục thực thi vòng lặp điều khiển tự động độc lập tại biên (Edge Control Loop). Các rơ-le tưới và phun sương vẫn tự động đóng ngắt theo ngưỡng cảm biến cài đặt sẵn trong bộ nhớ Flash. Dữ liệu đo đạc sẽ được hiển thị trên màn hình LCD 16x2 tại hiện trường và tự động kết nối lại Cloud ngay khi có sóng Wi-Fi.

3. Làm thế nào để điều chỉnh ngưỡng nhiệt độ và độ ẩm cho từng loại cây khác nhau?

Ở phiên bản hiện tại, người dùng có thể can thiệp bằng chế độ MANUAL trên App Android để bật/tắt bơm theo ý muốn. Đối với chế độ AUTO, các ngưỡng được định nghĩa trong mã nguồn ESP32 và có thể cập nhật linh hoạt từ xa thông qua nhánh cấu hình /FarmMonitoring/DeviceControl/Thresholds trên Firebase Database.

4. Cơ chế phát hiện hỏng máy bơm bằng cảm biến ZMCT103C hoạt động ra sao?

Khi ESP32 xuất lệnh đóng rơ-le kích hoạt máy bơm, cảm biến ZMCT103C sẽ lấy mẫu dòng điện chạy qua dây nguồn của động cơ. Nếu dòng điện đo được $< 0.05\text{A}$ (máy bơm hở mạch/đứt dây) hoặc $> 3.0\text{A}$ (máy bơm kẹt cánh quạt/quá dòng), ESP32 sẽ xác định máy bơm bị lỗi, lập tức ngắt rơ-le để bảo vệ động cơ và gửi cảnh báo PUMP FAULT về điện thoại người dùng.

5. Chi phí duy trì dịch vụ đám mây Firebase hằng tháng là bao nhiêu?

Hệ thống sử dụng gói dịch vụ miễn phí (Spark Plan) của Google Firebase. Với tần suất gửi dữ liệu 2 giây/lần và dung lượng dữ liệu JSON $< 1\text{ KB/lần}$, tổng dung lượng truyền tải và lưu trữ hàng tháng hoàn toàn nằm trong hạn mức miễn phí (1 GB lưu trữ và 10 GB tải xuống/tháng), do đó chi phí vận hành Cloud là 0 VNĐ/tháng.


Kết luận

Đề tài tốt nghiệp "Thiết kế và thi công hệ thống giám sát chăm sóc cây trồng" của nhóm sinh viên Dương Minh Thiện và Vũ Duy Thức đã giải quyết trọn vẹn bài toán tự động hóa quy trình chăm sóc vi khí hậu nông nghiệp bằng công nghệ IoT. Bằng việc kết hợp vi điều khiển hiệu năng cao ESP32, hệ thống đa cảm biến (DHT21, LM393, ZMCT103C, YF-S201), nền tảng đám mây Firebase Realtime Database và ứng dụng Android trực quan, đề tài đã chứng minh tính khả thi vượt trội với khả năng tiết kiệm 35% lượng nước, độ trễ truyền dữ liệu dưới 500ms và độ tin cậy bảo vệ phần cứng 100%. Đây là nền tảng kỹ thuật vững chắc hướng tới việc phát triển các giải pháp nông nghiệp thông minh toàn diện, mở rộng quy mô ứng dụng từ nhà vườn đô thị đến các trang trại nông nghiệp công nghệ cao trong tương lai.