NỘI DUNG 2: Dựa trên các dữ liệu thu thập được, lựa chọn giải pháp thiết kế và thi công mô hình kết nối các module với KIT điều khiển.. Tuần 5 Viết báo cáo Chương 2 Lập trình, chỉn
Trang 1KHOA ĐIỆN – ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH -
Trang 2KHOA ĐIỆN – ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH
Trang 3KHOA ĐIỆN-ĐIỆN TỬ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH
Tp HCM, tháng 03 năm 2018
NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
Họ tên sinh viên: Võ Phương Duy MSSV: 14141044
Chuyên ngành: CNKT Điện Tử Truyền Thông Mã ngành: 41
Hệ đào tạo: Đại học chính quy Mã hệ: 1
Khóa: 2014 Lớp: 14141DT1A
I TÊN ĐỀ TÀI: THIẾT KẾ GAME MINI TRÊN KIT STM32F746G_DISCOVERY
II NHIỆM VỤ
1 Các số liệu ban đầu:
Khảo sát các loại vi điều khiển, lựa chọn màn hình cảm ứng, tay cầm PS2, module âm thanh
Tìm hiểu và thu thập các số liệu từ các trang mạng và sách về lập trình vi điều khiển ARM
Tìm hiểu các tài liệu hướng dẫn sử dụng tay cầm PS2, module giải mã âm thanh
2 Nội dung thực hiện:
NỘI DUNG 1: Nghiên cứu tài liệu về module VS1003, tay cầm PS2, KIT STM32F746 DISCOVERY
NỘI DUNG 2: Dựa trên các dữ liệu thu thập được, lựa chọn giải pháp thiết kế và thi công
mô hình kết nối các module với KIT điều khiển
NỘI DUNG 3: Thiết kế lưu đồ giải thuật và viết chương trình điều khiển cho vi điều khiển, thiết kế giao diện màn hình chơi game
NỘI DUNG 4: Thử nghiệm và điều chỉnh phần mềm cũng như phần cứng để mô hình được tối ưu, sử dụng dễ dàng Đánh giá các thông số của mô hình so với thông số thực tế
NỘI DUNG 5: Viết báo cáo thực hiện
III NGÀY GIAO NHIỆM VỤ: 07/03/2018
Trang 4V HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: ThS Phan Vân Hoàn
CÁN BỘ HƯỚNG DẪN BM ĐIỆN TỬ CÔNG NGHIỆP – Y SINH
Trang 5Tên đề tài: THIẾT KẾ GAME MINI TRÊN KIT STM32F746G_DISCOVERY
Tuần/ngày Nội dung Xác nhận
Lập trình Game Cờ Caro Lập trình Game Ball Bing Ball
Trang 6Tuần 5 Viết báo cáo Chương 2
Lập trình, chỉnh sửa game Ball Bing Bong Tìm hiểu phương pháp giao tiếp module VS1003
Tuần 6 Viết báo cáo Chương 3
Lập trình Game Flappy Bird Giao tiếp thẻ nhớ nhưng lỗi Tuần 7 Viết báo cáo Chương 3
Lập trình, chỉnh sửa Game Flappy Bird Giao tiếp được với thẻ nhớ
Tuần 8 Viết báo cáo Chương 4
Lập trình Game Stick Hero Giao tiếp thành công module VS1003 Thi công mạch kết nối
Tuần 9 Viết báo cáo Chương 4
Tạo file nhạc cho các Game Lập trình Game Ai Là Triệu Phú Tuần 10 Viết báo cáo Chương 5
Lập trình Game Ai Là Triệu Phú Tuần 11 Viết báo cáo Chương 5
Lập trình Game Vòng Quay Sát Phạt Tuần 12 Viết báo cáo Chương 6
Lập trình Game Vòng Quay Sát Phạt
Trang 7Tuần 13 Chỉnh sửa báo cáo
Chỉnh sửa code Làm hộp cho mạch
GV HƯỚNG DẪN (Ký và ghi rõ họ và tên)
Trang 8Tôi xin cam đoan đề tài được thực hiện dựa trên các tài liệu có trước Không sao chép từ bất kỳ nguồn tài liệu hay công trình nào khác
Tôi xin chịu trách nhiệm với lời cam đoan này
Trang 9Tôi xin cám ơn sâu sắc đến thầy Phan Vân Hoàn đã trực tiếp hướng dẫn và tận tình giúp đỡ, tạo điều kiện để tôi hoàn thành đề tài
Tôi xin gửi lời chân thành cám ơn các thầy cô trong Khoa Điện - Điện Tử đã giúp
đỡ tôi hoàn thành đề tài Tôi cũng gửi lời đồng cám ơn đến các bạn lớp 14141DT1A đã chia sẻ trao đổi kiến thức cũng như những kinh nghiệm quý báu trong thời gian thực hiện đề tài
Xin cảm ơn đến cha mẹ
Xin chân thành cám ơn!
Người thực hiện đề tài
Võ Phương Duy
Trang 10BÌA NGOÀI i
BÌA TRONG ii
NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP iii
LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP v
CAM ĐOAN viii
LỜI CÁM ƠN ix
MỤC LỤC x
DANH SÁCH HÌNH xii
DANH SÁCH BẢNG xiii
TÓM TẮT xv
Chương 1: TỔNG QUAN 1
1.1 ĐẶT VẤN ĐỀ 1
1.2 MỤC TIÊU 1
1.3 NỘI DUNG NGHIÊN CỨU 2
1.4 GIỚI HẠN 2
1.5 BỐ CỤC 3
Chương 2: CƠ SỞ LÝ THUYẾT 4
2.1 MÔ TẢ QUÁ TRÌNH HOẠT ĐỘNG 4
2.2 TỔNG QUAN LÝ THUYẾT 4
2.2.1 Tổng quan ARM 4
2.2.2 Giới thiệu về ARM-M7- STM32F746G-DISCOVERY 6
2.2.3 Module giải mã âm thanh VS1003-v2 8
2.2.4 Tay cầm game Dualshock 2 10
2.2.5 Chuẩn truyền nhận SPI 13
2.2.6 Chuẩn giao tiếp SDMMC 15
Chương 3: TÍNH TOÁN_THIẾT KẾ 18
3.1 GIỚI THIỆU 18
3.2 TÍNH TOÁN VÀ THIẾT KẾ HỆ THỐNG 18
3.3.1 Thiết kế sơ đồ khối 18
3.3.2 Tính toán và thiết kế mạch 19
Trang 11c Khối âm thanh 24
d Khối nguồn 26
3.3.3 Sơ đồ nguyên lý toàn mạch 27
Chương 4: THI CÔNG HỆ THỐNG 28
4.1 GIỚI THIỆU 28
4.2 THI CÔNG HỆ THỐNG 28
4.2.1 Thi công bo mạch 28
4.2.2 Lắp ráp, hàn linh kiện và kiểm tra 30
4.2.3 Đóng gói sản phẩm 31
4.3 LẬP TRÌNH HỆ THỐNG 31
4.3.1 Lưu đồ giải thuật 31
a Game Cờ Caro 33
b Game Ball Bing Bong 35
c Game Flappy Bird: 39
d Game Stick Hero: 42
e Game Ai Là Triệu Phú: 46
f Game Vòng Quay Sát Phạt: 47
g Game Pika Pika: 50
4.3.2 Phần mềm lập trình cho vi điều khiển 52
4.4 TÀI LIỆU HƯỚNG DẪN SỬ DỤNG, THAO TÁC: 55
Chương 5: KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ 61
5.1 KẾT QUẢ 61
5.2 ĐÁNH GIÁ KẾT QUẢ, NHẬN XÉT VÀ ĐÁNH GIÁ 62
Chương 6: KẾT LUẬN_HƯỚNG PHÁT TRIỂN 66
6.1 KẾT LUẬN 66
6.2 HƯỚNG PHÁT TRIỂN 66
TÀI LIỆU THAM KHẢO 67
PHỤ LỤC 68
Trang 12Hình 1-1 Một số game nổi tiếng 1
Hình 2-1 Kiến trúc của vi xử lí ARM Cotex-M7 6
Hình 2-2 KIT STM32F746 Discovery 7
Hình 2-3 Sơ đồ cấu trúc và sơ đồ chân VS1003 8
Hình 2-4 Tay cầm PS2 10
Hình 2-5 Màu và sơ đồ dây đầu cắm PS2 12
Hình 2-6 Sơ đồ kết nối chuẩn SPI Master-Slave 14
Hình 2-7 Quá trình truyền nhận SPI 15
Hình 2-8 Quá trình đọc dữ hiệu 16
Hình 2-9 Quá trình ghi dữ liệu 16
Hình 2-10 Sơ đồ khối SDMMC 17
Hình 3-1 Sơ đồ khối hệ thống 18
Hình 3-2 Mặt trên của KIT 20
Hình 3-3 Sơ đồ bố trí Arduino Connectors, SD card adapter 22
Hình 3-4 Tay cầm PS2 23
Hình 3-5 Sơ đồ khối nối STM32F746 với PS2 24
Hình 3-6 Module VS1003 25
Hình 3-7 Sơ đồ kết nối STM32F746 với VS1003 26
Hình 3-8 Sơ đồ kết nối nguồn ngoài cho STM32F746 27
Hình 3-9 Sơ đồ nguyên lý chung của hệ thống 27
Hình 4-1 Sơ đồ PCB mạch kết nối STM với PS2 và VS1003 28
Hình 4-2 Sơ đồ PCB 3D mạch kết nối STM với PS2 và VS1003 29
Hình 4-3 Sơ đồ bố trí linh kiện mạch kết nối STM với PS2 và VS1003 29
Hình 4-4 Khung của mạch 31
Hình 4-5 Lưu đồ chương trình chính 32
Hình 4-6 Lưu đồ đọc/phát nhạc 32
Hình 4-7 Lưu đồ chính game Cờ Caro 33
Hình 4-8 Lưu đồ xử lý nước đi 34
Hình 4-9 Lưu đồ vẽ nước đi 34
Hình 4-10 Lưu đồ chính của game 35
Hình 4-11 Lưu đồ chọn chế độ chơi 36
Hình 4-12 Lưu đồ xử lý 1 người chơi 37
Hình 4-13 Lưu đồ xử lý 2 người chơi 38
Hình 4-14 Lưu đồ xử lý thua 39
Hình 4-15 Lưu đồ chính game Flappy Bird 40
Hình 4-16 Lưu đồ di chuyển trụ 41
Trang 13Hình 4-19 Lưu đồ chính game Stick Hero 43
Hình 4-20 Lưu đồ bước 1 43
Hình 4-21 Lưu đồ bước 2 44
Hình 4-22 Lưu đồ bước 3 44
Hình 4-23 Lưu đồ bước 4 45
Hình 4-24 Lưu đồ bước 5 45
Hình 4-25 Lưu đồ game Ai là triệu phú 46
Hình 4-26 Lưu đồ chính Game Vòng Quay Sát Phạt 47
Hình 4-27 Lưu đồ xử lý góc và tốc độ quay 48
Hình 4-28 Lưu đồ thông báo kết quả 49
Hình 4-29 Lưu đồ chính game Pika Pika 50
Hình 4-30 Lưu đồ xử lý pikachu nhảy lên 51
Hình 4-31.Lưu đồ di chuyển CNV 51
Hình 4-32 Lưu đồ kiểm tra pika có đụng CNV hay không 51
Hình 4-33 Giao diện phần mềm Keil C 52
Hình 4-34.Giao diện phần mềm STM32CubeMX 53
Hình 4-35 Thao tác chọn game 57
Hình 4-36 Thao tác Game Cờ Caro 58
Hình 4-37 Thao tác chọn chế độ Game BBB 58
Hình 4-38 Nút nhấn điều khiển game BBB 59
Hình 4-39 Thao tác game Flappy Bird 59
Hình 4-40 Thao tác game Stick Hero 60
Hình 5-1 Kết quả phần cứng 61
Hình 5-2 Giao diện chọn Game 62
Hình 5-3 Game Cờ Caro 62
Hình 5-4 Chọn chế độ Game BBB 62
Hình 5-5 Game Ball Bing Bong 63
Hình 5-6 Game Flappy Bird 63
Hình 5-7 Game Stick Hero 64
Hình 5-8 Game Vòng Quay Sát Phạt 64
Hình 5-9 Game Ai Là Triệu Phú 65
Hình 5-10 Game Pika Pika 65
DANH SÁCH BẢNG Bảng 2.1 Mô tả sơ đồ chức năng các chân của VS1003 9
Trang 14Bảng 3.1: Arduino Connectors 20
Bảng 3.2: Mô tả chân kết nối của PS2 với Arduino Connectors 23
Bảng 3.3 :Mô tả chân kết nối của VS1003 với Arduino Connectors 25
Bảng 4.1: Bảng linh kiện sử dụng 29
Bảng 4.2: Các bước lắp ráp linh kiện 30
Trang 15Sau quá trình tìm hiểu, nghiên cứu lĩnh vực giải trí trong mảng game di động, tôi nhận thấy nhu cầu về nguồn game hiện tại là rất lớn cũng như nguồn nhân lực cho mảng ngành này Từ đó tôi quyết định chọn đề tài này đầu tiên là để thiết kế ra một số game đáp ứng nhu cầu giải trí của người chơi, sau đó là để tự hoàn thiện khả năng lập trình của bản thân
Đề tài này thực hiện lập trình lại những game mà đã có các tác giả viết trước Ở đây tôi chỉ mô phỏng lại sao cho giống nhất có thể Kết hợp thêm 1 số phần cứng rời để tạo sự khác biệt
Sau quá trình nghiên cứu thì tôi đã thành công trong việc mô phỏng lại 7 game mini thao tác đơn giản, đạt độ chính xác khá cao
Các game được thao tác trên màn hình kết hợp với tay cầm game có phát thêm nhạc thể hiện khá tốt nội dung game
Trang 17Chương 1: TỔNG QUAN
Ngày nay, nhu cầu giải trí của con người bằng các thiết bị tiện lợi ngày càng cao Trong đó, thiết bị chơi game phát triển một cách nhanh chóng chỉ trong những năm gần đây đi theo đó là số lượng game được giới thiệu cũng tăng không ngừng Nổi bật có thể kể đến những loại game mini chạy trên các thiết bị di động như điện thoại, ipad, máy chơi game mini
Với nhu cầu cao như vậy thì ngành nghề thiết kế game đang là một trong số nghề đang có nhu cầu nhân lực lớn, đem lại lợi nhuận khổng lồ Có thể kể đến 1
số công ty thiết kế game lớn như Nintendo, Sony, Capcom với một số tựa game nổi tiếng như Super Mario, Resident Evil, Contra Ngoài ra còn có vô số những tựa game của những cá nhân thiết kế độc lập
Hình 1-1 Một số game nổi tiếng
Với ý tưởng muốn tiếp cận một lĩnh vực hay, còn khá mới đối với sinh viên chuyên ngành điện tử công nghiệp thì trong đề tài này tôi sẽ thực hiện thiết kế mô phỏng lại một số game mini được đại đa số người biết tới như Flappy Bird, cờ caro nhằm đáp ứng nhu cầu giải trí, phát triển tư duy cho người chơi game
- Thiết kế và thi công mô hình máy chơi game mini
- Thiết kế Game mini chạy trên mô hình
- Sử dụng cảm ứng và tay cầm Dual Shock để điều khiển
- Phát được nhạc trong chơi lúc với từng trò
Trang 181.3 NỘI DUNG NGHIÊN CỨU
NỘI DUNG 1: Nghiên cứu tài liệu về module VS1003, tay cầm PS2, KIT STM32F746 DISCOVERY
NỘI DUNG 2: Dựa trên các dữ liệu thu thập được, lựa chọn giải pháp thiết kế và thi công mô hình kết nối các module với KIT điều khiển
NỘI DUNG 3: Thiết kế lưu đồ giải thuật và viết chương trình điều khiển cho vi điều khiển, thiết kế giao diện màn hình chơi game
NỘI DUNG 4: Thử nghiệm và điều chỉnh phần mềm cũng như phần cứng để mô hình được tối ưu, sử dụng dễ dàng Đánh giá các thông số của mô hình so với thông số thực tế
NỘI DUNG 5: Viết báo cáo thực hiện
Trong thời gian thực hiện đề tài là hơn 3 tháng, tôi tập trung thực hiện các công việc bên dưới:
- Thiết kế, thi công mô hình máy chơi game mini
- Sử dụng module âm thanh VS1003
- Sử dụng tay cầm Dual Shock Play Station 2(PS2)
- Sử dụng vi điều khiển ARM STM32F746
- Sử dụng màn hình LCD TFT 4.3-inch hiển thị và thao tác
Trong đề tài này sẽ thiết kế 7 game chạy trên nền vi điều khiển ARM STM32:
BALL BING BONG
Trang 191.5 BỐ CỤC
Chương 1: Tổng quan
Trình bày tổng quan về đề tài, tình hình thực tế, tính cần thiết của đề tài
Chương 2: Cơ sở lý thuyết
Chương này trình bày lý thuyết liên quan đến các phần cứng, các chuẩn truyền nhận
Chương 3: Tính toán và thiết kế
Chương này tính toán các thông số mạch để lựa chọn các linh kiện phù hợp với hệ thống
Chương 4: Thi công hệ thống
Trình bày quá trình thi công mạch kết nối giữa các phần cứng với nhau Thiết kế lưu đồ cho từng nội dung code sẽ làm
Viết code dựa theo lưu đồ đã thiết kế trên
Chương 5: Kết quả, nhận xét và đánh giá
Trình bày kết quả thu được của toàn bộ hệ thống, nêu rõ những mặt đã làm được và chưa làm được so với mục tiêu ban đầu cũng như ưu điểm, hạn chế Đánh giá tính ổn định của hệ thống
Chương 6: Kết luận và hướng phát triển
Đưa ra kết luận chung cho hệ thống So sánh với các hệ thống khác ngoài thực tế để định được hướng phát triển của đề tài
Trang 20Chương 2: CƠ SỞ LÝ THUYẾT
Khi cấp nguồn hệ thống thì màn hình sẽ hiện lên tên các tựa game Người chơi chọn game bằng cách nhấn nút trên tay cầm Dual Shock Vào từng game tùy vào hướng dẫn sử dụng sẽ có các thao tác riêng bằng PS2 hoặc cảm ứng Trong quá trình hoạt động sẽ có phát nhạc phù hợp với từng game
Việc thiết kế ARM được bắt đầu từ năm 1983 trong một dự án phát triển của công ty máy tính Acorn Nhóm thiết kế hoàn thành việc phát triển mẫu gọi là ARM1 vào năm 1985, và vào năm sau, nhóm hoàn thành sản phẩm “thực’’ gọi là ARM2 với thiết kế đơn giản chỉ gồm 30.000 transistor ARM2 có tuyến dữ liệu 32 bit, không gian địa chỉ 26 bit tức cho phép quản lý đến 64 Mbyte địa chỉ và 16 thanh ghi 32 bit Thế hệ sau, ARM3, được tạo ra với 4KB cache và có chức năng được cải thiện tốt hơn nữa
Trải qua nhiều thế hệ nhưng lõi ARM gần như không thay đổi kích thước ARM2 có 30.000 transistors trong khi ARM6 chỉ tăng lên đến 35.000 Ý tưởng của nhà sản xuất lõi ARM là sao cho người sử dụng có thể ghép lõi ARM với một
số bộ phận tùy chọn nào đó để tạo ra một CPU hoàn chỉnh, một loại CPU mà có thể tạo ra trên những nhà máy sản xuất bán dẫn cũ và vẫn tiếp tục tạo ra được sản phẩm với nhiều tính năng mà giá thành vẫn thấp
Trang 21Ngày nay ARM được ứng dụng rộng rãi trên mọi lĩnh vực của đời sống: Robot, máy tính, điện thoại, xe hơi, máy giặt…
ARM Cortex được chia làm 3 dòng:
Cortex-A: Bộ xử lý dành cho hệ điều hành và các ứng dụng phức tạp
Hỗ trợ tập lệnh ARM, thumb, và thumb-2
Cortex-R: Bộ xử lý dành cho hệ thống đòi hỏi khắc khe về đáp ứng thời gian thực Hỗ trợ tập lệnh ARM, thumb và thumb-2
Cortex-M: Bộ xử lý dành cho dòng vi điều khiển, được thiết kế để tối
ưu về giá thành Hỗ trợ tập lệnh Thumb-2
Giá trị số nằm cuối tên của 1 dòng ARM cho biết về mức độ hiệu suất tương đối của dòng đó Theo đó dòng ARM mang số 0 sẽ có hiệu suất thấp nhất
Tập đoàn ST Microelectronic đã cho ra mắt dòng STM32, vi điều khiển đầu tiên dựa trên nền lõi ARM Cortex-M3 thế hệ mới do hãng ARM thiết kế, lõi ARM Cortex-M3 là sự cải tiến của lõi ARMv7-M 32bit truyền thống, từng mang lại sự thành công vang dội cho công ty ARM Dòng STM32 thiết lập các tiêu chuẩn mới
về hiệu suất, chi phí, cũng như khả năng đáp ứng các ứng dụng tiêu thụ năng lượng thấp và tính điều khiển thời gian thực khắt khe
Chip ARM Cortex-M7 là một vi điều khiển 32-bit cao cấp nhất trong series Cortex-M của ARM cho đến hiện nay Theo ARM, Cortex-M7 có DSP (Digital Signal Processing: Xử lý tín hiệu số) cao gấp đôi so với Cortex-M4 do đó có thể
xử lý cùng lúc 2 tập lệnh, giúp cho M7 có thể hoạt động ở mức xung nhịp cao hơn Đây là dòng chip MCU 32-bit giúp tăng tốc thông dịch dữ liệu từ các cảm biến thành thông tin số Nó tăng gấp đôi hiệu năng tính toán và DSP trong khi giảm thiểu mức tiêu thụ điện năng nhờ vào công nghệ sản xuất 28nm Chip M7 hỗ trợ các thiết bị nhúng điều khiển giọng nói hoặc giao diện rich OS và còn được sử dụng trong các smartphone hoặc trên xe hơi để điều khiển các chức năng màn hình chạm và âm thanh phức tạp hơn
Trang 22Hình 2-1 Kiến trúc của vi xử lí ARM Cotex-M7
2.2.2 Giới thiệu về ARM-M7- STM32F746G-DISCOVERY
Dòng STM32 tiêu thụ năng lượng cực thấp trong khi đó hiệu suất cực cao và việc lập trình cũng rất dễ dàng Với sự đồ sộ về ngoại vi (GPIO, I2C, SPI, ADC, USB, Ethernet, CAN ) ST cung cấp cho chúng ta các thư viện trực tiếp cho mỗi dòng ARM (gọi là CMSIS - Cortex Microcontroller Software Interface Standard) KIT Discovery STM32F7 sử dụng dòng ARM-M7 với vi điều khiển chính STM32F746NGHx cho phép người dùng phát triển mở rộng các ứng dụng về âm thanh, đồ họa, cảm biến và các tính năng kết nối tốc độ cao với các ngoại vi khác Đây là 1 KIT thực tế cung cấp rất nhiều ngoại vi cũng như có sẵn các jack cắm để kết nối với các module khác Các tính năng có sẵn trên KIT như:
Vi điều khiển STM32F746NGH6 có 1MB bộ nhớ Flash và 340KB RAM với chuẩn đóng gói BGA216
On-board ST-LINK/V2-1 hỗ trợ khả năng đếm lại USB
Các chức năng USB: cổng COM ảo, lưu trữ khối, cổng debug
Màn hình TFT-LCD 4.3-inch 480x272 màu với cảm ứng điện dung
Ngõ vào âm thanh line in và line out
Trang 23 Ngõ ra loa stereo
2 ST MEMS microphones
Đầu nối SPDIF RCA
2 nút nhấn (user and reset)
128-Mbit Quad-SPI Flash memory
128-Mbit SDRAM
Có khe cắm microSD card
Đầu nối RF-EEPROM
USB OTG HS với đầu cắm Micro-AB
USB OTG FS với đầu cắm Micro-AB
Đầu nối Ethernet IEEE-802.3-2002
o Đầu nối 5v ngoại
Nguồn cấp cho các ứng dụng bên ngoài: 3.3 V or 5 V
Đầu nối Arduino Uno V3
Phần mềm miễn phí với các ví dụ đa dạng
Hình 2-2 KIT STM32F746 Discovery
Trang 242.2.3 Module giải mã âm thanh VS1003-v2
IC VS1003 là IC chuyên dụng giải mã âm thanh của hãng VLSI Solution với các tập tin âm thanh định dạng MP3/MIDI/WMA/WAV Nó các đặc tính:
Giải mã MPEG 1 & 2 audio lớp III (CBR +VBR +ABR); WMA 4.0/4.1/7/8/9 all profiles (5-384kbit/s); WAV (PCM + IMA ADPCM); General MIDI / SP-MIDI files
Mã hóa IMA ADPCM từ microphone hoặc ngõ vào
Hỗ trợ truyền trực tuyến cho MP3 và WAV
Điều khiển Bass và treble
Hoạt động với tần số xung lock 12.13Mhz
Có bộ nhân tần số nội
Hoạt động chế độ tiết kiệm năng lượng
Có khả năng sử dụng với tai nghe với bộ tải 30Ω
Chia điện áp hoạt động cho tín hiệu analog, tín hiệu số và I/O
Có bộ nhớ RAM 5.5Kb dùng cho code/data
Giao diện điều khiển và dữ liệu nối tiếp
Có thẻ được dùng như 1 thiết bị slave
Có chế độ boot flash SPI cho các ứng dụng đặc biệt
Có giao tiếp UART cho chế độ debugging
Các chức năng mới được thêm vào phần mềm với 4 chân GPIO
Hình 2-3 Sơ đồ cấu trúc và sơ đồ chân VS1003
Trang 25Module giải mã âm thanh VS1003 có IC chính VS1003, 2 jack audio 3.5mm,
1 microphone, IC ổn áp Chuyên sử dụng cho việc giải mã các loại âm thanh định dạng MP3/WMA/MIDI/WAV Khi giao tiếp với các MCU thông qua chuẩn SPI
nó đóng vai trò là 1 slave Module bao gồm 9 chân bao gồm điều khiển, dữ liệu và cấp nguồn: 5V, GND, XRST, MISO, MOSI, SCLK, DREQ, XCS, XDCS Chức năng của từng chân:
Bảng 2.1 Mô tả sơ đồ chức năng các chân của VS1003
1 VCC Nguồn cung cấp dương
2 GND Nguồn cung cấp âm
3 XRST Chân tín hiệu yêu cầu Reset
4 MISO Chân trả dữ liệu từ VS1003 về thiết bị master
5 MOSI Chân gửi mã lệnh/dữ liệu từ master tới VS1003
6 SCLK Chân tạo xung clock đồng bộ quá trình truyền nhận
7 DREQ Chân yêu cầu ngắt của VS1003, chân này sẽ ở mức cao
khi sẵn sàng nhận dữ liệu từ master
8 XCS Chân chip select mã lệnh
9 XDCS Chân chip select dữ liệu
Để gửi dữ liệu từ MCU đến VS1003 thông qua SPI thì đầu tiên cần xem xét chân yêu cầu ngắt DREQ đã sẵn sàng chưa, nếu DREQ đang ở mức cao thì kéo chân XDCS xuống mức thấp sau đó gửi 1 byte dữ liệu đến chân MOSI Kết thúc quá trình gửi sẽ kéo chân XCS và XDCS lên mức cao để sẵn sàng cho lần gửi tiếp theo
Trước khi bắt đầu quá trình hoạt động cần reset các giá trị trong các thanh ghi của VS1003, quá trình này sẽ gửi các mã lệnh đến VS1003 để đặt lại các giá trị Để gửi mã lệnh thì trước khi truyền ta kéo chân XCS về mức thấp sau đó bắt
Trang 26đầu truyền Lưu ý VS1003 giao tiếp chuẩn SPI với chế độ MSB tức là truyền bit
có trọng số cao đi trước
2.2.4 Tay cầm game Dualshock 2
Tay cầm game Dualshock 2 hay có tên gọi khác là tay cầm PS2, là một thiết
bị điều khiển đa chức năng được sản xuất bởi hãng SONY với mục đích ban đầu
là giao tiếp với hệ máy Play Station của chính hãng này sản xuất So với tay cầm PS1 với các phím điều hướng bao gồm lên, xuống, trái, phải, các phím chức năng như X, O, Vuông, Tam giác, R1, R2, L1, L2, Select và Start thì PS2 được bổ sung thêm 1 nút Analog, 2 Joytick đa hướng, R3, L3 và chế độ run
Từ thế hệ PS1 đến hiện tại là PS4 đều sử dụng 1 chung loại đầu jack cắm với
9 đường dây cùng 1 chuẩn truyền SPI Ta tìm hiểu màu và chức năng của từng dây:
Bảng 2.2 Mô tả sơ đồ chức năng các chân của PS2
1 Data Dây này dùng để nhận dữ
liệu từ PS2 gửi về Đây là 1 ngõ ra cực thu để hở, vì vậy yêu cầu phải
có 1 điện trở kéo lên nguồn trong lúc hoạt động
Nâu
Hình 2-4 Tay cầm PS2
Trang 272 Command Dùng để gửi mã lệnh từ thiết
Xám
5 Vcc Cấp nguồn dương cho PS2
PS2 hoạt động ở điện áp 3v3 vì thế đối với các thiết bị nguồn 5v cần giảm áp xuống 3v3 để tránh hư hỏng tay cầm
Đỏ
6 Attention Chip select hoặc slave select,
chân này phải được kéo xuống mass trước khi nhận/gửi dữ liệu
Khi hoàn thành 1 quá tình nhận/gửi chân này phải được kéo lên VCC
Vàng
7 Clock Chân cấp xung clock từ
Master tới Slave, đồng bộ quá trình truyền nhận Tay cầm ps2 hoạt động với tần số clock từ 100k-500kHz
Xanh dương
9 Acknowledge Dây này sẽ kéo từ mức 1 về 0
trong 12us sau mỗi byte truyền xong
Xanh lá
Trang 28Hình 2-5 Màu và sơ đồ dây đầu cắm PS2
Để giao tiếp thành công với PS2 thì cần tối thiếu là 6 dây (Clock, Data, Comman, Attention, Vcc, Gnd) Khi giao tiếp với các thiết bị thì tay cầm PS2 đóng vai trò slave, dữ liệu sẽ truyền theo kiểu LSB tức là bit có trọng số thấp được truyền trước
Giao tiếp được với tay cầm PS2 thông qua chuẩn SPI, ta phải thực gửi các
mã lệnh theo đúng trình từ thì tay cầm mới trả dữ liệu đúng về Một gói dữ liệu bao gồm 3 byte header và thêm 2 byte command bổ sung hoặc dữ liệu điều khiển Đầu tiên Master sẽ lần lượt gửi 3 byte Header đến PS2 tương ứng sẽ nhận về
Trang 29Byte thứ 4 và 5 là 0x00, 2 byte này sau khi gửi lên thì slave sẽ gửi trả về dữ liệu trạng thái các nút nhấn Byte thứ 4 là xác định 4 nút điều hướng (lên, xuống, trái, phải, L3, R3), byte thứ 5 là các nút chức năng Nếu như không có nút được nhấn thì dữ liệu trả về sẽ là 0xFF Nếu như có nhấn nút thì bit tương ứng trong byte đó sẽ = 0
Vị trí giá trị các nút nhấn trong byte 4, 5 được thể hiện ở bảng dưới:
2.2.5 Chuẩn truyền nhận SPI
SPI (Serial Peripheral Bus) 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 đó 1 chip Master điều phối quá trình truyề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 là một cách truyền song công nghĩa là tại cùng một thời điểm quá trình truyền và nhận có thể xảy ra đồng thời SPI đôi khi được gọi là chuẩn truyền thông “4 dây” vì có 4 đường dây trong chuẩn này đó là SCK (Serial Clock), MISO (Master Input Slave Output), MOSI (Master Output Slave Input) và SS (Slave Select)
Trong đó SCK: Xung giữ nhịp cho giao tiếp SPI, vì SPI là chuẩn truyền đồng
bộ nên cần 1 đường giữ nhịp, mỗi nhịp trên SCK báo hiệu 1 bit dữ liệu đến hoặc
đi Đây là điểm khác biệt với truyền thông không đồng bộ của chuẩn UART Sự tồn tại của SCK giúp quá trình truyền ít bị lỗi và vì thế tốc độ truyền của SPI có thể đạt rất cao Xung nhịp chỉ được tạo ra bởi Master
MISO: Nếu là chip Master thì đây là đường Input còn nếu là chip Slave thì
là Output MISO của Master và Slave được nối trực tiếp với nhau
Trang 30MOSI: Nếu là chip Master thì đây là đường Output còn nếu là chip Slave thì
là Input MOSI của Master và Slave được nối trực tiếp với nhau
SS: SS là đường chọn Slave cần giao tiếp, trên các chip Slave đường SS sẽ ở mức cao khi không làm việc Nếu chip Master kéo đường SS của một Slave nào
đó xuống mức thấp thì việc giao tiếp sẽ xảy ra giữa Master và Slave đó Chỉ có 1 đường SS trên mỗi Slave nhưng có thể có nhiều đường điều khiển trên Master, tùy vào thiết kế của người dùng
Hình dưới thể hiện một kết nối SPI giữa một chip Master và 3 chip Slave thông qua 4 đường
Hoạt động: Mỗi chip Slave hay Master có một thanh ghi dữ liệu 8 bit Cứ mỗi xung nhịp do Master tạo ra trên đường giữ nhịp SCK, một bit trong thanh ghi
dữ liệu của Master được truyền qua Slave trên đường MOSI, đồng thời một bit trong thanh ghi dữ liệu của Slave cũng được truyền qua Master trên đường MISO
Do 2 gói dữ liệu được truyền qua lại đồng thời nên được gọi là truyền “song công” Hình dưới mô tả quá trình truyền nhận 1 gói dữ liệu của chuẩn SPI
Hình 2-6 Sơ đồ kết nối chuẩn SPI Master-Slave
Trang 31Thanh ghi dịch 8 bit
Thanh ghi dịch 8 bit
BỘ TẠO XUNG CLOCK SPI
MISO
MOSI
SCK
SS
Cho phép dịch
Hình 2-7 Quá trình truyền nhận SPI
Ta thấy bit MSB của Master sẽ được truyền đi đầu tiên sau đó dữ liệu sẽ được dịch trái 1 bit để đẩy bit dữ liệu kế tiếp làm MSB Đồng thời vị trí bit LSB sẽ nhận bit dữ liệu từ Slave truyền tới Quá trình truyền nhận của Slave tương tự Master Sau mỗi 8 xung nhịp trên SCK thì quá trình truyền 8 bit hoàn thành ta đọc dữ liệu
từ 2 thanh ghi này
2.2.6 Chuẩn giao tiếp SDMMC
SDMMC là chuẩn giao tiếp giữa bus APB2 với các loại thẻ nhớ như MMCs,
SD memory, SDIO cards Các đặc tính cơ bản của chuẩn SDMMD:
Đối với thẻ MMCs: hỗ trợ 3 chế độ databus: 1 bit, 4 bit và 8 bit
Đối với thẻ SD và SDIO: hỗ trợ 2 chế độ databus: 1 bit và 4 bit
Truyền data lên tới 50Mhz đối với chế độ 8 bit của MMC
Ngõ ra Data và comman cho phép tín hiệu điều khiển các quá trình 2 chiều bên ngoài
SDMMC không tương thích với chuẩn SPI
Tiếp theo ta tìm hiểu quá trình hoạt động để đọc 1 block data diễn ra như thế nào:
Trang 32Hình 2-8 Quá trình đọc dữ liệu
Để bắt đầu quá trình đọc thì Host sẽ gửi 1 frame lệnh yêu cầu đọc đến card
sau đó card sẽ gửi tín hiệu phản hồi, quá trình này diễn ra trên đường
SDMMC_CMD Sau đó Card sẽ gửi data cho Host thông qua SDMMC_D, kết
thúc frame data sẽ kèm thêm 1 mã kiểm tra lỗi CRC Khi muốn dừng đọc thì Host
lại gửi 1 lệnh yêu cầu dừng và Card sau khi gửi tín hiệu phản hồi sẽ kết thúc quá
Trang 33 Giao diện APB2 truy cập tới thanh ghi của nguồn SDMMC, bộ tạo ngắt và tín hiệu yêu cầu DMA
Hình 2-10 Sơ đồ khối SDMMC
SDMMC_D[7:0] là các chân truyền data SDMMC_CMD có 2 chế độ là Open-drain và Push_pull DSMMC_CK là chân giữ xung clock 1 bit được truyền trên cả 2 dây command và data trong mỗi chu kỳ xung clock
Bảng 2.4 :Chức năng các chân của SDMMC
SDMMC_CK Ngõ ra Chân xung clock cho MMC/SD/SDIO Xung
clock được truyền từ host tới card
SDMMC_CMD Vào/Ra Chân mã lệnh cho MMC/SD/SDIO
SDMMC[7:0] Vào/Ra Chân dữ liệu cho MMC/SD/SDIO
Trang 34Chương 3: TÍNH TOÁN_THIẾT KẾ
Yêu cầu của đề tài là máy chơi game mini hiển thị trên màn hình có cảm ứng để thao tác đồng thời có thêm tay cầm PS2 để tạo tín hiệu điều khiển Có bộ phận phát âm thanh tăng tính hấp dẫn cho trò chơi
Chương này sẽ tập trung phân tích, lựa chọn linh kiện cho phù hợp với yêu cầu của đề tài Trình bày sơ đồ kết nối, mạch nguyên lý của các module lại với nhau
3.3.1 Thiết kế sơ đồ khối
Với những yêu cầu của hệ thống, tôi thiết kế sơ đồ khối tổng quát cho hệ thống như sau:
KHỐI ĐIỀU KHIỂN
KHỐI NÚT NHẤN
KHỐI CẢM ỨNG
KHỐI HIỂN THỊ
KHỐI NGUỒN
KHỐI
ÂM THANH
Hình 3-1 Sơ đồ khối hệ thống
Trang 35Trong sơ đồ bao gồm các khối:
Khối nguồn: Cung cấp nguồn hoạt động cho các phần cứng trong hệ thống
Khối hiển thị: Màn hình hiển thị giao diện Game
Khối âm thanh: Nhận lệnh và dữ liệu từ khối điều khiển phát tín hiệu
âm thanh ra loa
Khối cảm ứng: Đọc trạng thái nhấn/thả, trả về tọa độ trên màn hình
Khối tay cầm: Các nút nhấn điều khiển và chức năng
Khối điều khiển: Điều khiển các quá trình giao tiếp, truyền nhận giữa các module Nhận tín hiệu điều khiển từ tay cầm, đọc dữ liệu từ thẻ nhớ, xuất hình ảnh ra khối hiển thị, xuất tín hiệu âm thanh
3.3.2 Tính toán và thiết kế mạch
a Khối điều khiển, cảm ứng và hiển thị
Khối hiển thị: Yêu cầu là màn hình LCD kích thướt từ 4-5inch để phù hợp với các game mini, hiện đa màu sắc giúp trò chơi thêm bắt mắt
Khối cảm ứng: Phải là một màn cảm ứng dán chồng lên màn hình LCD để người chơi có thể tác động trực tiếp lên màn hình khi sử dụng
Khối điều khiển chức năng chính: xử lý dữ liệu nhận từ tay cầm và cảm ứng đồng thời xuất dữ liệu ra màn hình hiển thị và module giải mã âm thanh
Để thực hiện những yêu cầu trên thì cần một KIT với vi điều khiển hoạt động tốc độ cao để xử lý hình ảnh với tần số cao được mượt, ít hiện tượng giật Có các chuẩn giao tiếp truyền thông để giao tiếp với các module ngoại vi, có kết nối sẵn với màn hình TFT-LCD hoặc có ra chân để kết nối với LCD rời Đáp ứng được như vậy thì có các loại KIT của dòng vi điều khiển STM32, FRKL46Z qua quá trình tìm hiểu và đã có sử dụng từ trước cũng như sự hướng dẫn của GVHD, tôi quyết định chọn vi điều khiển STM32 mà cụ thể là KIT DISCOVERY STM32F746NGHx với những thông số cơ bản như sau:
Vi điều khiển STM32F746G với 1Mbytes bộ nhớ Flash và 340 Kbytes RAM
Trang 36 Màn hình TFT LCD kích thướt 4.2” với độ phân giải 480x272 pixel tích hợp cảm ứng điện dung
Arduino Connectors với ARDUINO UNO R3, các pin ra còn là các pin của các chuẩn giao tiếp cơ bản như SPI, UART, I2C, nguồn
Hỗ trợ khe cắm thẻ thẻ SD card
Nguồn vào 5v có thể cấp từ nhiều nơi trên KIT
Hỗ trợ lập trình bằng phần mềm STM32Cube và gói thư viện của STmicroelectronics
Hình 3-2 Mặt trên của KIT
Với Arduino Connectors[5] bao gồm có 4 cụm CN4, CN5, CN6, CN7 với thông tin như sau:
Chức năng
Chức năng
Chân STM32 Tên Số
Trang 371 NC - - I2C1_SDA PB9 D14 9
3.3V input /output
PB15 D11 4
Power input
PI0 D5 6
Trang 384 A3 PF8 ADC3_IN6 TIM3_CH1 PB4 D3 4
5 A4
PF7
or PB9
ADC3_IN5 (PF7)
or I2C1_SDA (PB9)
6 A5
PF6
or PB8
ADC3_IN4 (PC0)
or I2C1_SCL (PB8)
USART6_TX PC6 D1 2
USART6_RX PC7 D0 1
Hình 3-3 Sơ đồ bố trí Arduino Connectors, SD card adapter
Như vậy, với KIT này ta đã có khối điều khiển, khối hiển thị và khối cảm ứng vừa tinh gọn vừa đáp ứng yếu tố thẩm mỹ, kỹ thuật đối với 1 máy chơi game
Trang 39b Khối tay cầm
Ngoài việc người chơi có thể thao tác trên màn hình cảm ứng thì một số game cần có tay cầm để dễ dàng thao tác khi sử dụng Qua tìm hiểu thì tay cầm PS2, Xbox đáp ứng đầy đủ yêu cầu này nhưng Xbox giá khá cao nên tôi quyết định chọn PS2: Giá thành hợp lí, dễ dàng giao tiếp, kết nối, cầm nắm dễ dàng thuận tiện cho người sử dụng
Hình 3-4 Tay cầm PS2
Như đã trình bày ở Chương 2 thì tay cầm này giao tiếp theo chuẩn SPI vì vậy
ta kết nối tay cầm với KIT thông qua Arduino Connectors
KIT STM32F746NGHx ra chân với 4 cụm mở rộng bao gồm CN4, CN5, CN6, CN7
Từ bảng 3.1 ta thấy để kết nối SPI cho PS2 ta sử dụng 3 chân SPI2_MOSI, SPI2_MISO, SP2_SCK với thứ tự tên D11, D12, D13 của cụm CN7 Ngoài ra còn
Trang 40c Khối âm thanh
Âm thanh đối với 1 máy chơi game là không thể thiếu, nó làm trò chơi thêm sinh động, tạo được hiệu ứng cho người sử dụng Khối này với nhiệm vụ chính là phát âm thanh định dạng MP3 được lưu trong thẻ nhớ ra trong suốt quá trình chơi game Các Module như MP3-LT108, TF-GM4563 hay VS1003 đều chạy tốt yêu cầu trên, tuy nhiên do có nghiên cứu từ trước nên tôi quyết định chọn module VS1003 Module này với chip VS1003 có thể phát được file nhạc định dạng MP3 như yêu cầu, có jack cắm tay nghe 3.5mm để kết nối với loa ngoài, ngoài ra module này giao tiếp theo chuẩn SPI nên ta có thể sử dụng chung với tay cầm PS2 thông qua các chân CS khác nhau
Hình 3-5 Sơ đồ khối nối STM32F746 với PS2