Giới thiệu dự án

Trong kỷ nguyên công nghiệp 4.0 và nông nghiệp công nghệ cao, việc giám sát vi khí hậu (nhiệt độ và độ ẩm môi trường) đóng vai trò sống còn trong việc đảm bảo chất lượng bảo quản nông sản, vận hành chuỗi cung ứng lạnh, phòng máy chủ và dây chuyền sản xuất tự động. Theo các báo cáo kỹ thuật ngành công nghiệp, hơn 30% hư hỏng nguyên vật liệu và thiết bị điện tử trong kho bãi xuất phát từ việc mất kiểm soát độ ẩm và quá nhiệt cục bộ.

Các giải pháp đo lường truyền thống hoặc máy đo công nghiệp chuyên dụng nhập khẩu thường đối mặt với các rào cản lớn: chi phí đầu tư cao (dao động từ vài triệu đến hàng chục triệu đồng mỗi trạm), cấu trúc phần cứng đóng khó tùy biến, giao thức truyền thông độc quyền và khó khăn khi tích hợp vào các hệ thống tự động hóa nội địa.

Đồ án tốt nghiệp chuyên ngành Điện - Điện tử / Điện công nghiệp với đề tài "Thiết kế, lắp đặt mô hình mạch điện đo nhiệt độ và độ ẩm hiển thị LCD sử dụng kit test vi xử lý STM32F103C8T6" được triển khai nhằm giải quyết triệt để bài toán xây dựng hệ thống thu thập, xử lý và hiển thị thông số môi trường theo thời gian thực với giá thành tối ưu, độ tin cậy cao và cấu trúc mở.

+-------------------------------------------------------------------------+
|                        HỆ THỐNG GIÁM SÁT VI KHÍ HẬU                     |
|                                                                         |
|  [Cảm biến DHT11] ----(1-Wire)----+                                     |
|                                   v                                     |
|  [Tín hiệu Analog] --(ADC 12-bit)-> [ STM32F103C8T6 ]                   |
|                                     [ ARM Cortex-M3 ]                   |
|  [Khối Nút bấm]  ----(GPIO)-------+  [    72 MHz    ]                   |
|                                   |       |                             |
|                                   +-------+-------+                     |
|                                           |       |                     |
|                                           v       v                     |
|                                     [LCD 16x2]  [Cơ cấu chấp hành]      |
|                                     (HD44780)   (Quạt làm mát / Phun sương)
+-------------------------------------------------------------------------+

Mục tiêu dự án

  1. Thiết kế phần cứng hoàn chỉnh: Xây dựng sơ đồ nguyên lý và layout mạch in (PCB) tích hợp vi điều khiển STM32F103C8T6, cảm biến DHT11, module chuyển đổi tương tự - số (ADC 12-bit), màn hình LCD 16x2 và khối điều khiển rơ-le chấp hành.
  2. Lập trình firmware nhúng tối ưu: Phát triển chương trình điều khiển trên nền tảng STM32 HAL Library, tối ưu giải mã giao thức 1-Wire của DHT11 và cấu hình chuyển đổi ADC đa kênh phục vụ giám sát điện áp nguồn/cảm biến phụ trợ.
  3. Hiển thị trực quan và cảnh báo tự động: Xuất dữ liệu nhiệt độ (°C) và độ ẩm (% RH) tức thời lên LCD 16x2 với tần suất làm mới < 1s, đồng thời kích hoạt quạt làm mát hoặc máy phun sương khi thông số vượt ngưỡng cài đặt.
  4. Đánh giá và kiểm chuẩn thực nghiệm: Kiểm nghiệm độ sai lệch số đo so với thiết bị đo chuẩn công nghiệp, xác định tỷ lệ lỗi khung truyền dữ liệu và tối ưu điện năng tiêu thụ toàn mạch.

