Giới thiệu dự án

Trong kỷ nguyên số hóa và sự bùng nổ của các thiết bị di động thông minh (Smartphones), nhu cầu thưởng thức âm thanh độc lập vẫn giữ một vị trí quan trọng đối với người dùng chuyên biệt. Các thiết bị nghe nhạc cầm tay tích hợp (Dedicated Audio Player - DAP) đòi hỏi khả năng xử lý mượt mà, chất lượng giải mã âm thanh trung thực và thời lượng pin tối ưu mà không bị gián đoạn bởi các thông báo mạng hay tác vụ nền đa nhiệm.

Tuy nhiên, việc phát triển một hệ thống nhúng phát nhạc số hoàn chỉnh đặt ra nhiều bài toán kỹ thuật phức tạp. Các vi điều khiển 8-bit truyền thống (như PIC16F, ATmega328P trên nền tảng Arduino) có dung lượng bộ nhớ SRAM hạn chế (< 2 KB) và xung nhịp thấp (16 MHz), không đủ khả năng xử lý luồng dữ liệu tệp tin định dạng MP3/WMA tốc độ cao đồng thời dựng giao diện đồ họa người dùng (GUI) màu trên màn hình tinh thể lỏng (LCD). Ngược lại, việc ứng dụng các máy tính đơn bo (Single Board Computer) như Raspberry Pi lại gây lãng phí năng lượng, thời gian khởi động lâu và giá thành sản xuất cao.

+-----------------------------------------------------------------------+
|                 HỆ THỐNG MÁY NGHE NHẠC MP3 NHÚNG                      |
|                                                                       |
|  [Nguồn Pin 7.4V / Sạc LM741] ---> [Hạ áp LM1117-3.3V]                |
|                                         |                             |
|  [Micro SD Card (SPI2)] <---> [STM32F103VET6 Cortex-M3]               |
|                                 (72MHz, 512KB Flash)                  |
|                                   |             |                     |
|                                   v             v                     |
|                    [LCD TFT ILI9325 + XPT2046]  [Codec VS1003B]       |
|                       (SPI1 / EXTI Interrupt)     (SPI2 / SDI / SCI)  |
|                                                         |             |
|                                                         v             |
|                                                  [Khuếch đại LM741]   |
|                                                         |             |
|                                                         v             |
|                                                  [Jack 3.5mm / Loa]   |
+-----------------------------------------------------------------------+

Đề tài "Thiết kế và thi công máy nghe nhạc MP3" của nhóm tác giả Đỗ Trọng Tiến và Nguyễn Hữu Tài, dưới sự hướng dẫn của ThS. Nguyễn Trường Duy tại Trường Đại học Sư phạm Kỹ thuật TP.HCM (HCMUTE), đã giải quyết triệt để bài toán trên bằng cách xây dựng giải pháp phần cứng kết hợp vi điều khiển ARM 32-bit hiệu năng cao và chip giải mã phần cứng chuyên dụng.

Mục tiêu kỹ thuật của đề tài

  1. Thiết kế phần cứng trung tâm: Xây dựng bo mạch chủ tích hợp vi điều khiển ARM Cortex-M3 (STM32F103VET6) hoạt động ở xung nhịp 72 MHz.
  2. Giao tiếp lưu trữ và giải mã chuyên dụng: Tích hợp giao tiếp thẻ nhớ Micro SD theo chuẩn SPI để đọc hệ thống tệp tin FAT16/FAT32, kết hợp module DSP phần cứng VS1003B để giải mã dòng bit MP3, WMA, MIDI trực tiếp.
  3. Phát triển giao diện cảm ứng tương tác: Lập trình hiển thị GUI trên màn hình LCD TFT ILI9325 3.2 inch (240x320 pixels) và giải thuật điều khiển cảm ứng điện trở qua IC XPT2046 bằng ngắt ngoại vi.
  4. Hệ thống quản lý nguồn và âm thanh ngõ ra: Thiết kế khối sạc tự động ngắt cho 2 cell pin Lithium-ion 18650 (7.4V / 5000 mAh) dùng bộ so sánh điện áp LM741, kết hợp mạch khuếch đại tiền khuếch đại xuất ra tai nghe hoặc loa ngoài.

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

