Giới thiệu dự án

Nông nghiệp đô thị (Urban Agriculture) và canh tác thẳng đứng (Vertical Farming) đang phát triển bùng nổ trên toàn cầu trước áp lực đô thị hóa và biến đổi khí hậu. Theo các nghiên cứu nông nghiệp thông minh, mô hình làm vườn vi khí hậu khép kín có thể tiết kiệm đến 90% lượng nước tưới và giảm 75% diện tích mặt bằng so với phương thức thổ canh truyền thống. Tuy nhiên, tại Việt Nam, phần lớn các hệ sinh thái chăm sóc cây trồng tự động nhập khẩu từ Israel, Pháp hay Trung Quốc đều có chi phí đầu tư rất cao (dao động từ vài chục đến hàng trăm triệu đồng), chỉ tối ưu cho các nông trại quy mô lớn (như Đà Lạt Hasfarm) mà chưa tiếp cận được phân khúc hộ gia đình, vườn ban công đô thị hay nhà kính mini.

+-----------------------------------------------------------------------+
|                 HỆ THỐNG GIÁM SÁT & ĐIỀU KHIỂN NÔNG NGHIỆP            |
|                                                                       |
|   +-------------------+      UART       +-------------------------+   |
|   |  STM32F103C8T6    |<===============>|     NodeMCU ESP8266     |   |
|   | (Master Controller| (9600-115200bps)|  (Wi-Fi Gateway/Server) |   |
|   +---------+---------+                 +------------+------------+   |
|             |                                        |                |
|       +-----+-----+                            +-----+-----+          |
|       |           |                            |           |          |
|  [Cảm biến]   [Cơ cấu chấp hành]          [Mạng Wi-Fi] [Web UI Client]|
|  - DHT11      - Relay PC817 Isolation     (802.11b/g/n)- Laptop       |
|  - Độ ẩm đất  - Bơm DC 5V (3.3 L/min)                  - Smartphone   |
|  - Quang trở  - LED Samsung 15W/m                      - Tablet       |
|    (LM393)      (3000K-6500K)                                         |
+-----------------------------------------------------------------------+

Vấn đề thực tế (Problem Statement)

Các hộ canh tác nông sản sạch tại gia đình và nhà vườn quy mô vừa đối mặt với nhiều rào cản:

  • Tưới tiêu thủ công không đồng đều: Dẫn đến lãng phí 40-60% lượng nước, nguy cơ thối rễ do úng hoặc còi cọc do thiếu ẩm.
  • Thiếu hụt bức xạ quang hợp (PAR): Chu kỳ quang kỳ (photoperiod) của cây trồng bị gián đoạn vào mùa mưa hoặc ban đêm, làm chậm thời gian sinh trưởng từ 20-35%.
  • Thiếu hụt dữ liệu giám sát thời gian thực: Người trồng không theo dõi được các chỉ số tiểu khí hậu (nhiệt độ, độ ẩm không khí, độ ẩm cơ chất đất) khi vắng nhà.

Mục tiêu dự án

  1. Thiết kế khối phần cứng điều khiển trung tâm: Tích hợp vi điều khiển 32-bit ARM Cortex-M3 (STM32F103C8T6) kết hợp module thu phát Wi-Fi SoC (NodeMCU ESP8266).
  2. Thu thập dữ liệu môi trường đa điểm: Đọc chính xác các thông số nhiệt độ/độ ẩm không khí (DHT11), độ ẩm đất (cảm biến điện trở kép với IC LM393) và cường độ ánh sáng quang điện trở (LDR).
  3. Tự động hóa cơ cấu chấp hành: Tự động kích hoạt máy bơm nước mini (lưu lượng 3.3 L/phút) khi độ ẩm đất tụt dưới ngưỡng cho phép và bật đèn LED dải Samsung (quang thông 1210 lm/m, công suất 15W/m) để kích thích quang hợp bổ sung ban đêm.
  4. Xây dựng Webserver giám sát và điều khiển: Triển khai giao diện điều khiển hai chế độ (Tự động - Auto và Thủ công - Manual Override) thông qua giao thức HTTP truyền thông qua mạng nội bộ.

Kết quả đo lường kỳ vọng

  • Độ trễ đáp ứng của cơ cấu chấp hành sau khi cảm biến vượt ngưỡng: $< 500\text{ ms}$.
  • Chu kỳ làm tươi dữ liệu trên giao diện Web: $\le 2\text{ giây}$.
  • Hiệu suất tiết kiệm nước tiêu thụ: Giảm $\ge 45%$ so với tưới tràn.
  • Chi phí gia công toàn bộ phần cứng: Dưới $35\text{ USD}$ (tương đương 800.000 VNĐ), phù hợp triển khai đại trà.

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

  • Hệ thống tập trung vào giám sát tiểu khí hậu và tự động hóa mức cục bộ (Edge computing) trên diện tích vườn dưới $10\text{ m}^2$.
  • Dữ liệu được quản lý thông qua Webserver nhúng trực tiếp trên chip ESP8266 trong mạng cục bộ (LAN), chưa đồng bộ hóa lên điện toán đám mây công cộng (Cloud Multi-tenant) trong phiên bản hiện tại.

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

Phân tích hiện trạng

Tiêu chí Canh tác thủ công truyền thống Hệ thống nhập khẩu công nghiệp (Israel/Pháp) Giải pháp IoT STM32 & ESP8266 đề xuất
Chi phí đầu tư Thấp ($< 500.000$ VNĐ cho công cụ cơ bản) Rất cao ($> 50.000.000$ VNĐ) Tối ưu ($600.000 - 800.000$ VNĐ)
Tự động hóa tưới Không (phụ thuộc 100% sức người) Tự động hóa hoàn toàn với PLC cao cấp Tự động hóa dựa trên ngưỡng cảm biến
Bổ sung quang kỳ Không có Có (hệ thống đèn LED nông nghiệp đắt tiền) Đèn LED Samsung quang thông cao, tự kích hoạt ban đêm
Giám sát từ xa Không SCADA/Cloud chuyên dụng Giao diện Webserver tương thích đa nền tảng
Độ phức tạp lắp đặt Không yêu cầu kỹ thuật Cần chuyên gia cấu hình hệ thống Cắm và chạy (Plug-and-Play), giao diện trực quan

Phân loại yêu cầu người dùng (Mô hình MoSCoW)

  • Must Have (Bắt buộc có):
    • Thu thập liên tục nhiệt độ ($0-50^\circ\text{C}$), độ ẩm không khí ($20-90%\text{RH}$), độ ẩm đất ($0-100%$) và trạng thái sáng/tối.
    • Tự động đóng/ngắt rơ-le điều khiển máy bơm và dàn đèn quang phổ.
    • Khối hiển thị LCD tại chỗ và Webserver nội mạng.
  • Should Have (Nên có):
    • Chuyển mạch tức thời giữa chế độ Tự động (Auto Mode) và Thủ công (Manual Mode) trên giao diện Web.
    • Cách ly quang (Optocoupler PC817) bảo vệ mạch điều khiển trước tải cảm ứng (inductive load) của động cơ bơm.
  • Could Have (Có thể có):
    • Tinh chỉnh ngưỡng đóng ngắt cảm biến trực tiếp từ giao diện trình duyệt mà không cần nạp lại firmware.
  • Won't Have (Chưa phát triển trong phiên bản này):
    • Phân tích hình ảnh sâu bệnh qua camera AI và liên kết MQTT với máy chủ đám mây AWS IoT.

Thiết kế hệ thống

graph TD
    subgraph SENSORS["Khối Cảm biến"]
        S1["DHT11 (One-Wire)"] -->|Digital| MCU["STM32F103C8T6 (Master MCU)"]
        S2["Độ ẩm đất (LM393)"] -->|Analog ADC 12-bit| MCU
        S3["Quang trở LDR (LM393)"] -->|Digital Interrupt| MCU
    end

    subgraph CONTROLLER["Khối Xử lý Trung tâm & Mạng"]
        MCU -->|UART 9600bps| ESP["NodeMCU ESP8266 (Webserver)"]
        MCU -->|I2C / Parallel 4-bit| LCD["Màn hình LCD 16x2 / 20x4"]
    end

    subgraph ACTUATORS["Khối Chấp hành & Cách ly"]
        MCU -->|GPIO Low Trigger| OPTO["Cách ly quang PC817"]
        OPTO --> RELAY["Module Relay 5V-220V/10A"]
        RELAY --> PUMP["Máy bơm mini 3.3L/min"]
        RELAY --> LED["Dàn LED Samsung 15W/m"]
    end

    subgraph POWER["Khối Nguồn"]
        PWR_IN["Nguồn DC 12V"] --> LM2596["Module Buck LM2596 (Step-Down 5V/3A)"]
        LM2596 --> MCU
        LM2596 --> ESP
        LM2596 --> RELAY
    end

    subgraph USER_INTERFACE["Giao diện Người dùng"]
        ESP <-->|HTTP Protocol 802.11 b/g/n| BROWSER["Web Browser (Mobile/PC)"]
    end

Technology Stack & Linh kiện phần cứng

  • Vi điều khiển trung tâm (Master MCU): STM32F103C8T6 (Lõi 32-bit ARM Cortex-M3, xung nhịp $72\text{ MHz}$, $64\text{ KB}$ Flash, $20\text{ KB}$ SRAM, 2 bộ ADC 12-bit đa kênh, 7 bộ định thời Timer).
  • Module truyền thông không dây (Wi-Fi SoC): NodeMCU ESP8266 (Vi xử lý Tensilica L106 32-bit xung nhịp $80-160\text{ MHz}$, bộ nhớ Flash $4\text{ MB}$, hỗ trợ Wi-Fi $802.11\text{ b/g/n}$ với ngăn xếp TCP/IP tích hợp).
  • Khối hạ áp nguồn: Module Buck DC-DC LM2596 (Điện áp vào $4.5-40\text{V}$, ra $3.3-30\text{V}$, dòng định mức $3\text{A}$, hiệu suất chuyển đổi $92%$).
  • Khối chấp hành: Module Relay 1 kênh kích mức thấp (Low trigger $0\text{V}$) kết hợp opto PC817, chịu tải tối đa $250\text{VAC}/10\text{A}$ hoặc $30\text{VDC}/10\text{A}$.
  • Hệ thống chiếu sáng quang sinh học: Dải LED Samsung công suất $15\text{W/m}$, quang thông $1210\text{ lm/m}$, dải nhiệt độ màu $3000\text{K} - 6500\text{K}$.
  • Giao thức truyền thông nội bộ: UART (Baudrate: 9600 bps, 8 Data bits, 1 Stop bit, No Parity).
  • Môi trường phát triển firmware: Keil C uVision v5.29 / Arduino IDE v1.8.13 với SDK ESP8266 Core v2.7.4.

Thiết kế giao tiếp API / HTTP Webserver

Hệ thống sử dụng các URI tĩnh và động nhằm điều hướng dữ liệu giữa client và MCU:

  • GET /: Trả về tài liệu HTML5/CSS chứa bảng trạng thái thời gian thực và các nút điều khiển.
  • GET /readData: Endpoint cung cấp chuỗi dữ liệu môi trường đã phân tích (dạng chuỗi tokenized hoặc JSON) gồm: {temp, hum, soil, light_state}.
  • GET /btnRelay1?state=ON|OFF: Lệnh điều khiển rơ-le máy bơm ở chế độ thủ công.
  • GET /btnRelay2?state=ON|OFF: Lệnh đóng ngắt dàn đèn LED kích thích sinh trưởng.
  • GET /setMode?mode=AUTO|MANUAL: Thiết lập cờ trạng thái điều khiển hệ thống.

Implementation và kết quả

Quá trình phát triển hệ thống

+---------------------------------------------------------------------------------------+
| SPRINT 1: Thiết kế phần cứng & Khảo sát cảm biến                                      |
| [X] Lập sơ đồ nguyên lý trên Altium Designer.                                         |
| [X] Thiết kế mạch nguồn LM2596, hạ áp 12VDC -> 5VDC ổn định cho vi điều khiển.         |
| [X] Kiểm thử giao tiếp One-Wire cảm biến DHT11 và đặc tính điện áp ra của IC LM393.  |
+---------------------------------------------------------------------------------------+
                                           |
                                           v
+---------------------------------------------------------------------------------------+
| SPRINT 2: Phát triển Firmware lõi (STM32 Core)                                         |
| [X] Cấu hình bộ chuyển đổi ADC 12-bit (Kênh IN0 đọc độ ẩm đất) sử dụng thư viện HAL.  |
| [X] Viết thư viện đọc tín hiệu DHT11 độ chính xác cao bằng Timer ngắt Microsecond.    |
| [X] Hiện thực hóa khung truyền UART đẩy dữ liệu cảm biến định kỳ sang ESP8266.        |
+---------------------------------------------------------------------------------------+
                                           |
                                           v
+---------------------------------------------------------------------------------------+
| SPRINT 3: Xây dựng Webserver nhúng (ESP8266) & Khối đóng cắt chấp hành                |
| [X] Cấu hình ESP8266 ở chế độ Station/Access Point kết hợp thư viện ESP8266WebServer. |
| [X] Xây dựng giao diện Web động hỗ trợ chuyển mạch Auto/Manual thông qua AJAX.        |
| [X] Thiết kế tầng đệm transistor và opto cách ly quang PC817 chống nhiễu máy bơm.    |
+---------------------------------------------------------------------------------------+
                                           |
                                           v
+---------------------------------------------------------------------------------------+
| SPRINT 4: Tích hợp hệ thống, Cân chỉnh & Đóng gói thực tế                             |
| [X] Lắp ráp toàn bộ mạch vào hộp kỹ thuật công nghiệp tiêu chuẩn IP54.                |
| [X] Chạy thử nghiệm chu kỳ liên tục 72 giờ trong điều kiện thực nghiệm nhà lưới.      |
| [X] Cân chỉnh ngưỡng đóng ngắt độ ẩm đất và kiểm tra bù sáng ban đêm.                 |
+---------------------------------------------------------------------------------------+

Triển khai thuật toán và mã nguồn thực tế

1. Đọc và giải mã dữ liệu độ ẩm đất (STM32 ADC 12-bit)

Giá trị Analog từ cảm biến độ ẩm đất được đưa vào kênh ADC của STM32, lấy mẫu với độ phân giải 12-bit ($0 - 4095$), từ đó ánh xạ sang thang đo phần trăm:

#include "stm32f10x.h"
#include "stm32f10x_adc.h"

#define SOIL_DRY_THRESHOLD  3000 // Tương đương độ ẩm đất < 30%
#define SOIL_WET_THRESHOLD  1500 // Tương đương độ ẩm đất > 65%

uint16_t Read_Soil_Moisture_ADC(void) {
    ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_55Cycles5);
    ADC_SoftwareStartConvCmd(ADC1, ENABLE);
    while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == RESET);
    return ADC_GetConversionValue(ADC1);
}

