Giới thiệu dự án

Trong bối cảnh đô thị hóa và xây dựng mô hình đại học thông minh (Smart Campus), việc quản lý tài nguyên nước và tự động hóa cảnh quan môi trường trở thành ưu tiên hàng đầu. Theo thống kê từ Tổ chức Lương thực và Nông nghiệp Liên Hợp Quốc (FAO), các hệ thống tưới thủ công truyền thống gây lãng phí từ 30% đến 50% lượng nước ngọt do bay hơi và phân bổ lưu lượng không đồng đều. Tại các khuôn viên đại học quy mô lớn như Trường Đại học Sư phạm Kỹ thuật TP.HCM (HCMUTE), diện tích cây xanh trải rộng hàng chục hecta đòi hỏi chi phí nhân công vận hành cao, trong khi giải pháp kéo dây điều khiển truyền thống thường xuyên gặp sự cố sụt áp đường dây, đứt cáp ngầm và suy giảm mỹ quan.

Đồ án tốt nghiệp ngành Công nghệ Kỹ thuật Điện tử - Truyền thông với đề tài: "Thiết kế và thi công hệ thống tưới cây thông minh trong khuôn viên trường ĐH SPKT TPHCM" do sinh viên Hoàng Trung Kiên và Trịnh Xuân Hậu thực hiện dưới sự hướng dẫn của ThS. Nguyễn Ngô Lâm đã giải quyết triệt để bài toán phân tán này bằng việc kết hợp kiến trúc mạng không dây tầm xa LoRa (Long Range) và nền tảng đám mây Internet of Things (IoT).

                 [ Cloud / Internet ]
                          ▲
                          │ Wi-Fi (TCP/IP)
                          ▼
            +---------------------------+
            |      Trạm MASTER          |
            | - STM32F103C8T6 (Core)    |
            | - ESP8266 NodeMCU (Cloud) |
            | - HMI TFT 7.0" (Giao diện)|
            | - LoRa SX1278 (RF 433MHz) |
            +---------------------------+
                     │         ▲
      LoRa RF Packet │         │ LoRa Telemetry
      (Broadcast/P2P)│         │ (Khoảng cách < 3000m)
                     ▼         │
        +----------------------------+----------------------------+
        │                                                         │
        ▼                                                         ▼
+--------------------------------+       +--------------------------------+
|        Trạm SLAVE 1            |       |        Trạm SLAVE 2            |
| - STM32F103C8T6                |       | - STM32F103C8T6                |
| - LoRa SX1278 (433MHz)         |       | - LoRa SX1278 (433MHz)         |
| - Cảm biến: Độ ẩm đất, Mưa,    |       | - Cảm biến: Độ ẩm đất, Mưa,    |
|   Rung SW-420, Ánh sáng CDS    |       |   Rung SW-420, Ánh sáng CDS    |
| - Relay cách ly quang + Bơm DC |       | - Relay cách ly quang + Bơm DC |
+--------------------------------+       +--------------------------------+

Mục tiêu dự án

  1. Thiết kế phần cứng phân tán Master - Multi-Slave: Xây dựng 01 bộ điều khiển trung tâm (Master) và 02 trạm chấp hành ngoại vi (Slave 1, Slave 2) hoạt động độc lập, chống nhiễu công nghiệp.
  2. Triển khai mạng truyền thông hỗn hợp LoRa & Wi-Fi: Tích hợp module RF LoRa SX1278 (433 MHz) cho liên kết tầm xa đa điểm và ESP8266 cho kết nối Internet tốc độ cao.
  3. Phát triển giao diện điều khiển kép: Thiết kế giao diện cảm ứng tại chỗ qua màn hình HMI TFT 7.0 inch và giao diện giám sát di động từ xa trên nền tảng ứng dụng Blynk.
  4. Đồng bộ hóa dữ liệu thời gian thực: Cập nhật liên tục các thông số môi trường (độ ẩm đất, lượng mưa, rung động máy bơm, cường độ sáng) với độ trễ dưới 2 giây.

Phương pháp tiếp cận và phạm vi

  • Phương pháp tiếp cận: Ứng dụng kỹ thuật nhúng vi điều khiển ARM Cortex-M3 32-bit kết hợp module truyền thông RF không dây nhằm tối ưu hóa năng lượng và tầm phủ sóng.
  • Kết quả kỳ vọng: Hệ thống vận hành ổn định trong bán kính 1000m không vật cản, tự động ngắt tưới khi trời mưa hoặc đất đạt ngưỡng bão hòa ẩm, bảo vệ máy bơm thông qua cảm biến rung động.
  • Phạm vi & Giới hạn: Mạng LoRa thử nghiệm với công suất phát 20dBm (100mW) trong khuôn viên trường; kết nối Wi-Fi NodeMCU yêu cầu khoảng cách dưới 10m tới điểm phát Access Point (AP).

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

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