Hệ thống tập trung giải mã định dạng âm thanh nén phổ biến (MP3, WMA, WAV, MIDI) với tần số lấy mẫu lên đến 48 kHz và bitrate tối đa 320 kbps. Thiết bị hoạt động hoàn toàn độc lập, không yêu cầu kết nối mạng Internet.


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

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

Trước khi tiến hành thiết kế kiến trúc hệ thống, nhóm nghiên cứu đã phân tích các giải pháp thương mại và nền tảng phát triển phổ biến trên thị trường:

Tiêu chí Nền tảng Arduino Uno (ATmega328P) Nền tảng Raspberry Pi Zero W Giải pháp STM32F103VET6 + VS1003B
Xung nhịp CPU 16 MHz (8-bit) 1 GHz (32-bit ARM11) 72 MHz (32-bit Cortex-M3)
Dung lượng Flash/RAM 32 KB Flash / 2 KB SRAM 512 MB SDRAM (Chạy Linux OS) 512 KB Flash / 64 KB SRAM
Khả năng xử lý âm thanh Giải mã phần mềm rất yếu, giật lag Xử lý đa luồng tốt qua ALSA Giải mã phần cứng qua IC chuyên dụng
Thời gian khởi động < 1 giây 25 - 45 giây (Boot hệ điều hành) < 0.5 giây (Khởi động tức thì)
Công suất tiêu thụ Thấp (~0.1 W) Trung bình - Cao (1.5 W - 2.5 W) Rất tối ưu (~0.45 W toàn hệ thống)
Khả năng đáp ứng GUI Không hỗ trợ TFT màu độ phân giải cao Hỗ trợ tốt qua HDMI/DSI Điều khiển mượt qua bus 16-bit/SPI

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

  • Must-have (Bắt buộc có): Đọc được danh mục bài hát từ thẻ Micro SD; giải mã chuẩn âm thanh MP3; điều khiển Play/Pause, Next, Previous, Volume qua màn hình cảm ứng; tự ngắt sạc khi pin đầy.
  • Should-have (Nên có): Hiển thị giao diện danh sách động, thanh thời lượng bài hát, đo và hiển thị nhiệt độ môi trường qua cảm biến Diode 1N4148.
  • Could-have (Có thể mở rộng): Tùy biến bộ cân bằng âm sắc Equalizer (Bass/Treble), chế độ tiết kiệm năng lượng khi tắt màn hình.
  • Won't-have (Không triển khai trong giai đoạn này): Kết nối không dây Bluetooth Audio, giải mã lossless 24-bit/192kHz (FLAC, DSD).

Thiết kế hệ thống

Kiến trúc phần cứng được phân chia thành các module độc lập ghép nối qua hệ thống bus tiêu chuẩn:

+-----------------------------------------------------------------------------------+
|                        KIẾN TRÚC PHẦN CỨNG HỆ THỐNG                               |
|                                                                                   |
|  +-----------------------------------------------------------------------------+  |
|  |                     KHỐI XỬ LÝ TRUNG TÂM: STM32F103VET6                     |  |
|  |  - Core: ARM 32-bit Cortex-M3 @ 72 MHz                                      |  |
|  |  - Bộ nhớ: 512 KB Flash, 64 KB SRAM                                         |  |
|  |  - Ngoại vi: SPI1, SPI2, NVIC Interrupt Controller, 12-bit SAR ADC          |  |
|  +-----------------------------------------------------------------------------+  |
|          |                            |                         |                 |
|   (SPI1 Bus / GPIO)            (SPI2 Bus)                (SPI2 / SCI / SDI)       |
|          v                            v                         v                 |
|  +-------------------+      +-------------------+      +-------------------+      |
|  |   MÀN HÌNH CẢM    |      |  THẺ NHỚ MICRO SD |      | MODULE GIẢI MÃ    |      |
|  |   ỨNG TFT 3.2"    |      |  - Dung lượng:    |      | VS1003B           |      |
|  | - Driver: ILI9325 |      |    2GB - 32GB     |      | - DSP Hardware    |      |
|  | - Touch: XPT2046  |      | - Chuẩn: FAT32    |      |   Decoder         |      |
|  | - EXTI Pin: PC5   |      | - Tốc độ: SPI CLK |      | - Thạch anh:      |      |
|  +-------------------+      +-------------------+      |   12.288 MHz      |      |
|                                                        | - DREQ Interrupt  |      |
|                                                        +-------------------+      |
|                                                                  |                |
|                                                           (Tín hiệu Audio L/R)    |
|                                                                  v                |
|  +-------------------+      +-------------------+      +-------------------+      |
|  |   NGUỒN & SẠC PIN |      | MẠCH HẠ ÁP        |      | TIỀN KHUẾCH ĐẠI   |      |
|  | - 2x Li-ion 18650 |----->| LM1117-3.3V       |      | LM741 & LOA NGOÀI |      |
|  |   (7.4V/5000mAh)  |      | - Cấp VCC MCU,    |      | - Ngõ ra Jack     |      |
|  | - So sánh LM741   |      |   SD, TFT LCD     |      |   3.5mm / Speaker |      |
|  +-------------------+      +-------------------+      +-------------------+      |
+-----------------------------------------------------------------------------------+

