Trên thị trường có nhiều tay cầm kết nối khơng dây chơi game, chúng thiết kế nhỏ gọn phù hợp với người chơi Tuy nhiên thường tay cầm có giá thành cao, kèm theo chơi số game định, game thường người chơi hay cấu hình game theo ý tay cầm khơng có tính thay đởi cấu hình để phù hợp cấu hình game mà người chơi cấu hình trước điều phần dẫn đến cảm giác khó chịu chơi game Vì lý này, nhóm thực chọn đề tài “ THIẾT KẾ KEY BOARD GAME"
Trang 1KHOA ĐIỆN – ĐIỆN TỬ
BỘ MÔN KỸ THUẬT MÁY TÍNH – VIỄN THÔNG
===== ● =====
ĐỒ ÁN MÔN HỌC 2 THIẾT KẾ KEYBOARD GAME
GVHD : PGS.TS Phan Văn Ca
SVTH : Đào Minh Thuấn 15119138
Nguyễn Văn Phú 15119118 Ngành : Công nghệ kỹ thuật máy tính
Tp Hồ Chí Minh, tháng 5 năm 2019
Trang 2PHIẾU NHẬN XÉT CỦA GIẢNG VIÊN
Họ và tên Sinh viên: Đào Minh Thuấn MSSV: 15119138
Nguyễn Văn Phú MSSV: 15119118
Ngành: Công nghệ kỹ thuật máy tính
Tên đề tài: Thiết kế KeyBoard Game
Họ và tên Giáo viên phản biện:
NHẬN XÉT
1 Về nội dung đề tài & khối lượng thực hiện:
2 Ưu điểm:
3 Khuyết điểm:
4 Đề nghị cho bảo vệ hay không?
5 Đánh giá loại:
6 Điểm:………….(Bằng chữ: )
Tp Hồ Chí Minh, ngày tháng năm 2019
Giảng viên phản biện
Trang 3MỤC LỤC
DANH MỤC HÌNH -i
DANH MỤC B ẢNG - ii
LỜI MỞ ĐẦU - iii
LỜI CẢM ƠN - iv
DANH SÁCH CÁC TỪ VIẾT TẮT - v
CHƯƠNG 1 : TỔNG QUAN - 1
1.1 Tình hình nghiên cứu hiện nay - 1
1.2 Lý do chọn đề tài - 1
1.3 Mục tiêu c ủa đề tài - 1
1.4 Đối tượng nghiên cứu - 2
1.5 Phương pháp nghiên cứu - 2
1.6 Bố cục đồ án - 2
CHƯƠNG 2 : CƠ SỞ LÝ THUYẾT - 4
2.1 Tổng quan về chuẩn truyền I2C - 4
2.2 Tổng quan về chuẩn truyền UART - 5
2.3 Tổng quan về RTOS - 6
2.4 Ngôn ngữ P YTHON - 7
2.5 Tương tác với cơ sở dữ liệu - 9
2.6 Chip ST32F103C8T6 - 10
2.7 Module Joystick - 11
2.8 Module MPU6050 - 12
2.9 Mạch sạc TP4056 - 13
2.10 Module Bluetooth HC05 - 14
2.11 IC nguồn LM1117T 3v3 - 16
CHƯƠNG 3 : THIẾT KẾ VÀ XÂY DỰNG HỆ THỐNG - 17
3.1 Giới thiệu và tóm tắt - 17
3.1.1 Yêu cầu chung c ủa hệ thống - 17
3.1.2 Đặc tả hệ thống - 17
Trang 43.2 Sơ đồ khối - 17
3.3 Thiết kế phần cứng - 21
3.3.1 Khối cảm biến - 21
3.3.2 Khối giao tiếp - 21
3.3.3 Khối nguồn - 22
3.3.4 Khối xử lý trung tâm - 22
3.4 Thiết kế phần mềm - 23
3.4.1 Các thành phần - 23
3.4.2 Lưu đồ giải thuật phần mềm - 24
CHƯƠNG 4: KẾT QUẢ THỰC HIỆN - 27
4.1 Phần cứng - 27
4.1.1 Các công c ụ sử dụng - 27
4.1.2 Schematic - 27
4.1.3 Mạch PCB - 28
4.2 Giao diện phần mềm trên máy tính - 28
4.3 Database - 29
CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN - 30
5.1 Kết luận - 30
5.2 Hướng phát triển - 30
TÀI LIỆU THAM KHẢO - 31
PHỤ LỤC - 32
Trang 5DANH MỤC HÌNH
Hình 2.1 Giao tiếp I2C. - 4
Hình 2.2 Giao tiếp UART - 5
Hình 2.3.1 CPU xử lý các Task - 6
Hình 2.3.2 Trạng thái các Task - 7
Hình 2.4 Logo Python - 8
Hình 2.5 Ví dụ về 1 cơ sở dữ liệu - 9
Hình 2.6 STM32F103C8T6 Pinout - 10
Hình 2.7 Module Joystick - 12
Hình 2.8 Module MPU6050. - 12
Hình 2.9 Mạch sạc TP4056 - 13
Hình 2.10 Module HC05 - 14
Hình 2.11 IC nguồnLM1117T - 16
Hình 3.1 Sơ đồ khối của hệ thống - 18
Hình 3.2 Lưu đồ - 25
Hình 4.1.1 Schematic - 27
Hình 4.1.2 P CB - 28
Hình 4.1.3 Mô hình hoàn thiện - 28
Hình 4.2 Giao diện phần mềm - 29
Hình 4.3 Giao diện database - 29
Trang 6DANH MỤC BẢNG
Bảng 3.2.1 So sánh các dòng vi xử lý - 19Bảng 3.2.2 So sánh các công nghệ không dây. - 20
Trang 7LỜI MỞ ĐẦU
Trên thị trường hiện tại có rất nhiều tay cầm kết nối không dây chơi game, chúng thì được thiết kế khá nhỏ gọn phù hợp với người chơi Tuy nhiên thường những tay cầm này có giá thành rất cao, kèm theo đó là chỉ có thể chơi một số game nhất định, với lại trong các game thường thì người chơi hay cấu hình game theo ý của mình nhưng đối với các tay cầm hiện tại hầu như không có tính năng là thay đổi cấu hình để phù hợp cấu hình game mà người chơi đã cấu hình trước đó điều này phần nào dẫn đến cảm giác khó chịu khi đang chơi game
Vì những lý do này, nhóm thực hiện đã chọn đề tài “ THIẾT KẾ KEY BOARD
GAME" trong quá trình thực hiện đề tài này, không tránh khỏi những sai sót do kiến
thức có giới hạn, cũng như tham khảo từ nhiều nguồn tài liệu từ internet, sách, báo,… Rất mong nhận được sự đóng góp của quý thầy cô và bạn bè để đề tài thực hiện thành công và phát triển hơn nữa
Trang 8LỜI CẢM ƠN
Đầu tiên, nhóm thực hiện đề tài xin gửi lời cảm ơn sâu sắc và chân thành đến thầy
PHAN VĂN CA đã tận tình giúp đỡ, chỉ bảo, hướng dẫn nhóm thực hiện trong suốt quá
trình thực hiện đề tài này Trong thời gian làm việc với thầy, nhóm không những tiếp thu thêm nhiều kiến thức bổ ích mà còn học tập được tinh thần làm việc, thái độ nghiên cứu khoa học nghiêm túc hiệu quả của thầy Đây là những điều cần thiết cho nhóm trong quá trình học tập và công tác sau này
Nhóm thực hiện cũng xin chân thành cảm ơn các bạn ngành công nghệ kỹ thuật máy tính lớp 151191A , đã luôn đồng hành, giúp đỡ để nhóm có thể thực hiện đề tài này thành công
Quá trình biên soạn báo cáo khó có thể tránh hoàn toàn các sai phạm Kính mong nhận được lời góp ý mang tính xây dựng từ mọi người
Người thực hiện
Đào Minh Thuấn Nguyễn Văn Phú
Trang 9DANH SÁCH CÁC TỪ VIẾT TẮT
I2C Inter-Integrated Circuit Giao tiếp một thiết bị chủ
với nhiều thiết bị tớ
Receiver Transmitter
Bộ truyền nhận nối tiếp bất đồng bộ
ARM Acorn RISC Machine Là 1 loại cấu trúc vi xử lý
32 bit kiểu RISC (thuộc kiến trúc Harvard, tập lệnh rút gọn)
Interface
Giao diện lập trình ứng dụng
Trang 10
CHƯƠNG 1 : TỔNG QUAN 1.1 Tình hình nghiên cứu hiện nay
Hiện nay, xã hội ngày phát triển và khoa học kỹ thuật ngày càng tiên tiến hơn thì nhu cầu về kỹ thuật càng được quan tâm và phát triển hơn Đặc biệt là những công trình nghiên cứu khoa học nhằm thiết kế ra những sản phẩm ứng dụng có ý nghĩa thiết thực vào cuộc sống
1.2 Lý do chọn đề tài
Trong quá trình học tập thì chúng em đã học được nhiều loại vi điều khiển như: avr, pic, 8051,…Và trên hết là chip Arm cụ thể là dòng arm cortex m3 đại diện là chip STM32F103C8T6 Ngoài ra cũng được làm việc với nhiều module, cảm biến Và bây giờ thông qua đồ án môn học 2 này, nhóm thực hiện muốn tạo ra một sản phẩm sử dụng các tính năng của chip STM32F103C8T6 và các module, cũng như khả năng hàn chip dán
Nên nhóm quyết định chọn đề tài: “Thiết kế Keyboard Game”
1.3 Mục tiêu của đề tài
Đề tài triển khai nghiên cứu hướng tới mục tiêu sau:
Theo dõi các giá trị góc nghiêng thông qua cảm biến MPU6050, tử các góc nghiêng
đó sẽ bắt đầu gửi các lệnh tương ứng
Điều khiển led RGB
Điều khiển module Joystick
Điều khiển các nút nhấn
Gửi các chuỗi điều khiển thông qua Bluetooth
Phần mềm trên máy tính sau khi nhận được các chuỗi sẽ tiến hành gửi các lệnh điều khiển tương ứng để điều khiển game
Phần mềm có thể thiết lập cấu hình game và lưu thiết lập đó trên database
Trang 111.4 Đối tượng nghiên cứu
Chip STM32F103C8T6, Module Joystick, cảm biến MPU6050, module HC05, nút nhấn, LM1117T 3v3, mạch sạc TP4056
Chuẩn giao thiếp I2C
Chuẩn giao tiếp UART
RTOS
Ngôn ngữ Python
Tương tác với cơ sở dữ liệu
1.5 Phương pháp nghiên cứu
Trong đề tài này, nhóm đã sử dụng các phương pháp nghiên cứu sau:
Phương pháp tham khảo tài liệu: bằng cách thu thập thông tin từ sách, tạp chí về điện tử, truy cập từ mạng internet
Phương pháp quan sát: khảo sát một số mạch điện từ mạng internet, khảo sát các tay cầm người ta tự chế
Phương pháp khảo sát và thực nghiệm: từ những ý tưởng và kiến thức của nhóm, kết hơp sự hướng dẫn của giáo viên, nhóm đã thiết kế thử nghiệm thành công tay cầm chơi game
1.6 Bố cục đồ án
Chương 1: Tổng quan
Giới thiệu sơ lược về tình hình nghiên cứu hiện nay cũng như đối tượng nghiên cứu, phương pháp nghiên cứu
Chương 2: Cơ sở lý thuyết
Nêu các lý thuyết cần thiết của các cảm biến, chuẩn giao tiếp, giao thức sử dụng trong đề tài
Chương 3: Thiết kế và xây dựng hệ thống
Trình bày sơ đồ hệ thống và giải thích hoạt động của hệ thống
Trang 12Đưa ra các phương pháp lựa chọn phần cứng và xác định lựa chọn phù hợp với yêu cầu của đề tài
Chương 4: Kết quả thực hiện
Tính toán đưa ra giải thuật, thuật toán phần mềm
Trình bày kết quả đã thực hiện về phần cứng và phần mềm
Chương 5: Kết luận và hướng phát triển
Nêu các ưu điểm và các điểm cần cải thiện của đề tài, hướng khắc phục và hướng phát triển trong tương lại
Trang 13CHƯƠNG 2 : CƠ SỞ LÝ THUYẾT
Để tiến hành thiết kế phần cứng cũng như phần mềm nhóm đã tìm hiểu một số khái niệm sau:
2.1 Tổng quan về chuẩn truyền I2C
I2C là một loại bus nối tiếp được phát triển bởi hãng sản xuất linh kiện điện tử Philips Ban đầu, loại bus này chỉ được dùng trong các linh kiện điện tử của Philips Sau
đó, do tính ưu việt và đơn giản của nó, I2C đã được chuẩn hóa và được dùng rộng rãi trong các module truyền thông nối tiếp của vi mạch tích hợp ngày nay Địa chỉ của thiết
bị tớ thường do nhà chế tạo thiết bị thiết lập sẵn
I2C sử dụng hai đường truyền tín hiệu: một đường xung nhịp đồng hồ (SCL) có chức năng cấp xung clock để dịch chuyển dữ liệ và một đường dữ liệu (SDA) có chức năng truyền tải dữ liệu SCL và SDA luôn được kéo lên nguồn bằng một điện trở kéo lên
có giá trị xấp xỉ 4,7 KOhm Các chế độ hoạt động của I²C bao gồm:
Chế độ chuẩn (standard mode) hoạt động ở tốc độ 100 Kbit/s
Chế độ tốc độ thấp (low-speed mode) hoạt động ở tốc độ 10 Kbit/s
Trong hệ thống truyền dữ liệu I²C, thiết bị nào cấp xung clock được gọi là thiết bị chủ (master), thiết bị nhận xung clock được gọi là tớ (slave) Thiết bị chủ có 1, thiết bị tớ
có nhiều, mỗi thiết bị tớ có 1 địa chỉ độc lập, chuẩn truyền ban đầu dung địa chỉ 7 bit nên
có thể giao tiếp với 128 thiết bị tớ Các thiết bị sau này được tang số bit địa chỉ lên nên giao tiếp nhiều thiết bị hơn
Hình 2.1 Giao tiếp I2C
Trang 142.2 Tổng quan về chuẩn truyền UART
UART là “Universal Asynchronous Receiver / Transmitter” Nó là một vi mạch sẵn
có trong một vi điều khiển nhưng không giống như giao thức truyền thông (I2C & SPI) Chức năng chính của UART là truyền dữ liệu nối tiếp Trong UART, giao tiếp giữa hai thiết bị có thể được thực hiện theo hai cách là giao tiếp dữ liệu nối tiếp và giao tiếp dữ liệu song song
Hình 2.2 Giao tiếp UART
Trong giao tiếp dữ liệu nối tiếp, dữ liệu có thể được truyền qua một đường dây Truyền thông dữ liệu nối tiếp không đắt khi chúng ta so sánh với giao tiếp song song Nó đòi hỏi rất ít mạch cũng như dây
Trong giao tiếp này, có hai loại UART có sẵn là truyền UART và nhận UART và giao tiếp giữa hai loại này có thể được thực hiện trực tiếp với nhau Đối với điều này, chỉ cần hai cáp để giao tiếp giữa hai UART Luồng dữ liệu sẽ từ cả hai chân truyền (Tx) và nhận (Rx) của UARTs Trong UART, việc truyền dữ liệu từ Tx UART sang Rx UART có thể được thực hiện không đồng bộ
Ưu điểm và nhược điểm của UART
Những ưu và nhược điểm của UART bao gồm những điều sau đây
Nó chỉ cần hai dây để truyền dữ liệu
Tín hiệu CLK là không cần thiết
Nó bao gồm một bit chẵn lẻ để cho phép kiểm tra lỗi
Sắp xếp gói dữ liệu có thể được sửa đổi vì cả hai mặt được sắp xếp
Kích thước khung dữ liệu tối đa là 9 bit
Nó không chứa một số hệ thống phụ (hoặc)
Tốc độ truyền của UART phải ở mức 10% của nhau
Trang 152.3 Tổng quan về RTOS
Hệ điều hành thời gian thực – RealTime Operating Systems(RTOS), là phần mềm điều khiển chuyên dụng thường được dùng trong những ứng dụng nhúng có tài nguyên bộ nhớ hạn chế và yêu cầu ngặt nghèo về thời gian đáp ứng tức thời, tính sẵn sàng cao và khả năng tự kiểm soát một cách chính xác
Một hệ điều hành có thể:
Cho phép nhiều chương trình chạy cùng 1 lúc (multi-tasking)
Có quản lý tài nguyên về phần cứng và cung cấp các dịch vụ cho các chương trình khác
Khi nào bạn cần sử dụng RTOS ?
Tại sao lại phải dùng RTOS ?
Chia sẻ tài nguyên một cách đơn giản: cung cấp cơ chế để phân chia các yêu cầu về bộ nhớ và ngoại vi của MCU
Dễ debug và phát triển: Mọi người trong nhóm có thể làm việc một cách độc lập, các lập trình viên thì có thể tránh được các tương tác với ngắt, timer, với phần cứng (cái này mình không khuyến khích lắm vì hiểu được phần cứng vẫn sẽ tốt hơn nhiều)
Tăng tính linh động và dễ dàng bảo trì: thông qua API của RTOS,…
Các khái niệm cơ bản
Kernel
Hình 2.3.1 CPU xử lý các Task
Trang 16Kernel sẽ có nhiệm vụ quản lý nhiều task cùng chạy 1 lúc, mỗi task thường chạy mất vài
ms Tại lúc kết thúc task thường:
Lưu trạng thái task
Thanh ghi CPU sẽ load trạng thái của task tiếp theo
Task tiếp theo cần khoảng vài ms để thực hiện
Vì CPU thực hiện tác vụ rất nhanh nên dưới góc nhìn người dùng thì hầu như các task là
được thực hiện 1 cách liên tục
Trang 17Hình 2.4 Logo Python
Python là ngôn ngữ có hình thức khá đơn giản và rõ ràng, do đó tạo nên sự dễ dàng tiếp cânh cho những lập trình viên mới bắt đầu
Ban đầu, Python được phát triển để chạy trên nền Unix Nhưng rồi theo thời gian,
nó đã "bành trướng" sang mọi hệ điều hành từ MS-DOS đến Mac OS, OS/2, Windows, Linux và các hệ điều hành khác thuộc họ Unix Mặc dù sự phát triển của Python có sự đóng góp của rất nhiều cá nhân, nhưng Guido van Rossum hiện nay vẫn là tác giả chủ yếu của Python Ông giữ vai trò chủ chốt trong việc quyết định hướng phát triển của Python
Một số tính chất của Python
Python is Interpreted: Nhờ chức năng thông dịch mà trình thông dịch (Interpreter) của Python có thể xử lý lệnh tại thời điểm chạy chương trình (runtime) Nhờ đó mà ta không cần biên dịch chương trình trước khi thực hiện nó (tương tự như Perl và PHP)
Python is Interactive: Tính năng tương tác của Python giúp ta có thể tương tác trực tiếp với trình thông dịch của nó ngay tại dấu nhắc lệnh Cụ thể: Ta có thể thực hiện lệnh một cách trực tiếp tại dấu nhắc của Python
Python is Object-Oriented: Python hỗ trợ mạnh cho phong cách lập trình hướng đối tương
và kỹ thuật lập trình gói mã trong đối tượng
Python is a Beginner's Language: Mặc dầu Python được xem là ngôn ngữ lập trình dành cho những ai mới làm quen với việc lập trình trên máy tính, nhưng nó hỗ trợ mạnh cho việc phát triển nhiều loại ứng dụng khác nhau, từ các chương trình xử lý văn bản đơn giản đến các ứng dụng web, đến các chương trình game,…
Tính năng
Python là một ngôn ngữ lập trình dễ học, dễ đọc Python tăng cường sử dụng từ khóa tiếng Anh, hạn chế các kí hiệu và cấu trúc cú pháp so với các ngôn ngữ khác
Mã nguồn của Python là tương đối dễ để bảo trì và duy trì và có khả năng mở rộng
Python có một tiêu chuẩn thư viện rộng, có nền tảng tương thích trên nhiều hệ điều hành hiện nay như: UNIX, Windows, and Macintosh Đây cũng là một trong những điểm mạnh đáng kể của Python
Trang 18Python có thể được sử dụng như ngôn ngữ script, hoặc ngôn ngữ biên dịch, nhờ đó mà ta
có thể buil các chương trình lớn trên nó
Khi chế độ Interactive, ta có thể nhập kết quả từ các đầu cuối khác nhau vào chương trình Python,do đó mà việc test hay debug lỗi code trở nên đơn giản hơn
Python cho phép người dùng tích hợp vào các module để có thể sử dụng trong các chương trình khác Nó cũng cung cấp sẵn một tập hợp các modules chuẩn mà lập trình viên có thể
sử dụng lại trong chương trình của họ Các module này cung cấp nhiều chức năng hữu ích, như các hàm truy xuất tập tin, các lời gọi hệ thống, trợ giúp lập trình mạng (socket),… Python cung cấp giao diện cho tất cả các cơ sở dữ liệu thương mại lớn
Có thế dễ dàng tích hợp với C, C++, COM, CORBA, ActiveX, Java
2.5 Tương tác với cơ sở dữ liệu
Cơ sở dữ liệu là tập hợp dữ liệu được tổ chức có cấu trúc liên quan với nhau và được lưu trữ trong máy tính.CSDL được thiết kế, xây dựng cho phép người dùng lưu trữ dữ liệu, truy xuất thông tin hoặc cập nhật dữ liệu.CSDL được tổ chức có cấu trúc Các dữ liệu được lưu trữ có cấu trúc thành các bản ghi (record), các trường dữ liệu (field) Các dữ liệu lưu trữ có mối quan hệ (relation) với nhauCSDL được cấu trúc để dễ dàng truy cập, quản lý và cập nhật
Hình 2.5 Ví dụ về 1 cơ sở dữ liệu
Quản lý dữ liệu là quản lý một số lượng lớn dữ liệu, bao gồm cả việc lưu trữ và cung cấp
cơ chế cho phép Thao tác (thêm, sửa, xóa dữ liệu) và Truy vấn dữ liệu Hai phương pháp quản lý dữ liệu: Hệ thống quản lý bằng file và Hệ thống quản lý bằng CSDL
Quản lý dữ liệu bằng file
Dữ liệu được lưu trữ trong các file riêng biệt Ví dụ: các chương trình lưu trữ thông tin bằng hệ thống các file dạng text
Trang 19Nhược điểm của việc quản lý bằng file:
Dư thừa và mâu thuẫn dữ liệu
Kém hiệu quả trong truy xuất ngẫu nhiên hoặc xử lý đồng thời
Dữ liệu lưu trữ rời rạc
Gặp vấn đề về an toàn và bảo mật
Quản lý dữ liệu bằng CSDL
Quản lý dữ liệu bằng CSDL giúp dữ liệu được lưu trữ một cách hiệu quả và có tổ chức, cho phép quản lý dữ liệu nhanh chóng và hiệu quả
Thao tác với dữ liệu
Sử dụng các câu lệnh SELECT,INSERT, UPDATE, DELETE để tương tác với dữ liệu trong cơ sở dữ liệu
2.6 Chip ST32F103C8T6
Hình 2.6 STM32F103C8T6 Pinout
Thông số kỹ thuật:
Chip STM32F103C8T6 có kích thước core: 32 bit (bộ xử lý 32 bit)
Kích thước bộ nhớ lưu trữ chương bộ nhớ chương trình: 64kB và là kiểu bộ nhớ FLASH
Kích thước RAM: 20K x 8
Số chân I/O: 37
Trang 20 Tốc độ 72Mhz
Hoạt động ở nhiệt độ từ - 40 đến 85 độ C
Liên kết: CAN, I²C, IrDA, LIN, SPI, UART/USART, USB
Ngoại vi: DMA, Motor Control PWM, PDR, POR, PVD, PWM, Temp Sensor, WDT
Khả năng hoạt động liên tục 24/7
Khả năng debug chương trình mạnh Vì sử dụng chuẩn nạp code JATG
Trang 21Hình 2.7 Module Joystick
Sơ đồ chân của module Joystick:
5V: Chân cấp nguồn 5V
GND: Chân nối đất
VRX: Chân này trả về giá trị ADC trên trục x
VRY: Chân này trả về giá trị ADC trên trục y
2 hướng điều khiển X và Y
Điện áp vào: 5V hoặc 3v3
2.8 Module MPU6050
Hình 2.8 Module MPU6050
Cảm biến GY-521 6DOF IMU MPU6050 được sử dụng để đo 6 thông số: 3 trục Góc quay (Gyro), 3 trục gia tốc hướng (Accelerometer), là loại cảm biến gia tốc phổ biến nhất trên thị trường hiện nay
Trang 22Sơ đồ chân của MPU6050:
VCC: Chân cấp nguồn từ 3 – 5V
GND: Chân nối đất
SCL: Chân này có chức năng nhận xung clock từ phía bên Master
SDA: Chân này có chức năng truyền tải dữ liệu thông qua I2C
XDA (Auxiliary Serial Data), XCL (Auxiliary Serial Clock): Nó có thể được sử dụng cho giao diện khác mô-đun I2C khác với MPU6050
AD0: Nếu có nhiều hơn một MPU6050 được sử dụng một MCU, thì pin này có thể được sử dụng để thay đổi địa chỉ
INT: Chân này được sử dụng để chỉ ra rằng dữ liệu có sẵn để MCU đọc
Thông tin kỹ thuật:
Điện áp sử dụng: 3~5VDC
Điện áp giao tiếp: 3~5VDC
Chuẩn giao tiếp: I2C
Giá trị Gyroscopes trong khoảng: +/- 250 500 1000 2000 degree/sec
Giá trị Acceleration trong khoảng: +/- 2g, +/- 4g, +/- 8g, +/- 16g
Chức năng: Trả về giá trị Accelerometer 3 trục x,y,z Từ đó ta tính các góc nghiêng, và từ
các góc đó sẽ có những chuỗi lệnh truyền tương ứng đến máy tính Chúng ta chỉ dùng đại lượng gia tốc hướng (Accelerometer) còn đại lượng còn lại không dùng
2.9 Mạch sạc TP4056
Hình 2.9 Mạch sạc TP4056
Mạch sạc pin Lithium TP4056 (1A) V2 là phiên bản nâng cấp của Mạch sạc pin Lithium TP4056 (1A) thêm chức năng ngắt tải bảo vệ pin khi điện áp xuống quá thấp để tránh làm hư hỏng pin (chai pin), mạch được sử dụng để sạc cho các loại pin Lithium có điện áp 3.7~4.2VDC (Pin Lipo, Pin 18650, ), mạch có kích thước nhỏ gọn với cổng USB
Trang 23kết nối tiện dụng, đèn báo đang sạc và sạc đầy hiển thị trạng thái pin, thích hợp cho các ứng dụng sử dụng pin sạc: Robot, mạch cảm biến không dây,
Sơ đồ chân của mạch sạc TP4056
IN+,IN-: Là ngõ vào cấp nguồn từ 4.5 đến 8V
Cổng USB: Ngõ vào cấp nguồn 5VDC
B+,B-: Là ngõ ra dùng để sạc pin
OUT+,OUT-: Nối với tải
Lưu ý: Khi cấp nguồn thì chỉ duy nhất sử dụng cổng INT+,INT- hoặc cổng USB không
được sử dụng cả 2
Thông sỗ kỹ thuật:
IC chính: TP4056
Nguồn đầu vào:
o 4.5~8VDC: Chân nguồn vào + / -
o 5VDC qua cổng Micro USB
Nguồn sạc đầy: 4.2VDC
Dòng sạc: 1A có thể biến đổi theo trạng thái pin
Chức năng ngắt tải bảo vệ pin khi điện áp xuống quá thấp để tránh làm hư hỏng pin (chai pin)
Trang 24Bluetooth là chuẩn truyền thông không dây để trao đổi dữ liệu ở khoảng cách ngắn.Chuẩn truyền thông này sử dụng sóng radio ngắn(UHF radio) trong dải tần số ISM (2.4 tới 2.485 GHz) Khoảng cách truyền của module này vào khoảng 10m Module này được thiết kế dựa trên chip BC417 Con chip này khá phức tạp và sử dụng bộ nhớ flash ngoài 8Mbit Nhưng việc sử dụng module này hoàn toàn đơn giản bởi nhà sản xuất đã tích hợp mọi thứ cho bạn trên module HC-05
Sơ đồ chân của module gồm có:
KEY: là chân chọn chế độ hoạt động ATMode hay DataMode
VCC: Chân này có thể cấp nguồn từ 3.6 – 6V bên trong module đã có IC nguồn chuyển đổi về điện áp 3v3 cấp cho chip BC417
GND: Nối với chân GND
TXD, RXD: Đây là 2 chân UART dùng để giao tiếp hoạt động mức điện áp 3v3
STATE: Chân trạng thái, không quan tâm nên thả nổi
Module thu phát bluetooth HC-05 dùng để thiết lập kết nối Serial giữa 2 thiết bị bằng sóng bluetooth Điểm đặc biệt của module bluetooth HC-05 là module có thể hoạt động được ở 2 chế độ: MASTER hoặc SLAVE Trong khi đó, bluetooth module HC-06 chỉ hoạt động ở chế độ SLAVE
+ Ở chê độ SLAVE: bạn cần thiết lập kết nối từ smartphone, laptop, usb bluetooth để dò
tìm module sau đó pair với mã PIN là 1234 Sau khi pair thành công, bạn đã có 1 cổng serial từ xa hoạt động ở baud rate 9600
+ Ở chế độ MASTER: module sẽ tự động dò tìm thiết bị bluetooth khác (1 module
bluetooth HC-06, usb bluetooth, bluetooth của laptop ) và tiến hành pair chủ động mà không cần thiết lập gì từ máy tính hoặc smartphone
Trang 25 Công suất cực đại 5W
Dòng điện đầu ra cực đại 1,5A
Dải nhiệt độ hoạt động: 0 đến 125 độ
Trang 26CHƯƠNG 3 : THIẾT KẾ VÀ XÂY DỰNG HỆ THỐNG
Sau khi nhóm đã tìm hiểu một số khái niệm liên quan cần thiết, nhóm tiến hành thiết kế
và xây dựng phần cứng cũng như phần mềm
3.1 Giới thiệu và tóm tắt
3.1.1 Yêu cầu chung của hệ thống
Với tiêu chi thiết kế, làm một tay cầm có thể chơi được nhiều loại game Hệ thống
có các tính năng như sau:
Tay cầm chơi game kết nối không dây
Tương tác với máy tính
Tốc độ xử lý nhanh, tiết kiệm năng lượng
Giá cả hợp lý
Kích thước nhỏ gọn
Chơi được nhiều loại game: nhập vai hành động, đua xe Ví dụ: Samurai, Đấu trường thú, Asphalt,…
Có thể thiết lập được chức năng của mỗi nút trên tay cầm thông qua phần mềm
Lựa chọn thể loại game , hoặc xem lại thiết lập trước đó thông qua phần mềm kết nối với cơ sở dữ liệu
3.1.2 Đặc tả hệ thống
Với các yêu cầu của hệ thống trên nhóm đã tiến hành đề ra các phương án thiết kế cho phần cứng như sau:
Khối nguồn: cung cấp cho toàn bộ hệ thống
Khối giao tiếp: truyền tín hiệu điều khiển điến khối xự lý trung tâm
Khối xử lý trung tâm: đọc các giá trị từ các khối gaio tiếp và cảm biển sau đó gửi qua máy tính xử lý thông qua khối truyền thông
Khối cảm biến: Gửi các giá trị góc nghiêng đến khối xử lý trung tâm
Khối truyền thông: Gửi các dữ liệu từ khối cảm biến và khối giao tiếp đến máy tính Sau đó máy tính sẽ xử lý các dữ liệu thông qua driver
Với các yêu cầu của hệ thống trên nhóm đã tiến hành đề ra các phương án thiết kế cho phần mềm như sau:
Trang 27 Sử dụng ngôn ngữ Python để lập trình phần mềm trên máy tính và chọn SQLite làm
cơ sở dữ liệu lưu trữ thông tin cấu hình game
3.2 Sơ đồ khối
Hình 3.1 Sơ đồ khối của hệ thống
Khối nguồn: Cấp nguồn nuôi chip với cấp nguồn cho toàn bộ hệ thống
Khối xử lý trung tâm: Nhận dữ liệu truyền về từ khối cảm biến cũng như khối giao tiếp sau đó truyền đến máy tính thông qua khối truyền thông
Bộ vi xử lý cần phải đáp ứng các tiêu chuẩn: tiết kiệm năng lượng, thời gian nhanh,
kích thước nhỏ gọn, đáp ứng thời gian thực, chi phi thiết kế thiết kế thấp
Vi điều khiển STM32F103C8T6 là họ vi điều khiển 32 bit với 64-128 Kb bộ nhớ Flash, USB 2.0 full-speed, 2 bộ ADC và 9 giao diện kết nối
Lõi : ARM 32 bit Cortex-M3 Tần số hoạt động lên tới 72 Mhz
ADC : 2×12 bit, tần số lấy mẫu 1Mhz DMA : Điều khiển 7 kênh DMA
Giao diện kết nối : 2xI2C, 3xUSART, 2xSPI, CAN, USB 2.0 full-speed
+ Các thiết bị ngoại vi có thể được cấu hình một cách thích hợp Lõi của bộ vi xử lý Cortex- M3 được thiết kế để đáp ứng yêu cầu bộ nhớ tối thiểu, năng lượng tiêu thụ thấp và thiết kế nhỏ gọn
+ Tần số hoạt động lên tới 72 Mhz cho phép sử lý các tập lệnh nhanh chóng
Trang 28+ Bộ ADC của ARM có độ phân giải 12 bits tức là giá trị đọc về nằm trong khoảng 0 -
>2^12= 4096 (Độ phân giải PIC, AVR= 8/10 bits)
+ Có bộ DMA để đẩy cao thời gian truyền nhận
+ Có nhiều chuẩn kết nối phù hợp trong việc phát triển cho hệ thống sau này
Bus Width 8 bit cho core
chuẩn
8/16/32- bit 8/32-bit Hầu như 32bit,
số ít 64 bit Chuẩn truyền
thông
UART, USART, SPI, I2C
UART, USART, SPI, I2S, LIN, CAN, ETHERNET
UART, USART, SPI, I2C, (AVR hỗ trợ CAN, ETHERNET)
UART, USART, SPI, I2S, LIN, CAN, ETHERNET, I2C, DSP, SAI, IrDA
Tốc độ 12 clock/ chu
kỳ lệnh
4 clock/ chu kỳ lệnh
1 clock/ chu kỳ lệnh
1 clock/ chu kỳ lệnh
SRAM,FLASH
SRAM, FLASH
FLASH, SRAM, EEPROM
FLASH, SDRAM, EEPROOM
Trang 29 Khối cảm biến: Thu thập dữ liệu từ các cảm biến rồi gửi về khối xử lý trung tâm
Khối truyền thông:
CÔNG NGHỆ KHÔNG DÂY
RF
Frequency
868/915 MHz – 2.4GHz
2.4 GHz 2.4Ghz,5.8Ghz 13.56Mhz
Data Rate 250 Kbits/s 723Kbit/s 11-105Mbits/s 100-420Kbit/s
Bảng 3.2.2 So sánh các công nghệ không dây
Wifi : Năng lượng tiêu thụ của nó cao, tốc độ truyền dữ liệu cao
NFC (Near-Field Communication: Công nghệ giao tiếp trường gần) là công nghệ kết nối sử dụng cảm ứng từ để thực hiện kết nối giữa 2 thiết bị Cái này loại vì khoảng cách
nó quá ngắn tối đa 10cm trên lý thuyết thực tế thì chỉ có 4cm chúng ta không thể chơi game với khoảng cách đó
Zigbee vì tuy nó đáp ứng được yêu cầu đặt ra nhưng giá thành của zigbee cao hơn rất nhiều so với Bluetooth Một điểm nữa là tốc độ truyền dữ liệu của Bluetooth cao hơn
so với zigbee
Bluetooth Nó đáp ứng được yêu cầu khoảng cách chơi game từ màn hình đến người chơi game, giá thành phù hợp và công suất thấp
Chọn Bluetooth
Nguyên lý hoạt động chung:
Bộ xử lý trung tâm sau khi nhận được dữ liệu được gửi về từ cảm biến,từ đó sẽ gửi các chuỗi thông qua Bluetooth kết nối với máy tính, phần mềm trên máy tính sẽ tiến hành
so sánh nếu đúng là chuỗi gửi, thì tương ứng từng chuỗi sẽ xuất lệnh điều khiển tương ứng với cấu hình game
Trang 303.3 Thiết kế phần cứng
Theo sơ đồ khối ta sẽ thiết kế phần cứng bao gồm 6 phần:
Khối xử lý trung tâm: Chip STM32F103C8T6
Khối cảm biến: MPU6050
Khối giao tiếp: Nút nhấn, Joystick
Khối nguồn: Mạch sạc TP4056, IC nguồn LM117T, pinNokia
3.3.1 Khối cảm biến
Yêu cầu thiết kế
Cập nhật giá trị liên tục gia tốc góc
Khi nghiêng tay cầm thì lập tức cảm biến sẽ trả về giá trị gia tốc góc 3 trục
từ 3 giá trị này dùng công thức tính ra các giá trị góc nghiêng
3.3.2 Khối giao tiếp
Yêu cầu thiết kế
Nút nhấn phải ăn có chống dội, Joystick trả về giá trị ADC liên tục khi sử dụng
Lựa chọn phần cứng
Sử dụng nút nhấn 2 chân, và module Joystick
Kết nối
• Joystick: Có 4 chân VCC, GND, VRX, VRY Trong đó 2 chân VRX
và VRY lần lượt nối vào 2 chân PA4 và PA5
Trang 31• Nút nhấn: Có 6 nút nhấn nối lần lượt nối vào các chân PA12, PA11,
PA10, PA9, PA8, PB15
Giải thích nguyên lý
• Joystick: Khi sử dụng sẽ trả về giá trị ADC trên 2 trục,bộ xử lý trung
tâm sẽ gửi các chuỗi lệnh tương ứng từ các giá trị này
• Nút nhấn: Khi nhấn thì bộ xử lý trung tâm sẽ gửi chuỗi tương ứng
Sử dụng mạch sạc TP4056 và IC nguồn LM1117T 3v3, pin Nokia
Giải thích nguyên lý
• Khi sạc: Dòng điện đi vào thông qua cổng USB, sau đó đi ra 2 chân
OUT+ và OUT- OUT+ sẽ là ngõ ra chân INPUT của LM11177T ngõ ra
lúc này sẽ có điện áp là 3v3, điện áp nuôi chip cũng như các cảm biến
• Khi không sạc: Dòng điện được lấy từ pin Nokia
3.3.4 Khối xử lý trung tâm
Yêu cầu thiết kế
Khối xử lý trung tâm được lập trình để:
Giao tiếp với MPU6050 để lấy các giá trị gia tốc góc
Giao tiếp với module Bluetooth
Giao tiếp với Joystick và nút nhấn
Giao tiếp với led RGB
Phương án lựa chọn
Trang 32Để thực hiện được những công việc điều khiển như trên ta có thể sử dụng các loại vi điều khiển như 8051, AVR, PIC… Tuy nhiên những dòng vi xử lý trên có bộ vi xử lý thấp chỉ có 8bit cũng có thể xử lý được nhưng hiệu suất không cao
Lựa chọn
Trong đề tài này ta sử dụng chip STM32F103C8T6 vì:
chip STM32F103C8T6 hiện là đang là vi điều khiển được phát triển rộng rãi và sử dụng phổ biến
chip STM32F103C8T6 tiết kiệm năng lượng
Tốc độ xử lý cao với bộ xử lý 32 bit
3.4 Thiết kế phần mềm
3.4.1 Các thành phần
3.4.1.1 Giao diện
Được chia thành 3 frame: Frame_1, Frame_mid, Frame_2, tương đương với 3 cột
Frame_1: 9 Label, 8 Entry , 1 ComboBox, 1 CheckBox
• 9 Lable: LU, UP, UR, RIGHT, RD, DOWN, DL, LEFT định nghĩa cho các Entry
• 8 Entry này người dùng có thể điền vào các ký tự mong muốn để thiết lập các hướng cho JoyStick
• 1 ComboBox: lựa chọn hiệu ứng Led trên bàn phím chơi game
• 1 CheckBox :Tùy thuộc vào thể loại game mà người dùng có thể bật/tắt cảm biến MPU6050,
Frame_2: 7 nút nhấn, 8 Label, 6 Entry
• 7 nút nhấn: 6 nút nhấn trên cùng được đặt tên BUTTON 1, BUTTON 2,…BUTTON
6 nhằm cho người dùng mô hình hóa nó là các nút nhấn trên KeyBoard game Nút nhấn còn lại được đặt tên SELECT GAME với mục đích lựa chọn thể loại game, hoặc xem lại thiết lập trước đó bằng việc truy vấn trên SQLite
• 8 Label : 2 Label(BUTTON, CHARACTER): định nghĩa các trường cho 6 Lable và
6 Entry ,6 Label còn lại được đặt tên BUTTON 1, BUTTON 2,…BUTTON 6 : nhằm định nghĩa cho các 6 Entry sẽ được đề cập bên dưới đây
• 6 Entry: Người dùng có thể điền vào các ký tự mong muốn để thiết lập các ký tự cho 6 nút nhấn