You are on page 1of 124

UỶ BAN NHÂN DÂN THÀNH PHỐ CẦN THƠ

TRƯỜNG ĐH. KỸ THUẬT – CÔNG NGHỆ CẦN THƠ

BÀI GIẢNG
HỆ THỐNG NHÚNG
Cán bộ giảng dạy:
ThS. TRẦN HOÀI TÂM
1
BM. Tự động hóa – Khoa Kỹ thuật cơ khí
Email: thtam@ctuet.edu.vn
Phone: 091.7979.007
CẤU TRÚC
MÁY TÍNH

2
MỘT HỆ THỐNG NHÚNG LÀ GÌ ???

3
HỆ THỐNG NHÚNG – MÁY GIẶT

4
THÔNG TIN MÔN HỌC
❖Số tín chỉ: 1LT + 1TH (15 tiết LT + dự án nhóm).
❖Mô tả: Cung cấp cho SV những kiến thức về tổng quan
hệ thống nhúng, phương pháp thiết kế, hệ điều hành
nhúng, lập trình nhúng trên nền tảng Arduino.
❖Phương pháp: nghe giảng lý thuyết, tự học (tham khảo
tài liệu), thực hành (thảo luận nhóm, làm dự án, thuyết
trình, hỏi/đáp).
❖Đánh giá: - Dự án nhóm: 40%
5
- Thi cuối kỳ: 60%
CÁC VẤN ĐỀ LƯU Ý
▪ Giữ trật tự khi vào lớp trễ, không làm ảnh hưởng đến
người khác;
▪ Cài điện thoại ở chế độ im lặng, hạn chế sử dụng
điện thoại trong lớp;
▪ Yêu cầu trang phục gọn gàng, lịch sự;
▪ Các trường hợp sinh viên bị cấm thi cuối kỳ và nhận
điểm F: sinh viên không thực hiện dự án nhóm,
vắng quá 03 buổi lý thuyết, không tham gia đầy đủ6
nội dung thực hành.
NỘI DUNG HỌC PHẦN TIẾT
PHẦN LÝ THUYẾT (1TC) 15
MỞ ĐẦU – GIỚI THIỆU MÔN HỌC 3
TỔNG QUAN VỀ HỆ THỐNG NHÚNG 3
CÁC THÀNH PHẦN CỦA HỆ THỐNG NHÚNG 3
RASPBERRY & CÁC LOẠI MÁY TÍNH ĐƠN GIẢN 3
THIẾT KẾ PHẦN CỨNG - PHẦN MỀM NHÚNG 3
PHẦN THỰC HÀNH (2TC) 30
THIẾT KẾ CÁC HỆ THỐNG NHÚNG ĐIỂN HÌNH
7
DỰ ÁN NHÓM
TÀI LIỆU HỌC TẬP
https://tinyurl.com/y6568a8q
➢ Tài liệu chính:
▪ Bài giảng HỆ THỐNG NHÚNG
▪ Lập trình hệ thống nhúng với Rasperry
– Nguyễn Tất Bảo Thiện
➢ Tài liệu tham khảo:
▪ Các bài giảng khác.
8
▪ Internet và các nguồn khác.
NỘI DUNG HỌC PHẦN TIẾT
PHẦN LÝ THUYẾT (1TC) 15
MỞ ĐẦU – GIỚI THIỆU MÔN HỌC 3
TỔNG QUAN VỀ HỆ THỐNG NHÚNG 3
CÁC THÀNH PHẦN CỦA HỆ THỐNG NHÚNG 3
RASPBERRY & CÁC LOẠI MÁY TÍNH ĐƠN GIẢN 3
THIẾT KẾ PHẦN CỨNG - PHẦN MỀM NHÚNG 3
PHẦN THỰC HÀNH (2TC) 30
THIẾT KẾ CÁC HỆ THỐNG NHÚNG ĐIỂN HÌNH
9
DỰ ÁN NHÓM
TỔNG QUAN HỆ THỐNG NHÚNG
1. Khái niệm
2. Lịch sử phát triển của hệ thống nhúng
3. Đặc điểm của hệ thống nhúng
4. Kiến trúc điển hình của hệ thống nhúng
5. Phân loại các hệ thống nhúng
6. Lĩnh vực ứng dụng 10
KHÁI NIỆM
Định nghĩa:
Hệ thống nhúng (embedded system) là một
thuật ngữ để chỉ một hệ thống có khả năng tự trị
được nhúng vào trong một môi trường hay một
hệ thống mẹ. Đó là các hệ thống tích hợp cả
phần cứng và phần mềm phục vụ các bài toán
chuyên dụng trong nhiều lĩnh vực công nghiệp,
tự động hoá điều khiển, quan trắc và truyền tin.
Đặc điểm của các hệ thống nhúng là hoạt động
11
ổn định và có tính năng tự động hoá cao.
Định nghĩa: Hệ thống nhúng (embedded system) là một hệ thống
điện tử gồm một hoặc nhiều vi điều khiển được cấu hình để thực
hiện một ứng dụng cụ thể.
▪ “Nhúng” có nghĩa là: một máy tính được ẩn dấu bên trong
sao cho không ai có thể thấy nó.
▪ Các thiết bị vào/ra đặc trưng cho hệ thống nhúng, cho phép
nó tương tác với thế giới thực.

12

SOFTWARE HARDWARE APPLICATION


Bên trong hệ thống nhúng có gì?
PHẦN CỨNG - HARDWARE PHẦN MỀM - SOFTWARE
▪ CPU ▪ APPLICATION
▪ MEMORY ▪ OS
▪ I/O DEVICES ▪ DEVICE DRIVER
EMBEDDED SYSTEM

13
Một vài ví dụ
Các hệ thống nhúng điều khiển nhiều thiết bị phổ biến như:
▪ Đồng hồ kỹ thuật số
▪ Đèn giao thông
▪ Máy in
▪ Điện thoại di động
▪ Thiết bị y tế
▪ Máy nghe nhạc MP3
▪ Robot 14