Tiêu chí so sánh Hệ thống tưới cơ thủ công Hệ thống điều khiển qua Dây/PLC Giải pháp LoRa + IoT (Đề tài)
Chi phí thi công cáp Thấp (chỉ lắp van tay) Rất cao (kéo cáp ngầm, máng cáp) Gần như bằng 0 (Không dây)
Bảo trì & Mở rộng Phức tạp, tốn nhân lực Khó mở rộng thêm node mới Cực kỳ linh hoạt (Plug & Play)
Khoảng cách điều khiển Cần người tại chỗ Giới hạn bởi suy hao điện áp cáp Lên tới 3000m (LoRa SX1278)
Giám sát thời gian thực Không hỗ trợ Có (qua SCADA nội bộ đắt đỏ) Có (HMI TFT + App Blynk Cloud)
Khả năng tự động hóa Không Theo timer cố định Tự động theo cảm biến môi trường

Ma trận yêu cầu người dùng (Phân loại MoSCoW)

  • Must-Have (Bắt buộc):
    • Bật/tắt động cơ bơm nước DC qua Relay cách ly quang tải dòng 10A/250VAC.
    • Thu thập giá trị ADC 12-bit từ cảm biến độ ẩm đất và cảm biến mưa.
    • Truyền dữ liệu qua LoRa UART 433MHz giữa trạm Master và 2 Slave.
  • Should-Have (Nên có):
    • Đồng bộ trạng thái hai chiều giữa màn hình UART HMI 7.0" và ứng dụng Blynk di động.
    • Cảnh báo sự cố máy bơm bằng cảm biến rung SW-420 và tự động ngắt mạch.
  • Could-Have (Có thể có):
    • Bật/tắt đèn chiếu sáng cảnh quan tự động dựa trên cảm biến quang trở CDS.
  • Won't-Have (Chưa triển khai):
    • Dự báo thời tiết thông qua thuật toán AI/Machine Learning trên máy chủ Edge.

Thiết kế hệ thống

Ngăn xếp công nghệ (Technology Stack)

  • Core Microcontroller (Master & Slaves): STM32F103C8T6 (ARM 32-bit Cortex-M3, xung nhịp 72MHz, 64KB Flash, 20KB SRAM).
  • IoT Gateway / Wi-Fi Subsystem: NodeMCU V3 ESP-12E (ESP8266 Tensilica Xtensa LX106, 80/160MHz, 4MB Flash, Firmware v1.0).
  • Long-Range RF Transceiver: Module E32-TTL-100 (Semtech SX1278, tần số 410–441MHz, công suất 100mW, độ nhạy -130dBm, buffer 512 bytes).
  • Local HMI Display: Màn hình cảm ứng điện dung UART HMI TFT 7.0" TJC8048T070_011R (độ phân giải 800x480, 16MB Flash, 3.5KB RAM).
  • Cloud Protocol & App Framework: Blynk IoT Framework, kết nối qua Wi-Fi 802.11 b/g/n, giao thức TCP/IP.
  • Integrated Development Environments: Keil uVision v5.30 (C/C++ với STM32 Standard Peripheral Libraries), Arduino IDE v1.8.x, USART HMI Editor v1.63.1.
graph TD
    subgraph Trạm MASTER
        HMI["HMI TFT 7.0 inch\n(TJC8048T070)"] -- "UART (TX1/RX1)" --> STM_M["STM32F103C8T6\n(Master Core)"]
        ESP["ESP8266 NodeMCU\n(Blynk Gateway)"] -- "UART (TX2/RX2)" --> STM_M
        STM_M -- "UART (TX3/RX3)" --> LORA_M["LoRa SX1278\n(433 MHz Transceiver)"]
    end

    subgraph Không gian truyền thông vô tuyến
        LORA_M <-. "Sóng RF LoRa (Point-to-Multipoint)" .-> LORA_S1["LoRa SX1278 (Slave 1)"]
        LORA_M <-. "Sóng RF LoRa (Point-to-Multipoint)" .-> LORA_S2["LoRa SX1278 (Slave 2)"]
    end

    subgraph Trạm SLAVE 1
        LORA_S1 -- "UART" --> STM_S1["STM32F103C8T6 (Slave 1)"]
        STM_S1 --> RELAY1["Module Relay 5V + Opto"] --> PUMP1["Máy bơm 1 & Đèn"]
        SENS1["Cảm biến: Độ ẩm đất, Mưa, Rung SW-420, Sáng"] -- "ADC 12-bit / GPIO" --> STM_S1
    end

    subgraph Trạm SLAVE 2
        LORA_S2 -- "UART" --> STM_S2["STM32F103C8T6 (Slave 2)"]
        STM_S2 --> RELAY2["Module Relay 5V + Opto"] --> PUMP2["Máy bơm 2 & Đèn"]
        SENS2["Cảm biến: Độ ẩm đất, Mưa, Rung SW-420, Sáng"] -- "ADC 12-bit / GPIO" --> STM_S2
    end

