Lập Trình Hệ Thống Nhúng Với Raspberry Pi: Từ Cơ Bản Đến Nâng Cao

Chuyên khảo phân tích Lập trình hệ thống nhúng với raspberry, đánh giá các khía cạnh quan trọng, đề xuất hướng nghiên cứu tiếp theo.

Trường đại học

Trường Đại Học Quy Nhơn

Chuyên ngành

Hệ Thống Nhúng

Người đăng

Ẩn danh

Thể loại

sách

2019

465
7
0

Phí lưu trữ

75 Point

Mục lục chi tiết

1. CHƯƠNG 1: TỔNG QUAN VỀ HỆ THỐNG NHÚNG

2. CHƯƠNG 2: GIỚI THIỆU CÁC LOẠI MÁY TÍNH ĐƠN GIẢN VÀ RASPBERRY PI

3. CHƯƠNG 3: CÀI ĐẶT CHO RASPBERRY

4. CHƯƠNG 4: GIỚI THIỆU PYTHON

5. CHƯƠNG 5: CÁC DANH SÁCH VÀ TỪ ĐIỂN PYTHON

6. CHƯƠNG 6: TRUYỀN THÔNG

7. CHƯƠNG 7: CÁC LOẠI CẢM BIẾN TRÊN THỊ TRƯỜNG

8. CHƯƠNG 8: KHÁI QUÁT VỀ PHẦN CỨNG

8.1. Xác định các chân GPIO trên cổng kết nối

8.2. Đảm bảo an toàn khi sử dụng các chân GPIO

8.3. Sử dụng các công cụ I2C

8.4. Thiết lập SPI

8.5. Cài đặt PySerial để truy xuất cổng nối tiếp từ Python

8.6. Cài đặt Minicom để thử nghiệm cổng nối tiếp

8.7. Sử dụng testboard với các dây nối

8.8. Sử dụng testboard với Pi Cobbler

8.9. Sử dụng Raspberry Squid Button

8.10. Sử dụng nút Raspberry Squid

8.11. Chuyển đổi tín hiệu 5 V thành 3.3 V bằng hai điện trở

8.12. Chuyển đổi tín hiệu 5 V mành 3.3 V bằng mô-đun chuyển đổi mức tín hiệu

8.13. Cấp nguồn cho Raspberry Pi bằng pin

8.14. Cấp nguồn cho Raspberry Pi bằng pin LiPo

8.15. Làm quen với Sense HAT

8.16. Làm quen với HAT Pro

8.17. Làm quen với bo RaspiRobot

8.18. Sử dụng bo thử nghiệm Pi Plate

8.19. Gắn phần cứng lên trên HAT (Hardware At Top)

8.20. Sử dụng mô đun Pi Compute

9. CHƯƠNG 9: ĐIỀU KHIỂN PHẦN CỨNG

9.1. Kết nối với 1 LED đơn

9.2. Đảm bảo an toàn cho các chân GPIO

9.3. Điều khiển độ sáng của LED

9.4. Ráp mạch phát âm thanh

9.5. Đóng ngắt thiết bị DC sử dụng Transistor

9.6. Đóng ngắt thiết bị công suất lớn sử dụng Rơ le

9.7. Điều khiển các thiết bị AC hoạt động với điện áp cao

9.8. Ráp mạch sử dụng giao diện điều khiển để bật/tắt thiết bị

9.9. Ráp mạch kết nối để điều khiển công suất của LED và động cơ bằng tín hiệu PWM

9.10. Điều khiển màu sắc của LED RGB

9.11. Mạch điều khiển nhiều LED (Charlieplexing)

9.12. Hiển thị tín hiệu bằng vôn kế Analog

9.13. Lập trình với các sự kiện ngắt

10. CHƯƠNG 10: HIỂN THỊ

10.1. Sử dụng LED hiển thị bốn chữ số

10.2. Hiển thị thông điệp trên Led ma trận bằng giao tiếp I2C

10.3. Sử dụng màn hình ma trận LED Sense HAT

10.4. Hiển thị thông điệp trên một HAT LCD kiểu chữ số

10.5. Hiển thị thông điệp lên một mô-đun LCD kiểu chữ số

10.6. Sử dụng màn hình đồ họa OLED

10.7. Sử dụng dây LED RGB có thể gán địa chỉ