Bảng ánh xạ chân phần cứng (Hardware Pinout Configuration)

Module ngoại vi Chân tín hiệu Chân vi điều khiển STM32 Chức năng kỹ thuật
Thẻ nhớ Micro SD CS, SCK, MOSI, MISO PB12, PB13, PB15, PB14 Bus SPI2 giao tiếp khối lưu trữ dữ liệu
Module VS1003B MOSI, MISO, SCK PB15, PB14, PB13 Đồng bộ đường truyền dữ liệu âm thanh
XCS, XDCS PB10, PB11 Chọn chip điều khiển (SCI) và dữ liệu (SDI)
DREQ PC4 Chân yêu cầu dữ liệu (Data Request)
Màn hình TFT ILI9325 D0 - D15 PD0..15 / PE0..15 Bus dữ liệu 16-bit song song hiển thị hình ảnh
RS, WR, RD, CS PC0, PC1, PC2, PC3 Đường điều khiển ghi/đọc thanh ghi LCD
Cảm ứng XPT2046 TP_CS, TP_SCK, TP_MOSI, TP_MISO PA4, PA5, PA7, PA6 Bus SPI1 truyền tọa độ chạm (X, Y)
TP_IRQ PC5 Ngắt ngoài EXTI5 nhận diện sự kiện chạm
Cảm biến nhiệt độ V_TEMP PA1 (ADC1_IN1) Kênh chuyển đổi 12-bit ADC đọc điện áp Diode

Thiết kế mạch sạc thông minh dùng Op-Amp LM741

Mạch quản lý pin sử dụng nguồn adapter ngoài 12V DC. Một cầu phân áp $R_1, R_2$ tạo điện áp chuẩn $V_{(+)} \approx 7.7\text{ V}$ đưa vào chân không đảo của IC khuếch đại thuật toán LM741:

$$V_{(+)} = V_{adapter} \times \frac{R_1}{R_1 + R_2} = 12\text{ V} \times \frac{10\text{ k}\Omega}{10\text{ k}\Omega + 5.6\text{ k}\Omega} \approx 7.69\text{ V}$$

Điện áp hồi tiếp từ bộ 2 cell pin được đưa vào chân đảo $V_{(-)}$.

  • Khi pin chưa đầy ($V_{pin} < 8.3\text{ V} \implies V_{(-)} < V_{(+)}$), ngõ ra $V_{out}$ của LM741 ở mức cao ($+V_{sat}$), kích mở transistor công suất nạp dòng cho pin thông qua điện trở giới hạn $R_6$, đèn LED xanh sáng báo trạng thái đang nạp.
  • Khi pin đạt ngưỡng $8.3\text{ V}$ (mỗi cell đạt $\sim 4.15\text{ V}$), điện áp $V_{(-)}$ vượt ngưỡng chuẩn $V_{(+)}$, ngõ ra $V_{out}$ chuyển về mức thấp ($0\text{ V}$), transistor ngắt hoàn toàn dòng sạc và kích hoạt LED đỏ cảnh báo sạc đầy.

