You are on page 1of 7

Giảng viên ra đề: (Ngày ra đề)

Người phê duyệt: (Ngày duyệt đề)

(Chữ ký và Họ tên) (Chữ ký, Chức vụ và Họ tên)

TS. Trương Quang Vinh TS. Trần Hoàng Linh

THI CUỐI KỲ Học kỳ/năm học 1 2021-2022

Ngày thi 21/12/2021

TRƯỜNG ĐH BÁCH KHOA – ĐHQG-HCM Môn học Thiết kế hệ thống nhúng


KHOA ĐIỆN – ĐIỆN TỬ
Mã môn học EE3003
Thời lượng 90 phút Mã đề

Ghi chú: - Sinh viên được tham khảo mọi loại tài liệu
- Làm bài vào đề thi và nộp lại
- Sơ đồ mạch có thể vẽ bằng phần mềm hoặc vẽ tay và copy vào bài làm
- Hình sơ đồ mạch cần nhúng họ tên sinh viên vào để minh chứng do mình tự vẽ
(phần phía trên cần che đi khi in sao đề thi)

Bài 1: (2 điểm) Xét một hệ thống nhúng có chức năng quét mã PC Covid bằng camera với vi xử lý ARM có
4 tác vụ chính: đọc hình ảnh camera, phát hiện mã QR, nhận dạng mã, và xuất kết quả ra đèn thông báo và
loa. Hệ thống được ứng dụng kiểm tra sinh viên khi vào cổng trường, với yêu cầu tốc độ kiểm tra tối thiểu 6
người / phút.
a) Hãy phân tích tính thời gian thực của hệ thống để đảm bảo yêu cầu sử dụng. (Cần phân tích hệ thống
thuộc loại thời gian thực nào và ước lượng ràng buộc thời gian xử lý của 4 tác vụ chính)
Trả lời:
Hệ thống thuộc loại thời gian thực mềm
Với yêu cầu tối thiểu 6 người/phút, hệ thống cần xử lý 10 giây cho 1 người. Giả sử mỗi người bước vào
kiểm tra mất thêm 5 giây, thì hệ thống cần xử lý 4 tác vụ chính trong 5 giây
Ước lượng thời gian ràng buộc của 4 tác vụ:
- đọc hình ảnh camera: 0.5s
- phát hiện mã QR: 2s
- nhận dạng mã: 2s
- xuất kết quả: 0.5s
Ghi chú: SV có thể ước lượng thời gian ràng buộc khác với giải thích hợp lý.

b) Hãy phân tích constraints của hệ thống nhúng với ít nhất 4 thông số tự giả định.
Trả lời:
Sinh viên tự giả định ít nhất 4 thông số constraints:
- Giá thành: < 5tr VNĐ
- Độ chính xác nhận dạng: 99 %
- Kích thước: không quá 10x10x5 cm3
- Tuổi thọ sử dụng: 5 năm

c) Hãy phân tích use case cho hệ thống nhúng trên (có thể mô tả bằng lời hoặc dùng hình vẽ use case
diagram)
Trả lời:
Mô tả use case của hệ thống nhúng quét mã PC Covid:
Actor (tác nhân): sinh viên (SV), người đi vào cổng trường
Use case: quét mã QR PC Covid
- SV đưa mã QR trước camera để hệ thống thu hình ảnh
- Hình ảnh từ camera được phân tích để phát hiện mã QR
MSSV:……………………………….……Họ và tên SV:…………………........………………………………… Trang 1
- Mã QR được nhận dạng để xác định tình trạng tiêm vaccine
- SV nhận thông báo kết quả qua đèn thông báo và loa