11. CHƯƠNG 11: CẢM BIẾN

11.1. Sử dụng các cảm biến Resistive

11.2. Đo nhiệt độ bằng nhiệt trở

11.3. Xác định khí métan

11.4. Mạch giảm áp dùng để đo điện áp

11.5. Sử dụng các cảm biến có tính trỏ với ADC

11.6. Đo nhiệt độ với bộ biến đổi ADC

11.7. Đo nhiệt độ CPU của Raspberry Pi

11.8. Đo nhiệt độ, độ ẩm, áp suất với Sense HAT

11.9. Đo nhiệt độ sử dụng cảm biến Digital

11.10. Đo gia tốc với mô-đun MCP3008

11.11. Sử dụng đơn vị quản lý quán tính IMU của Sense HAT

11.12. Xác định cực từ Bắc bằng Sense HAT

11.13. Phát hiện nam châm bằng công tắc lưỡi gà

11.14. Phát hiện nam châm bằng Sense HAT

11.15. Cảm biến chạm diện dung

11.16. Hiển thị các giá trị từ cảm biến

11.17. Ghi chép dữ liệu vào ổ đĩa Flash USB

12. CHƯƠNG 12: RASPBERRY VÀ CẢM BIẾN HỒNG NGOẠI

13. CHƯƠNG 13: RASPBERRY VÀ CẢM BIẾN NHIỆT ĐỘ-ĐỘ ẨM

14. CHƯƠNG 14: RASPBERRY VÀ CẢM BIẾN SIÊU ÂM

15. CHƯƠNG 15: RASPBERRY VÀ CẢM BIẾN DỊCH CHUYÊN PIR

Tóm tắt

I. Tổng Quan Về Hệ Thống Nhúng Với Raspberry Pi

Hệ thống nhúng là một lĩnh vực quan trọng trong công nghệ hiện đại. Raspberry Pi là một trong những bo mạch phổ biến nhất cho việc lập trình hệ thống nhúng. Với khả năng linh hoạt và giá thành hợp lý, Raspberry Pi đã trở thành lựa chọn hàng đầu cho nhiều dự án. Việc hiểu rõ về hệ thống nhúng và cách thức hoạt động của Raspberry Pi sẽ giúp người học dễ dàng hơn trong việc phát triển các ứng dụng thực tiễn.

1.1. Hệ Thống Nhúng Là Gì

Hệ thống nhúng (Embedded System) là một hệ thống tích hợp cả phần cứng và phần mềm, được thiết kế để thực hiện một nhiệm vụ cụ thể. Chúng thường được sử dụng trong các thiết bị điện tử như máy giặt, tivi thông minh và nhiều ứng dụng khác.

1.2. Tại Sao Chọn Raspberry Pi

Raspberry Pi là một bo mạch nhỏ gọn, giá rẻ và dễ sử dụng. Nó hỗ trợ nhiều ngôn ngữ lập trình như Python và C, giúp người dùng dễ dàng phát triển các ứng dụng từ cơ bản đến nâng cao.

II. Thách Thức Khi Lập Trình Hệ Thống Nhúng

Lập trình hệ thống nhúng với Raspberry Pi không phải là điều dễ dàng. Người lập trình phải đối mặt với nhiều thách thức như quản lý tài nguyên hạn chế, tối ưu hóa hiệu suất và đảm bảo tính ổn định của hệ thống. Những vấn đề này cần được giải quyết để đảm bảo ứng dụng hoạt động hiệu quả.

2.1. Quản Lý Tài Nguyên Hạn Chế

Raspberry Pi có tài nguyên phần cứng hạn chế so với các máy tính thông thường. Việc tối ưu hóa mã nguồn và sử dụng tài nguyên một cách hiệu quả là rất quan trọng để đảm bảo hiệu suất.

2.2. Đảm Bảo Tính Ổn Định

Hệ thống nhúng cần hoạt động ổn định trong thời gian dài. Việc kiểm tra và xử lý lỗi kịp thời là cần thiết để tránh sự cố trong quá trình vận hành.

III. Phương Pháp Lập Trình Hệ Thống Nhúng Với Raspberry Pi

