Professional Documents
Culture Documents
HÀ NỘI, 2022
1
BÀI 1. PHÁT TRIỂN DEVICE DRIVER CHO I2C PORT
ĐIỀU KHIỂN ROBOT 2 BẬC TỰ DO
1.1. Báo cáo kết quả thí nghiệm
(Sinh viên mô tả các kịch bản, giải thích và có kèm hình chụp)
Kịch bản 1: Cánh tay robot gồm 2 servo, thay đổi góc quay bên dưới, vị trí
mong muốn cách vị trí ban đầu (90 độ)
Kịch bản 2: Thay đổi góc quay servo bên trên, từ vị trí ban đầu servo lần lượt di
chuyển 5 độ, tăng hoặc giảm dần cho đến khi đạt cực đại, đồng thời kết hợp với
kịch bản 1 để điều khiển cùng lúc 2 servo
● Giới thiệu ngắn gọn về giao tiếp I2C? Mô tả các bước khi truyền dữ liệu qua
giao tiếp I2C.
I2C là 1 giao thức giao tiếp nối tiếp đồng bộ được phát triển bởi Philips
Semiconductors, sử dụng để truyền nhận dữ liệu giữa các IC với nhau chỉ sử dụng
hai đường truyền tín hiệu.
Các bước khi truyền dữ liệu qua giao tiếp I2C là:
• Bước 1: Thiết bị Master sẽ gửi đi 1 xung Start bằng cách kéo lần lượt các
đường SDA, SCL từ mức 1 xuống 0.
• Bước 2: Master gửi đi 7 bit địa chỉ tới Slave muốn giao tiếp cùng với bit
Read/Write. Bước 3: Slave sẽ so sánh địa chỉ vật lý với địa chỉ vừa được gửi
tới. Nếu trùng khớp, Slave sẽ xác nhận bằng cách kéo đường SDA xuống 0 và
set bit ACK/NACK bằng ‘0’. Nếu không trùng khớp thì SDA và bit
ACK/NACK đều mặc định bằng ‘1’.
• Bước 4: Thiết bị Master sẽ gửi hoặc nhận khung bit dữ liệu. Nếu Master gửi đến Slave
thì bit Read/Write ở mức 0. Ngược lại nếu nhận thì bit này ở mức 1.
• Bước 5: Nếu như khung dữ liệu đã được truyền đi thành công, bit
ACK/NACK được set thành mức 0 để báo hiệu cho Master tiếp tục.
• Bước 6: Sau khi tất cả dữ liệu đã được gửi đến Slave thành công, Master sẽ phát
1 tín hiệu Stop để báo cho các Slave biết quá trình truyền đã kết thúc bằng các
chuyển lần lượt SCL, SDA từ mức 0 lên mức 1
● Nêu nguyên lý việc điều khiển động cơ dựa vào độ rộng xung PWM.
Điều chế độ rộng xung (PWM) là một kỹ thuật mà độ rộng của xung được thay đổi trong khi
vẫn giữ tần số không đổi. Tùy thuộc vào loại động cơ ta có chu kỳ quay là khác nhau, ví dụ để
điều khiển động cơ servo SG90 trong khoảng quay từ -90 ° đến +
90 °. Chúng ta cần tạo ra dạng sóng PWM 50Hz với sự thay đổi chu kỳ nhiệm vụ từ
~ 0,5ms đến ~ 2,4ms.
• Chỉ rõ các công việc chính mà Device Driver điều khiển giao tiếp I2C phải thực
hiện ?
o Tạo giao tiếp I2C giữa Raspberry Pi 4 và module động cơ
o Cài đặt xung PWM
o Cài đặt góc quay với kênh và góc quay động cơ
o Điều khiển xung PWM với góc quay tương ứng sang module động cơ
BÀI 2. KẾT NỐI RASPBERRY PI 4 VỚI BOARD MAIX
DOCK QUA GIAO TIẾP SPI
2.1. Báo cáo kết quả thí nghiệm
(Sinh viên mô tả các kịch bản, giải thích và có kèm hình chụp)
Kịch bản 1: Sinh viên làm theo hướng dẫn thí nghiệm, biên dịch file bin và nạp vào kit
MAIX DOCK. Kết quả hiển thị lên màn hình terminal của Raspberry Pi 4
Kịch bản 2: Sinh viên chỉnh sửa file code trong thư mục lcd_m và thực hiện biên dịch
đúng theo như hướng dẫn
Kịch bản 3: Sinh viên sau khi thực hiện viết chương trình cho LCD, tùy biến nội dung
hiển thị lên màn hình
2.2. Câu hỏi kiểm tra
Giải thích khái niệm GPIO?
GPIO là một chân tín hiệu kỹ thuật số trên mạch tích hợp mà hành vi của nó
(đầu vào hoặc đầu ra) được điều khiển bởi phần mềm ứng dụng. GPIO về cơ
bản là một chân có thể được cấu hình làm đầu vào hoặc đầu ra. Nếu chúng ta
cấu hình chân như một đầu ra, chúng ta có thể ghi 0 (LOW) hoặc 3,3 / 5 V
(VDD) vào chân đó. Khi được cấu hình làm đầu vào, chúng ta có thể đọc tín
hiệu trên chân đó. GPIO là giao diện tiêu chuẩn mà qua đó vi điều khiển có thể
giao tiếp với thế giới bên ngoài. Nó có thể được sử dụng để đọc các giá trị từ
cảm biến analog hoặc kỹ thuật số, điều khiển đèn LED, điều khiển đồng hồ cho
giao tiếp I2C.
Vẽ sơ đồ đấu nối các chân cổng hai thiết bị truyền thông với nhau bằng cổng
SPI. Mô tả các bước khi truyền dữ liệu qua giao thức SPI.
Khi truyền dữ liệu từ SPI Master sang SPI Slave:
Tại một cạnh lên hoặc xuống của tín hiệu SCLK, SPI Master tạo điện áp mức cao
hoặc thấp để biểu diễn 1 hoặc 0 trên đường MOSI. SPI Master sẽ duy trì điện áp này
trong một chu kỳ của SCLK trước khi chuyển sang một mức điện áp khác để gửi đi bit
tiếp theo trong chu kỳ SCLK kế tiếp.
SPI Slave nhận dữ liệu trên đường MOSI bằng cách lấy mẫu (sample) điện áp trên đường dây
này. Để thu được dữ liệu chính xác, SPI Slave phải lấy mẫu một bit dữ liệu trong khoảng thời gian từ
khi SPI Master setup bit đó đến trước khi SPI Master setup bit kế tiếp.
Device Driver điều khiển cổng SPI phải thực hiện những công việc gì để kết
nối thành công bo mạch ngoại vi MAIX Dock?
Với bài thí nghiệm, bo Raspberry Pi 4 đóng vai trò slave, MAIX Dock đóng vai trò master.
Hiện nay, trên raspberry Pi 4 chỉ có chức năng master cho giao tiếp SPI nên sử dụng cấu hình GPIO
cho cơ chế slave trên Pi 4. Các GPIO trên bo Pi 4 thực hiện chức năng thay thế cho các chân SCLK,
MOSI, MISO, SS tương ứng với các chân 21, 19, 23, 13, sau khi nhận tín hiệu từ MAIX Dock các chân
GPIO này thực hiện chức năng như một slave.
BÀI 3. PHÁT TRIỂN PHẦN MỀM NHÚNG THÔNG MINH VỚI
KIT MAXI DOCK
Kịch bản 2: Sinh viên chụp lại kết quả đã phát hiện được gương mặt của mình để báo
cáo
Kịch bản 3: Sinh viên chụp lại thông báo có tự đề như yêu cầu hiện lên trong giao diện
Terminal của Raspberry Pi
3.2. Câu hỏi kiểm tra
So sánh 3 giao thức I2C, SPI và UART (về số lượng chân cần kết nối, về phương thức
truyền, tốc độ truyền, số lượng thiết bị, phân tích ưu nhược điểm của các giao thức và chỉ ra các giao thức này
phù hợp với những ứng dụng nào)
Sơ đồ kết nối đơn giản khác phức tạp khá đơn giản
Số lượng thiết bị 2 thiết bị, giao số lượng hạn chế, lên đến 127 thiết
tiếp 1-1 giao tiếp bằng chân bị, giao tiếp bằng địa
chọn chip chỉ
Thuật toán nhận dạng khuôn mặt được thực hiện tại đâu? Tại bo mạch chủ RP4
hay khách (MAIX DOCK) hay cả trên 2 bo?
Thực hiện trên MAIX DOCK
Dữ liệu truyền thông qua lại với bo mạch Pi gồm những gì?
Gồm bản tin xác nhận đã nhận diện được khuôn mặt
Trong bài thí nghiệm, để truyền dữ liệu từ MAIX DOCK sang Raspberry Pi 4 cần
thực hiện những công đoạn gì?
• Thực hiện kết nối dây cho giao tiếp UART giữa 2 thiết bị
• Thực hiện chương trình gửi bản tin bên MAIX DOCK
• Thực hiện chương trình nhận bản tin bên RP4
Mô tả vắn tắt những đoạn mã trong chương trình Python xử lý nội dung video. Nêu rõ
công việc mà cac hàm trong đó thực hiện
"""
Khai báo các thư viện cần thiết cho bài thí nghiệm tại đây
"""
import sensor, image, lcd, time
"""
Sinh viên thực hiện cấu hình kết nối chân cho giao tiếp UART tại đây
cài đặt chân 10 là chân TX, chân 11 là RX
"""
fm.register(pin_tx, fm.fpioa.UART1_TX, force=True)
fm.register(pin_rx, fm.fpioa.UART1_RX, force=True)
"""
uart_A = UART(UART.UART1, baudrate, bits, 1, 0, timeout=1000,
read_buf_len=4096)
"""
Sinh viên thực hiện lập trình hiển thị lcd
"""
def lcd_show_except(e):
import uio
err_str = uio.StringIO()
sys.print_exception(e, err_str)
err_str = err_str.getvalue()
"""
Điền kích thước ảnh w x h
"""
img = image.Image(size=(w,h))
img.draw_string(0, 10, err_str, scale=1, color=(0xff,0x00,0x00))
lcd.display(img)