Lộ trình học lập trình nhúng

Gần đây em rất hứng thú với lập trình nhúng, sau khi tìm hiểu về các mạch Arduino và thấy nó rất thú vị. Tuy nhiên, vì em xuất phát từ IT nên có phần rỗng kiến thức về điện tử. Em đã thử tìm kiếm trên Google và YouTube, nhưng có quá nhiều thuật ngữ mới khiến em hơi rối. Do đó, em định bắt đầu học theo lộ trình như sau:

Arduino -> STM32 -> Project đơn giản.

Lộ trình này em nghĩ là phù hợp vì em chưa biết nhiều về các thuật ngữ cũng không thể nghĩ ra hướng phức tạp hơn và có thể nó còn làm nhiễu cái mục tiêu của mình. Mong nhận được nhận xét và gợi ý từ mọi người, cũng như một số nguồn học có phí hoặc miễn phí để tiếp cận.

Ngoài ra, em có nên tập trung vào C++ khi làm project không? Vì em khá vững C++ và quen dùng STL, nên nghĩ rằng sử dụng C++ sẽ thuận lợi hơn cho bản thân so với C

Hiện tại, em đang ôn thi TOEIC và tiếng Nhật với mục tiêu đạt TOEIC 900+ và N4 sau Tết. Theo mọi người, liệu khả năng ngôn ngữ có giúp em bù đắp phần nào các điểm yếu kỹ thuật để có được công việc đầu tiên không?

Rất mong nhận được lời khuyên và góp ý từ mọi người :smile:

Nói thì hơi bôi bác chứ mình tham gia đi bộ, chạy bộ thì mình thấy những bạn nào quan tâm lộ trinh đều 3-4 năm sau vẫn chưa hoàn thành đường chạy nào :smiley: bởi vì họ nghe dài quá, bỏ cuộc hết trơn. Còn những kẻ điên khác cứ lên đường, có người bỏ cuộc cạnh đích đến 20m, cũng có người đã đột tử giữa đường… nhưng họ đã được đi/ được chạy mà không phải xem lộ trình rồi tặc lưỡi.

Câu hỏi của bạn ngày nay ChatGPT dư sức trả lời, bạn lên đây hỏi là có ý gì? Định ai đó chịu trách nhiệm về việc "tán thành với lộ trình bạn vừa vạch ra: Arduino -> STM32 -> Project đơn giản.), không có đâu bạn, hỏi ChatGPT hoặc Google Gemini đi nhé. 2 bợm đó trả lời nè:

Bợm Chét Di Pi Ti:

Bợm Google Gemini:

Lộ trình học lập trình nhúng cho người đã biết C++

Tuyệt vời! Việc bạn đã có nền tảng C++ sẽ là một lợi thế lớn khi bắt đầu với lập trình nhúng. C++ là một ngôn ngữ lập trình cấp thấp, rất phù hợp để làm việc với phần cứng, đây cũng chính là điều mà lập trình nhúng yêu cầu. Dưới đây là một lộ trình học tập chi tiết dành cho bạn:

1. Hiểu rõ về hệ thống nhúng:

  • Khái niệm: Tìm hiểu về các hệ thống nhúng, cấu trúc của chúng, các thành phần chính (vi điều khiển, bộ nhớ, ngoại vi), và sự khác biệt so với các hệ thống máy tính thông thường.
  • Ứng dụng: Nghiên cứu các ứng dụng thực tế của lập trình nhúng để hình dung rõ hơn về những gì bạn có thể làm được.
  • Kiến trúc: Tìm hiểu về kiến trúc của vi điều khiển, cách chúng hoạt động, và cách giao tiếp với các thiết bị ngoại vi.

2. Chọn một nền tảng vi điều khiển:

  • Arduino: Dễ học, cộng đồng lớn, nhiều tài liệu hỗ trợ. Tuy nhiên, không phù hợp cho các dự án đòi hỏi hiệu năng cao.
  • STM32: Hiệu năng cao, linh hoạt, được sử dụng rộng rãi trong công nghiệp. Cần thời gian để làm quen với các thư viện và công cụ.
  • ESP32: Kết hợp Wi-Fi và Bluetooth, phù hợp cho các dự án IoT.

3. Học ngôn ngữ C:

  • Cơ bản:

  • Cú pháp, kiểu dữ liệu, toán tử, cấu trúc điều khiển.

  • Con trỏ, mảng, hàm.

  • Quản lý bộ nhớ.

  • Nâng cao:

  • Cấu trúc dữ liệu và giải thuật.

  • Lập trình hướng đối tượng (nếu cần).

Tại sao lại học C khi đã biết C++?

  • Hiệu năng: C thường tạo ra mã máy nhanh hơn C++.
  • Kiểm soát phần cứng: C cho phép bạn làm việc trực tiếp với các thanh ghi của vi điều khiển.
  • Phổ biến: C là ngôn ngữ chính được sử dụng trong lập trình nhúng.

4. Tìm hiểu về kiến trúc vi điều khiển:

  • ARM Cortex-M: Đây là một kiến trúc rất phổ biến trong các vi điều khiển hiện nay. Tìm hiểu về các thanh ghi, ngoại vi, và cách chúng hoạt động.
  • RISC-V: Một kiến trúc mở đang ngày càng phổ biến.