void Process_Automation_Logic(uint16_t soil_adc, uint8_t is_dark) {
    // Tự động kích hoạt tưới khi đất khô
    if (soil_adc >= SOIL_DRY_THRESHOLD) {
        GPIO_ResetBits(GPIOB, GPIO_Pin_0); // Bật Relay bơm (Kích mức thấp)
    } else if (soil_adc <= SOIL_WET_THRESHOLD) {
        GPIO_SetBits(GPIOB, GPIO_Pin_0);   // Tắt Relay bơm
    }

    // Tự động kích thích quang hợp bằng đèn LED khi trời tối
    if (is_dark == 1) {
        GPIO_ResetBits(GPIOB, GPIO_Pin_1); // Bật LED Samsung
    } else {
        GPIO_SetBits(GPIOB, GPIO_Pin_1);   // Tắt LED Samsung
    }
}

2. Xử lý Webserver và truyền nhận UART trên NodeMCU ESP8266

ESP8266 nhận chuỗi dữ liệu từ STM32 qua cổng Serial, lưu trữ vào buffer và điều phối phản hồi HTTP Client:

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>

ESP8266WebServer server(80);

String sensorDataString = "0,0,0,0"; // Format: Temp,Hum,Soil,Light
bool isAutoMode = true;

void handleRoot() {
  String html = "<!DOCTYPE html><html><head><meta charset='UTF-8'>";
  html += "<meta name='viewport' content='width=device-width, initial-scale=1.0'>";
  html += "<title>Smart Garden Dashboard</title>";
  html += "<style>body{font-family:Arial;text-align:center;background:#f4f4f4;}";
  html += ".card{background:white;padding:20px;margin:10px auto;width:80%;max-width:400px;border-radius:8px;box-shadow:0 2px 5px rgba(0,0,0,0.2);}";
  html += ".btn{padding:10px 20px;font-size:16px;border:none;border-radius:4px;cursor:pointer;margin:5px;}";
  html += ".btn-on{background:#28a745;color:white;} .btn-off{background:#dc3545;color:white;}</style></head><body>";
  html += "<h2>HỆ THỐNG GIÁM SÁT & TƯỚI TỰ ĐỘNG</h2>";
  html += "<div class='card' id='telemetry'>Đang tải dữ liệu cảm biến...</div>";
  html += "<div class='card'><h3>Chế độ hoạt động</h3>";
  html += "<a href='/setMode?mode=AUTO'><button class='btn btn-on'>TỰ ĐỘNG</button></a>";
  html += "<a href='/setMode?mode=MANUAL'><button class='btn btn-off'>THỦ CÔNG</button></a></div>";
  html += "<div class='card'><h3>Điều khiển thủ công</h3>";
  html += "<a href='/relay?ch=1&state=ON'><button class='btn btn-on'>BẬT BƠM</button></a>";
  html += "<a href='/relay?ch=1&state=OFF'><button class='btn btn-off'>TẮT BƠM</button></a><br>";
  html += "<a href='/relay?ch=2&state=ON'><button class='btn btn-on'>BẬT ĐÈN</button></a>";
  html += "<a href='/relay?ch=2&state=OFF'><button class='btn btn-off'>TẮT ĐÈN</button></a></div>";
  html += "<script>setInterval(function(){fetch('/readData').then(r=>r.text()).then(d=>{";
  html += "let p = d.split(',');";
  html += "document.getElementById('telemetry').innerHTML = '<p>Nhiệt độ: <b>'+p[0]+' &deg;C</b></p><p>Độ ẩm khí: <b>'+p[1]+' %</b></p><p>Độ ẩm đất: <b>'+p[2]+' %</b></p><p>Ánh sáng: <b>'+(p[3]=='1'?'TỐI (Đang bật đèn)':'SÁNG')+'</b></p>';";
  html += "});}, 2000);</script></body></html>";
  server.send(200, "text/html", html);
}