Thiết kế giao thức truyền thông gói tin LoRa

Giao thức định dạng gói tin nhị phân tùy chỉnh được thiết kế nhằm tối ưu hóa độ rộng kênh và hạn chế lỗi bit:

Byte 0 Byte 1 Byte 2 Byte 3 Byte 4 Byte 5 Byte 6 Byte 7
Target Addr H Target Addr L Channel Start Byte Slave ID Command / Status Data Payload Checksum
0x00 0x01 / 0x02 0x17 (433MHz) 0xAA 0x01 / 0x02 0x01 (ON) / 0x00 (OFF) Sensor ADC / Telemetry XOR Checksum

Cơ chế bảo mật và an toàn vận hành

  • Optocoupler Isolation: Khối công suất máy bơm DC và đèn AC được cách ly quang hoàn toàn bằng IC PC817 trên module Relay 5V, ngăn chặn dòng điện ngược và sốc điện áp cảm ứng từ cuộn dây động cơ đánh hỏng chân I/O vi điều khiển.
  • Watchdog Protection & Frame Verification: Khung truyền UART có bit kiểm tra tính chẵn lẻ (Parity check) và mã kiểm tra tổng XOR giúp loại bỏ gói tin sai lệch do nhiễu môi trường.

Implementation và kết quả

Quy trình phát triển phần mềm

Mã nguồn điều khiển trên STM32F103C8T6 được phát triển bằng ngôn ngữ C thông qua thư viện ngoại vi chuẩn (STM32F10x_StdPeriph_Driver). Hệ thống chia xung Clock 72MHz từ thạch anh ngoài HSE 8MHz qua bộ nhân tần PLL.

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

#define SLAVE1_ADDR_H  0x00
#define SLAVE1_ADDR_L  0x01
#define LORA_CHANNEL   0x17  // 433 MHz

/**
 * @brief Gửi gói tin điều khiển định hướng qua module LoRa SX1278 (Target Mode)
 * @param slave_id: Địa chỉ định danh của node Slave (0x01 hoặc 0x02)
 * @param cmd: Lệnh điều khiển (0x01: Bật máy bơm, 0x00: Tắt máy bơm)
 */
void LoRa_SendCommand(uint8_t slave_id, uint8_t cmd) {
    uint8_t packet[7];
    packet[0] = SLAVE1_ADDR_H;     // Target Address High
    packet[1] = slave_id;           // Target Address Low (Slave 1/2)
    packet[2] = LORA_CHANNEL;       // Kênh truyền sóng RF
    packet[3] = 0xAA;               // Start Frame Delimiter
    packet[4] = slave_id;           // Payload: Slave ID
    packet[5] = cmd;                // Payload: Command Relay
    packet[6] = packet[3] ^ packet[4] ^ packet[5]; // Checksum XOR

    for(int i = 0; i < 7; i++) {
        while (USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
        USART_SendData(USART1, packet[i]);
    }
}

/**
 * @brief Cấu hình bộ chuyển đổi Analog-to-Digital (ADC1) đọc cảm biến độ ẩm đất
 */
void ADC1_Init_SoilSensor(void) {
    ADC_InitTypeDef ADC_InitStructure;
    GPIO_InitTypeDef GPIO_InitStructure;
    
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_GPIOA, ENABLE);
    
    // Cấu hình chân PA0 chế độ Analog Input
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
    
    ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
    ADC_InitStructure.ADC_ScanConvMode = DISABLE;
    ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
    ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
    ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
    ADC_InitStructure.ADC_NbrOfChannel = 1;
    ADC_Init(ADC1, &ADC_InitStructure);
    
    ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_55Cycles5);
    ADC_Cmd(ADC1, ENABLE);
    
    // Reset và hiệu chuẩn ADC
    ADC_ResetCalibration(ADC1);
    while(ADC_GetResetCalibrationStatus(ADC1));
    ADC_StartCalibration(ADC1);
    while(ADC_GetCalibrationStatus(ADC1));
}

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