Bài 2: (3 điểm) (L.O.2) Hãy thiết kế các ngoại vi sau cho hệ thống nhúng sử dụng vi điều khiển do sinh viên
tự chọn.
a) Vẽ sơ đồ mạch giao tiếp giữa vi xử lý và máy tính qua ngõ RS232 thông qua chip MAX232, và viết
chương trình C gửi chuỗi “ABC” đến máy tính. Sinh viên cần vẽ đầy đủ mạch clock và reset cho vi
xử lý.
(1 điểm) Sơ đồ mạch

C1 U1
13 33
14
OSC1/CLKIN RB0/INT
34 C3
OSC2/CLKOUT RB1
1

1uF 35
RB2
X1 2
RA0/AN0 RB3/PGM
36
20MHz 3 37 1uF
C2 4
RA1/AN1 RB4
38 1 3 U2
RA2/AN2/VREF-/CVREF RB5
2

5 39
RA3/AN3/VREF+ RB6/PGC
6 40
RA4/T0CKI/C1OUT RB7/PGD C1+ C1-
1uF 7
RA5/AN4/SS/C2OUT
15 11 14 TX
RC0/T1OSO/T1CKI T1IN T1OUT
8 16 12 13 RX COMPUTER
RE0/AN5/RD RC1/T1OSI/CCP2 R1OUT R1IN
R1 9
RE1/AN6/WR RC2/CCP1
17 10
T2IN T2OUT
7
8.5V
10k 10 18 9 8
RE2/AN7/CS RC3/SCK/SCL R2OUT R2IN
23
RC4/SDI/SDA
1 24 2
RESET MCLR/Vpp/THV RC5/SDO
25
VS+
6
RC6/TX/CK VS- -8.5V
26
RC7/RX/DT
C2+ C2-
19
RD0/PSP0
20
RD1/PSP1
21 4 5 MAX232
RD2/PSP2
22 C4
RD3/PSP3
27
RD4/PSP4
28
RD5/PSP5
29 1uF
RD6/PSP6
30
RD7/PSP7
PIC16F877A

(0.5 điểm) Viết code C để xuất liên tục chuỗi “ABC” gửi đến máy tính với tốc độ baud 9600
#include “16F877A.h”
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
void main(void)
{
while(1)
{ printf(“ABC”);
delay_ms(100);
}
}

b) Vẽ sơ đồ mạch vi điều khiển, giao tiếp song song 4 bit với LCD 16x2, 1 module cảm biến hồng
ngoại phát hiện vật cản giao tiếp với ngắt RB0, và 1 nút reset. Viết chương trình C hiển thị tăng số
đếm khi cảm biến phát hiện vật cản. Sau khi reset, số đếm bằng 0 và tăng 1 khi cảm biến vật cản thay
đổi giá trị từ 0 lên 1. Số đếm tăng đến 100 thì quay về 0.

(1 điểm) Sơ đồ mạch

MSSV:……………………………….……Họ và tên SV:…………………........………………………………… Trang 2


LCD1
LM016L

C5 U3
13 33 sensor
OSC1/CLKIN RB0/INT

VDD
VSS

VEE
14 34

RW
RS

D0
D1
D2
D3
D4
D5
D6
D7
OSC2/CLKOUT RB1

E
22p 35
RB2
X2 2
RA0/AN0 RB3/PGM
36

1
2
3

4
5
6

7
8
9
10
11
12
13
14
20MHz 3 37
C6 4
RA1/AN1 RB4
38
RA2/AN2/VREF-/CVREF RB5
2

5 39
RA3/AN3/VREF+ RB6/PGC
6 40
22p 7
RA4/T0CKI/C1OUT RB7/PGD RV1
RA5/AN4/SS/C2OUT
15
RC0/T1OSO/T1CKI

RW
RS
8 16 10K

E
RE0/AN5/RD RC1/T1OSI/CCP2
9 17
RE1/AN6/WR RC2/CCP1
R2 10
RE2/AN7/CS RC3/SCK/SCL
18
10k 23
RC4/SDI/SDA
1 24
MCLR/Vpp/THV RC5/SDO
25
RESET1 RC6/TX/CK
26
RC7/RX/DT
19
RD0/PSP0
20
RD1/PSP1
21
RD2/PSP2
22
RD3/PSP3
27
RD4/PSP4
28
RD5/PSP5
sensor
1 RD6/PSP6
RD7/PSP7
29
30

