CEtut – Part 1: Giới thiệu về vi điều khiển, hệ thống nhúng và STM32

Với nội dung đầu tiên, chúng ta sẽ tìm hiểu những khái niệm và ứng dụng về vi điều khiển, hệ thống nhúng, các dòng vi điều khiển STM32 hiện có trên thị trường. Mục tiêu bài viết này cung cấp cho các bạn những nhận định cơ bản về vi điều khiển, hệ thống nhúng; đồng thời có sự so sánh và lựa chọn vi điều khiển thích hợp cho các dự án sau này.
Share

Với nội dung đầu tiên, chúng ta sẽ tìm hiểu những khái niệm và ứng dụng về vi điều khiển, hệ thống nhúng, các dòng vi điều khiển STM32 hiện có trên thị trường. Mục tiêu bài viết này cung cấp cho các bạn những nhận định cơ bản về vi điều khiển, hệ thống nhúng; đồng thời có sự so sánh và lựa chọn vi điều khiển thích hợp cho các dự án sau này.

1. Vi điều khiển là gì ?

Vi điều khiển (microcontroller) là một hệ thống máy tính nhỏ gọn, thường được tích hợp vào một con chip duy nhất, chứa các thành phần cơ bản của một máy tính như bộ vi xử lý (CPU), bộ nhớ (RAM và ROM), các cổng vào/ra (I/O), và các thiết bị ngoại vi khác; Các thành phần này được đóng gói thành 1 con chip MCU (Microcontroller Unit). Trên thị trường hiện nay có nhiều loại vi điều khiển phù hợp cho nhiều ứng dụng khác nhau: 8051, PIC, AVR, ESP, Arduino, STM32, …

Vi điều khiển được thiết kế để thực hiện các tác vụ điều khiển và giám sát trong các hệ thống nhúng. Chúng thường được sử dụng trong các thiết bị điện tử tiêu dùng, ô tô, thiết bị y tế, hệ thống tự động hóa công nghiệp, và nhiều ứng dụng khác.

Hình 1. Kiến trúc vi điều khiển
Hình 2. Chip MCU đã đóng gói

2. Hệ thống nhúng là gì ?

2.1. Giới thiệu về hệ thống nhúng

Hệ thống nhúng (Embedded System) là một hệ thống máy tính chuyên dụng được thiết kế để thực hiện một hoặc một vài chức năng cụ thể trong một hệ thống lớn hơn. Hệ thống nhúng thường được tích hợp vào các thiết bị khác và hoạt động như một phần của thiết bị đó.

Những điểm đáng chú ý của Hệ thống nhúng:

  • Thực hiện nhiệm vụ cụ thể
  • Thời gian cụ thể
  • Sử dụng ít năng lượng
  • Hiệu suất cao
  • Giao diện người dùng đơn giản
  • Cần rất ít sự can thiệp của con người
  • Độ tin cậy cao
  • Có thể sản xuất được

Advantages:

  • Kích thước nhỏ
  • Nâng cao hiệu suất thời gian thực
  • Dễ dàng tùy chỉnh cho một ứng dụng hệ thống

Disadvantages:

  • Chi phí phát triển cao
  • Quá trình thiết kế tốn thời gian
  • Dành riêng cho thiết bị có ít thị trường
Hình 3. Ví dụ sơ đồ cấu trúc hệ thống nhúng

2.2. Một số ứng dụng của hệ thống nhúng

Hệ thống nhúng có rất nhiều ứng dụng trong đời sống và công nghiệp nhờ tính chuyên dụng, hiệu suất cao và khả năng tiết kiệm năng lượng của chúng. Hãy cùng nhau theo dõi một vài ứng dụng của hệ thống nhúng trong đời sống được trình bày tại phần này nhé.

Hình 4. Một số ứng dụng của hệ thống nhúng

Transportations