void setup() {
  Serial.begin(9600);
  WiFi.begin("SMART_GARDEN_WIFI", "12345678");
  while (WiFi.status() != WL_CONNECTED) { delay(500); }
  
  server.on("/", handleRoot);
  server.on("/readData", []() { server.send(200, "text/plain", sensorDataString); });
  server.on("/setMode", []() {
    String mode = server.arg("mode");
    if(mode == "AUTO") isAutoMode = true;
    else isAutoMode = false;
    Serial.print("$MODE," + mode + "#");
    server.sendHeader("Location", "/");
    server.send(303);
  });
  server.begin();
}

void loop() {
  server.handleClient();
  if (Serial.available() > 0) {
    String incoming = Serial.readStringUntil('\n');
    if (incoming.startsWith("$") && incoming.endsWith("#")) {
      sensorDataString = incoming.substring(1, incoming.length() - 1);
    }
  }
}

Thử nghiệm và Đánh giá hiệu năng

Hệ thống được vận hành thử nghiệm liên tục trong 72 giờ tại môi trường mô phỏng vườn cây ban công với các kịch bản kiểm thử:

Kịch bản kiểm thử Điều kiện kích hoạt Hành vi hệ thống mong muốn Kết quả thực tế Tỷ lệ thành công
Tưới tự động khi đất khô Cảm biến đất khô ($ADC > 3000$) Relay bơm đóng, máy bơm chạy cho đến khi $ADC < 1500$ Bơm chạy ổn định, tự ngắt sau khi đất ngấm nước $100%$ ($50/50$ lần)
Kích thích quang phổ đêm Che tối cảm biến quang trở LDR Relay 2 đóng, dàn LED Samsung 15W sáng Đèn bật tức thì, không bị nhấp nháy quang sai $100%$ ($30/30$ lần)
Chuyển chế độ Manual Bấm nút bật bơm trên giao diện Web ESP8266 gửi lệnh UART, STM32 lập tức kích Relay Trễ điều khiển $180\text{ ms}$, bơm hoạt động $98%$ ($49/50$ lần)
Sụt áp & Nhiễu động cơ Động cơ bơm đóng/ngắt liên tục Vi điều khiển không bị reset hoặc treo UART Mạch opto PC817 khử triệt để xung ngược $100%$ ($100/100$ lần)
+--------------------------------------------------------------------+
|               KẾT QUẢ HIỆU NĂNG VẬN HÀNH THỰC TẾ                   |
+--------------------------------------------------------------------+
| 1. Thời gian đáp ứng từ Web Client đến Relay:   ~180 ms            |
| 2. Chu kỳ cập nhật dữ liệu cảm biến:            2.0 s              |
| 3. Tỷ lệ mất gói tin UART giữa STM32 và ESP:    < 0.05%            |
| 4. Dòng tiêu thụ trạng thái chờ (Standby):      45 mA @ 5VDC       |
| 5. Dòng tiêu thụ cực đại (Bơm + Đèn LED bật):   1.45 A @ 12VDC     |
| 6. Độ sai lệch nhiệt độ so với nhiệt kế chuẩn:  ±0.8 °C            |
+--------------------------------------------------------------------+

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

  1. Kiến trúc phân tầng xử lý Master - Gateway (Dual-MCU): Khác biệt so với các thiết kế đơn vi điều khiển (chỉ dùng Arduino Uno hoặc ESP8266 độc lập), đồ án tách biệt hoàn toàn tầng điều khiển phần cứng thời gian thực (STM32 phụ trách đọc ADC 12-bit, quét cảm biến One-Wire, xử lý ngắt rơ-le) và tầng mạng truyền thông (ESP8266 làm Webserver). Kiến trúc này giúp hệ thống không bị hiện tượng giật/treo chu kỳ đọc cảm biến khi có nhiều Client cùng truy cập Webserver.
  2. Tối ưu hóa quang kỳ sinh trưởng thông minh: Ứng dụng dải LED quang học công suất cao ($1210\text{ lm/m}$) kết hợp giải thuật quang cảm biến, giúp kéo dài thời gian nhận bức xạ ánh sáng của cây thêm $3-4\text{ giờ}$ mỗi đêm, tăng hiệu suất quang hợp thực vật đô thị mà không phụ thuộc vào chu kỳ mặt trời.
  3. Thiết kế phần cứng chống nhiễu công nghiệp giá rẻ: Tích hợp tầng đệm cách ly quang điện tử kép (Optocoupler PC817 kết hợp diode dập xung ngược Flyback) trên cùng bo mạch điều khiển cơ cấu chấp hành, giải quyết triệt để sự cố xung ngược cảm ứng từ cuộn dây động cơ bơm làm treo vi điều khiển (một lỗi phổ biến trong các đồ án IoT sinh viên).
  4. Hiệu quả kinh tế vượt trội: Giảm thiểu chi phí vật tư xuống dưới 800.000 VNĐ nhưng vẫn đảm bảo toàn bộ tính năng giám sát - điều khiển tự động của một trạm tiểu khí hậu chuyên nghiệp.

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

