Bối cảnh và vấn đề nghiên cứu
Trong kỹ thuật Điện tử - Viễn thông và Tự động hóa, việc rèn luyện kỹ năng thực hành trên các phần cứng nhúng thực tế giữ vai trò then chốt trong quá trình đào tạo đại học. Những năm gần đây, xu hướng công nghệ trong thiết kế hệ thống nhúng đã chuyển dịch mạnh mẽ từ các vi điều khiển 8-bit truyền thống sang các dòng vi điều khiển 32-bit kiến trúc ARM nhờ hiệu năng xử lý cao, tập ngoại vi phong phú và khả năng tối ưu hóa điện năng tiêu thụ. Tiêu biểu trong số đó là dòng vi điều khiển STM32 của hãng STMicroelectronics sử dụng lõi ARM Cortex-M3.
Tuy nhiên, trong hoạt động giảng dạy và nghiên cứu thực nghiệm tại các cơ sở đào tạo, người học thường gặp khó khăn khi tiếp cận các dòng chip 32-bit do thiếu các công cụ trực quan tích hợp sẵn ngoại vi để học tập và đánh giá giải thuật. Xuất phát từ nhu cầu thực tiễn và định hướng nâng cao chất lượng đào tạo của Khoa Công nghệ Điện tử - Thông tin thuộc Trường Đại học Mở Hà Nội, đề tài "Thiết kế chế tạo kit phát triển sử dụng STM32" đã được tác giả 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 (tháng 05/2021).
Mục tiêu và nhiệm vụ nghiên cứu của đồ án được xác định rõ ràng:
- Tìm hiểu, tham khảo tài liệu, giáo trình và nghiên cứu các kiến thức nền tảng liên quan đến dòng chip STM32 và các chuẩn giao tiếp ngoại vi.
- Dựa trên dữ liệu thu thập, lựa chọn giải pháp thiết kế và thi công mô hình kết nối các module với Kit điều khiển trung tâm STM32F103C8T6.
- Thiết kế lưu đồ giải thuật và lập trình điều khiển cho vi điều khiển.
- Thiết kế toàn bộ phần cứng của Kit (sơ đồ nguyên lý, mạch in hai lớp) bằng phần mềm Altium Designer.
- Thi công, lắp ráp hoàn thiện mô hình phần cứng các khối điều khiển.
- Chạy thử nghiệm mô hình, đo đạc và cân chỉnh hoạt động của hệ thống.
- Đánh giá kết quả thực hiện và hoàn thành báo cáo đồ án; hướng tới cải tiến mô hình nhằm tạo ra sản phẩm hoàn chỉnh phục vụ giáo cụ giảng dạy và làm tiền đề xây dựng hệ sinh thái IoT quan trắc môi trường.
Đối tượng nghiên cứu chính của đồ án là vi điều khiển STM32F103C8T6 và các khối ngoại vi tích hợp (màn hình LCD 16x2, LED 7 thanh 4 số, LED đơn, ma trận phím 4x4, nút nhấn đơn, module WiFi ESP8266 V1, module RFID RC522, cảm biến nhiệt độ - độ ẩm DHT11/DS18B20, module chuyển đổi I2C PCF8574). Phạm vi nghiên cứu thực hiện tại Khoa Công nghệ Điện tử - Thông tin, Trường Đại học Mở Hà Nội, trong khuôn khổ khóa đào tạo 2017–2021.
Cơ sở lý thuyết và phương pháp
Khung lý thuyết và kiến trúc vi điều khiển
Đồ án dựa trên nền tảng lý thuyết kiến trúc vi xử lý RISC 32-bit của hãng ARM (Acorn RISC Machine). Trong các phân nhánh ARM Cortex (gồm Cortex-A cho hệ điều hành phức tạp, Cortex-R cho hệ thống thời gian thực khắt khe, Cortex-M cho vi điều khiển), nghiên cứu đi sâu vào lõi ARM Cortex-M3 (kiến trúc ARMv7-M) với các đặc tính kỹ thuật:
- Kiến trúc Harvard tách biệt bus dữ liệu và bus lệnh.
- Đơn vị bảo vệ bộ nhớ (MPU - Memory Protection Unit).
- Hỗ trợ tập lệnh Thumb-2.
- Kỹ thuật Bit-Band hỗ trợ truy xuất trực tiếp từng bit dữ liệu.
- Hỗ trợ truy cập dữ liệu không xếp hàng (unaligned data accesses).
- Bộ đếm thời gian hệ thống SysTick timer 24-bit phục vụ hệ điều hành thời gian thực.
- Khối quản lý vector ngắt lồng nhau NVIC (Nested Vectored Interrupt Controller).
- Chuẩn nạp và gỡ lỗi 2 dây SWD (Serial Wire Debug) và JTAG truyền thống.
| Kiến trúc ARM |
Số bit |
Tên lõi tiêu biểu |
| ARMv1 / ARMv2 |
32/26 |
ARM1 / ARM2, ARM3 |
| ARMv3 / ARMv4 |
32 |
ARM6, ARM7 / ARM8 |
| ARMv4T / ARMv5 |
32 |
ARM7TDMI, ARM9TDMI / ARM7EJ, ARM9E, ARM10E |
| ARMv6 / ARMv6-M |
32 |
ARM11 / ARM-Cortex-M0, Cortex-M0+, Cortex-M1 |
| ARMv7-M / ARMv7EM |
32 |
ARM-Cortex-M3 / ARM-Cortex-M4 |
| ARMv7-R / ARMv7-A |
32 |
Cortex-R4, R5, R7 / Cortex-A5, A7, A8, A9, A12, A15, A17 |
| ARMv8-A |
64/32 |
ARM-Cortex-A53, ARM-Cortex-A57 |
Đối với vi điều khiển trung tâm STM32F103C8T6, các thông số nền tảng bao gồm:
- Lõi ARM Cortex-M3 hoạt động với tần số tối đa 72 MHz.
- Bộ nhớ Flash 64 Kbytes, SRAM 20 Kbytes.
- Điện áp làm việc 2.0 V đến 3.6 V.
- 2 bộ ADC 12-bit với 9 kênh đo (dải điện áp chuyển đổi 0 – 3.3 V), tích hợp cảm biến nhiệt độ nội.
- Hỗ trợ DMA cho ADC, I2C, SPI, UART.
- Hệ thống định thời gồm 3 timer 16-bit (hỗ trợ IC/OC/PWM), 1 timer 16-bit điều khiển động cơ chuyên dụng, 2 watchdog timer và 1 SysTick timer 24-bit.
- 9 kênh truyền thông: 2 bộ I2C (SMBus/PMBus, tốc độ 100 kHz và 400 kHz, kiểm tra lỗi CRC-8), 2 bộ SPI (tốc độ tối đa 18 MHz), 3 bộ USART (hỗ trợ tốc độ lên tới 4.5 Mbps, tương thích hồng ngoại IrDA và Smartcard ISO 7618-3), 1 bộ CAN 2.0B (tốc độ 1 Mbit/s, 3 mailbox truyền, 14 bộ lọc), 1 giao diện USB Device Full Speed (12 Mbps, 8 endpoint chia sẻ 512 byte SRAM).
- Cấu hình nguồn xung clock hệ thống: HSI (nội 8 MHz), HSE (ngoại 4–16 MHz, thường dùng thạch anh 8 MHz kết hợp PLL nhân tần lên 72 MHz), LSI (nội 40 kHz), LSE (ngoại 32.768 kHz cấp cho bộ Real Time Clock - RTC).
Cấu hình chế độ BOOT của vi điều khiển được điều khiển qua 2 chân vật lý BOOT0 và BOOT1, xác lập tại cạnh lên thứ 4 của xung SYSCLK sau khi reset:
| BOOT1 |
BOOT0 |
Chế độ Boot |
Giải thích |
| x |
0 |
Bộ nhớ Flash chính |
Khởi động thực thi chương trình nạp trong Flash nội |
| 0 |
1 |
Bộ nhớ hệ thống |
Khởi động Bootloader qua giao tiếp nối tiếp để nạp chip |
| 1 |
1 |
Bộ nhớ SRAM |
Khởi động và chạy mã trực tiếp từ vùng nhớ SRAM |
Phương pháp nghiên cứu và công cụ sử dụng
Nghiên cứu áp dụng phương pháp thiết kế kỹ thuật phần cứng kết hợp lập trình hệ thống nhúng:
- Phương pháp phân tích - tổng hợp tài liệu: Nghiên cứu tài liệu kỹ thuật (datasheet, reference manual) của STM32F103C8T6, chuẩn phần mềm CMSIS và các module ngoại vi.
- Phương pháp thiết kế mạch điện tử (EDA): Sử dụng phần mềm Altium Designer để xây dựng sơ đồ nguyên lý (Schematic) và layout mạch in 2 lớp (Top layer, Bottom layer) kết hợp hiển thị mô hình 3D.
- Phương pháp cấu hình và phát triển phần mềm: Sử dụng công cụ STM32CubeMX để khởi tạo cấu hình xung nhịp, phân bổ chân GPIO và thiết lập ngoại vi; xây dựng lưu đồ thuật toán điều khiển cho từng khối chức năng.
- Phương pháp thực nghiệm - kiểm thử: Chế tạo mạch in, hàn linh kiện, kết nối mạch nạp ST-Link V2 (chuẩn SWD 4 dây) và nạp firmware kiểm tra thực tế hoạt động của từng khối ngoại vi.
Thiết kế và triển khai
Kiến trúc tổng thể và sơ đồ khối phần cứng
Mô hình Kit phát triển được thiết kế dạng module hóa tích hợp trên một bo mạch duy nhất, bao gồm 7 khối chức năng chính xoay quanh vi điều khiển trung tâm STM32F103C8T6:
- Khối điều khiển trung tâm: Vi điều khiển STM32F103C8T6 kết nối với mạch dao động thạch anh ngoài 8 MHz (cấp nguồn xung cho HSE nhân tần PLL lên 72 MHz), thạch anh 32.768 kHz (cấp cho bộ RTC qua dao động LSE), mạch chuyển mạch chân BOOT, nút nhấn Reset, chân WKUP và nguồn pin dự phòng VBAT duy trì RTC khi mất điện. Các chân I/O còn lại được đưa ra các chân cắm (header) mở rộng.
- Khối nguồn hệ thống: Sử dụng đầu vào nguồn Adapter 5 VDC / 1A. Đường nguồn 5 VDC cấp trực tiếp cho các module yêu cầu điện áp 5V (LCD 16x2, module I2C PCF8574, khối UART). Nguồn 3.3 VDC được hạ áp từ nguồn 5V thông qua IC ổn áp tuyến tính LM1117 (dòng tải cực đại 1A, công suất tối đa 5W) để cấp cho vi điều khiển và các module 3.3V.
Bảng tổng hợp thông số điện áp và dòng tiêu thụ định mức của các thành phần trên bo mạch:
| STT |
Tên linh kiện / Module |
Điện áp cung cấp (V) |
Dòng điện hoạt động / tối đa |
| 1 |
Vi điều khiển STM32F103C8T6 |
3.3V DC |
350 µA – 600 µA |
| 2 |
Module WiFi ESP8266 V1 |
3.3V DC |
320 mA |
| 3 |
Module RFID RC522 |
3.3V DC |
13 mA – 26 mA |
| 4 |
Cảm biến nhiệt độ (DHT11/DS18B20) |
3.3V – 5V DC |
3.5 mA |
| 5 |
Module I2C PCF8574 |
5V DC |
Dòng định mức IC |
| 6 |
Khối LED đơn (8 LED) |
3.3V DC |
Tiêu thụ theo trở hạn dòng |
| 7 |
Khối LED 7 thanh (4 số) |
3.3V DC (2.2V/LED) |
25 mA/LED |
| 8 |
Khối giao tiếp UART |
5V DC |
Dòng giao tiếp chuẩn |
- Khối hiển thị:
- Màn hình LCD 16x2: Hoạt động ở mức 5V, giao tiếp ở chế độ 4-bit thông qua Port A (
PA4 đến PA7) cùng các chân điều khiển RS (PB12), RW (PB13), E (PB14).
- LED 7 thanh 4 số (Anode chung): Điện áp 2.2V, dòng 25 mA, 12 chân. Các thanh LED (
A, B, C, D, E, F, G, Dp) nối với Port A (PA0 đến PA7). Bốn chân điều khiển cấp nguồn Anode (LED7_1 đến LED7_4) nối với Port B (PB12 đến PB15).
- Khối 8 LED đơn: Nối trực tiếp từ
PB0 đến PB7 của vi điều khiển, điều khiển bằng logic tích cực mức 0/1.
- Khối nút nhấn và bàn phím:
- 4 nút nhấn đơn: Kết nối với các chân
PA11, PA12, PA14, PA15 (sử dụng trở kéo lên 3.3V, trạng thái mặc định logic 1, khi nhấn chuyển về logic 0).
- Ma trận phím 4x4 (16 nút bấm): Rút gọn số chân I/O còn 8 đường (4 hàng
Row1-Row4 và 4 cột Col1-Col4), trong đó các cột nối với Port B (PB4 đến PB7).
- Khối truyền thông không dây:
- Module WiFi ESP8266 V1: Kết nối vi điều khiển để truyền nhận dữ liệu với Web server.
- Module RFID RC522: Phục vụ đọc/ghi thẻ cảm ứng qua chuẩn truyền thông SPI.
- Khối cảm biến: Hỗ trợ gắn cảm biến nhiệt độ - độ ẩm DHT11 hoặc cảm biến nhiệt độ số DS18B20/DS18S20.
- Khối nạp và gỡ lỗi (SWD): Kết nối với mạch nạp ST-Link V2 bằng 4 đường tín hiệu (
GND, SWCLK, SWDIO, 3.3V).
Thuật toán và lưu đồ điều khiển chính
- Thuật toán quét LED 7 thanh 4 số: Do phần cứng sử dụng LED 7 thanh 4 số Anode chung, kỹ thuật quét LED dựa trên hiện tượng lưu ảnh của mắt người (thời gian xử lý ảnh khoảng 25 ms, tương đương 40 hình/giây). Để tránh hiện tượng nhấp nháy, chu kỳ cấp nguồn cho 4 LED phải thỏa mãn $4T < 25\text{ ms} \Rightarrow T < 6.25\text{ ms}$. Tác giả sử dụng bộ định thời
TIM2 của STM32F103C8T6 để tạo ngắt định thời định kỳ $T = 1\text{ ms}$. Tại mỗi lần ngắt, chương trình lần lượt bật nguồn cho một LED và đẩy dữ liệu các hàng đơn vị, chục, trăm, nghìn tương ứng ra Port A.
- Thuật toán giao tiếp LCD 16x2 chế độ 4-bit: Cấu hình chân trong CubeMX; gửi lệnh khởi tạo 2 dòng và tự động tăng con trỏ; phát xung chân Enable (
E) mức cao xuống thấp để chốt lệnh (chân RS=0) hoặc dữ liệu (chân RS=1) chia làm 2 nibble truyền trên bus 4 đường (PA4-PA7).
- Thuật toán xử lý nút nhấn: Đọc trạng thái chân I/O kết hợp khoảng trễ (delay) khử rung phím cơ học, thực hiện tăng/giảm giá trị biến đếm từ 0 đến 9999 và hiển thị kết quả lên khối LED 7 thanh.
Nội dung chính theo từng chương
Chương 1: Cơ sở lý thuyết về STM32
Chương 1 hệ thống hóa toàn bộ kiến thức lý thuyết về cấu trúc ARM và chi tiết phần cứng của dòng vi điều khiển STM32:
- Trình bày lịch sử phát triển ARM từ năm 1983 tại Công ty Acorn Computers qua các thế hệ kiến trúc ARMv1 đến ARMv8-A.
- Phân tích chi tiết lõi ARM Cortex-M3: cấu trúc đường truyền dữ liệu và lệnh (Harvard), tập lệnh Thumb-2, khối quản lý ngắt NVIC rút ngắn thời gian đáp ứng ngắt, giao tiếp gỡ lỗi qua SWD và JTAG.
- Khảo sát vi điều khiển STM32F103C8T6: sơ đồ chân, kiến trúc các bus nội (ICode bus, DCode bus, System bus, DMA bus kết nối qua BusMatrix theo thuật toán xoay vòng Round-Robin; 2 cầu AHB/APB gồm APB1 max 36 MHz và APB2 max 72 MHz).
- Hệ thống cấp xung Clock: cơ chế phân bổ và nhân tần số từ 4 nguồn xung (HSI, HSE, LSI, LSE), cấu hình PLLMUL để đạt xung nhịp tối đa 72 MHz từ thạch anh ngoài 8 MHz; cách kết nối dao động 32.768 kHz cho RTC.
- Phân tích 3 chế độ BOOT (Flash, System Memory, SRAM) được điều khiển bởi trạng thái 2 chân BOOT0 và BOOT1.
- Khảo sát nguyên lý các giao diện ngoại vi:
- SPI: Chế độ Full-duplex tốc độ tới 18 MHz, hỗ trợ 2 kênh DMA, tích hợp kiểm tra CRC8/CRC16 phục vụ giao tiếp thẻ SD/MMC.
- I2C: Hỗ trợ tốc độ chuẩn 100 kHz và tốc độ cao 400 kHz, 7-bit/10-bit địa chỉ, tích hợp mạch kiểm tra lỗi phần cứng PEC (Packet Error Checking) theo chuẩn CRC-8.
- USART: 3 bộ USART (tốc độ tới 4.5 Mbps), hỗ trợ chế độ Half-duplex một dây, điều khiển luồng phần cứng CTS/RTS, truyền thông hồng ngoại IrDA (tốc độ tới 115200 bps) và chuẩn Smartcard ISO 7618-3.
- CAN: Bộ điều khiển bxCAN hỗ trợ chuẩn 2.0A và 2.0B Active/Passive tốc độ 1 Mbit/s, 3 mailbox truyền có nhãn thời gian TTCAN, 2 bộ đệm nhận FIFO và 14 bộ lọc thông báo (Filter Banks 0–13).
- USB: Bộ điều khiển USB Device Full Speed (12 Mbps), 8 endpoint chia sẻ 512 byte SRAM đệm.
- Giới thiệu mạch nạp ST-Link V2: thông số kỹ thuật giao tiếp USB 2.0, hỗ trợ nạp chip STM8 qua chuẩn SWIM (tốc độ 9.7 – 12.8 Kbytes/s) và nạp STM32 qua chuẩn SWD 4 dây (
GND, SWCLK, SWDIO, 3.3V).
Chương 2: Thiết kế phần cứng
Chương 2 trình bày toàn bộ quy trình thiết kế và chế tạo phần cứng thực tế của Kit phát triển:
- Xây dựng sơ đồ khối tổng thể của hệ thống gồm 7 khối liên kết chặt chẽ xung quanh vi điều khiển trung tâm.
- Lựa chọn linh kiện và thiết kế sơ đồ nguyên lý mạch (Schematic) trên phần mềm Altium Designer: thiết kế khối nguồn hạ áp LM1117 (5V sang 3.3V), khối dao động kép (thạch anh 8 MHz và 32.768 kHz), khối hiển thị (LCD, LED 7 đoạn, LED đơn), khối nút nhấn/bàn phím ma trận, khối kết nối WiFi ESP8266, RFID RC522 và khối nạp SWD.
- Triển khai Layout mạch in (PCB Design): Thiết kế mạch in 2 lớp với lớp mặt trên (Top Layer), lớp mặt dưới (Bottom Layer) và tạo mô hình dựng hình 3D (Altium 3D) để kiểm tra không gian bố trí linh kiện trước khi gia công.
- Gia công mạch in, hàn linh kiện, lắp ráp hoàn thiện và thu được sản phẩm phần cứng Kit STM32 hoàn chỉnh.
Chương 3: Chức năng từng khối
Chương 3 đi sâu vào phân tích nguyên lý hoạt động, cấu hình phần cứng, lưu đồ thuật toán và kết quả thử nghiệm cho từng khối cụ thể:
- Khối điều khiển trung tâm: Tính toán sử dụng STM32F103C8T6 với nguồn 3.3V DC, mạch pin VBAT dự phòng và mạch dao động thạch anh ngoài HSE 8 MHz (nhân tần PLL lên 72 MHz), LSE 32.768 kHz cho RTC.
- Khối nguồn: Tính toán cân bằng công suất dựa trên bảng thông số dòng tiêu thụ của toàn bộ linh kiện trên mạch; lựa chọn Adapter 5V/1A và IC nguồn LM1117-3.3 (chịu áp vào max 15V, dòng ra cực đại 1A, công suất cực đại 5W, dải nhiệt hoạt động $0^\circ\text{C}$ đến $125^\circ\text{C}$, dòng chờ 10 mA).
- Khối hiển thị LCD 16x2: Phân tích sơ đồ 16 chân của LCD (nguồn, VSS điều chỉnh tương phản, chọn thanh ghi RS, đọc/ghi RW, chân chốt E, 8 đường dữ liệu D0-D7, chân đèn nền A-K); xây dựng lưu đồ thuật toán khởi tạo và ghi dữ liệu/lệnh ở chế độ 4-bit bằng CubeMX.
- Khối hiển thị LED 7 thanh: Thiết kế mạch điều khiển LED 7 thanh 4 số Anode chung kết nối Port A (chân dữ liệu đoạn) và Port B (chân chọn số); xây dựng thuật toán phân tích số nguyên $\le 9999$ thành các chữ số hàng nghìn, trăm, chục, đơn vị; lập trình ngắt
TIM2 với chu kỳ quét $T = 1\text{ ms}$ cho từng LED để hiển thị số ổn định không nhấp nháy.
- Khối LED đơn: Thiết kế 8 LED phát quang kết nối
PB0-PB7, lập trình thay đổi trạng thái chớp tắt theo chu kỳ 1 giây.
- Khối nút nhấn: Thiết kế mạch 4 phím đơn (
PA11, PA12, PA14, PA15) và ma trận phím 4x4 quét 8 chân (4 hàng, 4 cột nối PB4-PB7); xây dựng lưu đồ thuật toán nhận diện nút bấm có delay chống dội để tăng/giảm giá trị hiển thị trên LED 7 đoạn từ 0 đến 9999.
- Các khối giao tiếp mở rộng: Thuyết minh sơ đồ kết nối và lưu đồ thuật toán của khối truyền thông WiFi ESP8266 V1, khối đọc thẻ RFID RC522 (hiển thị dữ liệu qua phần mềm Terminal), khối cảm biến nhiệt độ - độ ẩm (DHT11/DS18B20 hiển thị kết quả lên LCD), khối giao tiếp UART và khối mở rộng I2C sử dụng IC PCF8574 điều khiển LCD 16x2.
Kết quả và đóng góp
Kết quả đạt được
- Thiết kế và chế tạo thành công phần cứng Kit phát triển đa năng sử dụng vi điều khiển 32-bit STM32F103C8T6 trên mạch in PCB 2 lớp hoàn chỉnh, kích thước nhỏ gọn.
- Hệ thống khối nguồn vận hành ổn định, cung cấp chính xác điện áp 5 VDC và 3.3 VDC (qua IC LM1117-3.3 dòng tối đa 1A) cho vi điều khiển và toàn bộ các module ngoại vi.
- Kiểm thử thành công các giải thuật nhúng cơ bản và nâng cao trên phần cứng thực tế:
- Điều khiển 8 LED đơn nhấp nháy định thời.
- Giao tiếp và hiển thị ký tự lên màn hình LCD 16x2 theo chế độ bus 4-bit và qua module mở rộng I2C PCF8574.
- Lập trình quét hiển thị 4 chữ số trên LED 7 thanh Anode chung sử dụng ngắt timer phần cứng
TIM2 với chu kỳ quét $1\text{ ms}$.
- Đọc trạng thái nút bấm đơn và ma trận phím 4x4 có chống dội, thực hiện giải thuật đếm tăng/giảm giá trị hiển thị từ 0 đến 9999.
- Giao tiếp nạp và gỡ lỗi chương trình ổn định qua giao diện SWD 4 chân với mạch nạp ST-Link V2.
- Kết nối các giao tiếp ngoại vi khác gồm module WiFi ESP8266, đầu đọc thẻ RFID RC522, cảm biến DHT11/DS18B20 và cổng nối tiếp UART.
Đóng góp của đề tài
- Cung cấp một bộ giáo cụ thực hành phần cứng trực quan, tích hợp đa dạng ngoại vi, phục vụ công tác giảng dạy, học tập và nghiên cứu các học phần 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úp sinh viên dễ dàng tiếp cận kiến trúc vi xử lý tiên tiến ARM Cortex-M3 32-bit, rút ngắn thời gian làm quen với các chuẩn giao tiếp công nghiệp (SPI, I2C, UART, CAN, USB).
- Tạo dựng nền tảng phần cứng cơ sở hỗ trợ sinh viên phát triển tiếp các dự án nghiên cứu ứng dụng như hệ thống IoT thu thập dữ liệu và quan trắc môi trường.
Hạn chế và hướng nghiên cứu tiếp
Hạn chế
- Đồ án chủ yếu tập trung vào việc thiết kế chế tạo phần cứng và kiểm thử chức năng hoạt động riêng lẻ của từng khối ngoại vi; chưa xây dựng một chương trình firmware nhúng tích hợp đồng thời toàn bộ các module trong một ứng dụng duy nhất.
- Chưa đi sâu vào khai thác các ngoại vi nâng cao của vi điều khiển STM32 như giao thức mạng CAN (bxCAN), giao tiếp USB Device truyền dữ liệu trực tiếp với máy tính, hoặc áp dụng hệ điều hành thời gian thực (RTOS).
Hướng nghiên cứu tiếp
- Hoàn thiện chương trình phần mềm tích hợp đầy đủ các khối chức năng: đọc dữ liệu từ cảm biến nhiệt độ - độ ẩm DHT11/DS18B20, xác thực thẻ từ qua module RFID RC522 và truyền dữ liệu lên Web server qua WiFi ESP8266.
- Ứng dụng Kit phát triển để xây dựng hoàn chỉnh hệ thống IoT quan trắc môi trường truyền dữ liệu thời gian thực.
- Tối ưu hóa layout mạch in, đóng gói vỏ hộp bảo vệ để hoàn thiện sản phẩm thương mại phục vụ trang bị phòng thí nghiệm thực hành.
Giá trị tham khảo
Đồ án là tài liệu tham khảo kỹ thuật hữu ích cho:
- Đối tượng người đọc: Sinh viên, học viên các ngành Công nghệ Kỹ thuật Điện tử - Viễn thông, Kỹ thuật Điều khiển và Tự động hóa, Kỹ thuật Máy tính và Công nghệ Thông tin đang bắt đầu học tập về hệ thống nhúng và vi điều khiển ARM.
- Nội dung giá trị:
- Phương pháp thiết kế sơ đồ nguyên lý và layout mạch in chuẩn cho vi điều khiển STM32F103C8T6 trên phần mềm Altium Designer (mạch dao động thạch anh ngoài kép 8 MHz và 32.768 kHz, mạch nguồn tuyến tính LM1117-3.3, mạch cấp pin VBAT cho RTC, mạch nạp SWD).
- Thuật toán quét LED 7 thanh 4 số dùng ngắt Timer
TIM2 định thời 1 ms dựa trên nguyên lý lưu ảnh mắt người.
- Phương pháp ghép nối và khởi tạo giao tiếp LCD 16x2 ở chế độ 4-bit và qua IC chuyển đổi giao tiếp I2C PCF8574 bằng công cụ STM32CubeMX.
- Kỹ thuật quét ma trận phím 4x4 rút gọn chân I/O và giải thuật khử rung phím bấm.
Câu hỏi thường gặp
1. Vi điều khiển trung tâm STM32F103C8T6 sử dụng trong Kit có những thông số kỹ thuật cốt lõi nào?
Vi điều khiển STM32F103C8T6 dựa trên lõi 32-bit ARM Cortex-M3 (kiến trúc ARMv7-M) hoạt động với xung nhịp tối đa 72 MHz. Chip tích hợp 64 Kbytes bộ nhớ Flash, 20 Kbytes SRAM, 2 bộ ADC 12-bit (9 kênh, dải đo 0 – 3.3V), 3 timer 16-bit đa dụng, 1 timer điều khiển động cơ, 2 watchdog timer, 1 SysTick timer 24-bit và hỗ trợ đa dạng giao tiếp ngoại vi gồm 2 bộ I2C, 2 bộ SPI, 3 bộ USART, 1 bộ CAN 2.0B và 1 cổng USB Full Speed (12 Mbps).
2. Khối nguồn của Kit được thiết kế như thế nào để đảm bảo cấp điện cho toàn bộ hệ thống?
Kit sử dụng nguồn cấp chính qua Adapter 5 VDC / 1A. Đường nguồn 5V này cấp trực tiếp cho các khối LCD 16x2, module I2C PCF8574 và khối UART. Đồng thời, nguồn 5V được đưa qua IC ổn áp tuyến tính LM1117 để tạo ra mức điện áp 3.3 VDC (dòng cực đại 1A) cấp cho vi điều khiển STM32, module WiFi ESP8266 (tiêu thụ tối đa 320 mA), module RFID RC522 (tiêu thụ 13–26 mA), cảm biến nhiệt độ và các khối LED. Ngoài ra, khối nguồn có thêm pin dự phòng kết nối chân VBAT để duy trì khối thời gian thực RTC khi mất nguồn chính.
3. Nguyên lý và thông số định thời được sử dụng để điều khiển khối hiển thị LED 7 thanh 4 số là gì?
Khối LED 7 thanh sử dụng loại 4 số Anode chung kết nối với Port A (dữ liệu đoạn) và Port B (chân cấp nguồn 4 LED). Để hiển thị liên tục mà không bị nhấp nháy, tác giả áp dụng nguyên lý lưu ảnh của mắt người (thời gian lưu ảnh khoảng 25 ms). Bộ định thời TIM2 của STM32 được cấu hình để tạo ngắt mỗi $T = 1\text{ ms}$, luân phiên cấp nguồn cho từng LED và xuất dữ liệu chữ số tương ứng. Tổng thời gian quét cả 4 LED là $4T = 4\text{ ms} < 25\text{ ms}$, đảm bảo mắt người nhìn thấy 4 chữ số hiển thị đồng thời và liên tục.
4. Cấu hình chế độ BOOT của STM32 trên Kit được thiết lập thông qua những chân nào?
Chế độ BOOT được xác lập thông qua trạng thái logic của 2 chân vật lý BOOT0 và BOOT1 tại thời điểm cạnh lên thứ 4 của xung SYSCLK sau khi chip reset:
BOOT0 = 0: Chip khởi động từ bộ nhớ Flash chính (chạy chương trình người dùng đã nạp).
BOOT0 = 1, BOOT1 = 0: Chip khởi động từ bộ nhớ hệ thống (System Memory) để nạp mã qua Bootloader UART.
BOOT0 = 1, BOOT1 = 1: Chip khởi động và chạy trực tiếp từ bộ nhớ SRAM.
5. Giao tiếp nạp và gỡ lỗi (debug) cho Kit được thực hiện qua chuẩn nào và sử dụng phần cứng gì?
Quá trình nạp và gỡ lỗi chương trình cho STM32F103C8T6 được thực hiện thông qua chuẩn SWD (Serial Wire Debug) với giao tiếp 4 chân kết nối (GND, SWCLK, SWDIO, 3.3V) kết nối trực tiếp với mạch nạp ST-Link V2 cắm qua cổng USB máy tính.
Kết luận
Đồ án "Thiết kế chế tạo kit phát triển sử dụng STM32" của sinh viên Nguyễn Khắc Hiển đã giải quyết trọn vẹn bài toán thiết kế và chế tạo một phần cứng nhúng hoàn chỉnh phục vụ giảng dạy dựa trên vi điều khiển 32-bit STM32F103C8T6. Sản phẩm tích hợp đầy đủ các khối nguồn, hiển thị (LCD, LED 7 đoạn, LED đơn), điều khiển (phím đơn, ma trận phím) và giao tiếp mở rộng (WiFi ESP8266, RFID RC522, cảm biến nhiệt độ DHT11/DS18B20), được kiểm thử hoạt động chính xác qua phần mềm STM32CubeMX và mạch nạp ST-Link V2. Đồ án là tài liệu tham khảo có giá trị kỹ thuật thực tiễn cao cho sinh viên ngành Điện tử - Viễn thông và Tự động hóa trong việc học tập, nghiên cứu vi điều khiển kiến trúc ARM Cortex-M3.