Hiện nay, hệ thống nhúng có rất nhiều ứng dụng trong lĩnh vực giao thông, từ việc hỗ trợ lái, đảm bảo an toàn cho người tham gia giao thông, quản lý và điều khiển phương tiện cá nhân đến hệ thống quản lý giao thông đô thị. Một số ứng dụng phổ biến có thể kể đến như:

  • Bộ giảm xóc chủ động của xe (có bộ đọc cảm biến xác định khoảng cách giữa mặt đường và gầm xe)
  • Túi khí tự động bật (cảm biến đọc gia tốc của xe khi xe có gia tốc âm quá lớn thì túi khí bật)
  • Hệ thống thắng tự động (cảm biến trước đầu xe) cụ thể là thắng ABS (Anti-lock braking system: hệ thống thắng chống bó phanh).
Hình 5. Ứng dụng hệ thống nhúng trên phương tiện giao thông

Smart home

Ứng dụng hệ thống nhúng trong nhà thông minh (smart home) mang lại nhiều tiện ích và cải thiện chất lượng cuộc sống của con người. Một số ứng dụng phổ biến của hệ thống nhúng với dự án smart home có thể kể đến như:

  • Hệ thống chiếu sáng thông minh
    • Đèn thông minh: Tự động điều chỉnh độ sáng và màu sắc dựa trên thời gian trong ngày hoặc sự hiện diện của con người.
    • Điều khiển từ xa: Sử dụng điện thoại thông minh hoặc giọng nói để bật/tắt và điều chỉnh đèn từ bất kỳ đâu.
  • Hệ thống an ninh
    • Camera giám sát: Ghi lại và phát hiện chuyển động, gửi cảnh báo đến điện thoại của bạn khi có sự xâm nhập bất thường.
    • Cảm biến cửa và cửa sổ: Phát hiện khi cửa hoặc cửa sổ bị mở bất hợp pháp và gửi cảnh báo.
    • Khóa cửa thông minh: Cho phép bạn khóa/mở khóa cửa từ xa và theo dõi ai vào ra nhà.
  • Hệ thống điều hòa không khí
    • Nhiệt kế thông minh: Điều chỉnh nhiệt độ tự động dựa trên sở thích của bạn và thời gian trong ngày.
    • Điều khiển từ xa: Cho phép bạn điều chỉnh nhiệt độ từ bất kỳ đâu qua ứng dụng điện thoại.
  • Hệ thống giải trí
    • TV thông minh: Kết nối internet, cung cấp dịch vụ streaming, điều khiển bằng giọng nói và đồng bộ với các thiết bị khác trong nhà.
    • Loa thông minh: Phát nhạc, trả lời câu hỏi, điều khiển các thiết bị thông minh khác qua lệnh giọng nói.
  • Hệ thống tưới cây tự động
    • Cảm biến độ ẩm đất: Theo dõi độ ẩm của đất và tự động tưới cây khi cần thiết.
    • Điều khiển từ xa: Quản lý hệ thống tưới cây từ xa qua ứng dụng điện thoại.
  • Hệ thống quản lý năng lượng
    • Ổ cắm thông minh: Theo dõi và quản lý mức tiêu thụ điện của các thiết bị, giúp tối ưu hóa việc sử dụng năng lượng.
    • Hệ thống quản lý năng lượng: Tích hợp các nguồn năng lượng tái tạo như pin mặt trời, điều khiển và tối ưu hóa việc sử dụng năng lượng trong nhà.
  • Trợ lý ảo (như Amazon Alexa, Google Assistant): Điều khiển các thiết bị thông minh, trả lời câu hỏi, quản lý lịch trình và cung cấp thông tin.
  • Hệ thống bếp thông minh
    • Thiết bị nhà bếp thông minh: Lò vi sóng, lò nướng, tủ lạnh và máy pha cà phê có thể được điều khiển từ xa và theo dõi hoạt động.
    • Cảm biến và bộ điều khiển: Theo dõi tình trạng thực phẩm trong tủ lạnh và đề xuất công thức nấu ăn dựa trên nguyên liệu sẵn có.