Có nhiều phương pháp để lập trình hệ thống nhúng với Raspberry Pi. Việc lựa chọn ngôn ngữ lập trình phù hợp và sử dụng các thư viện hỗ trợ sẽ giúp quá trình phát triển trở nên dễ dàng hơn. Python là một trong những ngôn ngữ phổ biến nhất cho Raspberry Pi.

3.1. Lập Trình Python Trên Raspberry Pi

Python là ngôn ngữ lập trình dễ học và mạnh mẽ, rất phù hợp cho việc lập trình trên Raspberry Pi. Nó hỗ trợ nhiều thư viện giúp kết nối với cảm biến và thiết bị ngoại vi.

3.2. Sử Dụng Thư Viện GPIO

Thư viện GPIO cho phép người dùng điều khiển các chân GPIO trên Raspberry Pi. Điều này rất quan trọng trong việc kết nối và điều khiển các thiết bị ngoại vi như cảm biến và động cơ.

IV. Ứng Dụng Thực Tiễn Của Raspberry Pi Trong Hệ Thống Nhúng

Raspberry Pi được ứng dụng rộng rãi trong nhiều lĩnh vực như IoT, tự động hóa và giáo dục. Các dự án thực tiễn giúp người học có cái nhìn sâu sắc hơn về cách thức hoạt động của hệ thống nhúng.

4.1. Ứng Dụng Trong IoT

Raspberry Pi có thể được sử dụng để phát triển các ứng dụng IoT, cho phép kết nối và điều khiển thiết bị từ xa thông qua Internet.

4.2. Dự Án Tự Động Hóa

Nhiều dự án tự động hóa sử dụng Raspberry Pi để điều khiển các thiết bị như đèn, quạt và cảm biến môi trường, giúp cải thiện chất lượng cuộc sống.

V. Kết Luận Về Lập Trình Hệ Thống Nhúng Với Raspberry Pi

Lập trình hệ thống nhúng với Raspberry Pi là một lĩnh vực đầy tiềm năng. Việc nắm vững các kiến thức cơ bản và thực hành thường xuyên sẽ giúp người học phát triển kỹ năng lập trình và ứng dụng thực tiễn. Tương lai của hệ thống nhúng hứa hẹn sẽ còn phát triển mạnh mẽ hơn nữa.

5.1. Tương Lai Của Hệ Thống Nhúng

Hệ thống nhúng sẽ tiếp tục phát triển với sự gia tăng của công nghệ IoT và tự động hóa. Raspberry Pi sẽ đóng vai trò quan trọng trong việc phát triển các ứng dụng mới.

5.2. Khuyến Khích Học Tập

Khuyến khích người học tham gia vào các dự án thực tế và cộng đồng lập trình để nâng cao kỹ năng và kiến thức về hệ thống nhúng.

16/07/2025

Trích đoạn nội dung tài liệu

CHƯƠNG 1: TỔNG QUAN «Ẽ BỆ THỦNG NHÍINB PIC, 8051, Atmel AVR, Renesas H8, SH, V850, FR-V, M32R, Z80, Z8. Điều này trái ngược với các loại máỵ tính để bàn, thường bị hạn chế với một vài kiến trúc máy tính nhất định. Các hệ thống nhúng có kích thước nhỏ và được thiết kế để hoạt động trong môi trường công nghiệp thường lựa chọn PC/104 và PC/104++ làm nền tảng. Những hệ thống này thường sử dụng DOS, Linux, NetBSD hoặc các hệ điểu hành nhúng thời gian thực như QNX hay VxWorks.

Còn các hệ thống nhúng có kích thước rất lớn thường sử dụng một cấu hình thông dụng là hệ thống on chip (System on a chip - SoC), một bo mạch tích hợp cho một ứng dụng cụ thể (An Application-Specific Integrated Circuit - ASIC). Sau đó nhân CPU được mua và thêm vào như một phần của thiết kế chip. Một chiến lược tương tự là sử dụng FPGA (Field-Programmable Gate Array) và lập trình cho nó với những thành phần nguyên lý thiết kế bao gồm cả CPU. Vi xử lý trong hệ thống nhúng Vi xử lý trong hệ thống nhúng có hai đơn vị thiết yếu:.

Đơn vị điều khiển dòng chảy của chương trình (CU- Program Flow Control Unit). • Đơn vị thực hiện (EU-Execution Unit). CU bao gồm một đơn vị nhận các chỉ thị từ bộ nhớ. EU có các mạch thực hiện các chỉ thị liên quan đến hoạt dộng truyền dữ liệu và chuyển đổi dữ liệu từ dạng này sang dạng khác.