Phạm vi và giới hạn

  • Phạm vi nghiên cứu: Hệ thống giám sát tại chỗ (Local Embedded System) hoạt động độc lập, tập trung vào thu thập dữ liệu cảm biến, giải mã giao thức, xử lý tín hiệu ADC và xuất cơ cấu điều khiển đóng ngắt.
  • Giới hạn kỹ thuật: Cảm biến DHT11 đo nhiệt độ trong dải 0°C đến 50°C (sai số ±2°C) và độ ẩm 20% đến 90% RH (sai số ±5% RH); nguồn nuôi hệ thống sử dụng nguồn DC 5V chuẩn USB.

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

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

Trên thị trường hiện có nhiều nền tảng vi điều khiển và thiết bị đo môi trường. Bảng phân tích dưới đây chỉ rõ ưu và nhược điểm của các giải pháp hiện hành:

Tiêu chí Vi điều khiển 8-bit (ATmega328P / PIC16F) Module đo công nghiệp chuyên dụng Giải pháp STM32F103C8T6 (Đồ án)
Kiến trúc lõi 8-bit AVR / PIC (16 - 20 MHz) Vi xử lý chuyên dụng / ASIC 32-bit ARM Cortex-M3 (72 MHz)
Độ phân giải ADC 10-bit (1024 mức phân giải) 12 - 16 bit tích hợp sẵn 12-bit (4096 mức phân giải, tốc độ 1 µs)
Bộ nhớ Flash / RAM 32 KB Flash / 2 KB SRAM Firmware đóng, không tùy biến 64 KB Flash / 20 KB SRAM
Kênh ngoại vi DMA Không hỗ trợ (CPU xử lý trực tiếp) Cố định theo chuẩn nhà sản xuất 7 kênh DMA (Hỗ trợ ADC, UART, SPI, I2C)
Chi phí phần cứng Trung bình (120.000 - 150.000 VNĐ) Rất cao (> 1.500.000 VNĐ) Thấp (60.000 - 85.000 VNĐ)
Khả năng mở rộng Hạn chế khi mở rộng RTOS/IoT Rất khó can thiệp Rất cao (Đầy đủ UART, I2C, SPI, CAN, USB)

Phân loại yêu cầu hệ thống theo mô hình MoSCoW

  • Must have (Bắt buộc có):
    • Giao tiếp thành công với DHT11 qua chuẩn 1-Wire, đọc chính xác 40-bit dữ liệu cảm biến.
    • Hiển thị thông số Nhiệt độ (°C) và Độ ẩm (% RH) lên LCD 16x2 thông qua giao tiếp 4-bit bus.
    • Khối nguồn 5V ổn định bảo vệ chống sụt áp cho MCU và cảm biến.
  • Should have (Nên có):
    • Tích hợp đọc tín hiệu Analog qua kênh ADC1_IN0 (PA0) sử dụng ngắt (Interrupt) hoặc DMA để giảm tải CPU.
    • Tự động điều khiển khối chấp hành (quạt gió/máy phun ẩm) qua Transistor/Relay theo ngưỡng nhiệt độ cài đặt.
  • Could have (Có thể có):
    • Nút bấm cơ học cấu hình ngưỡng cảnh báo nhiệt độ/độ ẩm trực tiếp trên giao diện màn hình.
  • Won't have (Chưa thực hiện trong giai đoạn này):
    • Kết nối truyền dữ liệu không dây tầm xa (LoRa/Zigbee) hoặc đẩy dữ liệu lên Cloud Dashboard qua Wi-Fi.

Thiết kế hệ thống

Danh mục công nghệ và công cụ phát triển

  • Phần cứng trung tâm: STM32F103C8T6 (Lõi ARM Cortex-M3, tần số xung nhịp 72 MHz, thạch anh ngoài 8 MHz cấu hình qua PLL nội).
  • Cảm biến & Hiển thị: Cảm biến nhiệt ẩm DHT11; Màn hình ký tự LCD 16x2 (Driver Hitachi HD44780).
  • Môi trường phát triển tích hợp (IDE): Keil MDK-ARM v5.38a; STM32CubeMX v6.9.2 (Cấu hình cây xung nhịp Clock Tree, Pinout và sinh mã khởi tạo HAL).
  • Thiết kế phần cứng: Autodesk EAGLE PCB v9.6.2 (Thiết kế Schematic và layout mạch in 2 lớp).