Phương pháp nghiên cứu và quy trình phát triển

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ử vòng lặp (V-Model):

  1. Giai đoạn 1 (Tuần 1 - 4): Khảo sát tài liệu vi xử lý ARM, tập lệnh Cortex-M3, tập lệnh thanh ghi VS1003B và giao thức thẻ nhớ SD.
  2. Giai đoạn 2 (Tuần 5 - 10): Thiết kế nguyên lý (Schematic) và layout mạch in 2 lớp trên phần mềm Altium Designer v17. Gia công mạch in, hàn linh kiện và đo kiểm các mức điện áp nguồn 3.3V, 2.5V, 5V.
  3. Giai đoạn 3 (Tuần 11 - 16): Viết driver ngoại vi (SPI, GPIO, NVIC, ADC) trên môi trường Keil µVision5 v5.22, xây dựng thư viện đồ họa GUI và luồng dữ liệu đọc-giải mã MP3.
  4. Giai đoạn 4 (Tuần 17 - 20): Thiết kế vỏ hộp bảo vệ bằng phần mềm CorelDraw v12, cắt laser mica, lắp ráp hoàn chỉnh và tiến hành đo kiểm thực nghiệm.

Implementation và kết quả

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

Mã nguồn được tổ chức theo kiến trúc phân tầng (Layered Architecture):

  • Hardware Abstraction Layer (HAL): Khởi tạo xung Clock hệ thống (HSE 8 MHz nhân PLL lên 72 MHz), cấu hình GPIO và các thanh ghi cấu hình bus SPI1, SPI2.
  • Device Drivers: Driver điều khiển chip giải mã VS1003B, driver LCD ILI9325, driver đọc thẻ SD qua SPI Mode, driver IC cảm ứng XPT2046.
  • Middleware / File System: Phân tích Master Boot Record (MBR), tìm kiếm Boot Sector của phân vùng FAT32 và trích xuất bảng phân bổ tệp (File Allocation Table) để đọc danh mục tệp .mp3.
  • Application Layer: Máy trạng thái (Finite State Machine) quản lý luồng điều khiển âm thanh, xử lý ngắt cảm ứng và cập nhật giao diện hiển thị.
+-------------------------------------------------------------+
|                      APPLICATION LAYER                      |
|       [State Machine] [GUI Controller] [Playback Engine]    |
+-------------------------------------------------------------+
                              |
+-------------------------------------------------------------+
|                     MIDDLEWARE LAYER                        |
|       [FAT16/FAT32 File Parser] [Audio Stream Buffer]       |
+-------------------------------------------------------------+
                              |
+-------------------------------------------------------------+
|                      DEVICE DRIVERS                         |
|   [VS1003B Driver] [ILI9325 Driver] [XPT2046] [SD SPI Card] |
+-------------------------------------------------------------+
                              |
+-------------------------------------------------------------+
|              HARDWARE ABSTRACTION LAYER (HAL)               |
|      [STM32F10x Standard Peripheral Library / CMSIS]        |
|        - RCC Clock (72MHz)  - SPI1/SPI2  - EXTI / NVIC      |
+-------------------------------------------------------------+

1. Thuật toán khởi tạo và nạp luồng dữ liệu vào Codec VS1003B

Chip VS1003B nhận dữ liệu âm thanh thông qua giao tiếp SDI (Serial Data Interface) và thiết lập thông số qua SCI (Serial Control Interface). Tín hiệu chân DREQ (Data Request) quyết định thời điểm vi điều khiển được phép ghi thêm dữ liệu:

#include "stm32f10x.h"
#include "vs1003.h"
#include "spi.h"

#define VS_DREQ_PIN     GPIO_Pin_4
#define VS_DREQ_PORT    GPIOC
#define VS_XDCS_LOW()   GPIO_ResetBits(GPIOB, GPIO_Pin_11)
#define VS_XDCS_HIGH()  GPIO_SetBits(GPIOB, GPIO_Pin_11)

/**
 * @brief Gửi một khối 32-byte dữ liệu MP3 từ bộ đệm thẻ SD sang VS1003B
 * @param buffer: Con trỏ mảng dữ liệu âm thanh
 * @return void
 */