EU bao gồm đơn vị tính toán và luận lý (ALU-Arithmetic and Logical Unit) và cũng là các mạch thực hiện các chỉ thị cho một nhiệm vụ kiểm soát chương trình như ngắt (interrupt), hoặc nhảy tới một chỉ thị khác. Một vi xử lý chạy và thực biện các chỉ thị theo tuần tự trong cùng một dữ liệu được nạp từ bộ nhớ. Các loại vi xử lý Vi xử lý có thể thuộc các thể loại sau: • Vi xử lý tổng quát (General Purpose Processor - GPP) ClưdliB 1: TỔH6 QOAN «Ẽ BỆ TIIỔH6 HIÚN6 LẶP TBlHi HỆ THỐN6 HHÚN6 VỜI BASPBEBBY > Vi xử lý (Microprocessor). > Vi điều khiển (Microcontroller).

> Vi xử lý nhúng (Embedded Processor). > Xử lý tín hiệu số (Digital Signal Processor). > Vi xử lý phương tiện truyền thông (Media Processor) • Bộ xử lý hệ thống ứng dụng cụ thể (ASSP-Application Specific System Processor). • Bộ vi xử lý chỉ thị ứng dụng cụ thể (ASIP-Application Specific Instruction Processors).

Vi xử lý (Microproceesor) Vi xử lý là một chip VLSI đơn có CPU. Ngoài ra, nó cũng có thể có các đơn vị khác như: Đơn vị sô học xử lý dâu châm động và các đơn vị đựờng ống (pipelining) giúp xử lý các chỉ thị nhanh hơn. Các vi xử lý thế hệ trước có chu kỳ nạp và thực hiện được điều khiển bởi một đồng hồ có tần số thấp ~ 1 MHz. Trong khi các bộ vi xử lý hiện tại hoạt động ở tần số đồng hồ nhanh hơn ( 2 GHz).

Vi điều khiển Vi điều khiển (Microcontroller) là một chip VLSI đơn (còn gọi là Vi máy tính-Microcomputer) mặc dù có giới hạn vê năng lực tính toán, khả năng tăng cường đầu vào/dầu ra và số đơn vị chức năng trên chip. Vi diều khiển Chip (Microcontroller Chip) Vi điểu khiển được sử dụng đặc biệt trong các hệ thông nhúng với các ứng dụng điều khiển thời gian thực trên một chip với bộ nhớ chương trình và các thiết bị. Bộ vi xử lý và vi điều khiển Bây giờ chúng ta hãy tìm hiểu về sự khác biệt đáng chú ý nhất giữa vi xử lý và vi điều khiển. 20 Vi xử lý Vi xử lý trong tự nhiên thực hiện đa nhiệm (multitasking) chúng có thể thực hiện nhiều tác vụ cùng một lúc.

Ví dụ: Với máy tính, chúng ta có thể chơi nhạc trong khi đó cùng xử lý văn bản trong trình soạn thảo văn bản. • RAM, ROM, Các cổng I/O và Timers có thể được thêm vào bên ngoài và có thể thay đổi số lượng. Các nhà thiết kế có thể quyết định số lượng bộ nhớ hoặc cổng I/O cần thiết. • Việc hỗ trợ bộ nhớ và cổng I/O ngoài làm cho hệ thống dựa trên bộ vi xử lý sẽ phức tạp và tốn kém hơn.bên ngoài đòi hỏi nhiều không gian hơn và mức tiêu thụ điện năng của chúng cao hơn Vi điều khiển (Microcontroller) • Thực hiện tác vụ theo định hướng.

Ví dụ, một máy giặt chỉ được dùng để giặt quần áo. • RAM, ROM, các cổng I/O Ports và Timers không thể được thêm vào bên ngoài. Các thành phần này được nhúng vào một chip và được cố định theo số. • Việc cố định cho bộ nhớ hoặc cổng I/O làm cho vi điều khiển là linh kiện lý tưởng cho một nhiệm vụ giới hạn nhưng cụ thể.