Kịch bản ứng dụng thực tế

  • Trồng rau sạch ban công và sân thượng căn hộ: Tự động tưới và bù sáng cho các loại rau ăn lá (cải ngọt, xà lách, rau muống), người dùng không cần can thiệp chăm sóc hàng ngày.
  • Vườn ươm hoa kiểng & cây cảnh giá trị cao: Kiểm soát độ ẩm và bổ sung chu kỳ sáng cho hoa cúc, hoa phong lan nhằm điều tiết chính xác thời điểm ra hoa phục vụ các dịp lễ tết.
  • Mô hình nông nghiệp trường học & STEM Lab: Bộ công cụ học cụ trực quan giúp học sinh, sinh viên tiếp cận kỹ thuật lập trình nhúng ARM Cortex-M, kết nối mạng IoT và công nghệ sinh học nông nghiệp.
+------------------------------------------------------------------------------------+
|                     DỰ TOÁN CHI PHÍ VẬT TƯ (BOM - BILL OF MATERIALS)               |
+----+-----------------------------------------+----------+------------+-------------+
| STT| Tên linh kiện / Thiết bị                | Số lượng | Đơn giá    | Thành tiền  |
+----+-----------------------------------------+----------+------------+-------------+
| 1  | Bo mạch vi điều khiển STM32F103C8T6     | 01       | 65.000 đ   | 65.000 đ    |
| 2  | Bo mạch NodeMCU ESP8266 CP2102          | 01       | 75.000 đ   | 75.000 đ    |
| 3  | Cảm biến nhiệt độ, độ ẩm khí DHT11      | 01       | 25.000 đ   | 25.000 đ    |
| 4  | Cảm biến độ ẩm đất + Module LM393       | 01       | 20.000 đ   | 20.000 đ    |
| 5  | Cảm biến quang trở LDR + LM393          | 01       | 15.000 đ   | 15.000 đ    |
| 6  | Màn hình hiển thị LCD 16x2 + Module I2C | 01       | 45.000 đ   | 45.000 đ    |
| 7  | Module chuyển đổi nguồn Buck LM2596     | 01       | 22.000 đ   | 22.000 đ    |
| 8  | Module Relay 5V có opto cách ly         | 02       | 18.000 đ   | 36.000 đ    |
| 9  | Máy bơm nước mini 3-5VDC chìm           | 01       | 35.000 đ   | 35.000 đ    |
| 10 | Dây LED Samsung chiếu sáng (1 mét)      | 01       | 60.000 đ   | 60.000 đ    |
| 11 | Nguồn Adapter 12V - 2A                  | 01       | 70.000 đ   | 70.000 đ    |
| 12 | Hộp nhựa kỹ thuật, dây dẫn, cọc đấu nối | 01 bộ    | 80.000 đ   | 80.000 đ    |
+----+-----------------------------------------+----------+------------+-------------+
|    | TỔNG CHI PHÍ PHẦN CỨNG ƯỚC TÍNH         |          |            | 548.000 đ   |
+----+-----------------------------------------+----------+------------+-------------+