void VS1003_SendMusicData(uint8_t* buffer) {
    uint8_t i;
    // Chờ cho đến khi VS1003B sẵn sàng nhận dữ liệu (DREQ kéo lên mức cao)
    while (GPIO_ReadInputDataBit(VS_DREQ_PORT, VS_DREQ_PIN) == Bit_RESET);

    VS_XDCS_LOW(); // Kích hoạt chọn kênh SDI dữ liệu
    for (i = 0; i < 32; i++) {
        SPI2_ReadWriteByte(buffer[i]); // Truyền 1 byte qua bus SPI2
    }
    VS_XDCS_HIGH(); // Hủy chọn kênh dữ liệu
}

/**
 * @brief Thiết lập âm lượng đầu ra cho 2 kênh trái / phải của VS1003B
 * @param left_vol: Mức suy giảm kênh trái (0x00: Max, 0xFE: Tắt tiếng)
 * @param right_vol: Mức suy giảm kênh phải (0x00: Max, 0xFE: Tắt tiếng)
 */
void VS1003_SetVolume(uint8_t left_vol, uint8_t right_vol) {
    uint16_t vol_data = ((uint16_t)left_vol << 8) | right_vol;
    VS1003_WriteRegister(SCI_VOL, vol_data);
}

2. Xử lý ngắt tương tác màn hình cảm ứng qua IC XPT2046

Để tránh tiêu tốn thời gian CPU cho việc quét liên tục (polling), chân TP_IRQ của XPT2046 được nối vào ngắt ngoài EXTI5 của STM32, phối hợp cùng bộ điều khiển vector ngắt lồng NVIC:

/**
 * @brief Trình phục vụ ngắt EXTI Line 5-9 xử lý sự kiện chạm màn hình
 */
void EXTI9_5_IRQHandler(void) {
    if (EXTI_GetITStatus(EXTI_Line5) != RESET) {
        uint16_t x_raw, y_raw;
        
        // Đọc giá trị ADC 12-bit trục X và Y từ chip XPT2046 qua SPI1
        if (XPT2046_GetTouchCoordinates(&x_raw, &y_raw)) {
            // Chuyển đổi tọa độ ADC thô sang hệ tọa độ màn hình LCD 240x320
            Coordinate lcd_coord = Touch_Calibrate(x_raw, y_raw);
            
            // Điều hướng sự kiện nút bấm trên GUI
            GUI_HandleTouchEvent(lcd_coord.x, lcd_coord.y);
        }
        
        // Xóa cờ ngắt sau khi xử lý hoàn tất
        EXTI_ClearITPendingBit(EXTI_Line5);
    }
}

Đo kiểm và đánh giá thực nghiệm

Hệ thống sau khi tích hợp toàn diện đã trải qua các bài kiểm tra chức năng và hiệu năng tại phòng thí nghiệm:

+-------------------------------------------------------------------------+
|                  BIỂU ĐỒ PHÂN BỔ DÒNG TIÊU THỤ (mA)                     |
|                                                                         |
|  MCU STM32F103VET6    [==] 35mA                                         |
|  Module VS1003B       [===] 45mA                                        |
|  Micro SD Card        [==] 25mA                                         |
|  TFT LCD Backlight    [======] 85mA                                     |
|  Tiền khuếch đại+Loa  [=======] 110mA                                   |
|                                                                         |
|  TỔNG DÒNG HOẠT ĐỘNG: 300mA  --->  Thời lượng pin: 16.6 giờ (5000mAh)   |
+-------------------------------------------------------------------------+

Bảng đo kiểm dòng tiêu thụ chi tiết từng khối phần cứng

Thành phần linh kiện Điện áp định mức (V) Dòng tiêu thụ thực tế (mA) Công suất tiêu thụ (mW)
Vi điều khiển STM32F103VET6 3.3V 35.0 mA 115.5 mW
Module giải mã VS1003B 3.3V / 2.5V 45.0 mA 148.5 mW
Thẻ nhớ Micro SD (Đang đọc) 3.3V 25.0 mA 82.5 mW
Màn hình LCD TFT 3.2" (Bật LED nền) 3.3V 85.0 mA 280.5 mW
Mạch khuếch đại LM741 & Loa ngoài 7.4V 110.0 mA 814.0 mW
Tổng toàn hệ thống (Max load) 300.0 mA 1441.0 mW (1.44 W)