• Vi điểu khiển kích thước nhỏ và rẻ hơn vi xử lý. • Một hệ thống làm việc với vi điều* khiển tiêu thụ ít năng lượng và chiếm ít không gian Kiến trúc Vi điều khiển 8051 (1985-1990) làm việc với bus dữ liệu 8- bit. Vì vậy, nó có thể hỗ trợ bộ nhớ dữ liệu bên ngoài lên đến 64 K và bộ nhớ chương trình bên n ,oài 64 K là tốt nhất. Nói chung, 8051 có thể giải quyết 128 K bộ nhớ bên ngoài.

Khi dữ liệu và mã nằm trong các khối bộ nhớ khác nhau thì kiến trúc này được gọi là kiến trúc Harvard. Trong trường hợp dữ liệu và mã nằm trong cùng khối nhớ, thì kiến trúc được gọi là kiến trúc Von Neumann. Ỉ1 CliươHG 1: T ẩ m qUftN «Ẽ BỆ TBỠN6 NHÜN6 LẬP TBÎm HỆ THÛWQ NHÚN6 VƠI RftSPBEHRY Kiến trúc Von Neumann Kiến trúc Von Neumann lần đầu tiên được đề xuất bởi nhà khoa học máy tính John Von Neumann. Trong kiến trúc này, một đường dẫn hoặc bus tồn tại cho cả chỉ thị và dữ liệu.

Kết quả là, CPU thực hiện một thao tác trong một thời điểm, hoặc là lấy một lệnh từ bộ nhớ, hoặc thực hiện hoạt động đọc/ghi dữ liệu. Vì vậy, một lệnh tìm nạp và thao tác trên dữ liệu không thể xảy ra đồng thời và chia sẻ trêrì một bus chung. Kiến trúc Von-Neumann hỗ trợ phần cứng đdn giản. Nó cho phép sử dụng một bộ nhớ đdn kiểu tuần tự.

Quá trình xử lý ngày nay có tốc độ vượt trội so với thời gian truy cập bộ nhớ và chúng ta sử dụng bộ nhớ (bộ nhớ cache) cục bộ rất nhanh nhưng chiếm dung lượng nhỏ trên vi xử lý. Kiến trúc Harvard Kiến trúc Harvard cung cấp các bộ lưu trữ và bus tín hiệu riêng biệt cho các chỉ thị (lệnh) và dữ liệu. Kiến trúc này lưu trữ dữ liệu hoàn toàn nằm trong CPU và không có quyền truy cập vào lệnh lưu trữ cũng như là dữ liệu. Máy tính có các vùng bộ nhớ riêng biệt cho các lệnh chương trình và dữ liệu bằng cách sử dụng bus dữ liệu nội bộ, cho phép truy cập đồng thời cả lệnh và dữ liệu.

Các chương trình cần thiết để nạp bởi người vận hành, vi xử lý không thể tự khởi động. Trong một kiến trúc Harvard, không cần phải chia sẻ cho nhau bộ nhớ. Những điểm sau đây để phân biệt kiến trúc Von Neumann từ Kiến trúc Harvard. Kiến trúc Von-Neumann • Bộ nhớ đơn được chia sẻ bởi cả mã và dữ liệu.

• Vi xử lý cần lấy mã và dữ liệu riêng trong một chu kỳ đồng hồ trong chu kỳ đồng hồ khác. Vì vậy nó đòi hỏi hai chu kỳ đổng hổ. • Tốc độ cao hơn, do đó ít tốn thời gian hơn. • Đơn giản trong thiết kế.

22 LẬP TBiHH HỆ THỐNG NHÚNG vứl RASPBERRY CHƯƠNG 1: TỔH9 QI1AN «Ë HỆ THỐNG WHÚH6 Kiến trúc Harvard • Tách riêng bộ nhớ cho mã và dữ liệu. • Một chu kỳ đồng hồ là đủ và bus riêng biệt được sử dụng để truy cập mã và dữ liệu. • Tốc độ chậm, do đó tốn nhiều thời gian hơn. • Phức tạp trong thiết kế.

CISC và RISC CISC là một máy tính có cấu trúc lệnh phức tạp. Đó là một máy tính có thể giải quyết một số lượng lớn các lệnh. Vào đầu những năm 1980, các nhà thiết kế máy tính khuyến cáo rằng các máy tính nên sử dụng ít lệnh hơn với cấu trúc đơn giản để chúng có thể được thực hiện nhanh hơn trong CPU mà không cần sử dụng bộ nhớ. Các máy tính như vậy được phân loại là máy tính RISC (Reduced Instruction Set Computer).