▪ Điều hòa không khí ô tô...


Sự khác biệt giữa các hệ thống nhúng
▪ Hệ điều hành thời gian thực – Real-time operation.
▪ Giá thành – Cost.
▪ Tốc độ - Time.
▪ Độ tin cậy – Reliability.
▪ An toàn – Safety.
▪ Công suất – Energy.
▪ Kính thước – Size. 15
Embedded System vs General Purpose System
Hệ thống nhúng Máy tính đa dụng
Mục đích cụ thể Mục đích chung
Người dùng không thể lập trình Có thể lập trình
Thường là những thiết bị cầm Kích thước lớn, cồng
tay, tính di động cao kềnh
Thời gian không quá
Yêu cầu chặt chẽ về thời gian
quan trọng
Tiêu chí: giá thành, năng lượng, kích thước... 16
LỊCH SỬ PHÁT TRIỂN
Một trong những hệ thống nhúng hiện đại đầu tiên được
công nhận là Apollo Guidance Computer được phát
triển năm 1965 bởi Charles Stark Draper tại Phòng thí
nghiệm MIT Instrumentation

17
Sau những năm 1960, hệ thống nhúng đã giảm giá thành
và cải thiện về tốc độ và chức năng. Bộ vi xử lý 4
bit đầu tiên ra đời năm 1971, Intel 4004 sau đó là Intel
4040 (cần bộ nhớ ngoài và chip hỗ trợ), được thiết kế
cho máy tính và các hệ thống nhỏ khác.

18
Vào giữa những năm
1980, hầu hết các thành
phần bên ngoài của hệ
thống đã được tích hợp
vào cùng một chip như
bộ vi xử lý và như hiện
nay là vi điều khiển
cho phép sử dụng rộng
rãi ở tất cả các thiết bị
điện tử. 19
ĐẶC ĐIỂM CỦA HỆ THỐNG NHÚNG
▪ Các hệ thống nhúng thường thực hiện một chức năng
đặc biệt.
▪ Các hệ thống nhúng bị những tiêu chí ràng buộc chặt
chẽ.
▪ Nhiều hệ thống nhúng phải hoạt động theo thời gian
thực.
▪ Yêu cầu bộ nhớ của chúng nhỏ so với các máy tính
20
đa dụng.
ĐẶC ĐIỂM CỦA HỆ THỐNG NHÚNG
Chức năng đặc biệt
▪ Thường được thiết kế cho một một chức năng duy
nhất, liên tục.
▪ Hiện nay, các hệ thống nhúng có xu hướng đa chức
năng nhưng vẫn có một chức năng chính.

21
Những tiêu chí ràng buộc
▪ Chi phí tối thiểu - Cost
▪ Hệ thống đơn giản -
▪ Tối ưu hóa các thành phần chính.
▪ Thực hiện chức năng nhanh - Time
▪ Năng lượng tối thiểu - Energy
▪ Hoạt động 24/7/365.
▪ Bảo mật – Security
22
▪ An toàn sử dụng - Safety
ĐẶC ĐIỂM CỦA HỆ THỐNG NHÚNG

Đáp ứng và thời gian thực


▪ Đáp ứng liên tục với điều kiện thay đổi bên ngoài.
▪ Phải tính toán kết quả cụ thể trong thời gian thực.
Phần cứng và phần mềm
▪ Phần mềm của hệ thống nhúng thường gọi là firmware.
▪ Được lưu trữ trong ROM, bộ nhớ flash thay vì ổ đĩa.23
KIẾN TRÚC ĐIỂN HÌNH
Read Only Random Access
Memory Memory

Input Central Processing Output


Devices Unit (CPU) Devices

Application Specific Communication


Circuitry Interfaces 24
Câu hỏi thảo luận

Chọn 2 hệ thống nhúng và liệt kê những chức năng chính,


thiết bị xuất/nhập, bộ xử lý trung tâm của mỗi hệ thống.

25
PHÂN LOẠI HỆ THỐNG NHÚNG

26
Dựa trên chức năng và yêu cầu của hệ thống

Dựa trên chức năng và yêu cầu hiệu suất, hệ thống


nhúng có thể được phân loại là:
▪ Hệ thống nhúng độc lập (Stand alone embedded)
▪ Hệ thống thời gian thực (Real time systems)
▪ Thiết bị truyền thông mạng (Networked
information appliances)
▪ Thiết bị di động (Mobile devices) 27
Hệ thống
nhúng
độc lập

28
Hệ thống nhúng thời gian thực
▪ Thời gian thực có
nghĩa “đủ nhanh” (fast
enough) trong một ngữ
cảnh, một môi trường mà
hệ thống đang hoạt động.
▪ Không chỉ ở việc phản ứng
đủ nhanh mà còn phải
đáng tin cậy và chính xác.
▪ Có 2 loại thời gian thực :
thời gian thực cứng và thời 29
gian thực mềm.
Hệ thống nhúng
truyền thông mạng

30
Thiết bị di động
(Mobile devices)

31
Dựa trên tính năng của vi điều khiển
Dựa trên tính năng vi điều khiển trong hệ thống nhúng có
thể phân loại:
▪ Quy mô nhỏ (Small Scale)
▪ Quy mô trung (Medium Scale)
▪ Hệ thống nhúng tinh vi (Sophisticated)

32
Hệ thống nhúng quy mô nhỏ

▪ Được thiết kế với một vi điều khiển 8 hoặc 16 bit.