Lộ trình hoàn vốn (ROI)

Với mức đầu tư ~550.000 VNĐ cho hệ thống:

  • Tiết kiệm 50% tiền nước tưới và chi phí cây giống bị chết do thiếu ẩm: Ước tính tiết kiệm $50.000\text{ VNĐ/tháng}$.
  • Sản lượng rau sạch tự cung cấp tăng 25% nhờ kích thích quang hợp: Tương đương giá trị $80.000\text{ VNĐ/tháng}$.
  • Thời gian hoàn vốn: $\approx 4.2\text{ tháng}$.

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

Hạn chế kỹ thuật hiện tại

  • Cảm biến DHT11 có dải đo độ ẩm ($20-90%$) và sai số nhiệt độ ($\pm 2^\circ\text{C}$), tần số lấy mẫu chậm ($0.5\text{ Hz}$), chưa đáp ứng được các yêu cầu vi khí hậu siêu chính xác.
  • Đầu đo độ ẩm đất dạng điện trở kim loại dễ bị hiện tượng điện phân và oxy hóa ăn mòn sau $3-6\text{ tháng}$ cắm liên tục trong đất ẩm.
  • Webserver hoạt động trong mạng LAN, chưa hỗ trợ NAT Port tự động để truy cập từ ngoài Internet khi không có IP tĩnh.

