Giới thiệu dự án

Sự bùng nổ của cuộc Cách mạng Công nghiệp 4.0 và làn sóng Internet of Things (IoT) đã định hình lại toàn bộ ngành kỹ thuật điện tử - viễn thông. Theo các báo cáo công nghệ bán dẫn quốc tế, vi xử lý kiến trúc 32-bit ARM (Acorn RISC Machine) hiện chiếm lĩnh hơn 90% thị phần thiết bị di động và trên 65% thị phần vi điều khiển nhúng công nghiệp nhờ hiệu năng xử lý vượt bậc, tối ưu hóa năng lượng và hệ sinh thái ngoại vi phong phú. Tuy nhiên, tại các cơ sở đào tạo đại học, việc chuyển giao từ các vi điều khiển 8-bit truyền thống (như 8051, PIC hay AVR/Arduino) sang vi điều khiển 32-bit chuyên sâu như họ STM32 vẫn gặp rào cản lớn do thiếu công cụ thực hành tích hợp, trực quan và tối ưu chi phí.

+-----------------------------------------------------------------------------+
|                                 STM32F103C8T6                               |
|                         (ARM Cortex-M3 @ 72 MHz)                            |
+------------------------------------+----------------------------------------+
                                     |
    +-----------------+--------------+----------------+------------------+
    | SPI (18 Mbps)   | I2C (400 kHz)| UART (4.5 Mbps)| GPIO / Multiplex |
    v                 v              v                v                  v
+----------+    +-----------+  +-----------+    +-----------+      +-----------+
|  RFID    |    | LCD 16x2  |  |  ESP8266  |    | 4-Digit   |      | 4x4 Keypad|
|  RC522   |    | (PCF8574) |  |  Wi-Fi    |    | 7-Segment |      | & Buttons |
+----------+    +-----------+  +-----------+    +-----------+      +-----------+

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

Sinh viên và kỹ sư mới bắt đầu tiếp cận STM32 thường gặp các khó khăn cụ thể:

  • Hiện tượng rời rạc phần cứng: Sử dụng các bo mạch rời kết nối bằng dây cắm breadboard dẫn đến tiếp xúc kém, nhiễu tín hiệu tần số cao (đặc biệt với bus SPI, I2C), gây lỗi ngẫu nhiên trong quá trình debug.
  • Rào cản phức tạp về cấu hình ngoại vi: Kiến trúc ARM Cortex-M3 sở hữu ma trận bus phức tạp (AHB, APB1, APB2) và hệ thống phân phối xung Clock (RCC) đa nhánh, đòi hỏi quy trình thực hành từ cơ bản (GPIO, Timer, ngắt NVIC) đến nâng cao (DMA, bxCAN, USB FS) phải có giáo cụ trực quan chuẩn hóa.
  • Chi phí thiết bị chính hãng cao: Các kit Discovery hay Nucleo chính hãng nhập khẩu có giá thành cao và thiếu các khối giao tiếp ngoại vi thực tế tích hợp sẵn (như ma trận phím, RFID, Wi-Fi, cảm biến môi trường).

Mục tiêu đề tài

  1. Nghiên cứu kiến trúc phần cứng: Khảo sát chi tiết lõi ARM 32-bit Cortex-M3 trên dòng vi điều khiển STM32F103C8T6, bao gồm cây phân phối xung nhịp (Clock Tree), bus ma trận, bộ ngắt lồng nhau NVIC và các chuẩn giao tiếp truyền thông nối tiếp.
  2. Thiết kế và chế tạo mạch in (PCB): Thiết kế sơ đồ nguyên lý (Schematic) và layout mạch in 2 lớp chuẩn công nghiệp bằng phần mềm Altium Designer, tích hợp đồng bộ các module chức năng trên một bảng mạch duy nhất.
  3. Phát triển thư viện điều khiển Firmware: Lập trình cấu hình thanh ghi và driver ngoại vi bằng ngôn ngữ C/C++ (sử dụng STM32CubeMX và CMSIS/HAL), đáp ứng các bài toán quét LED 7 thanh, hiển thị LCD, đọc ma trận phím 4x4, quét thẻ RFID RC522 và truyền nhận Wi-Fi ESP8266.
  4. Hiệu chỉnh và đóng gói giáo cụ: Kiểm thử tính ổn định phần cứng, đo kiểm thời gian đáp ứng thời gian thực (real-time response) và biên soạn tài liệu kỹ thuật phục vụ đào tạo tại Khoa Công nghệ Điện tử - Thông tin, Trường Đại học Mở Hà Nội.