Hệ thống đã trải qua quá trình đo đạc thực tế tại khuôn viên Đại học Sư phạm Kỹ thuật TP.HCM với các kịch bản kiểm thử nghiêm ngặt:

[Hiệu suất truyền gói tin LoRa theo khoảng cách]
Khoảng cách (m) | Tỷ lệ nhận gói tin thành công (PRR %) | Độ trễ trung bình (ms)
----------------|---------------------------------------|-----------------------
 100m (Khu A)   | [████████████████████] 100.0%         | 42ms
 300m (Khu C)   | [███████████████████░] 98.4%          | 48ms
 600m (Khu E)   | [██████████████████░░] 94.2%          | 65ms
 1000m (Cổng 2) | [████████████████░░░░] 89.6%          | 112ms
Hạng mục kiểm thử Giá trị thiết kế / Kế hoạch Kết quả thực nghiệm đạt được Trạng thái
Thời gian phản hồi HMI < 200 ms 65 ms Đạt
Độ trễ điều khiển qua Blynk < 3000 ms 1200 - 1800 ms (tùy mạng Wi-Fi) Đạt
Độ phân giải đọc cảm biến ẩm 10-bit (0 - 1023) 12-bit STM32 ADC (0 - 4095) Vượt kế hoạch
Tầm xa kết nối LoRa ổn định 500 m 1000 m (môi trường có vật cản) Vượt kế hoạch
Thời gian tác động Relay < 20 ms 10 ms Đạt
Tỷ lệ ngắt bơm khi có mưa 100% 100% (trong vòng 1.5 giây) Đạt

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

  1. Kiến trúc Gateway lai (Hybrid Dual-MCU Master): Kết hợp sức mạnh xử lý thời gian thực, đa kênh ngắt của ARM Cortex-M3 (STM32F103) với khả năng kết nối mạng không dây của ESP8266, giúp phân tách rõ ràng tầng vật lý/chấp hành và tầng ứng dụng đám mây, triệt tiêu hiện tượng nghẽn luồng CPU.
  2. Kỹ thuật truyền dữ liệu Target Addressing trên LoRa: Thay vì phát quảng bá liên tục gây xung đột kênh (Collision), hệ thống sử dụng cơ chế truyền điểm - điểm định danh kênh, giúp giảm 45% điện năng tiêu thụ tại các trạm Slave chạy pin/ắc-quy.
  3. Cơ chế đồng bộ trạng thái song song (Dual-HMI Sync): Thao tác điều khiển trên màn hình cảm ứng TFT tại phòng quản trị trung tâm được phản hồi tức thời lên ứng dụng Blynk di động và ngược lại, đảm bảo dữ liệu giám sát luôn nhất quán.

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

Kịch bản ứng dụng

  • Khuôn viên trường học, bệnh viện, khu công nghệ cao: Quản lý tập trung các cụm bồn hoa, cây cảnh phân tán mà không cần đào đường đặt ống bảo bọc dây điện.
  • Nông nghiệp chính xác (Smart Agriculture): Triển khai cho các trang trại trồng cây ăn trái, nhà màng công nghệ cao quy mô lớn, theo dõi và tưới tiêu tự động theo độ ẩm đất từng khu vực.
[Bảng phân bổ chi phí triển khai hệ thống 1 Master + 2 Slave]
┌──────────────────────────────────────────────┬─────────────┐
│ Hạng mục linh kiện phần cứng                 │ Chi phí     │
├──────────────────────────────────────────────┼─────────────┤
│ 03 x Kit STM32F103C8T6 BluePill + ST-Link   │ 240.000 VNĐ │
│ 01 x NodeMCU ESP8266 ESP-12E                │ 85.000 VNĐ  │
│ 03 x Module LoRa SX1278 433MHz E32-TTL-100   │ 450.000 VNĐ │
│ 01 x Màn hình cảm ứng UART HMI 7.0 inch     │ 850.000 VNĐ │
│ Cảm biến (Độ ẩm đất, Mưa, Rung SW-420, LDR)  │ 180.000 VNĐ │
│ Khối công suất (Relay cách ly, Nguồn, Bơm DC)│ 350.000 VNĐ │
│ PCB, hộp bảo vệ chống nước IP65, phụ kiện   │ 250.000 VNĐ │
├──────────────────────────────────────────────┼─────────────┤
│ TỔNG CHI PHÍ PHẦN CỨNG                       │2.405.000 VNĐ│
└──────────────────────────────────────────────┴─────────────┘
* Ghi chú: Chi phí tiết kiệm hơn 70% so với giải pháp kéo cáp công nghiệp truyền thống.

Phân tích hiệu quả đầu tư (ROI)