CISC vs RISC Các điểm sau đây phân biệt giữa CISC từ RISC: CISC > Trình biên dịch có thiết kế đơn giản, xử lý các tập lệnh lớn hơn. Lập trình dễ. > Nhiều chế độ (mode) địa chỉ gây ra các định dạng lệnh phức tạp. > Các lệnh có chiều dài là biến.

> Chu kỳ đồng hồ trên mỗi giây (tần số) cao hơn. > Nhấn mạnh vào phần cứng. > Bộ điều khiển (CU) thực hiện tập lệnh lớn bằng cách sử dụng đơn vị vi-chương trinh (micro-program unit). > Các lệnh đọc và giải mã từ bộ nhớ từ đơn vị giải mã (decoder unit) thực hiện chậm hơn,.

> Pipelining là không thể. CIƯƯNt 1: TẩH6 qUAH VẺ IỆ TIÙN6 HHÚHS LẬP TBÌHB BỆ THỐHS (IHdHG VƠI BASPBEWBY RISC > Các lệnh nhỏ hơn. Lập trình khó. > Thiết kế trình biên dịch phức tạp.

> Rất ít chế độ (mode) địa chỉ, định dạng lệnh cố định. > Lệnh có chiều dài thay đổi. > Tần số xung đồng hồ thấp. > Nhấn mậnh vào phần mềm.

> Mỗi lệnh sẽ được thực hiện bởi phần cứng. > Thực hiện nhanh hơn, vì mỗi lệnh sẽ được thực hiện bằng phần cứng. > Cấu trúc Pipelining cho lệnh là có thể, xem xét chu kỳ đồng hồ duy nhất. • Thiết bị đẩu ra: Thu thập các chỉ thị từ bộ vi điều khiển và thực hiện tương ứng.

Công cụ phát triển Tương tự như các sản phẩm phần mềm khác, phần mềm hệ thống nhúng cũng được phát triển nhờ việc sử dụng các trình biên dịch (compilers), chương trình dịch hợp ngữ (assembler) hoặc các công cụ gỡ rối (debuggers). Tuy nhiên, các nhà thiết kế hệ thống nhúng có thể sử dụng một số công cụ chuyên dụng như: • Bộ gỡ rối mạch hoặc các chương trình mô phỏng (emulator). • Tiện ích để thêm các giá trị checksum hoặc CRC vào chương trình, giúp hệ thống nhúng có thể kiểm tra tính hợp lệ của chương trình đó. • Đối với các hệ thống xử lý tín hiệu số người phát triển hệ thông có thê sư dụng phần mềm Workbench như MathCad hoạc Mathematica de mo phỏng các phép toán • Các trình biên dịch và trình liên kết (linker) chuyên dụng được sử dụng để tối ưu hóa một thiết bị phần cứng.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ

Tài liệu "Hướng Dẫn Lập Trình Hệ Thống Nhúng Với Raspberry Pi" cung cấp cho người đọc những kiến thức cơ bản và nâng cao về lập trình hệ thống nhúng, đặc biệt là với nền tảng Raspberry Pi. Tài liệu này không chỉ giúp người đọc hiểu rõ về cấu trúc và cách thức hoạt động của Raspberry Pi mà còn hướng dẫn cách lập trình và triển khai các ứng dụng thực tế. Những lợi ích mà tài liệu mang lại bao gồm khả năng phát triển kỹ năng lập trình, ứng dụng trong các dự án thực tế, và sự sáng tạo trong việc xây dựng các hệ thống nhúng.

Để mở rộng thêm kiến thức của bạn về lĩnh vực này, bạn có thể tham khảo tài liệu Thiết kế mô hình phân loại sản phẩm bằng xử lý ảnh sử dụng ngôn ngữ python trên raspberry pi4. Tài liệu này sẽ giúp bạn hiểu rõ hơn về việc áp dụng Raspberry Pi trong xử lý ảnh, mở ra nhiều cơ hội mới trong việc phát triển các ứng dụng thông minh. Hãy khám phá để nâng cao kiến thức và kỹ năng của bạn trong lĩnh vực lập trình hệ thống nhúng!