Giải pháp kỹ thuật và phạm vi triển khai

Giải pháp đưa ra là chế tạo một Kit phát triển Stm32 đa năng All-in-One:

  • Khối xử lý trung tâm: Vi điều khiển STM32F103C8T6 (64 KB Flash, 20 KB SRAM, xung nhịp 72 MHz).
  • Khối nguồn đa tầng: Đầu vào 5V DC qua Adapter, hạ áp xuống 3.3V DC thông qua IC nguồn LDO LM1117/AMS1117 chịu tải 1A, kết hợp tụ lọc chống nhiễu gợn sóng.
  • Phạm vi ứng dụng: Phục vụ trực tiếp cho phòng thí nghiệm thực hành vi điều khiển nhúng, các bài tập lớn IoT và làm nền tảng phát triển trạm quan trắc môi trường thông minh.

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

Phân tích hiện trạng và đối sánh kỹ thuật

Tiêu chí so sánh Kit phát triển STM32 (Đề tài) Arduino Uno R3 (ATmega328P) Bo STM32 BluePill + Breadboard
Kiến trúc vi xử lý 32-bit ARM Cortex-M3 (ARMv7-M) 8-bit AVR RISC 32-bit ARM Cortex-M3 (ARMv7-M)
Tần số xung nhịp (Core Clock) 72 MHz (Gấp 4.5 lần Arduino) 16 MHz 72 MHz
Bộ nhớ Flash / SRAM 64 KB / 20 KB 32 KB / 2 KB 64 KB / 20 KB
Ngoại vi tích hợp sẵn trên bo LED đơn, 7-seg 4 số, LCD, Keypad 4x4, RFID, ESP8266, Sensor Rất hạn chế (Chỉ có LED L tại chân D13) Không có (Hoàn toàn phụ thuộc breadboard)
Độ ổn định tiếp xúc & Chống nhiễu Cao (Mạch in PCB tích hợp đường mass đổ kín) Thấp (Dùng dây cắm breadboard rời) Kém (Dây cắm lỏng lẻo, dễ nhiễu bus SPI/I2C)
Chuẩn Debug/Nạp code SWD 2 dây / JTAG (Mạch ST-Link V2) UART Bootloader (Không debug phần cứng) SWD 2 dây (Cần câu dây ngoài thủ công)

Yêu cầu hệ thống theo mô hình MoSCoW

  • Must Have (Bắt buộc phải có): Mạch nguồn ổn định 3.3V/5V; vi điều khiển hoạt động tối đa 72 MHz qua HSE 8 MHz + PLL; mạch nạp SWD; khối hiển thị LED đơn, LED 7 thanh quét số, LCD 16x2; khối nhập liệu phím nhấn đơn và ma trận 4x4.
  • Should Have (Nên có): Giao tiếp không dây qua Module Wi-Fi ESP8266 V1; giao tiếp RFID RC522 qua bus SPI; cảm biến nhiệt độ DHT11/DS18B20; mở rộng I2C qua PCF8574.
  • Could Have (Có thể mở rộng): Tích hợp giao tiếp CAN Bus và cổng USB Full Speed 12 Mbps lên cọc Header chờ.
  • Won't Have (Chưa thực hiện đợt này): Màn hình màu cảm ứng TFT LCD và giao tiếp Ethernet vật lý RJ45.