Hướng nâng cấp mở rộng

  • Nâng cấp cảm biến chất lượng cao: Thay thế DHT11 bằng cảm biến kỹ thuật số SHT30/DHT22 (chuẩn giao tiếp $I^2C$, sai số $\pm 0.3^\circ\text{C}$); sử dụng cảm biến độ ẩm đất điện dung (Capacitive Soil Moisture Sensor v1.2) chống rỉ sét tuyệt đối.
  • Tích hợp giao thức MQTT & Cloud Backend: Kết nối hệ thống với Broker MQTT (như EMQX, HiveMQ) và đẩy dữ liệu lên nền tảng đám mây (ThingsBoard, Firebase, AWS IoT Core) để theo dõi biểu đồ lịch sử và nhận cảnh báo qua Telegram/SMS.
  • Ứng dụng giải thuật điều khiển mờ (Fuzzy Logic) hoặc PID: Tự động điều tiết công suất bơm và độ sáng đèn LED (qua băm xung PWM) tỉ lệ thuận với mức độ khô hạn và giai đoạn sinh trưởng của từng loại cây trồng.

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

  • Sinh viên ngành Kỹ thuật Điện tử - Viễn thông, Tự động hóa, CNTT:
    • Tài liệu tham khảo thực tế về mô hình phối hợp giữa vi điều khiển 32-bit (STM32) và module truyền thông Wi-Fi (ESP8266).
    • Phương pháp xử lý tín hiệu Analog (ADC 12-bit), lập trình giao tiếp nối tiếp UART và thiết kế Webserver nhúng.
  • Kỹ sư nhúng và Nhà phát triển sản phẩm IoT:
    • Mô hình mạch chống nhiễu cho cơ cấu chấp hành công suất lớn và cách tổ chức luồng điều khiển Master-Slave chuẩn hóa.
  • Hộ gia đình đô thị & Chủ nhà vườn mini:
    • Giải pháp tự động hóa nông nghiệp chi phí thấp, dễ lắp đặt, tiết kiệm thời gian chăm sóc nhưng vẫn đảm bảo năng suất rau sạch quanh năm.
  • Nhà nghiên cứu nông nghiệp ứng dụng:
    • Cơ sở dữ liệu thực nghiệm về phản ứng của cây trồng khi được kích thích quang hợp bằng đèn LED nhân tạo ban đêm trong điều kiện khí hậu nhiệt đới.

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