▪ Có thể hoạt động bằng pin.
▪ Công cụ lập trình chính là: trình soạn thảo (editor),
trình biên dịch (assembler), Toolchain và môi trường
phát triển tích hợp (Integrated Development
Environment - IDE).
33
Hệ thống nhúng quy mô trung bình
▪ Được thiết kế với vi điều khiển đơn hoặc 16 hoặc 32
bit, RISC hoặc DSP.
▪ Những loại hệ thống nhúng này có cả phần cứng và
phần mềm phức tạp.
▪ Các công cụ lập trình chính là C, C ++, JAVA, Visual
C++, RTOS, trình gỡ lỗi (debugger), công cụ thiết kế
mã nguồn, trình mô phỏng (simulator) và IDE. 34
Hệ thống nhúng quy mô tinh vi
▪ Có phần cứng phức tạp và phần mềm lớn,
▪ Có thể cần các bộ xử lý có thể mở rộng hoặc cấu
hình được (ASIP, IP, PLA).
▪ Một số chức năng của phần mềm như thuật toán mã
hóa và giải mã, rời rạc, xếp chồng, giao thức TCP/IP.

35
LĨNH VỰC ỨNG DỤNG
➢ Gia dụng
Ở nhà, chúng ta sử dụng một số hệ thống nhúng bao
gồm: máy ảnh kỹ thuật số, nhật ký số, đầu DVD, đồ chơi
điện tử, lò vi sóng, điều khiển từ xa cho TV, điều hòa
không khí, thiết bị định vị, đồng hồ thông minh...
➢ Văn phòng
Máy photo, máy fax, điện thoại, máy in, máy quét...
36
➢ Công nghiệp
Kiểm soát quá trình; giám sát (nhiệt độ, áp suất, độ
ẩm, điện áp...) ; điều khiển thiết bị; thu thập dữ liệu; robot
thay thế con người trong môi trường làm việc đặc biệt...
➢ Y tế
Máy hỗ trợ chuẩn đoán (đo huyết áp, đường
huyết...), máy chụp X-quang, thiết bị phân tích máu, thiết
bị nội soi, xạ trị. 37
➢ Mạng máy tính
Cầu nối, bộ định tuyến, bộ chuyển mạch...
➢ Viễn thông
Các thiết bị đầu cuối, bộ chuyển đổi, bộ ghép kênh...
➢ Công nghệ không dây
Thiết bị di động
➢ Thiết bị đo lường
Các thiết bị đo; kiểm tra dao động; máy phân tích
38

phổ, logic, giao thức...


➢ An ninh
Thiết bị an ninh tại nhà, văn phòng, sân bay... Các
thiết bị mã hóa giọng nói, hệ thống sinh trắc vân tay, nhận
dạng khuôn mặt...
➢ Tài chính
Máy ATM, thẻ thông minh, ví điện tử...
➢ Quân sự
Vũ khí thông minh, hệ thống định vị, dẫn đường...39
➢ Ô tô

40
NỘI DUNG HỌC PHẦN TIẾT
PHẦN LÝ THUYẾT (1TC) 15
MỞ ĐẦU – GIỚI THIỆU MÔN HỌC 3
TỔNG QUAN VỀ HỆ THỐNG NHÚNG 3
CÁC THÀNH PHẦN CỦA HỆ THỐNG NHÚNG 3
RASPBERRY & CÁC LOẠI MÁY TÍNH ĐƠN GIẢN 3
THIẾT KẾ PHẦN CỨNG - PHẦN MỀM NHÚNG 3
PHẦN THỰC HÀNH (2TC) 30
THIẾT KẾ CÁC HỆ THỐNG NHÚNG ĐIỂN HÌNH
41
DỰ ÁN NHÓM
CÁC THÀNH PHẦN
CỦA HỆ THỐNG NHÚNG
Các thành phần
của hệ thống
nhúng về cơ bản
được chia thành
hai phần:
▪ Phần cứng
▪ Phần mềm HARDWARE SOFTWARE42
CÁC THÀNH PHẦN PHẦN CỨNG
Power Supply – Nguồn điện
▪ Nguồn điện là một phần không thể thiếu của bất kỳ
hệ thống nhúng nào.
▪ Thường là nguồn điện là 5VDC; 3,3VDC hoặc
1,8VDC đối với hệ thống điện áp thấp.
▪ Nguồn có thể cung cấp bằng pin, ắc quy hoặc bộ
chuyển đổi điệp áp AC sang DC. 43
Power Supply - Nguồn điện

44
Power Supply
- Nguồn điện

45
Clock Signal Generator - Nguồn dao động

Tinh thể dao động Mạch dao động RC

46

Nguồn dao động ngoài Nguồn dao động nội


Reset Circuit – Mạch khởi động

Why
Watchdog?

47
Reset tác động mức thấp Reset tác động mức cao
Processor - Bộ xử lý
▪ Bộ xử lý là bộ não chính bên trong của bất kỳ hệ thống nhúng →
Yếu tố quyết định hiệu suất của hệ thống.
▪ Có thể lựa chọn nhiều bộ xử lý khác nhau trên thị trường. Một hệ
thống nhúng có thể sử dụng bộ vi xử lý (microprocessor) hoặc vi
điều khiển (microcontroller)
▪ Đối với những ứng dụng cao cấp, cần hiệu suất hoạt động, giao
diện đồ họa thường sử dụng bộ xử lý 16 hoặc 32 bit.

48
CPU (Central Processing Unit) – Bộ xử lý trung tâm
Là phần tử cốt lõi của máy tính. Nhiệm vụ chính của CPU: là xử lý
các chương trình và dữ kiện. Bên trong CPU gồm:
1. Khối điều khiển CU (Control Unit).
2. Khối tính toán ALU (Arithmetic Logic Unit).
3. Các thanh ghi (Registers).
Bộ vi xử lý (microprocessor) được tích hợp tất cả chức năng của
một bộ xử lý trung tâm (CPU) máy tính trên một mạch điện tử tích
hợp (IC – Integrated Circuit). 49
CPU– Central Processing Unit
▪ Khối điều khiển (CU): có nhiệm vụ thông dịch các lệnh của
chương trình và điều khiển hoạt động xử lý, được điều tiết chính
xác bởi xung nhịp đồng hồ hệ thống.
▪ Khối tính toán ALU: chức năng thực hiện các phép toán số học
và logic sau đó trả lại kết quả cho các thanh ghi hoặc bộ nhớ.
▪ Các thanh ghi (Registers): là các bộ nhớ có dung lượng nhỏ
nhưng tốc độ truy cập rất cao, nằm ngay trong CPU, dùng để lưu
trữ tạm thời các toán hạng, kết quả tính toán, địa chỉ các ô nhớ
50
hoặc thông tin điều khiển.
51
Các tiêu chí lựa chọn bộ xử lý
Speed Power Consumption
Unit Price Amount of RAM and ROM
Packaging Specialized Processing Units
Performance Architecture 8-bit, 16-bit, or 32-bit
Peripheral Set Easy to upgrade to higher or lower
Timer on the Chip power consumption mode
Operating Voltage Availability of Software tools and
52
Number of I/O Pins technical support
Bộ nhớ - Memory