Thiết kế hệ thống phần cứng

Bảng thông số linh kiện và dự toán dòng tải hệ thống

$$\Sigma I_{max} = I_{MCU} + I_{ESP8266} + I_{RFID} + I_{LED_Total} + I_{Sensors}$$

STT Khối chức năng / Module Điện áp hoạt động ($V$) Dòng điện tiêu thụ đỉnh ($mA$) Giao thức kết nối
1 STM32F103C8T6 (Core) 3.3V DC 36.0 Bus nội / GPIO
2 Module Wi-Fi ESP8266 V1 3.3V DC 320.0 (Khi phát sóng RF) USART1 (TX/RX)
3 Module RFID RC522 (13.56 MHz) 3.3V DC 26.0 SPI1 (SCK, MISO, MOSI, NSS)
4 Cảm biến nhiệt độ DHT11 / DS18B20 3.3V - 5V DC 3.5 1-Wire / GPIO
5 Màn hình LCD 16x2 (kèm PCF8574) 5.0V DC 25.0 (Bật đèn nền) I2C1 (SCL, SDA) / 4-bit parallel
6 LED 7 thanh 4 số (Anode chung) 3.3V DC 25.0 (Khi quét 8 segment) Quét GPIO + TIM2
7 Khối 8 LED đơn & Phím bấm 3.3V DC 20.0 GPIO Port B / Port A
Tổng Toàn hệ thống 3.3V / 5.0V DC ~ 455.5 mA Đạt chuẩn qua LDO LM1117 (1.0A)
                               +------------------------+
                               | Adapter 5VDC / 1000mA  |
                               +-----------+------------+
                                           |
                   +-----------------------+-----------------------+
                   | (5V Rail)                                     | (5V Input)
                   v                                               v
         +-------------------+                          +--------------------+
         |   LCD 16x2 / I2C  |                          | IC LDO LM1117-3.3V |
         |   PCF8574 Module  |                          +----------+---------+
         +-------------------+                                     |
                                                                   | (3.3V Rail, Max 1A)
                        +--------------------+---------------------+--------------------+
                        |                    |                     |                    |
                        v                    v                     v                    v
                 +--------------+     +--------------+      +--------------+     +--------------+
                 | STM32F103C8T6|     | ESP8266 WiFi |      |  RFID RC522  |     | LED 7-Seg /  |
                 | (Core MCU)   |     | (320mA Peak) |      | (SPI Master) |     | 8x LED Đơn   |
                 +--------------+     +--------------+      +--------------+     +--------------+

Phân tích công suất tiêu tán trên IC ổn áp: $$P_{d} = (V_{in} - V_{out}) \times I_{total} = (5.0\text{V} - 3.3\text{V}) \times 0.455\text{A} = 0.7735\text{ W}$$ Với mức tiêu tán nhiệt $0.77\text{W}$, vỏ linh kiện LM1117 SOT-223 tản nhiệt trực tiếp qua mặt phẳng đồng (Copper Pour) trên mạch in 2 lớp, đảm bảo nhiệt độ IC duy trì ổn định dưới $55^\circ\text{C}$ trong điều kiện phòng học thông thường.

Phân bổ xung nhịp (RCC & Clock Tree)

  • HSE (High-Speed External): Thạch anh ngoài 8.000 MHz. Tín hiệu qua bộ chia và nhân tần PLL ($\times 9$) tạo xung hệ thống $SYSCLK = 72\text{ MHz}$.
  • AHB Bus: Hoạt động tại 72 MHz cấp cho Core, Memory và DMA.
  • APB1 Bus (Tốc độ thấp): Chia 2 ($\text{Prescaler} = 2$) đạt 36 MHz (cấp cho TIM2, USART2, I2C1, SPI2).
  • APB2 Bus (Tốc độ cao): Không chia, đạt 72 MHz (cấp cho GPIO Port A/B/C, ADC1, USART1, SPI1).
  • LSE (Low-Speed External): Thạch anh hình trụ $32.768\text{ kHz}$ cấp xung cho khối Real-Time Clock (RTC) hoạt động duy trì bằng nguồn pin dự phòng VBAT.