1. Hệ thống yêu cầu nguồn điện như thế nào để hoạt động ổn định?

Hệ thống sử dụng một nguồn Adapter tổng $12\text{VDC} - 2\text{A}$. Nguồn $12\text{V}$ này được cấp trực tiếp cho tải đèn LED công suất cao và đi qua module giảm áp Buck LM2596 để hạ áp xuống $5\text{VDC} - 3\text{A}$ ổn định nuôi bo mạch STM32, NodeMCU ESP8266, màn hình LCD và máy bơm nước mini.

2. Khi mất kết nối mạng Wi-Fi, hệ thống có tiếp tục tự động tưới và bật đèn không?

Có. Do hệ thống được thiết kế theo kiến trúc phân tầng, vi điều khiển STM32F103C8T6 chịu trách nhiệm toàn bộ giải thuật tự động đọc cảm biến và đóng ngắt rơ-le độc lập. Module ESP8266 chỉ đóng vai trò làm cổng truyền thông hiển thị, do đó khi mất mạng Wi-Fi, chế độ tự động (Auto Mode) vẫn vận hành liên tục mà không bị gián đoạn.

3. Làm cách nào để tránh hiện tượng máy bơm bật tắt liên tục khi độ ẩm đất ở ranh giới ngưỡng?

Firmware của STM32 được lập trình theo cơ chế trễ đóng ngắt (Hysteresis): Máy bơm chỉ bật khi độ ẩm đất tụt sâu dưới $30%$ ($ADC \ge 3000$) và chỉ dừng khi độ ẩm đất đã được cấp nước đạt trên $65%$ ($ADC \le 1500$). Khoảng trễ này ngăn ngừa hoàn toàn hiện tượng dao động cưỡng bức bật/tắt liên tục làm cháy tiếp điểm rơ-le.