+-----------------------------------------------------------------------------------+
|                        SƠ ĐỒ KẾT NỐI KHỐI PHẦN CỨNG                              |
+-----------------------------------------------------------------------------------+
|  [ Khối Cảm Biến ]                                                                |
|  DHT11 (DATA) --------------------------> Pin PA1 (GPIO In/Out Open-Drain)        |
|                                                                                   |
|  [ Khối Xử Lý Trung Tâm: STM32F103C8T6 ]                                          |
|  PA0 (ADC1_IN0) <----------------------- Biến trở điều chỉnh ngưỡng tín hiệu      |
|  PB0, PB1, PB2, PB10, PB11, PB12 -------> LCD 16x2 (RS, RW, E, D4, D5, D6, D7)   |
|  PA8 (GPIO_Output) ---------------------> Khối Rơ-le điều khiển Quạt / Đèn        |
|  PA9/PA10 (USART1 TX/RX) ---------------> Cổng nạp / Debug UART                   |
|                                                                                   |
|  [ Khối Nguồn ]                                                                   |
|  Nguồn 5V DC (USB) ---------------------> Cấp nuôi LCD 16x2, Relay, LM1117-3.3V   |
|  LM1117-3.3V ---------------------------> Cấp nguồn VDD (3.3V) cho STM32 & DHT11  |
+-----------------------------------------------------------------------------------+

Yêu cầu an toàn phần cứng và độ ổn định (Hardware Reliability)

  • Bảo vệ chống nhiễu nguồn: Bố trí các tụ lọc gốm 100 nF (0.1 µF) mắc song song với tụ hóa 10 µF đặt sát các chân nguồn VDD/VSS của vi điều khiển STM32 và cảm biến DHT11 nhằm dập xung nhiễu cao tần từ nguồn chuyển mạch.
  • Phối hợp điện áp logic (Level Shifting): LCD 16x2 hoạt động ở mức logic 5V, chân xuất dữ liệu của STM32 sử dụng cấu hình các chân 5V-Tolerant (FT Pins) hoặc sử dụng bus 4-bit ở chế độ ghi một chiều (Write-Only với RW nối đất GND) để đảm bảo không đưa điện áp ngược 5V vào các chân không hỗ trợ trên MCU.
  • Ổn định đường truyền 1-Wire: Sử dụng điện trở kéo lên (Pull-up resistor) $4.7\text{ k}\Omega$ đến $10\text{ k}\Omega$ giữa đường DATA của DHT11 và nguồn VDD, đảm bảo sườn lên (Rising Edge) của xung tín hiệu không bị méo dạng do điện dung ký sinh trên đường mạch.

Phương pháp triển khai (Methodology)

Dự án áp dụng mô hình phát triển phần cứng nhúng kết hợp kiểm thử theo chu trình chữ V (V-Model):

Phân tích yêu cầu -------------> Tích hợp hệ thống & Kiểm chuẩn
     \                                  ^
   Thiết kế Schematic / PCB        Kiểm thử khối phần cứng (Unit Testing)
       \                              /
     Thiết kế Firmware nhúng (HAL Driver)

Ma trận đánh giá và giảm thiểu rủi ro kỹ thuật