Nếu hệ thống nhúng sử vi điều khiển họ 8051 hoặc


ATMega thì có bộ nhớ tích hợp sẵn trong chip.
Trong các hệ thống nhúng, thường có 3 loại bộ nhớ:
▪ Bộ nhớ chỉ đọc (ROM)
▪ Bộ nhớ truy xuất ngẫu nhiên (RAM)
▪ Bộ nhớ chỉ đọc có thể lập trình (EEPROM) 53
Bộ nhớ chỉ đọc – ROM (Read Only Memory)
▪ Là loại bộ nhớ chỉ đọc dùng cho lưu giữ mã chương
trình điều hành và dữ liệu mặc định của hệ thống.
Thông tin trên ROM vẫn được duy trì dù nguồn
điện cấp không còn.
▪ Trước đây, ROM chỉ cho phép ghi dữ liệu một lần,
gọi là nạp ROM. Các thế hệ ROM hiện nay được
chế tạo với khả năng xoá được và nạp nhiều lần. 54
Bộ nhớ truy xuất ngẫu nhiên – RAM (Random Access
Memory)
▪ Là bộ nhớ cho phép truy xuất đọc-ghi ngẫu nhiên
đến bất kỳ vị trí nào dựa theo địa chỉ ô nhớ. Thông
tin lưu trên RAM chỉ là tạm thời, chúng sẽ mất đi
khi mất nguồn điện cung cấp.
▪ RAM được dùng để lưu trữ các thông tin thay đổi
đang sử dụng. 55
Bộ nhớ chỉ đọc – EEPROM
(Electrically Erasable Programmable ROM)
▪ Là bộ nhớ dùng để lưu trữ một lượng dữ liệu thấp và
cần thiết thay đổi nội dung được.
▪ EEPROM thuộc loại "bộ nhớ không mất dữ liệu khi
ngừng cung cấp điện“.
▪ Có thể nói EEPROM là công nghệ mới nhất
của ROM mà điều khác biệt cơ bản là chúng có khả
56
năng xoá được bằng phương pháp lập trình.
Bộ định thời/Bộ đếm
Bộ định thời (Timer)
▪ Dùng để tạo sự chậm trễ trong một thời gian cụ thể mà không
ảnh hưởng đến việc thực thi mã chương trình.
▪ Thời gian trễ phụ thuộc vào tần số hệ thống và tinh thể dao
động.
Bộ đếm (Counter)
▪ Có thể dùng đếm số người đi qua cổng, số vòng quay của bánh
xe, hay bất kể các sự kiện mà chuyển được sang dạng xung. 57

▪ Đầu vào từ chân bên ngoài để đếm số sự kiện.


Cổng giao tiếp – Communication Port
▪ Phần cứng của hệ thống nhúng phải có các cổng giao tiếp khác
nhau để truyền thông với những thiết bị nhúng khác. Các cổng
giao tiếp như: UART, CAN, SPI, I2C, USB, Ethernet, RS-232,
RS423, RS-485...
▪ Với những hệ thống nhúng sử dụng vi điều khiển có sự hạn chế
các cổng giao tiếp. Ví dụ như mạch Arduino Uno sử dụng VĐK
ATMega328 chỉ có các cổng giao tiếp UART, I2C, SPI.
▪ Để gửi dữ liệu từ một mạch này đến mạch khác có thể sử dụng
58

một trong những giao thức nối tiếp nhưng phải lập trình.
I2C – Inter-Integrated Circuit
▪ Đầu năm 1980 Phillips đã phát triển một chuẩn giao tiếp nối tiếp
2 dây được gọi là I2C. Đây là đường bus giao tiếp giữa các IC
với nhau.
▪ I2C trở thành một chuẩn công nghiệp cho các giao tiếp điều
khiển. Bus I2C được sử dụng làm bus giao tiếp ngoại vi cho rất
nhiều loại IC khác nhau như các loại Vi điều khiển 8051, PIC,
AVR, ARM... chip nhớ như: RAM tĩnh (Static Ram), EEPROM,
bộ chuyển đổi tương tự số (ADC), số tương tự(DAC), IC điểu
59

khiển LCD, LED...


I2C – Inter-Integrated Circuit

60
SPI – Serial Peripheral Bus
▪ SPI là một chuẩn truyền thông nối tiếp tốc độ cao do hãng
Motorola đề xuất. Đây là kiểu truyền thông Master-Slave, trong
đó có 1 chip Master điều phối quá trình tuyền thông và các chip
Slaves được điều khiển bởi Master vì thế truyền thông chỉ xảy ra
giữa Master và Slave.
▪ SPI đôi khi được gọi là chuẩn truyền thông “4 dây” vì có 4
đường giao tiếp trong chuẩn này đó là SCK (Serial Clock),
MISO (Master Input Slave Output), MOSI (Master Ouput Slave
61

Input) và SS (Slave Select)