Kết quả thử nghiệm chất lượng âm thanh và độ trễ

                      KẾT QUẢ ĐO KIỂM HIỆU NĂNG PHÁT NHẠC
                      
  Bitrate (kbps)       Tỷ số tín hiệu/nhiễu (SNR)       Thời gian đáp ứng GUI
  
   320 kbps [CBR]   ======================> 94.2 dB            18 ms
   192 kbps [VBR]   ====================> 91.5 dB              16 ms
   128 kbps [CBR]   ==================> 88.0 dB                15 ms
  • Tỷ lệ đọc tệp tin thành công: Đạt 100% trên các dòng thẻ nhớ Micro SD dung lượng 2 GB, 8 GB và 16 GB định dạng FAT32.
  • Thời lượng sử dụng liên tục: Khối pin $7.4\text{ V} / 5000\text{ mAh}$ đảm bảo hoạt động liên tục trong 16.6 giờ ở chế độ phát nhạc qua loa ngoài và hơn 28 giờ khi sử dụng ngõ ra tai nghe (tắt khối công suất loa).
  • Độ trễ xử lý cảm ứng: Thời gian từ lúc chạm ngón tay vào màn hình đến khi thực thi lệnh chuyển bài / đổi âm lượng đo được là $< 20\text{ ms}$, mang lại trải nghiệm mượt mà không cảm giác giật cục.

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

Đồ án mang lại nhiều cải tiến kỹ thuật thực tiễn so với các giải pháp máy nghe nhạc mã nguồn mở trước đây:

  1. Kiến trúc phần cứng phân tải tối ưu (Hardware-Offloaded Architecture): Bằng cách ủy quyền toàn bộ tác vụ giải nén thuật toán MP3 phức tạp cho chip DSP VS1003B, vi điều khiển trung tâm STM32F103VET6 chỉ hoạt động ở mức $12 - 15%$ tải CPU. Nhờ đó, $85%$ năng lực xử lý còn lại được dành riêng cho việc cập nhật giao diện đồ họa màu tốc độ cao và đo lường tham số môi trường.
  2. Cơ chế ngắt tương tác đa tầng: Kết hợp đồng thời ngắt ngoại vi EXTI nhận diện cảm ứng và cơ chế kiểm soát cờ hiệu DREQ giúp loại bỏ hoàn toàn các vòng lặp chờ vô tận (busy-waiting), giảm điện năng lãng phí của chip nhúng xuống hơn $40%$.
  3. Mạch quản lý nguồn tương tự tự động ngắt chính xác: Giải pháp so sánh điện áp dùng Op-Amp LM741 hoạt động tin cậy, không phụ thuộc vào chương trình vi điều khiển, đảm bảo pin không bao giờ bị sạc quá mức ($> 8.4\text{ V}$) hoặc xả sâu, nâng cao tuổi thọ tế bào pin Lithium-ion.
  4. Hiệu quả kinh tế: Tổng chi phí linh kiện để sản xuất thử nghiệm thiết bị chỉ ở mức xấp xỉ $35 - 40\text{ USD}$, thấp hơn $60%$ so với việc ứng dụng các kit máy tính nhúng Linux chuyên dụng mà vẫn duy trì đầy đủ tính năng tương đương.

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

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

+-------------------------------------------------------------------------+
|                      HỆ SINH THÁI ỨNG DỤNG THỰC TẾ                      |
|                                                                         |
|  [Thiết bị giải trí cá nhân]  ---> Học ngoại ngữ, nghe podcast tập trung|
|  [Hệ thống thông báo tự động] ---> Nhà ga, bệnh viện, trường học        |
|  [Thiết bị trợ thính & Y tế]  ---> Phát âm thanh trị liệu, hướng dẫn    |
|  [Hướng dẫn viên bảo tàng]    ---> Thuyết minh tự động theo chủ đề      |
+-------------------------------------------------------------------------+
  1. Thiết bị giải trí và học tập chuyên dụng: Cung cấp công cụ nghe audiobooks, học ngoại ngữ tập trung cho học sinh, sinh viên mà không bị phân tâm bởi các ứng dụng mạng xã hội trên điện thoại di động.
  2. Hệ thống phát thông báo âm thanh công nghiệp: Ứng dụng trong các hệ thống thông báo tự động tại nhà ga, bệnh viện, tòa nhà thông minh, nơi yêu cầu thiết bị phát các bản tin âm thanh định sẵn với độ ổn định $24/7$.
  3. Hướng dẫn âm thanh tự động tại bảo tàng (Audio Guide): Tích hợp thành thiết bị cầm tay cho khách tham quan tra cứu và nghe thuyết minh hiện vật thông qua giao diện màn hình cảm ứng trực quan.