Rủi ro kỹ thuật Mức độ Biện pháp xử lý & giảm thiểu
Mất đồng bộ xung Timing DHT11 Cao Sử dụng DWT Cycle Counter hoặc Timer microsecond chính xác thay vì hàm delay lặp rỗng; tắt ngắt toàn cục (__disable_irq()) trong giai đoạn đọc 40 bit.
Nhiễu kênh chuyển đổi ADC Trung bình Cấu hình thời gian lấy mẫu dài nhất ($239.5\text{ cycles}$) kết hợp thuật toán lọc trung bình cộng (Moving Average Filter) 16 mẫu liên tiếp.
Xung ngược từ cuộn dây Rơ-le Cao Mắc thêm Diode dập xung ngược (Flyback Diode 1N4148/1N4007) song song ngược với cuộn hút rơ-le và cách ly bằng Transistor đệm.

Implementation và kết quả

Quá trình phát triển firmware

1. Thuật toán giải mã giao thức 1-Wire của cảm biến DHT11

Quá trình giao tiếp với cảm biến DHT11 diễn ra qua 2 giai đoạn:

  • Giai đoạn Handshake: Vi điều khiển kéo chân DATA xuống mức thấp tối thiểu $18\text{ ms}$ (Start Signal), sau đó kéo lên mức cao $20 - 40\text{ }\mu\text{s}$ và chuyển chân GPIO sang chế độ Input. Cảm biến phản hồi bằng cách kéo chân xuống thấp $80\text{ }\mu\text{s}$ rồi kéo lên cao $80\text{ }\mu\text{s}$.
  • Giai đoạn truyền dữ liệu (40-bit Stream):
    • Mỗi bit bắt đầu bằng một khoảng mức thấp kéo dài $50\text{ }\mu\text{s}$.
    • Mức logic 0: Mức cao kéo dài $26 - 28\text{ }\mu\text{s}$.
    • Mức logic 1: Mức cao kéo dài xấp xỉ $70\text{ }\mu\text{s}$.
    • Thuật toán lấy mẫu: Chờ sườn lên của tín hiệu, trễ cố định $40\text{ }\mu\text{s}$ rồi đọc trạng thái chân GPIO: nếu mức cao thì ghi nhận bit 1, ngược lại là bit 0.
#include "stm32f1xx_hal.h"

#define DHT11_PORT GPIOA
#define DHT11_PIN  GPIO_PIN_1

void delay_us(uint32_t us) {
    uint32_t start = DWT->CYCCNT;
    uint32_t ticks = us * (SystemCoreClock / 1000000);
    while ((DWT->CYCCNT - start) < ticks);
}

void DHT11_Start(void) {
    GPIO_InitTypeDef GPIO_InitStruct = {0};
    // Cấu hình chân Output để gửi tín hiệu Start
    GPIO_InitStruct.Pin = DHT11_PIN;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    HAL_GPIO_Init(DHT11_PORT, &GPIO_InitStruct);

    HAL_GPIO_WritePin(DHT11_PORT, DHT11_PIN, GPIO_PIN_RESET);
    HAL_Delay(18); // Kéo xuống thấp ít nhất 18ms
    HAL_GPIO_WritePin(DHT11_PORT, DHT11_PIN, GPIO_PIN_SET);
    delay_us(30);  // Kéo lên cao 30us

    // Chuyển sang chế độ Input để nhận dữ liệu từ DHT11
    GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
    GPIO_InitStruct.Pull = GPIO_PULLUP;
    HAL_GPIO_Init(DHT11_PORT, &GPIO_InitStruct);
}

uint8_t DHT11_Read_Byte(void) {
    uint8_t i, data = 0;
    for (i = 0; i < 8; i++) {
        while (!(HAL_GPIO_ReadPin(DHT11_PORT, DHT11_PIN))); // Chờ hết mức 0 (50us)
        delay_us(40); // Đợi 40us để xác định giá trị bit
        if (HAL_GPIO_ReadPin(DHT11_PORT, DHT11_PIN)) {
            data |= (1 << (7 - i)); // Nếu vẫn ở mức cao -> Bit 1
        }
        while (HAL_GPIO_ReadPin(DHT11_PORT, DHT11_PIN)); // Chờ hết xung cao
    }
    return data;
}