IR sensor PIC16F877A

(0.5 điểm) Viết code C


#include <16f877a.h>
#use delay(clock=20000000)
#include "LCD.c"
int n=0;
#int_ext
void EXT_ISR()
{
if (n==100) n=0;
else n++;
lcd_gotoxy(1,1);
printf(lcd_putc, "%03u",n);
}

void main(void)
{
lcd_init();
enable_interrupts(INT_EXT);
enable_interrupts(GLOBAL);
ext_int_edge(L_TO_H);
lcd_gotoxy(1,1);
printf(lcd_putc, "%03u",n);
while(1);
}

Bài 3: (5 điểm) Xét một hệ thống nhúng kiểm tra Covid cửa ra vào được mô tả như sau:
 Hệ thống gồm: 1 vi xử lý, 1 cảm biến nhiệt độ không tiếp xúc giao tiếp I2C, 1 cảm biến hồng ngoại
phản xạ, 1 LCD, 1 chuông báo động, 1 LED xanh, 1 LED đỏ, và 1 nút reset.

MSSV:……………………………….……Họ và tên SV:…………………........………………………………… Trang 3


- Hoạt động: sau khi reset, hệ thống đọc cảm biến hồng ngoại hồng ngoại phản xạ, nếu cảm biến trả về
giá trị 1, nghĩa là có người đứng trước máy, hệ thống sẽ đọc cảm biến nhiệt độ không tiếp xúc và
hiển thị giá trị lên LCD.
o Nếu nhiệt độ < 37oC, LED xanh sáng trong 2 giây
o Nếu nhiệt độ >= 37oC, LED đỏ sáng và bật chuông báo động. LED đỏ và
chuông báo động chỉ tắt khi nút reset được nhấn.
Gợi ý: cho cảm biến nhiệt độ không tiếp xúc MLX90614, giả sử đã có thư viện
đọc giá trị nhiệt độ với hàm int read_sensor() và file code C “MLX90614.c”

a) (1 điểm) (L.O.3) Hãy vẽ sơ đồ khối và viết đặc tả phần cứng cho hệ thống (chọn linh kiện và mô tả
chức năng các khối)

Sơ đồ khối:

LCD
Nút RESET

Cảm biến Vi điều Chuông báo động


hồng ngoại khiển

LED xanh
Cảm biến nhiệt độ
ÌC LED đỏ
không tiếp xúc I2C

Đặc tả phần cứng

- Vi điều khiển: (PIC16F877) đọc cảm biến hồng ngoại hồng ngoại phản xạ, nếu cảm biến trả về
giá trị 1, nghĩa là có người đứng trước máy, vi xử lý đọc cảm biến nhiệt độ không tiếp xúc và
hiển thị giá trị lên LCD.
- Nút RESET: dùng reset hệ thống
- Cảm biến hồng ngoại: dùng để phát hiện có người đứng trước máy
- Cảm biến nhiệt độ không tiếp xúc (MLX90614): đo nhiệt độ thân nhiệt ở trán
- LCD: loại 16x2, giao tiếp song song, hiển thị giá trị nhiệt độ
- Chuông báo động: báo động nếu nhiệt độ >= 37oC, chuông báo động chỉ tắt khi nút reset được
nhấn.
- LED xanh: sáng khi khi thân nhiệt < 37oC
- LED đỏ: sáng khi thân nhiệt >= 37oC

b) (1điểm) (L.O.3) Vẽ sơ đồ mạch chi tiết cho hệ thống

MSSV:……………………………….……Họ và tên SV:…………………........………………………………… Trang 4


LCD1
LM016L