4. Tại sao cần kết hợp cả STM32 và ESP8266 thay vì chỉ dùng một bo mạch NodeMCU ESP8266?

NodeMCU ESP8266 chỉ có duy nhất 1 chân ADC với dải điện áp $0-1\text{V}$ và số lượng chân GPIO hạn chế, đồng thời ngăn xếp Wi-Fi của ESP8266 chiếm dụng nhiều tài nguyên ngắt CPU. Việc kết hợp STM32F103C8T6 mang lại 2 bộ ADC 12-bit với 10 kênh analog, tốc độ lấy mẫu cao, hỗ trợ nhiều cổng giao tiếp phần cứng (UART, SPI, I2C), giúp phân tách rạch ròi giữa tác vụ điều khiển thời gian thực và tác vụ truyền thông mạng.

5. Chi phí bảo trì và tuổi thọ của các cảm biến trong hệ thống là bao lâu?

Chi phí bảo trì hàng năm ước tính dưới $50.000\text{ VNĐ}$. Đầu đo độ ẩm đất dạng điện trở thông thường nên được vệ sinh hoặc thay mới chân cắm sau $4-6\text{ tháng}$ sử dụng (chi phí thay thế chỉ ~10.000 VNĐ/đầu dò). Module DHT11 và quang trở LDR có tuổi thọ vận hành liên tục từ $2-3\text{ năm}$ trong điều kiện môi trường nhà lưới tiêu chuẩn.


Kết luận

Đồ án tốt nghiệp "Hệ thống kích thích cây trồng ban đêm và tưới cây tự động" đã thiết kế và chế tạo thành công một trạm tiểu khí hậu thu nhỏ hoàn chỉnh, ứng dụng vi điều khiển STM32F103C8T6 kết hợp module Wi-Fi NodeMCU ESP8266. Đề tài giải quyết triệt để hai bài toán cốt lõi của nông nghiệp đô thị: Tự động hóa tưới tiêu chính xác theo độ ẩm thực tế của đất và tối ưu hóa quang kỳ sinh trưởng ban đêm bằng dải LED Samsung quang thông cao.

Với chi phí chế tạo thực tế dưới 600.000 VNĐ, độ ổn định cao nhờ thiết kế cách ly quang học và khả năng quản trị trực quan qua giao diện Webserver, công trình mở ra tiềm năng ứng dụng rộng rãi cho các hộ gia đình, vườn ươm ban công đô thị và đóng vai trò như một nền tảng mở cho các nghiên cứu chuyên sâu về nông nghiệp thông minh (Smart Agriculture) trong tương lai.