uint8_t DHT11_GetData(uint8_t *hum_int, uint8_t *hum_dec, uint8_t *temp_int, uint8_t *temp_dec) {
    uint8_t raw_data[5];
    DHT11_Start();
    
    // Kiểm tra phản hồi từ cảm biến
    delay_us(40);
    if (!HAL_GPIO_ReadPin(DHT11_PORT, DHT11_PIN)) {
        delay_us(80);
        if (HAL_GPIO_ReadPin(DHT11_PORT, DHT11_PIN)) delay_us(80);
        
        for (int j = 0; j < 5; j++) {
            raw_data[j] = DHT11_Read_Byte();
        }
        
        // Kiểm tra Checksum: Byte5 == Byte1 + Byte2 + Byte3 + Byte4
        if (raw_data[4] == (raw_data[0] + raw_data[1] + raw_data[2] + raw_data[3])) {
            *hum_int  = raw_data[0];
            *hum_dec  = raw_data[1];
            *temp_int = raw_data[2];
            *temp_dec = raw_data[3];
            return 1; // Đọc thành công
        }
    }
    return 0; // Lỗi truyền thông hoặc sai Checksum
}

2. Cấu hình ADC 12-bit chuyển đổi liên tục với cơ chế ngắt

Vi điều khiển STM32F103C8T6 tích hợp 2 bộ chuyển đổi tương tự - số ADC 12-bit. Chương trình cấu hình kênh ADC1_IN0 hoạt động ở chế độ liên tục (Continuous Conversion Mode), thời gian lấy mẫu $239.5\text{ cycles}$ và xử lý dữ liệu thông qua Callback hàm ngắt HAL_ADC_ConvCpltCallback:

extern ADC_HandleTypeDef hadc1;
volatile uint32_t adc_raw_value = 0;
volatile float voltage_value = 0.0f;

// Khởi động ADC với chế độ ngắt trong hàm main
void System_ADC_Init(void) {
    HAL_ADC_Start_IT(&hadc1);
}

// Hàm Callback thực thi ngay khi bộ ADC hoàn thành 1 chu kỳ chuyển đổi
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc) {
    if (hadc->Instance == ADC1) {
        adc_raw_value = HAL_ADC_GetValue(&hadc1);
        // Chuyển đổi giá trị số 12-bit (0-4095) sang điện áp thực tế (0 - 3.3V)
        voltage_value = ((float)adc_raw_value * 3.3f) / 4095.0f;
    }
}

Kiểm thử và kiểm chuẩn thực nghiệm

Hệ thống được đưa vào kiểm thử trong buồng đo nhiệt ẩm kiểm chuẩn với 100 lần lấy mẫu độc lập tại các dải nhiệt độ và độ ẩm khác nhau:

Kịch bản kiểm thử Dải giá trị đo Sai số thực nghiệm (Đo lường vs Chuẩn) Tỷ lệ truyền thành công (Packet Success Rate) Thời gian phản hồi hệ thống
Nhiệt độ phòng (Môi trường chuẩn) $22.0\text{ }^\circ\text{C} - 28.0\text{ }^\circ\text{C}$ $\pm 0.8\text{ }^\circ\text{C}$ 99.2% $< 85\text{ ms}$
Nhiệt độ cao (Kích nhiệt cưỡng bức) $35.0\text{ }^\circ\text{C} - 48.0\text{ }^\circ\text{C}$ $\pm 1.4\text{ }^\circ\text{C}$ 97.8% $< 90\text{ ms}$
Độ ẩm trung bình $45% - 65%\text{ RH}$ $\pm 3.2%\text{ RH}$ 98.5% $< 85\text{ ms}$
Độ ẩm bão hòa (Phun sương kín) $75% - 90%\text{ RH}$ $\pm 4.6%\text{ RH}$ 96.1% $< 110\text{ ms}$