62
UART – Universal Asynchronous Receive/Transmit
▪ UART chuyển đổi giữa dữ liệu nối tiếp và song song. Một
chiều, UART chuyển đổi dữ liệu song song bus hệ thống ra dữ
liệu nối tiếp để truyền đi. Một chiều khác, UART chuyển đổi dữ
liệu nhận được dạng dữ liệu nối tiếp thành dạng dữ liệu song
song cho CPU có thể đọc vào bus hệ thống.
▪ Giao tiếp SPI và I2C có 1 dây truyền dữ liệu và 1 dây được sử
dụng để truyền xung clock (SCL) để đồng bộ trong giao tiếp.
Với UART thì không có dây SCL.
63
64
Ngõ vào & Ngõ ra – Input & Output
▪ Để tương tác với hệ thống nhúng, ta cần ngõ vào. Ngõ vào này
có thể cung cấp từ người dùng hoặc các cảm biến.
▪ Có những hệ thống cần nhiều ngõ vào, ngõ ra → lựa chọn dựa
trên số lượng ngõ vào ra (I/O).
▪ Các ngõ vào, ngõ ra (pin) này thường được chia thành các cổng
(port) như P0 ÷ P3 (8051) hoặc PA ÷PD (ATMega)
▪ Ngõ vào ra (I/O) cần được cấu hình vào hoặc ra dựa vào lập
trình thanh ghi quản lý. 65
Ngõ vào/ra số – Digital Input/Output

66
Chuyển đổi tín hiệu giữa tương tự và số

67
ADC (Analog to Digital Converter) – Bộ chuyển đổi
tương tự sang số
▪ Bộ chuyển đổi ADC dùng để chuyển đổi điện áp tương tự trên
mợt chân thành dạng số. Bằng cách chuyển đổi này, chúng ta
có thể tương tác với các thiết bị điện tử giao tiếp tương tự.
▪ Bộ chuyển đổi ADC có thể khác nhau giữa các vi điều khiển.
Trên Arduino là bộ ADC 10 bit.

𝐴𝑛𝑎𝑙𝑜𝑔 𝐼𝑛𝑝𝑢𝑡
𝐷𝑖𝑔𝑖𝑡𝑎𝑙 𝑂𝑢𝑡𝑝𝑢𝑡 𝐶𝑜𝑑𝑒 = ∗ (2𝑁 − 1)
𝑅𝑒𝑓𝑒𝑟𝑒𝑛𝑐𝑒 68
N = Number of bits in ADC
ADC (Analog to Digital Converter) – Bộ chuyển đổi
tương tự sang số
N VREF VIN Digital Output
8-bit 5V 2,8 V
10-bit 10 V 10,2 V
12-bit 6V 420mV
8-bit 12 V 14510 = 1001 00012

𝐴𝑛𝑎𝑙𝑜𝑔 𝐼𝑛𝑝𝑢𝑡
𝐷𝑖𝑔𝑖𝑡𝑎𝑙 𝑂𝑢𝑡𝑝𝑢𝑡 𝐶𝑜𝑑𝑒 = ∗ (2𝑁 − 1)
𝑅𝑒𝑓𝑒𝑟𝑒𝑛𝑐𝑒 69
N = Number of bits in ADC
Một vài ứng dụng
bộ chuyển đổi
tương tự sang số 70
DAC (Digital to Analog Converter) sử dụng phương
pháp điều chế độ rộng xung PWM (Pulse Width
Modulation)

71
Ngõ ra số phương pháp điều chế độ rộng xung
PWM (Pulse Width Modulation)
▪ TON (On Time – Thời gian ON)
▪ TOFF (Off Time – Thời gian OFF)
▪ Period – Chu kỳ: Tổng thời gian
của một xung.
▪ Frequency – Tần số: Số lần lập 1
𝑃𝑒𝑟𝑖𝑜𝑑 =
đi lập lại trong 1 đơn vị thời gian. 𝐹𝑟𝑒𝑞𝑢𝑒𝑛𝑐𝑦
𝑃𝑒𝑟𝑖𝑜𝑑 = 𝑇𝑂𝑁 + 𝑇𝑂𝐹𝐹
Đơn vị tần số là Hz. 𝑇𝑂𝑁
𝐷𝑢𝑡𝑦 𝐶𝑦𝑐𝑙𝑒 % = 72
∗ 100
𝑃𝑒𝑟𝑖𝑜𝑑
▪ Duty Cycle – Chu kỳ xung
Ngõ ra số phương pháp điều chế độ rộng xung
PWM (Pulse Width Modulation)
Frequency Period TON TOFF Duty Cycle
62,5ns 12,5ns
200kHz 100ms
25µs 25%
50Hz 60%

1
𝑃𝑒𝑟𝑖𝑜𝑑 =
𝐹𝑟𝑒𝑞𝑢𝑒𝑛𝑐𝑦
𝑃𝑒𝑟𝑖𝑜𝑑 = 𝑇𝑂𝑁 + 𝑇𝑂𝐹𝐹
𝑇𝑂𝑁 73
𝐷𝑢𝑡𝑦 𝐶𝑦𝑐𝑙𝑒 % = ∗ 100
𝑃𝑒𝑟𝑖𝑜𝑑
Một số ứng
dụng phương
pháp điều chế
độ rộng xung
(PWM)

74
Mạch ứng dụng – Application Specific Circuits

▪ Một vài thành phần phần cứng là giống nhau trong việc thiết kế
hệ thống nhúng như: nguồn điện, bộ xử lý, thiết bị hiển thị,
chuông cảnh báo...
▪ Vài thành phần khác nhau phụ thuộc vào ứng dụng của hệ thống.
Ví dụ như: nhiệt kế điện cần một cảm biến nhiệt độ hay máy dò
rượu cần cảm biến phát hiện nồng độ cồn...
75
NỘI DUNG HỌC PHẦN TIẾT
PHẦN LÝ THUYẾT (1TC) 15
MỞ ĐẦU – GIỚI THIỆU MÔN HỌC 3
TỔNG QUAN VỀ HỆ THỐNG NHÚNG 3
CÁC THÀNH PHẦN CỦA HỆ THỐNG NHÚNG 3
ARDUINO & CÁC LOẠI MÁY TÍNH ĐƠN GIẢN 3
THIẾT KẾ PHẦN CỨNG - PHẦN MỀM NHÚNG 3
PHẦN THỰC HÀNH (2TC) 30
THIẾT KẾ CÁC HỆ THỐNG NHÚNG ĐIỂN HÌNH
76
DỰ ÁN NHÓM
MỞ ĐẦU – GIỚI THIỆU MÔN HỌC 3
TỔNG QUAN VỀ HỆ THỐNG NHÚNG 3
CÁC THÀNH PHẦN CỦA HỆ THỐNG NHÚNG 3
LẬP TRÌNH HỆ THỐNG NHÚNG - ARDUINO 3
▪ TỔNG QUAN VỀ ARDUINO
▪ MÔ TẢ MẠCH ARDUINO UNO R3
▪ CÀI ĐẶT ARDUINO IDE
▪ LẬP TRÌNH CƠ BẢN
▪ THƯ VIỆN
▪ LẬP TRÌNH NÂNG CAO 77
Tại sao là ARDUINO???
Mạch điện
có sẵn