Lộ trình triển khai sản xuất công nghiệp

  Giai đoạn 1: Chuẩn hóa PCB & SMD
  [Layout 4 lớp, chuyển đổi sang linh kiện dán SMD 0603/QFN]
         │
         ▼
  Giai đoạn 2: Nâng cấp Firmware với RTOS
  [Tích hợp FreeRTOS phân chia luồng Task_GUI và Task_Audio]
         │
         ▼
  Giai đoạn 3: Tối ưu khuôn vỏ bảo vệ
  [Thiết kế vỏ nhựa ABS đúc khuôn ép thay thế mica thủ công]
         │
         ▼
  Giai đoạn 4: Chứng nhận & Sản xuất hàng loạt
  [Kiểm định EMC/EMI, kiểm định an toàn pin CE/FCC, phân phối]

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

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

  • Màn hình cảm ứng điện trở: Cảm ứng điện trở trên ILI9325 yêu cầu một lực nhấn nhẹ nhất định và không hỗ trợ thao tác đa điểm (Multi-touch) mượt mà như cảm ứng điện dung.
  • Giới hạn định dạng âm thanh chuẩn cao: Module VS1003B chưa hỗ trợ chuẩn âm thanh Lossless FLAC hoặc ALAC chất lượng phòng thu (Studio Master 24-bit).
  • Hệ thống tệp tin tuần tự: Thư viện đọc FAT32 được lập trình thủ công chưa hỗ trợ tìm kiếm nhanh theo tên bài hát chữ cái phức tạp hoặc sắp xếp theo danh sách nghệ sĩ/album (ID3 Tags).

Hướng phát triển tương lai

  1. Nâng cấp vi điều khiển và hệ điều hành thời gian thực: Chuyển đổi sang dòng chip ARM Cortex-M4 (STM32F407VET6) tích hợp nhân DSP phần cứng và FPU, chạy hệ điều hành thời gian thực FreeRTOS để tách biệt luồng giải mã và dựng giao diện.
  2. Giao tiếp âm thanh kỹ thuật số $I^2S$: Thay thế giao tiếp SPI bằng chuẩn bus âm thanh chuyên dụng $I^2S$ (Inter-IC Sound) kết hợp DAC cao cấp (như CS4344 hoặc WM8978) đạt độ phân giải 24-bit/192kHz.
  3. Tích hợp kết nối không dây: Bổ sung module Bluetooth 5.0 (hỗ trợ codec aptX/LDAC) hoặc Wi-Fi ESP32 để đồng bộ danh sách bài hát từ máy tính và phát nhạc trực tuyến từ máy chủ đám mây.

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

+---------------------------------------------------------------------------+
|                          ĐỐI TƯỢNG HƯỞNG LỢI                              |
|                                                                           |
|  [Sinh viên & Người tự học]  ---> Nắm vững cấu trúc Cortex-M3, Keil C     |
|  [Kỹ sư nhúng (Firmware)]    ---> Tham khảo driver SPI, FAT32, GUI C      |
|  [Doanh nghiệp phần cứng]    ---> Mẫu thiết kế phần cứng phát audio giá rẻ|
|  [Nhà nghiên cứu học thuật]  ---> Dữ liệu thực nghiệm phân bổ nguồn nhúng |
+---------------------------------------------------------------------------+
  • Sinh viên ngành Kỹ thuật Điện tử - Viễn thông & Nhúng: Tiếp cận tài liệu thực hành hoàn chỉnh từ thiết kế sơ đồ nguyên lý phần cứng, phân tích bus giao tiếp vi xử lý đến lập trình ứng dụng trên nền tảng ARM 32-bit.
  • Kỹ sư phát triển phần mềm nhúng (Firmware Engineers): Nắm bắt giải thuật tối ưu hóa ngắt lồng NVIC, quản lý bộ đệm SPI streaming và cấu trúc điều khiển IC cảm ứng điện trở.
  • Doanh nghiệp phát triển thiết bị âm thanh thông minh: Sở hữu mẫu thiết kế bo mạch chi phí thấp, tính ứng dụng cao, dễ dàng tùy biến cho các sản phẩm loa thông báo, đồ chơi giáo dục hoặc thiết bị trợ thính.

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

