EmbeddedThings

EmbeddedThings

Share

Sharing embedded systems concepts

14/04/2026

Hướng đối tượng trong embedded

13/04/2026

Overhead in C++

12/04/2026

Xử lý ngắt

12/04/2026

Bit fields in C

12/04/2026

# Roadmap học Embedded Systems từ con số 0 đến đi làm

Nếu bạn mới bắt đầu học Embedded hoặc đang bị “ngợp” vì không biết nên học cái gì trước, cái gì sau, thì roadmap dưới đây sẽ giúp bạn đi đúng hướng.

Mình chia theo thứ tự học thực tế, từ dễ đến khó, từ phần mềm đến phần cứng. Mỗi mục đều có tài liệu hoặc khóa học đi kèm để bạn học ngay.

---

# 1. Lập trình cơ bản – nền móng bắt buộc

Muốn làm Embedded thì trước tiên phải biết lập trình.

Ưu tiên:

* C
* Sau đó có thể học thêm C++, Python
* Cuối cùng mới nên xem qua Assembly

Nên học:

* Biến, hàm, con trỏ, struct, enum
* Bitwise, quản lý bộ nhớ
* Stack / Heap
* Data Structure và thuật toán cơ bản

Tài liệu:

* C Programming Full Course – freeCodeCamp:
[https://www.youtube.com/watch?v=KJgsSFOSQv0](https://www.youtube.com/watch?v=KJgsSFOSQv0)
* CS50 C:
[https://cs50.harvard.edu/x/](https://cs50.harvard.edu/x/)
* Learn C:
[https://www.learn-c.org/](https://www.learn-c.org/)
* C++ cho Embedded:
[https://www.youtube.com/watch?v=zBkNBP00wJE](https://www.youtube.com/watch?v=zBkNBP00wJE)
* Python cơ bản:
[https://www.learnpython.org/](https://www.learnpython.org/)

---

# 2. Toán và điện tử cơ bản

Đây là phần nhiều người bỏ qua nhưng lại rất quan trọng.

Cần biết:

* Điện áp, dòng điện, điện trở
* Định luật Ohm
* Điện trở kéo lên / kéo xuống
* MOSFET, transistor, relay
* Mạch RC, tụ điện, diode
* Số nhị phân, hex, bit, digital logic

Tài liệu:

* Basic Electronics – GreatScott:
[https://www.youtube.com/playlist?list=PLAROrg3NQn7dY5J9v7Q1JvLJ7QG6JfY6h](https://www.youtube.com/playlist?list=PLAROrg3NQn7dY5J9v7Q1JvLJ7QG6JfY6h)
* All About Circuits:
[https://www.allaboutcircuits.com/](https://www.allaboutcircuits.com/)
* Digital Logic Design:
[https://www.youtube.com/watch?v=M0mx8S05v60](https://www.youtube.com/watch?v=M0mx8S05v60)
* Khan Academy – Electrical Engineering:
[https://www.khanacademy.org/science/electrical-engineering](https://www.khanacademy.org/science/electrical-engineering)

---

# 3. Vi điều khiển (Microcontroller)

Sau khi biết C và điện tử cơ bản, hãy bắt đầu với một dòng MCU phổ biến như STM32 hoặc ESP32.

Nên học theo thứ tự:

* GPIO
* UART
* Timer
* PWM
* ADC
* Interrupt
* DMA
* Watchdog
* Bootloader

Nếu bạn học STM32, đây là thứ tự nên đi:

1. Nháy LED
2. Đọc nút nhấn
3. UART gửi dữ liệu
4. PWM điều khiển LED hoặc motor
5. ADC đọc cảm biến
6. Interrupt
7. DMA
8. FreeRTOS

Tài liệu:

* STM32 từ đầu:
[https://controllerstech.com/](https://controllerstech.com/)
* STM32CubeIDE + STM32 tutorial:
[https://deepbluembedded.com/](https://deepbluembedded.com/)
* STM32 HAL Driver playlist:
[https://www.youtube.com/playlist?list=PLfIJKC1ud8ghc4A0F0nT2rA6zS2s5P1Qx](https://www.youtube.com/playlist?list=PLfIJKC1ud8ghc4A0F0nT2rA6zS2s5P1Qx)
* ESP32 Tutorial:
[https://randomnerdtutorials.com/projects-esp32/](https://randomnerdtutorials.com/projects-esp32/)
* Datasheet và Reference Manual STM32:
[https://www.st.com/en/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus.html](https://www.st.com/en/microcontrollers-microprocessors/stm32-32-bit-arm-cortex-mcus.html)

---

# 4. Giao tiếp giữa các thiết bị

Đây là kỹ năng cực kỳ quan trọng vì gần như mọi cảm biến và module đều dùng giao tiếp.

Phải học:

* UART
* I2C
* SPI

Sau đó học thêm:

* CAN
* RS485 / Modbus
* USB
* Ethernet
* BLE / WiFi / MQTT

Thứ tự học đề xuất:
UART → I2C → SPI → CAN → RS485 → MQTT

Tài liệu:

* UART/I2C/SPI dễ hiểu:
[https://learn.sparkfun.com/tutorials](https://learn.sparkfun.com/tutorials)
* I2C vs SPI vs UART:
[https://www.youtube.com/watch?v=IyGwvGzrqp8](https://www.youtube.com/watch?v=IyGwvGzrqp8)
* CAN Bus:
[https://www.csselectronics.com/pages/can-bus-simple-intro-tutorial](https://www.csselectronics.com/pages/can-bus-simple-intro-tutorial)
* Modbus RS485:
[https://www.simplymodbus.ca/](https://www.simplymodbus.ca/)
* MQTT cơ bản:
[https://www.hivemq.com/mqtt-essentials/](https://www.hivemq.com/mqtt-essentials/)

---

# 5. RTOS – bắt đầu khi dự án lớn hơn

Khi dự án có nhiều task cùng chạy: đọc cảm biến, truyền dữ liệu, UI, motor... thì bạn cần RTOS.

Nên học:

* Task
* Queue
* Semaphore
* Mutex
* Event Group
* Software Timer

Khuyên dùng:

* FreeRTOS
* Sau này có thể tìm hiểu Zephyr

Tài liệu:

* FreeRTOS official:
[https://www.freertos.org/](https://www.freertos.org/)
* FreeRTOS tutorial:
[https://controllerstech.com/freertos-tutorials/](https://controllerstech.com/freertos-tutorials/)
* Mastering FreeRTOS ebook:
[https://www.freertos.org/Documentation/RTOS_book.html](https://www.freertos.org/Documentation/RTOS_book.html)
* Zephyr Project:
[https://docs.zephyrproject.org/](https://docs.zephyrproject.org/)

---

# 6. Embedded Linux

Nếu bạn muốn đi theo hướng Linux Embedded, BeagleBone, Raspberry Pi, Jetson, Zynq hoặc hệ thống chạy Linux thì cần học phần này.

Nên học:

* Linux command line
* Bash
* C/C++ trên Linux
* Makefile / CMake
* Cross compile
* Device Tree
* Kernel Driver
* GPIO, I2C, SPI trên Linux

Roadmap:

1. Linux command line
2. Bash script
3. Makefile / CMake
4. Cross compile
5. Linux driver
6. Device Tree
7. Yocto / Buildroot

Tài liệu:

* Linux Journey:
[https://linuxjourney.com/](https://linuxjourney.com/)
* The Linux Command Line:
[https://linuxcommand.org/tlcl.php](https://linuxcommand.org/tlcl.php)
* Makefile tutorial:
[https://makefiletutorial.com/](https://makefiletutorial.com/)
* CMake tutorial:
[https://cmake.org/cmake/help/latest/guide/tutorial/](https://cmake.org/cmake/help/latest/guide/tutorial/)
* Linux Device Driver book:
[https://lwn.net/Kernel/LDD3/](https://lwn.net/Kernel/LDD3/)
* BeagleBone Black Linux Driver playlist:
[https://www.youtube.com/results?search_query=beaglebone+linux+device+driver](https://www.youtube.com/results?search_query=beaglebone+linux+device+driver)
* Yocto:
[https://docs.yoctoproject.org/](https://docs.yoctoproject.org/)
* Buildroot:
[https://buildroot.org/docs.html](https://buildroot.org/docs.html)

---

# 7. Debugging – kỹ năng giúp bạn sống sót

Nhiều người học code nhưng không học debug.

Phải biết:

* Dùng debugger
* Breakpoint
* Watch variable
* SWD / JTAG
* Logic Analyzer
* Oscilloscope

Nếu làm Embedded mà chưa từng dùng oscilloscope hoặc logic analyzer thì rất khó đi xa.

Tài liệu:

* STM32 Debugging:
[https://www.youtube.com/results?search_query=stm32+debugging+with+st-link](https://www.youtube.com/results?search_query=stm32+debugging+with+st-link)
* Saleae Logic Analyzer:
[https://support.saleae.com/](https://support.saleae.com/)
* Oscilloscope cơ bản:
[https://www.youtube.com/watch?v=u4zyptPLlJI](https://www.youtube.com/watch?v=u4zyptPLlJI)

---

# 8. Build System và công cụ

Nên biết:

* GCC
* Make
* CMake
* Git
* Docker

Tài liệu:

* Git Handbook:
[https://guides.github.com/introduction/git-handbook/](https://guides.github.com/introduction/git-handbook/)
* Learn Git Branching:
[https://learngitbranching.js.org/](https://learngitbranching.js.org/)
* Docker cho người mới:
[https://www.youtube.com/watch?v=fqMOX6JJhGo](https://www.youtube.com/watch?v=fqMOX6JJhGo)

---

# 9. Testing và Clean Code

Đừng chỉ code chạy được. Hãy code dễ bảo trì.

Nên học:

* Unit Test
* TDD
* Clean Code
* MISRA C
* Code Review

Tài liệu:

* Unity Test Framework:
[https://github.com/ThrowTheSwitch/Unity](https://github.com/ThrowTheSwitch/Unity)
* Ceedling:
[https://github.com/ThrowTheSwitch/Ceedling](https://github.com/ThrowTheSwitch/Ceedling)
* Clean Code summary:
[https://github.com/ryanmcdermott/clean-code-javascript](https://github.com/ryanmcdermott/clean-code-javascript)
* MISRA C overview:
[https://www.perforce.com/resources/qac/misra-c-cpp](https://www.perforce.com/resources/qac/misra-c-cpp)

---

# 10. Học theo project – cách nhanh nhất để giỏi

Sau khi học từng phần riêng lẻ, hãy ghép chúng lại thành project thật.

Project beginner:

* STM32 đọc nhiệt độ và hiển thị LCD
* ESP32 gửi dữ liệu lên MQTT
* Điều khiển motor bằng PWM

Project intermediate:

* Hệ thống cảm biến gửi dữ liệu qua RS485
* Thiết bị IoT dùng WiFi + MQTT
* Bootloader OTA cho STM32

Project advanced:

* Embedded Linux + STM32 giao tiếp UART
* Hệ thống điều khiển motor dùng FreeRTOS
* Gateway Modbus RS485 sang MQTT
* Driver Linux cho GPIO / I2C / SPI

---

# 11. Roadmap 6 tháng cho người mới

Tháng 1:

* Học C
* Học điện tử cơ bản

Tháng 2:

* STM32 GPIO, UART, Timer, ADC

Tháng 3:

* I2C, SPI, Interrupt, DMA

Tháng 4:

* FreeRTOS + Project nhỏ

Tháng 5:

* Embedded Linux hoặc IoT

Tháng 6:

* Làm 1 project hoàn chỉnh và đưa lên GitHub

---

# 12. Kênh YouTube / Website nên follow

YouTube:

* Phil’s Lab
* FastBit Embedded Brain Academy
* Low Level Learning
* Ben Eater
* Andreas Spiess
* Jacob Sorber
* Shawn Hymel

Website:

* [https://controllerstech.com/](https://controllerstech.com/)
* [https://deepbluembedded.com/](https://deepbluembedded.com/)
* [https://embeddedartistry.com/](https://embeddedartistry.com/)
* [https://www.embedded.com/](https://www.embedded.com/)
* [https://interrupt.memfault.com/](https://interrupt.memfault.com/)

---

Nếu bạn đang học Embedded, hãy comment bạn đang ở giai đoạn nào:

* Mới học C
* Đang học STM32
* Đang học RTOS
* Đang làm Embedded Linux
* Đang đi làm nhưng muốn nâng trình

Mình sẽ viết tiếp từng phần chi tiết hơn, ví dụ:

* Roadmap học STM32 trong 30 ngày
* Roadmap học FreeRTOS
* Roadmap học Linux Driver trên BeagleBone
* Roadmap làm project để đi phỏng vấn

12/04/2026

Con trỏ

11/04/2026

Thao tác bit - Vũ khí cấu hình thanh ghi

11/04/2026

Cấu trúc bộ nhớ chương trình nhúng

10/04/2026

Từ khoá “volatile” trong Embedded C-Tại sao nó sống còn ?
#

Want your business to be the top-listed Computer & Electronics Service in Tay Ho?
Click here to claim your Sponsored Listing.

Address

Ha Noi
Tay Ho
11500