Ứng dụng,
Đa dạng
hiệu quả

Hỗ trợ nhiều Tính chuyên 78


thư viện nghiệp
Tại sao là ARDUINO???

Mạch điện thiết kế


sẵn, theo tiêu chuẩn.

79
Đa dạng, phù hợp cho nhiều mục đích sử dụng.

80
Đa dạng, phù hợp cho nhiều mục đích sử dụng.

81
Tính
chuyên
nghiệp,
linh
hoạt.

82
Mã nguồn mở, hỗ trợ nhiều thư viện, cộng đồng
Arduino đông đảo.

83
Khả năng ứng dụng rộng rãi.

84
Nhận xét:
Điều khiển hệ thống/thiết bị tự động/Cơ điện tử

Cơ khí Điện tử Lập trình

ARDUINO
Mọi việc trở nên dễ dàng hơn, tiết kiệm thời gian, chi phí, khả
năng phát triển ứng dụng nhanh chóng & hiệu quả.
THIẾT KẾ HỆ THỐNG NHÚNG DỰA TRÊN NỀN
85
TẢNG MÃ NGUỒN MỞ ARDUINO
PHẦN CỨNG ARDUINO
Về chức năng có hai loại board Arduino:

▪ Board mạch chính: cơ bản giống nhau về chức năng, khác về số lượng
I/O, bộ nhớ, hay kích thước...
▪ Shiled: mở rộng tính năng cho board: Bluetooth, Ethernet, Wireless, điều
86

khiển động cơ, Sensor, Text LCD, Keypad…


87
Ưu điểm
• Tích hợp nhiều chức năng trên board (nạp, serial…)
• Các ngõ vào/ra, ngõ giao tiếp thiết kế header.
• Các board Arduino tương thích hầu hết các Sheild.
• Được Matlab hỗ trợ (http://www.mathworks.com/hardware-
support/arduino-matlab.html)
• Tiện lợi, linh hoạt, ổn định & chi phí phù hợp.
• Tiết kiệm thời gian & chi phí cho người dùng.
Nhược điểm
• Shield còn hạn chế (chỉ một số ngoại vi/module…) 88

• Chỉ phù hợp cho học tập, nghiên cứu, thử nghiệm…
MÔI TRƯỜNG LẬP TRÌNH ARDUINO IDE
▪ Đơn giản, dễ sử dụng.
▪ Ngôn ngữ lập trình dễ hiểu trên nền
tảng C/C++.
▪ Thư viện code được viết sẵn và chia
sẻ bởi cộng đồng cực kỳ lớn.
▪ Có thể biên dịch chương trình, upload
trực tiếp lên board.
▪ Tích hợp Terminal Monitor để
89
truyền, nhận lệnh qua giao thức UART.
Ưu điểm
• Chạy trên Windows/ Mac OS X và Linux.
• Tích hợp driver sẵn (giao tiếp/nạp) khi cài đặt.
• Tương thích với tất cả Board và Shiel Arduino.
• Tích hợp biên soạn, biên dịch, nạp chương trình.
• Có thể truy xuất file *.hex để mô phỏng & nạp (khác).
• Có đầy đủ các thư viện và chương trình mẫu.

Nhược điểm
• Khó kiểm soát chi tiết chương trình → khó xử lý lỗi. 90

• Quy trình phát triển project sử dụng vi điều khiển.


TỔNG QUAN VỀ HỆ THỐNG NHÚNG 2
CÁC THÀNH PHẦN CỦA HỆ THỐNG NHÚNG 3-4
PHÁT TRIỂN HỆ THỐNG NHÚNG 5
LẬP TRÌNH HỆ THỐNG NHÚNG - ARDUINO 6-8
▪ TỔNG QUAN VỀ ARDUINO
▪ MÔ TẢ MẠCH ARDUINO UNO R3
▪ BẮT ĐẦU VỚI ARDUINO
▪ LẬP TRÌNH CƠ BẢN
▪ THƯ VIỆN
▪ LẬP TRÌNH NÂNG CAO 91
ARDUINO
UNO – R3