Hình 6. Ứng dụng hệ thống nhúng trong smart home

Health care

Hệ thống nhúng trong chăm sóc sức khỏe giúp nâng cao chất lượng dịch vụ y tế, cải thiện hiệu quả điều trị và quản lý bệnh nhân, đồng thời giảm thiểu chi phí và thời gian cho cả bệnh nhân và nhân viên y tế. Một số ứng dụng tiêu biểu của hệ thống nhúng trong y tế có thể kể đến như:

  • Thiết bị y tế đeo được (Wearable Devices)
    • Máy đo nhịp tim: Theo dõi nhịp tim liên tục và gửi dữ liệu đến điện thoại hoặc máy tính để phân tích.
    • Máy đo huyết áp: Theo dõi huyết áp và cảnh báo khi có bất thường.
    • Máy đo lượng đường trong máu: Giúp bệnh nhân tiểu đường quản lý mức đường huyết hàng ngày.
  • Hệ thống theo dõi bệnh nhân từ xa (Remote Patient Monitoring)
    • Thiết bị theo dõi sức khỏe tại nhà: Đo lường các chỉ số như nhiệt độ cơ thể, nhịp tim, huyết áp và gửi dữ liệu đến bác sĩ qua internet.
    • Hệ thống cảnh báo khẩn cấp: Gửi cảnh báo đến bác sĩ hoặc người thân khi phát hiện tình trạng nguy hiểm của bệnh nhân.
  • Thiết bị chẩn đoán và điều trị
    • Máy chụp X-quang, MRI, CT-Scan: Sử dụng hệ thống nhúng để điều khiển và xử lý hình ảnh, giúp chẩn đoán bệnh chính xác hơn.
    • Máy siêu âm: Giúp chẩn đoán thai kỳ, các bệnh về tim mạch và nhiều loại bệnh khác.
  • Hệ thống quản lý thuốc
    • Máy phát thuốc tự động: Phát thuốc đúng liều lượng và thời gian quy định, giúp bệnh nhân tuân thủ liệu trình điều trị.
    • Hệ thống nhắc nhở uống thuốc: Gửi thông báo nhắc nhở bệnh nhân uống thuốc đúng giờ.
  • Hệ thống quản lý bệnh viện
    • Hệ thống lưu trữ và quản lý dữ liệu bệnh nhân: Lưu trữ hồ sơ y tế điện tử (EMR/EHR), giúp bác sĩ truy cập và quản lý thông tin bệnh nhân dễ dàng.
    • Hệ thống quản lý phòng mổ: Điều phối lịch mổ, theo dõi tình trạng bệnh nhân và quản lý dụng cụ y tế.
Hình 7. Ứng dụng hệ thống nhúng trong chăm sóc y tế
Hình 8. Ứng dụng hệ thống nhúng trong trái tim nhân tạo

3. Giới thiệu về dòng vi điều khiển STM32

3.1. Tại sao phải là STM32 ?

Trên thị trường hiện tại, có rất nhiều dòng vi điều khiển với giá cả, hiệu năng. Vậy, tại sao chúng ta nên sử dụng STM32. Hãy cùng so sánh STM32 với một số dòng vi điều khiển khác trên thị trường để đánh giá ưu điểm của nó.

Khi so sánh lựa chọn STM32 hay một dòng vi điều khác sẽ phụ thuộc vào nhiều yếu tố. Các ứng dụng không yêu cầu sử dụng thư viện nâng cao có thể được triển khai hiệu quả bằng cách sử dụng bo xử lí đơn giản hơn với tần số hoạt động và chi phí thấp hơn. Tuy nhiên, các ứng dụng yêu cầu một loạt các thao tác nâng cao thường sẽ yêu cầu một thứ gì đó phức tạp hơn một chút, tức là nền tảng dựa trên ARM như STM32.