Với việc tự động ngắt tưới khi độ ẩm đất đạt ngưỡng tiêu chuẩn hoặc khi phát hiện trời mưa, khuôn viên tiết kiệm ước tính 35% lượng nước tưới hàng tháng60% thời gian nhân công chăm sóc. Thời gian hoàn vốn đầu tư thiết bị ước tính chỉ từ 4 đến 6 tháng hoạt động.


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

Hạn chế kỹ thuật

  • Module ESP8266 phụ thuộc vào chất lượng sóng Wi-Fi của mạng hạ tầng nhà trường; khi mất Wi-Fi, tính năng điều khiển qua Blynk tạm thời gián đoạn (tuy nhiên màn hình HMI và mạng LoRa vẫn hoạt động bình thường).
  • Cảm biến độ ẩm đất dạng điện cực kim loại mạ kẽm dễ bị ăn mòn điện hóa sau 6 - 9 tháng ngâm trong đất ẩm.

Hướng phát triển

  1. Chuyển đổi cảm biến đo độ ẩm đất sang công nghệ điện dung (Capacitive Soil Sensor) để chống ăn mòn và gia tăng tuổi thọ thiết bị trên 3 năm.
  2. Nâng cấp lên giao thức mạng LoRaWAN tiêu chuẩn kết hợp máy chủ The Things Network (TTN) để mở rộng khả năng quản lý lên hàng trăm trạm Slave.
  3. Bổ sung nguồn năng lượng mặt trời (Solar Panel + Pin 18650) tích hợp mạch sạc MPPT giúp các node Slave tự duy trì năng lượng độc lập ngoài trời.

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

  • Sinh viên ngành Kỹ thuật Điện tử / IoT: Tài liệu tham khảo toàn diện về cách kết nối liên vi điều khiển STM32 - ESP8266 qua UART, cấu hình module LoRa E32 và thiết kế giao diện HMI chuyên nghiệp.
  • Kỹ sư phát triển hệ thống nhúng: Cung cấp cấu trúc mã nguồn điều khiển phần cứng bằng thanh ghi/thư viện chuẩn trên vi điều khiển ARM Cortex-M3 và giải thuật chống nghẽn gói tin RF.
  • Nhà trường và Doanh nghiệp quản trị cơ sở vật chất: Sở hữu giải pháp tự động hóa cảnh quan xanh với chi phí vật tư thấp, tiết kiệm nước và điện năng vận hành.

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 cấp DC 5V/2A cho trạm Master và DC 12V/2A cho các trạm Slave (để cấp dòng cho động cơ bơm nước). Vị trí đặt trạm Master cần có sóng Wi-Fi 2.4GHz để NodeMCU kết nối với Blynk Cloud Server.

2. Giới hạn khoảng cách và khả năng mở rộng thêm trạm Slave như thế nào?

Module LoRa SX1278 (E32-TTL-100) có tầm phát lý thuyết 3000m và thực tế 1000m trong điều kiện nhiều công trình che chắn. Hệ thống có thể mở rộng lên tới 256 trạm Slave bằng cách mở rộng trường địa chỉ (Address Byte) trong khung truyền gói tin mà không cần thay đổi kiến trúc phần cứng Master.

3. Làm thế nào để hệ thống không bị kích hoạt tưới liên tục khi cảm biến bị lỗi?

Firmware trên STM32 đã cài đặt thuật toán kiểm tra ngưỡng (Thresholding) và bộ lọc trung bình động (Moving Average Filter) cho 10 mẫu ADC liên tiếp. Ngoài ra, cảm biến rung SW-420 đóng vai trò mạch phản hồi an toàn: nếu bơm chạy nhưng không phát hiện rung động dòng nước hoặc rung vượt ngưỡng rung lắc cho phép, vi điều khiển sẽ ngắt Relay ngay lập tức và phát còi cảnh báo.


Kết luận

Đồ án tốt nghiệp "Thiết kế và thi công hệ thống tưới cây thông minh trong khuôn viên trường ĐH SPKT TPHCM" đã kết hợp hiệu quả giữa lý thuyết vi điều khiển ARM, truyền thông vô tuyến LoRa và nền tảng IoT Blynk vào giải quyết bài toán thực tiễn. Hệ thống đã thi công hoàn chỉnh phần cứng, tối ưu hóa thuật toán nhúng và vận hành ổn định trong điều kiện thực tế tại trường. Đây là minh chứng rõ nét cho tính ứng dụng cao của ngành Công nghệ Kỹ thuật Điện tử - Truyền thông trong việc hiện đại hóa cơ sở hạ tầng, hướng tới các mô hình Smart Campus và nông nghiệp thông minh bền vững.