5. Lập trình vi điều khiển:

  • Bắt đầu với các ví dụ đơn giản: Nhấp nháy đèn LED, đọc giá trị từ cảm biến.
  • Tìm hiểu về các thư viện: Sử dụng các thư viện để đơn giản hóa quá trình lập trình.
  • Xây dựng các dự án thực tế: Áp dụng kiến thức đã học vào các dự án của riêng bạn.

6. Các khái niệm nâng cao:

  • Hệ điều hành thời gian thực (RTOS): Tìm hiểu về các RTOS phổ biến như FreeRTOS, uCOS.
  • Giao tiếp với các thiết bị ngoại vi: I2C, SPI, UART.
  • Xử lý ngắt: Quản lý các sự kiện bất ngờ.
  • Tối ưu hóa mã: Làm sao để viết mã chạy nhanh và hiệu quả trên vi điều khiển.

Tài liệu tham khảo:

  • Sách:

  • “Programming Embedded Systems” của Michael Barr

  • Các tài liệu hướng dẫn của nhà sản xuất vi điều khiển

  • Khóa học online:

  • Coursera, Udemy, edX

  • Cộng đồng:

  • Các diễn đàn, nhóm trên Facebook, Stack Overflow

Gợi ý:

  • Bắt đầu với một dự án nhỏ: Ví dụ, xây dựng một hệ thống tự động tưới cây.
  • Tham gia các cộng đồng: Học hỏi từ những người có kinh nghiệm.
  • Thực hành thường xuyên: Lập trình là một kỹ năng, cần phải luyện tập thường xuyên để thành thạo.

Lưu ý: Lộ trình này chỉ là một gợi ý, bạn có thể điều chỉnh tùy theo mục tiêu và sở thích của mình. Quan trọng nhất là bạn phải có niềm đam mê và sự kiên trì để chinh phục lĩnh vực này.

Chúc bạn thành công!

Bạn có muốn tôi cung cấp thêm thông tin về một khía cạnh cụ thể nào đó của lập trình nhúng không?

1 Like

Mình "tán thành với lộ trình bạn vừa vạch ra: Arduino -> STM32 -> Project đơn giản.

Giờ hi vọng bạn post với tag #share:writes về thứ bạn làm được hằng tuần lên forum này nhé. Mình sẽ theo đuôi ủng hộ bạn. Chúc bạn sớm có nhiều bài viết hay về Arduino.

4 Likes

If you understand English well enough, listen and view this series

2 Likes

Thực ra thì e cũng chưa có kiến thức gì cả :rofl: nên thực ra stm32 là e chọn bừa vì e tình cờ thấy trong quá trình search youtube. Ngoài ra nó còn rất nhiều các loại chip khác. Nên cần một góc nhìn khách quan hơn từ những anh chị đi trước. Vì học nhầm xong học lại khá là mất công. Dù sao thì cũng cảm ơn anh về góc nhìn khá hay.

:smile: yah vậy để e cố gắng mỗi tuần sẽ lên 1 bài viết về những gì đã học được để mn thảo luận. Cảm ơn anh nhiều về ý tưởng này.


Cho e hỏi là 1 bộ như này là đầy đủ hết đúng không ạ? Có nên mua trên shopee hay ta nên mua ở đâu

Mua shopee thường là rẻ nhất rồi. 1 bộ vậy là đủ đó, mua đi bạn.

1 Like

Ngóng chờ bài Write của bạn @Ryu_Lch :star_struck:

1 Like

Viết trên mấy cái simulator cho nhanh :)). Mua rất tốn kém


:sweat_smile: do một chút trục trặc trong quá trình giao hàng + đổi trả qua lại nên là e mới nhận được hàng gần đây. Vừa mới thử mắc một cái mạch theo ytb coi như Hello World vỡ lòng. Để cuối tuần viết lách chút :rofl:

3 Likes

Notion - Adruino Programming

hmm . . .cũng hơi lu bu lịch học với lịch làm nên là giờ mới viết lách được 1 ít :sweat_smile: cũng chưa biết chia sẻ gì nên chắc tạm thời e sẽ takenote những gì học được trên notion mong mn đọc và cho góp ý. Làm được cái gì đó hay ho lớn hơn chút thì sẽ lên 1 post mới

3 Likes

Quá tuyệt vời. Lâu lắm rồi mới có người nói là làm như bạn. Truyền động lực + lửa cho nhiều nhiều nhiều người khác.

3 Likes

Bài viết chi tiết quá. Chỉnh chu!

Chỗ này hơi sai 1 tí:

Chân dương của LED sẽ không có áp 5V vì đã bị sụt áp qua trở (chắc không phải do bạn không biết mà do bạn chú tâm tới việc diễn giải phân cực LED hơn).

Ngoài ra, bạn nên mua thêm VOA để thử đo xem. Nếu bạn thành thục có thể giúp ích cho bạn sau này để debug những lỗi thuộc về hardware như chip hư, hở mạch, lỏng dây.

4 Likes

:smile: thực ra có khá nhiều khái niệm e chưa biết về điện tử. Kiến thức vật lý cũng rơi rớt nhiều. Hiện tại thì e định học cái này như 1 sở thích nên hẳn sẽ có những chỗ chưa ổn. E sẽ dành thời gian ngồi nghiên cứu, đọc và viết lại cho hợp lý hơn.

Ở phần trước bạn có đề cập về lý do tại sao có con trở 220R. Cái này hoàn toàn theo định luật Ohm thôi.
Bạn hãy giả sử điện trở của con LED là 300R nhé. Sau đó thử tính xem điện áp sau khi đi qua con trở còn bao nhiêu.

3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?