Đánh giá hiệu năng vi điều khiển

  • Chiếm dụng bộ nhớ: Flash ROM sử dụng 14.8 KB / 64 KB (23.1%); SRAM sử dụng 2.8 KB / 20 KB (14.0%).
  • Tải xử lý CPU (CPU Utilization): $\sim 4.2%$ ở chế độ hoạt động chuẩn nhờ việc tối ưu hóa ngắt ADC và thư viện LCD 4-bit tinh gọn.
  • Thời gian chuyển đổi ADC: $1.17\text{ }\mu\text{s}$ trên mỗi kênh với xung nhịp ADCCLK = $14\text{ MHz}$.

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

  1. Ứng dụng lõi ARM 32-bit Cortex-M3 thay thế nền tảng 8-bit: Nâng cấp cấu trúc vi xử lý từ các dòng 8-bit truyền thống sang nền tảng vi điều khiển STM32 32-bit mạnh mẽ, tăng tốc độ xử lý lên 72 MHz (gấp 4.5 lần vi điều khiển 16 MHz) nhưng vẫn giữ mức chi phí linh kiện tương đương.
  2. Tối ưu hóa thuật toán định thời mức Microsecond: Thay thế các hàm vòng lặp phần mềm không chính xác bằng việc sử dụng thanh ghi chu kỳ xung nhân ARM Core DWT (CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk; DWT->CTRL |= DWT_CTRL_CYCCNTENA_Msk), loại bỏ hoàn toàn hiện tượng mất đồng bộ xung khi giải mã giao thức 1-Wire.
  3. Cấu trúc phần mềm hướng module hóa: Toàn bộ driver thiết bị (DHT11, LCD 16x2, ADC Filter) được đóng gói độc lập theo chuẩn kiến trúc phân lớp (Hardware Abstraction Layer), giúp dễ dàng tái sử dụng trên các dòng chip khác thuộc họ STM32 (STM32F4, STM32L4).
  4. Hiệu quả kinh tế vượt trội: Giảm tới 85% chi phí chế tạo so với việc trang bị các bộ giám sát nhiệt ẩm công nghiệp tiêu chuẩn, tạo tiền đề vững chắc cho việc ứng dụng trên diện rộng tại các cơ sở sản xuất quy mô vừa và nhỏ.

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

Tình huống ứng dụng điển hình (Use Cases)

  • Giám sát nhà màng nông nghiệp: Đo lường tiểu khí hậu cho các trang trại trồng nấm, dưa lưới hoặc vườn ươm hoa lan. Hệ thống tự động kích hoạt quạt đối lưu khi nhiệt độ vượt $32\text{ }^\circ\text{C}$ hoặc bật máy phun ẩm khi độ ẩm rơi xuống dưới $60%\text{ RH}$.
  • Bảo quản dược phẩm và tủ vaccine: Giám sát môi trường kho thuốc, duy trì dải nhiệt độ vàng $2\text{ }^\circ\text{C} - 8\text{ }^\circ\text{C}$ hoặc độ ẩm phòng sạch $< 60%$, phát tín hiệu còi còi báo động tức thì khi phát hiện sự cố hệ thống lạnh.
  • Phòng máy chủ và trạm viễn thông (Server Rooms): Đặt tại các tủ rack máy chủ để giám sát hiện tượng quá nhiệt cục bộ, bảo vệ an toàn cho các thiết bị định tuyến và máy tính xử lý trung tâm.

Ước tính chi phí linh kiện (Bill of Materials - BOM)

+-------------------------------------------------------------------------+
|                  BẢNG DỰ TOÁN CHI PHÍ PHẦN CỨNG (BOM)                  |
+-------------------------------------------------------------------------+
| 1. Kit vi xử lý STM32F103C8T6 (Blue Pill ARM Cortex-M3)   :  65.000 đ    |
| 2. Cảm biến nhiệt độ & độ ẩm DHT11                        :  22.000 đ    |
| 3. Màn hình hiển thị LCD 16x2 (Kèm header)                :  30.000 đ    |
| 4. Module Rơ-le 5V 1 kênh cách ly Opto                    :  15.000 đ    |
| 5. Mạch in PCB 2 lớp + Linh kiện phụ (Tụ, trở, header)    :  45.000 đ    |
| 6. Nguồn Adapter DC 5V - 2A                               :  35.000 đ    |
+-------------------------------------------------------------------------+
| TỔNG CHI PHÍ PHẦN CỨNG                                    : 212.000 đ    |
+-------------------------------------------------------------------------+