1. Yêu cầu kỹ thuật tối thiểu để biên dịch và nạp firmware cho hệ thống là gì?

Hệ thống yêu cầu máy tính cài đặt môi trường phát triển tích hợp Keil µVision5 (phiên bản v5.22 trở lên) cùng gói nạp vi điều khiển STM32F1xx_DFP. Phần cứng nạp chương trình sử dụng mạch nạp ST-Link V2 mini giao tiếp qua chuẩn Serial Wire Debug (SWD) gồm 4 dây: VCC (3.3V), GND, SWCLK (PA14), SWDIO (PA13).

2. Dung lượng thẻ nhớ tối đa mà hệ thống hỗ trợ là bao nhiêu?

Hệ thống hỗ trợ chuẩn thẻ nhớ SD và SDHC có dung lượng từ 2 GB đến 32 GB với bảng phân vùng định dạng chuẩn FAT16 hoặc FAT32, kích thước mỗi sector chuẩn hóa là 512 bytes.

3. Tại sao hệ thống sử dụng kết hợp cả 2 kênh SPI (SPI1 và SPI2)?

Việc phân chia 2 bus SPI riêng biệt nhằm giải quyết xung đột tốc độ truyền:

  • Bus SPI2 (Tốc độ cao): Được phân bổ riêng cho thẻ nhớ Micro SD và module giải mã VS1003B để đảm bảo luồng truyền dữ liệu âm thanh liên tục không bị nghẽn (jitter/underrun).
  • Bus SPI1: Dành riêng cho IC điều khiển cảm ứng XPT2046 để tiếp nhận tọa độ chạm tức thời từ người dùng.

4. Mạch nạp pin có bảo vệ chống quá nhiệt hoặc đoản mạch hay không?

Mạch nạp hiện tại sử dụng Op-Amp LM741 với điện trở công suất $R_6$ để hạn chế dòng nạp đỉnh ở mức an toàn ($I_{charge} \approx 500 - 800\text{ mA}$). Khi triển khai thương mại, nên tích hợp thêm cầu chì nhiệt (Thermal Fuse) gắn sát thân cell pin 18650 và IC bảo vệ chuyên dụng như DW01A kết hợp MOSFET kép FS8205A để chống đoản mạch toàn diện.

5. Chi phí ước tính và thời gian hoàn vốn khi thương mại hóa dự án?

Chi phí linh kiện sản xuất một thiết bị đơn lẻ vào khoảng 800.000 - 950.000 VNĐ. Khi sản xuất quy mô công nghiệp từ 1.000 sản phẩm trở lên, chi phí linh kiện và gia công PCB dán tự động (SMT) sẽ giảm xuống còn khoảng 450.000 VNĐ/sản phẩm, cho phép định giá thương mại cạnh tranh và đạt điểm hòa vốn trong vòng 6 - 9 tháng.


Kết luận

Đề tài tốt nghiệp "Thiết kế và thi công máy nghe nhạc MP3" đã chứng minh tính khả thi và hiệu quả vượt trội của việc ứng dụng dòng vi điều khiển 32-bit ARM Cortex-M3 (STM32F103VET6) kết hợp cùng vi mạch giải mã phần cứng chuyên dụng VS1003B. Dự án không chỉ hoàn thành xuất sắc toàn bộ các mục tiêu đặt ra từ thiết kế phần cứng, giao tiếp lưu trữ, hiển thị cảm ứng đa nhiệm đến mạch sạc nguồn bảo vệ pin độc lập, mà còn cung cấp một nền tảng tham chiếu mẫu mực cho các hệ thống nhúng tương tác người - máy (HMI) trong thực tế.

Với độ ổn định cao, thời lượng pin bền bỉ và chất lượng âm thanh trung thực, nghiên cứu mở ra tiềm năng ứng dụng rộng lớn trong các thiết bị âm thanh thông minh, thiết bị học tập cá nhân hóa và hệ thống thông báo công cộng hiện đại.