Implementation và kết quả

Quy trình phát triển phần cứng và phần mềm

Dự án áp dụng quy trình phát triển hình chữ V (V-Model), từ thiết kế nguyên lý, Layout PCB trên Altium Designer phiên bản 20.0, gia công bo mạch sợi thủy tinh chuẩn FR4 độ dày 1.6mm, đến lập trình nhúng trên Keil C MDK-ARM v5.30 kết hợp STM32CubeMX v6.2.

       Yêu cầu hệ thống                     Đo kiểm & Đánh giá toàn diện
             \                                       /
      Thiết kế phần cứng                  Kiểm thử tích hợp trên Kit
             \                                 /
       Layout Altium PCB               Nạp Firmware & Debug SWD
              \                               /
               ---> Lập trình Driver C/C++ ---
/**
  * @brief  Cấu hình hệ thống xung nhịp HSE 8MHz -> PLL 72MHz
  * @param  None
  * @retval None
  */
void SystemClock_Config(void)
{
    RCC_OscInitTypeDef RCC_OscInitStruct = {0};
    RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};

    RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
    RCC_OscInitStruct.HSEState = RCC_HSE_ON;
    RCC_OscInitStruct.HSEPredivValue = RCC_HSE_PREDIV_DIV1;
    RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
    RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
    RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; // 8MHz * 9 = 72MHz
    HAL_RCC_OscConfig(&RCC_OscInitStruct);

    RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK
                                | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
    RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
    RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;  // HCLK = 72MHz
    RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;   // APB1 = 36MHz
    RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;   // APB2 = 72MHz
    HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2);
}

Thuật toán cốt lõi và lập trình ngoại vi

Thuật toán quét LED 7 thanh đa kênh dùng ngắt Timer

Để điều khiển LED 7 thanh 4 số Anode chung mà không chiếm dụng CPU dạng trễ chủ động (HAL_Delay()), giải thuật sử dụng Timer 2 tạo ngắt chu kỳ định thời $T = 1\text{ ms}$.

Cơ sở toán học chống nhấp nháy (Persistence of Vision): Thời gian lưu ảnh của võng mạc người là $\tau \approx 25\text{ ms}$ (tương ứng tần số 40 Hz). Chu kỳ quét toàn bộ 4 LED: $$T_{frame} = 4 \times T_{digit} = 4 \times 1\text{ ms} = 4\text{ ms} \implies f_{frame} = \frac{1}{4\times 10^{-3}} = 250\text{ Hz} \gg 40\text{ Hz}$$ Đảm bảo hình ảnh hiển thị liên tục, sắc nét tuyệt đối, không hiện tượng bóng ma (Ghosting).

/**
  * @brief  Xử lý ngắt Timer 2 chu kỳ 1ms phục vụ quét 4 LED 7 thanh
  */
const uint8_t LED7_HEX[] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};
volatile uint16_t Display_Number = 2021;
static uint8_t scan_index = 0;

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
    if (htim->Instance == TIM2)
    {
        // 1. Tắt toàn bộ 4 Anode (Tích cực mức LOW để ngắt nguồn Anode)
        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15, GPIO_PIN_SET);

        // 2. Xuất dữ liệu đoạn (Cathode) ra PORTA (PA0 -> PA7)
        uint8_t digit_val = 0;
        switch(scan_index)
        {
            case 0: digit_val = (Display_Number / 1) % 10; break;
            case 1: digit_val = (Display_Number / 10) % 10; break;
            case 2: digit_val = (Display_Number / 100) % 10; break;
            case 3: digit_val = (Display_Number / 1000) % 10; break;
        }
        
        // Ghi trực tiếp thanh ghi ODR để đảm bảo tốc độ đáp ứng nano-giây
        GPIOA->ODR = (GPIOA->ODR & 0xFF00) | LED7_HEX[digit_val];

        // 3. Kích hoạt Anode tương ứng của LED hiện tại
        switch(scan_index)
        {
            case 0: HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_RESET); break;
            case 1: HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13, GPIO_PIN_RESET); break;
            case 2: HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_RESET); break;
            case 3: HAL_GPIO_WritePin(GPIOB, GPIO_PIN_15, GPIO_PIN_RESET); break;
        }

        scan_index = (scan_index + 1) % 4;
    }
}