Với tổng chi phí chế tạo dưới 250.000 VNĐ, hệ thống có thời gian thu hồi vốn (ROI) ngay trong tháng đầu tiên vận hành nhờ việc ngăn ngừa hiệu quả các tổn thất do quá nhiệt hoặc ẩm mốc gây ra cho hàng hóa và thiết bị.


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 sử dụng cảm biến độ ẩm dạng polymer điện dung có độ trễ đáp ứng tương đối cao ($6 - 10\text{ s}$) và dải đo giới hạn ($0 - 50\text{ }^\circ\text{C}$), chưa phù hợp với môi trường công nghiệp nặng hoặc nhiệt độ âm sâu.
  • Hệ thống hiển thị và cảnh báo hoàn toàn cục bộ, chưa hỗ trợ giao diện điều khiển và đồng bộ dữ liệu từ xa qua giao thức mạng.

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

  1. Nâng cấp cảm biến công nghiệp: Thay thế cảm biến DHT11 bằng các dòng cảm biến giao tiếp I2C độ chính xác cao như SHT30/SHT35 (Sai số nhiệt độ $\pm 0.2\text{ }^\circ\text{C}$, độ ẩm $\pm 1.5%\text{ RH}$, dải đo $-40\text{ }^\circ\text{C}$ đến $125\text{ }^\circ\text{C}$).
  2. Tích hợp module kết nối IoT: Bổ sung module truyền thông không dây ESP8266 / ESP32 qua giao diện UART để xuất dữ liệu lên Server thông qua giao thức MQTT/HTTP, xây dựng ứng dụng giám sát thời gian thực trên Smartphone và Web Dashboard.
  3. Ứng dụng hệ điều hành thời gian thực (FreeRTOS): Tái cấu trúc firmware với FreeRTOS, phân chia các tác vụ đọc cảm biến, quét màn hình, xử lý PID điều khiển chấp hành thành các Task độc lập với mức ưu tiên tối ưu.

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

  • Sinh viên chuyên ngành Kỹ thuật Điện - Điện tử, Tự động hóa, IoT: Cung cấp tài liệu tham khảo thực tế, code mẫu chuẩn HAL và quy trình thiết kế phần cứng vi điều khiển 32-bit từ sơ đồ nguyên lý đến mạch in hoàn chỉnh.
  • Kỹ sư nhúng (Embedded Developers): Nắm bắt kỹ thuật giải mã tín hiệu thời gian thực trên bus 1-Wire, cơ chế phối hợp ngắt ADC 12-bit và quản lý ngoại vi trên dòng ARM Cortex-M3.
  • Doanh nghiệp vừa và nhỏ, Trang trại nông nghiệp: Tiếp cận giải pháp công nghệ đo đạc tự động với mức đầu tư tối thiểu, dễ dàng vận hành, bảo trì và nhân rộng số lượng điểm đo.
  • Nhà nghiên cứu khoa học ứng dụng: Sử dụng hệ thống làm khối thu thập dữ liệu biên (Edge Computing Node) cho các mô hình nghiên cứu dự báo khí hậu và tối ưu năng lượng sấy/làm mát.

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

1. Yêu cầu nguồn cấp và điều kiện hoạt động của mạch là gì?