92
MÔ TẢ MẠCH ARDUINO UNO – R3
▪ “UNO” nghĩa là đầu tiên (tiếng Ý) và được dùng để đánh dấu sự
ra đời của phần mềm Arduino IDE 1.0
▪ Phiên bản Arduino UNO - R3 mới nhất được phát hành vào năm
2011.
▪ Mạch Arduino UNO dựa trên 02 vi điều khiển:
o ATmega328P: Là bộ não của UNO; AVR 8 bit kiến trúc
RISC (hãng Atmel) thực hiện lệnh trong một chu kỳ.
o ATmega16U: Xử lý giao tiếp USB và bộ nạp ICSP. 93
Vi điều khiển ATmega328 họ 8bit
Điện áp hoạt động 5V DC (chỉ được cấp qua cổng USB)
Tần số hoạt động 16 MHz
Dòng tiêu thụ khoảng 30mA
Điện áp vào khuyên dùng 7-12V DC
Điện áp vào giới hạn 6-20V DC
Số chân Digital I/O 14 (6 chân hardware PWM)
Số chân Analog 6 (độ phân giải 10bit)
Dòng tối đa trên mỗi chân I/O 30 mA
Dòng ra tối đa (5V) 500 mA
Dòng ra tối đa (3.3V) 50 mA
Bộ nhớ flash 32 KB (ATmega328) 0.5KB cho bootloader
94
SRAM 2 KB (ATmega328)
EEPROM 1 KB (ATmega328)
95
Nguồn - Power System/Power Pins
▪ Cấp nguồn qua cổng USB hoặc nguồn điện bên ngoài.
▪ Nguồn ngoài có thể cung cấp bởi: nguồn điện một chiều 7-12V
qua cổng PWR IN hoặc qua 2 chân Vin và GND (nhiều nguồn
→ nối các chân GND).
▪ Chân 5V và 3.3V: điện áp đầu ra cấp cho các cảm biến hoặc
module khác. Dòng tối đa cho phép ở chân này là 500mA (chân
5V) và 50mA (chân 3.3V).
▪ AREF: điện áp tham chiếu (0-5V DC) dùng để đặt giới hạn trên
96
cho các ngõ vào tương tự.
Ngõ vào/ra – I/O Pins
▪ UNO có 14 chân Digital (trong đó có 6 chân chức năng điều chế
độ rộng xung PWM) và 6 chân Analog.
▪ Các chân Digital: từ 0 đến 13 có thể cấu hình hoạt động như
ngõ vào số để đọc giá trị logic (0 hoặc 1) hay ngõ ra số để điều
khiển các module khác nhau như LED, Rờ-le... Trong đó, chân
0 (Rx) và chân 1 (Tx) sử dụng cho truyền nhận dữ liệu nối tiếp
UART. Các chân chức năng PWM là: 3, 5, 6, 9, 10, 11.
▪ Các chân Analog: từ A0 đến A5. Chức năng chính của các chân
97
Analog là đọc giá trị từ các cảm biến tương tự.
Bộ nhớ - Memory
▪ 32KB bộ nhớ Flash: lưu trữ chương trình; trong đó, 0.5KB được
dùng cho bootloader.
▪ 2KB cho SRAM (Static Random Access Memory): giá trị các
biến khai báo khi lập trình sẽ lưu ở đây.
▪ 1KB cho EEPROM: có thể đọc và ghi dữ liệu mà không bị mất
dữ liệu khi cúp điện giống như dữ liệu trên SRAM.

Giao tiếp - Communication


▪ I2C: chân SDA và chân SCL.
98
▪ SPI: chân 11 (MOSI), chân 12 (MISO), chân 13 (SCK).
Một số tính năng khác

▪ RESET: Bắt đầu chương trình ngay từ đầu theo 2 cách: sử dụng
nút nhất RESET có sẵn trên UNO hoặc kết nối một nút nhấn bên
ngoài với UNO qua chân RESET.
▪ LED báo nguồn: sáng lên khi UNO được cấp nguồn đúng cách.
▪ LED Tx và Rx: Tốc độ nhấp nháy khác nhau khi truyền/nhận.
▪ LED L: được nối với chân 13, dùng để kiểm tra chương trình.
99
BẮT ĐẦU – GETTING STARTED
Check out: http://arduino.cc/en/Guide/HomePage
1. Download & install the Arduino environment (IDE)
2. Connect the board to your computer via the UBS cable
3. If needed, install the drivers (not needed in lab)
4. Launch the Arduino IDE
5. Select your board
6. Select your serial port
7. Open the blink example
100
8. Upload the program
Kết nối cáp USB - Connect the USB Cable

Chớp nhanh

Sáng
ổn định

101
Vùng lệnh

Vùng soạn
chương
trình

Vùng
thông báo 102
Select Board and Serial Port

103
Programming an Arduino

➢ Write program

➢ Compile (check for errors)

➢ Reset board

➢ Upload to board 104


An Arduino “Sketch”

➢ Declare variables at top

➢ Initialize
setup() – run once at beginning, set
pins

➢ Running
loop() – run repeatedly, after setup()105
An Arduino “Sketch”

▪ int ledPin = 13; // led


connected to control pin 13

Global ▪ int aSensor = 0; // setup sensor


Variables 'aSensor' on analog pin 0

▪ int statePin = LOW; // use this


to hold the state of a pin 106
An Arduino “Sketch”

▪ pinMode(ledPin, Output);
// set the pin `ledPin' as an output
setup()
▪ Serial.begin(9600);
//talk to the computer at 9600 baud rate
107
An Arduino “Sketch”
▪ digitalWrite(); // set a digital pin high/low
▪ digitalRead(); // read a digital pin’s state loop()

▪ analogRead(); // read an analog pin


▪ analogWrite(); // write an “analog” PWM value
▪ delay(); // wait an amount of time
▪ millis(); // get the current time 108
Arduino - Data Types Size Value Ranges
boolean 8 bit True or False
byte 8 bit 0 → 255
char 8 bit -127 → 128
unsigned char 8 bit 0 → 255
word 16 bit 0 → 65.535
unsigned int 16 bit 0 → 65.535
int 16 bit -32.768 → 32.767
-2.147.483.648 →
long 32 bit
2.147.483.647 109
float 32 bit
NỘI DUNG HỌC PHẦN TIẾT
PHẦN LÝ THUYẾT (1TC) 15
MỞ ĐẦU – GIỚI THIỆU MÔN HỌC 3
TỔNG QUAN VỀ HỆ THỐNG NHÚNG 3
CÁC THÀNH PHẦN CỦA HỆ THỐNG NHÚNG 3
RASPBERRY & CÁC LOẠI MÁY TÍNH ĐƠN GIẢN 3
THIẾT KẾ PHẦN CỨNG - PHẦN MỀM NHÚNG 3
PHẦN THỰC HÀNH (2TC) 30
THIẾT KẾ CÁC HỆ THỐNG NHÚNG ĐIỂN HÌNH
110
DỰ ÁN NHÓM
Chu kỳ phát triển - Development Cycle