Thuật toán điều khiển LCD 16x2 chế độ 4-bit song song

Giao thức 4-bit cho phép tiết kiệm 4 chân vi điều khiển. Dữ liệu 8-bit được tách làm 2 Nibble (4-bit cao và 4-bit thấp), kích xung Enable ($E$) tối thiểu $1,\mu\text{s}$ để ghi vào thanh ghi Command hoặc Data.

/**
  * @brief  Gửi 1 byte lệnh hoặc dữ liệu tới LCD 16x2 qua giao thức 4-bit
  * @param  data: Dữ liệu cần gửi
  * @param  mode: 0 - Lệnh (IR), 1 - Dữ liệu hiển thị (DR)
  */
void LCD_Send_Byte(uint8_t data, uint8_t mode)
{
    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, (mode == 1) ? GPIO_PIN_SET : GPIO_PIN_RESET); // Chân RS
    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_13, GPIO_PIN_RESET); // Chân RW = 0 (Ghi)

    // Gửi 4-bit cao
    LCD_Write_Nibble((data >> 4) & 0x0F);
    // Gửi 4-bit thấp
    LCD_Write_Nibble(data & 0x0F);
}

static void LCD_Write_Nibble(uint8_t nibble)
{
    // Ghi ra PA4 - PA7
    for (int i = 0; i < 4; i++) {
        HAL_GPIO_WritePin(GPIOA, (GPIO_PIN_4 << i), ((nibble >> i) & 0x01) ? GPIO_PIN_SET : GPIO_PIN_RESET);
    }
    // Tạo sườn xung chốt dữ liệu trên chân EN (PB14)
    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_SET);
    DWT_Delay_us(5);
    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_RESET);
    DWT_Delay_us(100);
}

Kết quả thử nghiệm và kiểm định hiệu năng

Hạng mục kiểm thử Giá trị thiết kế / Lý thuyết Kết quả đo kiểm thực tế Đánh giá trạng thái
Độ chính xác tần số Clock 72.000 MHz 71.998 MHz (Đo tại MCO Pin) Đạt sai số < 0.003%
Độ ổn định điện áp 3.3V $3.30\text{ V} \pm 2%$ $3.28\text{ V} - 3.31\text{ V}$ Ổn định ở tải đỉnh 500mA
Tốc độ quét LED 7 thanh 1.0 ms / chữ số 1.0004 ms (Kiểm tra bằng Oscilloscope) Không bóng mờ, không rung
Khoảng cách đọc thẻ RFID 0 - 50 mm 35 - 45 mm (Chuẩn thẻ Mifare 13.56MHz) Nhận dạng chính xác 100%
Thời gian kết nối ESP8266 < 5.0 giây 2.8 - 3.4 giây (Mạng Wi-Fi 2.4GHz) Kết nối Socket TCP ổn định

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

  1. Chuẩn hóa phần cứng tích hợp đa ngoại vi: Khác với các giải pháp chắp vá truyền thống, bo mạch tích hợp đồng bộ từ màn hình LCD, LED quét, bàn phím ma trận đến giao tiếp không dây và nhận dạng tần số vô tuyến. Giảm thiểu 85% tỷ lệ lỗi phần cứng do lỏng chân kết nối trong quá trình sinh viên thực hành.
  2. Tối ưu hóa tài nguyên chân vi điều khiển: Bố trí thông minh phân nhóm chức năng GPIO, sử dụng giao tiếp 4-bit cho LCD kết hợp chân cắm module I2C PCF8574, giải phóng các chân đa chức năng của STM32 để phục vụ giao tiếp SPI tốc độ cao với RFID RC522 và USART với ESP8266.
  3. Tiết kiệm chi phí đầu tư phòng Lab: Chi phí gia công và lắp ráp toàn bộ linh kiện trên Kit ước tính giảm 40% so với chi phí mua lẻ từng module rời kèm theo bo mạch chính hãng, tạo điều kiện nhân rộng mô hình đào tạo chất lượng cao.

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