C5 U3
13 33 IR_Sensor
OSC1/CLKIN RB0/INT

VDD
VSS

VEE
14 34 Buzzer

RW
RS

D0
D1
D2
D3
D4
D5
D6
D7
OSC2/CLKOUT RB1

E
22p 35 RED_LED
RB2
X2 2
RA0/AN0 RB3/PGM
36 GREEN_LED

1
2
3

4
5
6

7
8
9
10
11
12
13
14
20MHz 3 37
C6 4
RA1/AN1 RB4
38
RA2/AN2/VREF-/CVREF RB5
2
5 39
RA3/AN3/VREF+ RB6/PGC
6 40
22p 7
RA4/T0CKI/C1OUT RB7/PGD RV1
RA5/AN4/SS/C2OUT
15
RC0/T1OSO/T1CKI

RW
RS
8 16 10K

E
RE0/AN5/RD RC1/T1OSI/CCP2
9 17
RE1/AN6/WR RC2/CCP1
R2 10
RE2/AN7/CS RC3/SCK/SCL
18 SCLK
23 SDA
10k RC4/SDI/SDA
1 24
MCLR/Vpp/THV RC5/SDO
25
RESET1 RC6/TX/CK
26
RC7/RX/DT
19
RD0/PSP0
20
RD1/PSP1
21
RD2/PSP2
22
RD3/PSP3
27
RD4/PSP4
28
RD5/PSP5
IR_Sensor
1 RD6/PSP6
RD7/PSP7
29
30

IR sensor PIC16F877A
D1
U1 R1
RED_LED BUZ1
4 SCLK
SCLK 220
27.0 5 SDA LED-RED
SDA

MLX90614 D2 BUZZER
GREEN_LED
R3
220 R4 Q1
LED-GREEN Buzzer
NPN
1k

c) (1.5 điểm) (L.O.4) Hãy viết đặc tả phần mềm cho hệ thống (liệt kê các hàm con cần thiết cho chương
trình) và vẽ lưu đồ giải thuật chương trình chính

Đặc tả phần mềm:

Chương trình phần mềm cần đọc cảm biến hồng ngoại, đọc cảm biến nhiệt độ, hiển thị giá trị lên
LCD, so sánh ngưỡng 37 và báo kết quả ra LED và chuông báo động.

Lưu đồ giải thuật:

MSSV:……………………………….……Họ và tên SV:…………………........………………………………… Trang 5


Reset

Tắt tất cả LED


Tắt chuông báo động

Đọc cảm biến hồng ngoại

N
Có người?

Đọc cảm biến nhiệt độ

N LED xanh sáng 2


T >=37
giây

LED đỏ sáng, bật báo


động

d) (1.5 điểm) (L.O.4) Hãy viết chương trình C điều khiển hệ thống trên.

Chương trình C
#include <16F877.h>
#include “LCD.c”
#include “MLX90614.c”
#use delay(clock=20000000)
void main()
{
int T;
lcd_init();
output_low(PIN_B1); // tắt chuông báo động
output_low(PIN_B2); // tắt LED đỏ
output_low(PIN_B3); // tắt LED xanh

while(1)
{
if(input(PIN_B0)==1) // Khi có người đứng trước máy
{ T = read_sensor(); // Đọc cảm biến
gotoxy(1,1);
printf(lcd_putc, “T = %03u“, T);
if (T>=37)
{
output_high(PIN_B2); // sáng LED đỏ
MSSV:……………………………….……Họ và tên SV:…………………........………………………………… Trang 6
output_high(PIN_B1); // bật chuông báo động
while(1); // treo chương trình cho đến khi reset
}
else
{ output_high(PIN_B3); // sáng LED xanh
delay_ms(2000); // delay 2 giây
output_low(PIN_B3); // tắt LED xanh
}
}
}

MSSV:……………………………….……Họ và tên SV:…………………........………………………………… Trang 7

You might also like