Hình 9. STM32F103C8T6

STM32 là một bộ vi điều khiển từ STMicroelectronics. Bạn có thể lập trình MCU STM32 với nhiều IDE khác nhau (môi trường phát triển phần mềm). Hầu hết các IDE tương thích STM32 đồng thời có nhiều tính năng và đem đến nhiều tiện ích hơn.

STM32 là dòng chip 32bit của hãng STMicroelectronics sử dụng công nghệ lõi ARM Cortex mạnh mẽ, hiệu năng tốt nhưng vẫn giữ được giá thành rẻ. Phù hợp với đa số các công ty hiện nay

Các lý do nên chọn STM32 đó là:

  • Giá thành rẻ nhưng hiệu quả đem lại lớn.
  • Học lập trình STM32 rất dễ dàng do cộng đồng hỗ trợ nhiều.
  • Dễ xin việc do các công ty vừa và nhỏ sử dụng STM32 trong các ứng dụng rất nhiều
  • Công cụ lập trình đều Free và đầy đủ tài liệu hỗ trợ
  • Nếu đem STM32 ra so sánh với các dòng chip khác sẽ vẫn có nhiều khuyết điểm. Thế nhưng mặt bằng chung STM32 vẫn là lựa chọn tối ưu khi học lập trình.
Hình 10. Các phiên bản bo mạch vi điều khiển STM32

3.2. Giới thiệu một số phiên bản STM32 thông dụng

Một số phiên bản STM32 phổ biến hiện nay có thể kể đến như STM32 RECOVERY STM32 NUCLEO, STM32 EVAL, STM32F103C8T6 (BLUE PILL), …

STM32 DICOVERY

STM32 discovery kits cung cấp các giải pháp hoàn chỉnh và giá cả phải chăng để đánh giá các tính năng dành riêng cho ứng dụng của MCU và MPU STM32.

Các công cụ phần cứng này cho phép thiết kế và tùy chỉnh theo mô-đun nhờ các đầu nối mở rộng cho phép truy cập vào hầu hết các I/O của thiết bị. Một số STM32 discovery kits đi kèm với các tính năng dành riêng cho ứng dụng. Chúng cũng tích hợp các trình gỡ lỗi và lập trình viên tích hợp, khiến chúng trở nên lý tưởng cho việc tạo nguyên mẫu và đánh giá dự án.

STM32 discovery kits đi kèm với các ví dụ phần mềm toàn diện, cho phép các nhà phát triển tận dụng các tính năng và lợi ích của thiết bị.

Hình 11. STM32 RECOVERY

STM32 NUCLEO

Bảng Nucleo STM32 có giá cả phải chăng cho phép mọi người thử nghiệm những ý tưởng mới và tạo nguyên mẫu một cách nhanh chóng với bất kỳ MCU STM32 nào.

Chia sẻ cùng một đầu nối, bo mạch Nucleo STM32 có thể dễ dàng được mở rộng với nhiều tiện ích bổ sung phần cứng ứng dụng chuyên dụng; Nucleo-64 bao gồm đầu nối Arduino Uno rev3 & ST morpho, Nucleo-32 bao gồm đầu nối Arduino Nano). Bảng Nucleo STM32 tích hợp trình gỡ lỗi/lập trình STLINK, loại bỏ nhu cầu sử dụng đầu dò riêng.

Hình 12. Board STM32 Nucleo

STM32 EVAL

STM32 EVAL đã được thiết kế như một nền tảng phát triển hoàn chỉnh cho MCU và MPU STM32.

Chúng mang theo mạch bên ngoài, chẳng hạn như bộ thu phát, cảm biến, giao diện bộ nhớ, màn hình và nhiều thứ khác. Các phiên bản STM32 EVAL có thể được coi là một thiết kế tham khảo để phát triển ứng dụng.

Hình 13. STM32F769I EVAL

STM32F103C8T6 (BLUE PILL)