Kịch bản thực tế 1: Trạm thực hành vi điều khiển nhúng tại Đại học

Bộ kit được đưa vào chương trình thí nghiệm học phần "Kỹ thuật Vi điều khiển""Hệ thống Nhúng" tại Khoa Công nghệ Điện tử - Thông tin, Trường Đại học Mở Hà Nội. Giáo trình đi kèm xây dựng theo 8 bài thí nghiệm tiêu chuẩn:

  • Bài 1-2: Lập trình GPIO điều khiển LED đơn và chống rung ma trận phím 4x4.
  • Bài 3-4: Định thời ngắt Timer 2 quét LED 7 thanh 4 số và xuất ký tự LCD 16x2.
  • Bài 5: Đọc dữ liệu nhiệt độ, độ ẩm môi trường từ cảm biến DHT11 qua chuẩn 1-Wire.
  • Bài 6: Giao tiếp SPI tốc độ 18 Mbps đọc UID thẻ RFID RC522 xây dựng hệ thống kiểm soát ra vào.
  • Bài 7-8: Lập trình tập lệnh AT Command giao tiếp ESP8266 đẩy dữ liệu cảm biến lên Web Server thông qua HTTP/MQTT.

Kịch bản thực tế 2: Hệ thống IoT giám sát môi trường và chấm công

Tận dụng phần cứng sẵn có, kit có thể nạp firmware thương mại đóng vai trò một Gateway cục bộ:

  • Đọc thẻ nhân viên bằng khối RFID RC522.
  • Lấy nhiệt độ phòng từ cảm biến DS18B20.
  • Hiển thị thông tin chấm công tức thời lên màn hình LCD.
  • Đóng gói bản tin JSON gửi trực tiếp lên máy chủ Cloud qua Wi-Fi ESP8266.

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

Hạn chế kỹ thuật

  • Giới hạn bộ nhớ vi điều khiển: Dung lượng Flash 64 KB và SRAM 20 KB của STM32F103C8T6 đáp ứng tốt các bài thực hành Bare-metal C hoặc RTOS cơ bản, nhưng sẽ bị giới hạn khi nhúng các thuật toán mã hóa SSL/TLS nặng hoặc xử lý đồ họa phức tạp.
  • Phần cứng CAN và USB: Các đường tín hiệu vi sai CAN (CAN_RX, CAN_TX) và USB FS mới dừng lại ở cọc pin mở rộng, chưa tích hợp sẵn IC thu phát vật lý chuyên dụng (CAN Transceiver TJA1050 / SN65HVD230).

Hướng phát triển tiếp theo

  • Nâng cấp vi điều khiển trung tâm lên dòng STM32F407VET6 (ARM Cortex-M4, xung nhịp 168 MHz, tích hợp FPU, 512 KB Flash, 192 KB SRAM).
  • Tích hợp thêm module truyền thông tầm xa LoRa SX1278 (433MHz) để mở rộng khả năng nghiên cứu mạng diện rộng không dây tầm xa Low-Power WAN.
  • Chuyển giao toàn bộ source code mẫu sang hệ điều hành thời gian thực FreeRTOS v10.x, chuẩn hóa quản lý đa tác vụ (Multitasking).