111
Thiết kế chủ/đích – Host/Target Design
▪ Hệ thống đích – Target system: Hệ thống nhúng được phát triển
▪ Hệ thống chủ - Host computer: Nền tảng để phát triển phần
mềm và liên kết với hệ thống nhúng để gỡ lỗi (debugging)

112
113
Phát triển phần mềm – Software Development
▪ Sau khi thiết kế phần cứng hoàn tất, chúng ta cần xây dựng phần
mềm cho các hệ thống nhúng.
▪ Những công cụ sử dụng để phát triển phần mềm hệ thống nhúng:
▪ Editor – Trình soạn thảo
▪ Compiler – Trình biên dịch
▪ Assembler – Trình hợp dịch
▪ Debugger – Trình gỡ lỗi
▪ Emulator – Giả lập
114
▪ IDE – Môi trường phát triển tích hợp
Ngôn ngữ lập trình - Programming language
Ngôn ngữ cấp cao: sử dụng các từ và các phát biểu dễ hiểu hơn.
Hợp ngữ (assembly): Thay thế mã nhị phân bằng các từ gợi nhớ.
Ngôn ngữ máy tính (machine): là ngôn ngữ ở dạng nhị phân.

115
Trình soạn thảo - Editor
▪ Công cụ cần thiết đầu tiên trong những công cụ phát triển phần
mềm hệ thống nhúng là trình soạn thảo (text editor).
▪ Đây là nơi mà lập trình viên viết mã (code) cho hệ thống nhúng
bằng một số ngôn ngữ lập trình và ngôn ngữ thông dụng nhất là
C hoặc C++.
▪ Mã được viết trong trình soạn thảo được gọi là mã nguồn
(source code)

116
Trình biên dịch - Compiler
▪ Công cụ thứ hai trong nhóm công cụ phát triển phần mềm hệ
thống nhúng là trình biên dịch.
▪ Trình biên dịch được sử dụng khi đã hoàn chỉnh mã nguồn.
▪ Chức năng của trình biên dịch là chuyển đổi mã nguồn (source
code) thành mã đối tượng (object code) mà máy có thể hiểu
được vì nó là ngôn ngữ cấp thấp.
▪ Hay trình biên dịch dùng để chuyển từ ngôn ngữ cấp cao sang
ngôn ngữ cấp thấp như mã máy (machine code), hợp ngữ 117
(assembly langguage) hoặc mã đối tượng (object code).
Trình hợp dịch - Assembler
▪ Công cụ thứ ba và quan trọng nhất trong những công cụ phát
triển phần mềm hệ thống nhúng là trình hợp dịch.
▪ Chức năng của một trình hợp dịch là chuyển đổi chương trình
viết bằng hợp ngữ (assembly langguage - *.asm) sang mã máy
(machine code - *.hex, *.bin) vì máy tính chỉ hiểu nhị phân.
▪ Tất cả từ gợi nhớ (mnemonics) và dữ liệu (data) sẽ được
chuyển đổi sang mã hoạt động (operation-codes) và các bit bởi
một trình hợp dịch.
118
Trình gỡ lỗi - Debugger
▪ Đôi khi kết quả không như mong đợi hoặc ngõ ra bị sai lệch. Để
kiểm tra mã viết cho hệ thống nhúng có bị lỗi hay không, chúng
ta sử dụng trình gỡ lỗi.
▪ Trình gỡ lỗi sẽ đi qua toàn bộ mã và thông báo số dòng hoặc vị
trí lỗi để chúng ta có thể tiếp tục và khắc phục nó.

119
Trình liên kết - Linker
▪ Trình liên kết là chương trình máy tính kết hợp một hay nhiều
tập tin mã đối tượng, tập tin thư viện với nhau trong quá trình
thực thi.
▪ Nhờ trình liên kết, chúng ta có thể viết một chương trình lớn từ
các phần nhỏ, các module và sử dụng các thư viện sẵn có.
▪ Tất cả phần này được kết hợp thành một tập tin thực thi duy
nhất nhờ trình liên kết.

120
Trình mô phỏng - Simulator
▪ Trình mô phỏng giúp chúng ta xem mã hoạt động như thế nào
trong thời gian thực.
▪ Chúng ta có thể tương tác với cảm biến bằng cách thay đổi giá
trị đầu vào để nhận kết quả đầu ra.

121
Trình giả lập - Emulator
▪ Trình giả lập là công cụ phần mềm hoặc phần cứng (host
system) có chức năng tương tự (bắt chước) hay là bản sao của
một hệ thống đích (target) hoặc hệ thống khách.
▪ Nó cho phép hệ thống chủ thực thi các phần mềm hay sử dụng
các thiết bị ngoại vi được thiết kế dành riêng cho các máy đích.

122
Môi trường phát triển tích hợp – Integrated
Development Environment (IDE)
▪ Để tạo được phần mềm cho hệ thống nhúng, chúng ta cần một
phần mềm chứa tất cả công cụ cần thiết cho phát triển hệ thống
nhúng → Môi trường phát triển tích hợp (IDE).
▪ Một IDE thường bao gồm trình soạn thảo, trình biên dịch và
trình gỡ lỗi, (giao diện người dùng - user interface)...
▪ Các IDE phổ biến: Microsoft Visual Studio, Android Studio,
Eclipse, Code Blocks, Xcode, BlueJ, Adobe Flash Builder, ...
123
Lựa chọn công cụ phát triển phần mềm hệ
thống nhúng
Tùy thuộc vào bộ xử lý được chọn lựa của hệ thống nhúng. Cụ thể:
▪ MPLAB – PIC (Microchip).
▪ Arduino IDE
▪ Kiel – 8051, ARM7, C16x/ST10
▪ Matlab – Simulink
▪ LabVIEW
▪ Proteus
▪ Visual Studio 124

▪ .....................

You might also like