Blue Pill sử dụng chip STM32F103C8T6 là một dòng chip phổ thông nhất của STM, có đầy đủ các ngoại vi cơ bản, bộ nhớ vừa đủ và giá thành rẻ, rất phù hợp với những người mới bắt đầu.

Thông số của KIT STM32F103C8T6 Blue Pill như sau:

  • Điện áp hoạt động: 3.3V – 5V
  • Tích hợp thạch anh ngoại 8Mhz
  • Tích hợp cổng USB để nạp Bootloader hoặc sử dụng ngoại vi USB
  • Led tích hợp vào chân PC13
  • Sử dụng chuẩn mạch nạp: SWD cho các loại mạch nạp ST-link, J-link
Hình 14. Sơ đồ chân STM32F103C8T6

Tài liệu Hướng dẫn sử dụng của STM32F103C8T6

Đây là tài liệu chính thức của STM32 cho các dòng chip F1xx, hướng dẫn sử dụng của hãng.

Cấu trúc của Reference Manual thường chia ra là 4 phần chính

  • Introduction: giới thiệu về ngoại vi đó
  • Main features: Các chức năng chính
  • Features description: Mô tả chức năng
  • Registers: Cấu trúc thanh ghi

Bạn cần đọc kĩ nhất tại 2 phần: main features và features description đây là 2 phần quan trọng nhất, trong đó sẽ hướng dẫn các bạn làm việc với ngoại vi đó theo từng chức năng.

Còn Registers sẽ cần thiết khi bạn lập trình trực tiếp trên thanh ghi, với cubemx phần thanh ghi sẽ được code sẵn trong thư viện, việc bạn cần học là sử dụng các hàm của thư viện đó nên không cần quan tâm quá nhiều đến phần này. Link: https://www.st.com/resource/en/reference_manual/rm0008-stm32f101xxstm32f102xx-stm32f103xx-stm32f105xx-and-stm32f107xx-advancedarmbased-32bit-mcus-stmicroelectronics.pdf

STM32F103C8T6 Datasheet

Trong datasheet sẽ mô tả các ngoại vi của STM32F103C8T6 và số lượng của chúng trong Chip. Link: https://www.st.com/resource/en/datasheet/stm32f103c8.pdf

Mạch gỡ lỗi STLINK

Khi lập trình nhúng với STM32, ngoại trừ một số phiên bản như DISCOVERY, EVAL, NUCLEO chính hãng đã có sẵn Mạch gỡ lỗi trên mạch, trên thị trường sẽ có những mạch STM32 là OEM hay các phiên bản khác cần phải kết nối với Bootloader để tiến hành nạp và sửa lỗi cho Vi điều khiển STM32. Phổ biến nhất có thể kể đến STLINK.

STLINK là một bộ gỡ lỗi và nạp chương trình trong mạch cho các vi điều khiển STM8 và STM32. Giao diện module truyền dẫn đơn dây (SWIM) và giao diện gỡ lỗi dây nối chuỗi JTAG/serial (SWD) được sử dụng để giao tiếp với bất kỳ vi điều khiển STM8 hoặc STM32 nào.

Hình 15. STLINK-V3 chính hãng
Hình 16. Mạch nạp giá rẻ
Hình 17. Kết nối mạch nạp với STM32F103C8T6

Lời kết

Nội dung trên, hi vọng bạn đọc hiểu rõ về các khái niệm liên quan đến vi điều khiển, hệ thống nhúng, các ứng dụng cơ bản của hệ thống nhúng, các dòng vi điều khiển STM32 và biết cách chọn lựa một vi điều khiển phù hợp cho các dự án sau này của mình. Ở bài viết số tiếp theo, chúng mình sẽ làm quen với các công cụ, hệ sinh thái của STM32, bước đầu setup cho việc lập trình ứng dụng.

Thực hiện bài viết: Nguyễn Hoàng Đăng Khoa, Nguyễn Hoàng Quốc Cường