Đố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: Sở hữu nền tảng phần cứng trực quan, dễ tiếp cận từ mức thanh ghi (Register-level) đến thư viện HAL chuẩn công nghiệp, rút ngắn thời gian làm quen với dòng chip ARM 32-bit.
  • Giảng viên và Kỹ thuật viên phòng thí nghiệm: Tiết kiệm thời gian chuẩn bị linh kiện, hạn chế tối đa nguy cơ chập cháy mạch trong các giờ thực hành do đấu nối sai.
  • Kỹ sư phát triển sản phẩm (R&D Developers): Sử dụng làm bo mạch kiểm thử nhanh ý tưởng (Rapid Prototyping) cho các sản phẩm IoT, khóa cửa thông minh RFID hoặc trạm quan trắc công nghiệp.

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

1. Yêu cầu kỹ thuật tối thiểu để nạp code và debug trên Kit là gì?

Cần một mạch nạp ST-Link V2 kết nối qua 4 chân chuẩn SWD (GND, SWCLK, SWDIO, 3.3V) và máy tính cài đặt môi trường Keil C uVision 5 hoặc STM32CubeIDE cùng gói phần mềm STM32F1 DFP Package.

2. Kit có hỗ trợ cấp nguồn trực tiếp qua cổng USB máy tính không?

Có. Hệ thống có thể nhận nguồn 5V trực tiếp từ cổng kết nối micro-USB hoặc Jack DC Adapter ngoài $5\text{V} - 9\text{V}$ (khuyến nghị dùng Adapter 5V/1A khi kích hoạt truyền dữ liệu Wi-Fi công suất cao).

3. Làm thế nào để mở rộng thêm module ngoài khi các chân IO đã được dùng cho LED và LCD?

Toàn bộ các chân GPIO của STM32F103C8T6 đều được câu song song ra 2 hàng rào cắm (Pin Header) tiêu chuẩn $2.54\text{ mm}$ ở hai bên rìa bo mạch, cho phép cắm thêm các mạch mở rộng khác một cách dễ dàng.

4. Kit có chạy được hệ điều hành thời gian thực FreeRTOS không?

Hoàn toàn được. Bộ định thời SysTick 24-bit của Cortex-M3 và 20 KB SRAM đủ khả năng vận hành FreeRTOS mượt mà với 4 - 6 Task chạy đồng thời (như Task đọc RFID, Task quét LED, Task truyền Wi-Fi).

5. Chi phí dự toán linh kiện để gia công tự chế tạo 01 Kit là bao nhiêu?

Tổng chi phí linh kiện và gia công PCB số lượng nhỏ dao động khoảng 250.000 - 320.000 VNĐ, chỉ bằng 30-40% so với việc mua một bo mạch thí nghiệm ARM nhập khẩu có tính năng tương đương.


Kết luận

Đồ án tốt nghiệp "Thiết kế chế tạo Kit phát triển sử dụng STM32" do sinh viên Nguyễn Khắc Hiển thực hiện dưới sự hướng dẫn của ThS. Nguyễn Mạnh Hùng đã hoàn thành xuất sắc các mục tiêu đề ra:

  • Chế tạo thành công bảng mạch phần cứng hoàn chỉnh, hoạt động ổn định ở tần số tối đa 72 MHz.
  • Tích hợp toàn diện các khối chức năng từ căn bản (LED, 7-seg, LCD, Keypad) đến nâng cao (RFID RC522, ESP8266 Wi-Fi, Sensor).
  • Xây dựng hệ thống firmware mẫu rõ ràng, chuẩn hóa thuật toán quét hiển thị không trễ và giao tiếp đa bus nối tiếp (SPI, I2C, UART).

Đề tài không chỉ mang ý nghĩa học thuật chuyên sâu mà còn có giá trị ứng dụng thực tiễn cao, đóng góp một giáo cụ trực quan đắc lực cho công tác giảng dạy và nghiên cứu khoa học kỹ thuật nhúng.