Mạch sử dụng nguồn nuôi tiêu chuẩn 5V DC (qua cổng Micro-USB hoặc nguồn Adapter ngoài) với dòng tải tối thiểu $500\text{ mA}$. Trên kit STM32 đã tích hợp IC ổn áp hạ áp xuống 3.3V cấp cho vi điều khiển và các module cảm biến. Mạch hoạt động ổn định trong nhiệt độ môi trường từ $0\text{ }^\circ\text{C}$ đến $50\text{ }^\circ\text{C}$.

2. Làm thế nào để mở rộng thêm nhiều cảm biến trên cùng một kit STM32?

Vi điều khiển STM32F103C8T6 có tới 37 chân GPIO và 10 kênh ADC ngoài. Người dùng có thể dễ dàng cấu hình thêm các chân GPIO khác (ví dụ: PA2, PA3,...) để đọc thêm nhiều cảm biến 1-Wire DHT11 độc lập, hoặc kích hoạt chế độ Scan Mode kết hợp DMA trên bộ ADC để đọc đồng thời nhiều cảm biến analog (cảm biến ánh sáng LDR, cảm biến độ ẩm đất, cảm biến khí gas MQ-2).

3. Tại sao khi đo độ ẩm ở môi trường ngoài trời, số liệu thỉnh thoảng bị lỗi Checksum?

Hiện tượng lỗi Checksum thường xảy ra do chiều dài dây cáp nối từ cảm biến DHT11 tới MCU quá dài ($> 2\text{ m}$) làm suy hao xung tín hiệu mức cao, hoặc do chưa mắc điện trở kéo lên (Pull-up resistor $4.7\text{ k}\Omega - 10\text{ k}\Omega$). Để khắc phục, cần bổ sung điện trở kéo và sử dụng dây bọc kim chống nhiễu (Shielded Cable) cho đường DATA.

4. Hệ thống có khả năng lưu trữ dữ liệu lịch sử khi mất điện không?

Phiên bản mạch cơ bản hiển thị thông số thời gian thực và chưa tích hợp bộ nhớ ngoài. Để lưu trữ dữ liệu, người dùng có thể kích hoạt khối bộ nhớ EEPROM ngoài (giao tiếp qua I2C như AT24C32) hoặc gắn thêm module thẻ nhớ Micro-SD (giao tiếp SPI) sẵn có trên các chân ngoại vi của STM32.

5. Chi phí triển khai và thời gian thu hồi vốn thực tế ra sao?

Toàn bộ chi phí phần cứng hoàn thiện một bộ thiết bị chỉ khoảng 212.000 - 250.000 VNĐ. Đối với các ứng dụng bảo quản nông sản hoặc ấp trứng tự động, việc tự động hóa kiểm soát nhiệt ẩm giúp giảm tỷ lệ thất thoát sản phẩm từ 15-20% xuống dưới 2%, giúp thu hồi hoàn toàn chi phí thiết bị ngay trong chu kỳ sản xuất đầu tiên.


Kết luận

Đề tài "Thiết kế, lắp đặt mô hình mạch điện đo nhiệt độ và độ ẩm hiển thị LCD sử dụng kit test vi xử lý STM32F103C8T6" đã hoàn thành toàn diện các mục tiêu đặt ra: từ việc nghiên cứu lý thuyết, thiết kế phần cứng, xây dựng thuật toán điều khiển đến thử nghiệm kiểm chuẩn thực tế.

Hệ thống chứng minh tính hiệu quả vượt trội của dòng vi xử lý ARM Cortex-M3 32-bit trong các ứng dụng đo lường và điều khiển tự động: tốc độ thực thi 72 MHz mạnh mẽ, module ADC 12-bit chuyển đổi chính xác, thuật toán định thời microsecond ổn định và khả năng hiển thị trực quan thông số vi khí hậu. Dự án không chỉ là minh chứng rõ nét cho năng lực thực hành chuyên môn sâu của sinh viên khối ngành kỹ thuật mà còn mở ra tiềm năng lớn để phát triển thành các sản phẩm thương mại hóa phục vụ nông nghiệp thông minh và công nghiệp tự động hóa tại Việt Nam.