Yến Ngọc Toeic Thầy Khuê Nam Định

Yến Ngọc Toeic Thầy Khuê Nam Định

SO SÁNH SỰ KHÁC VÀ GIỐNG NHAU GIỮA LỚP ONLINE & OFFLINE (Được Xem Lại Video Full HD Sau Buổi Học)

SO SÁNH SỰ KHÁC VÀ GIỐNG NHAU GIỮA LỚP ONLINE & OFFLINE (Được Xem Lại Video Full HD Sau Buổi Học)

Cách giao tiếp với tất cả các thiết bị USB HID

Trước tiên nếu bạn chưa bao giờ điều khiển một thiết bị USB thì hãy quay lại Bài 16 để đọc bài viết và  tài liệu USB in a Nutshell để có cái nhìn tổng quát nhất.

Thiết bị HID và Host (máy chủ) giao tiếp với nhau qua kiểu Control Transfer ( hay Endpoint 0). Sử dụng Ngắt tại chiều IN và tùy chọn ở chiều Out. Đặc tả của lớp HID cho phép chúng có thể truyền dữ liệu ở cả tốc dộ low speed , full speed và high speed.

Lập trình STM32 USB HID như 1 con chuột (Mouse) điều khiển con trỏ máy tính

Trong bài này mình sẽ sử dụng Joystick đọc giá trị ADC biểu thị trục X, Y. Và nút nhấn trên Joystick biểu thị cho Left_Button trên chuột máy tính.

Hoàn thiện thủ tục tại văn phòng IIG

Trên đây là hướng dẫn chi tiết các bước đăng ký thi TOEIC online tại IIG Việt Nam. Hy vọng rằng sau khi đọc bài viết này, bạn sẽ không còn gặp bối rối và tự tin chuẩn bị tốt nhất cho kỳ thi TOEIC. Chúc bạn thành công!

Các thiết bị USB HID rất gần gũi với chúng ta ví dụ như chuột máy tính, bàn phím, soud card… Vi điều khiển STM32 hỗ trợ giao thức HID Device giúp chúng ta có thể lập trình tạo ra các sản phẩm giống như những thiết bị đó. Bài hôm nay mình sẽ nói đến USB HID Custom, làm thế nào để nó có thể truyền nhận dữ liệu với máy tính, hãy cùng tìm hiểu nhé!

Bài 17 trong Serie Học lập trình STM32 từ A tới Z

HID (viết tắt của Human Interface Device) là một tiêu chuẩn cho các thiết bị máy tính được vận hành bởi con người. Tiêu chuẩn này cho phép dễ dàng sử dụng các thiết bị này mà không cần bất kỳ phần mềm hoặc trình điều khiển bổ sung nào.

HID là một tiêu chuẩn được tạo ra nhằm đơn giản hóa quá trình cài đặt các thiết bị đầu vào thông qua từng giao thức cụ thể cho từng thiết bị như chuột, bàn phím,… Một thiết bị tuân thủ HID bao gồm “gói dữ liệu” có thể chứa tất cả các hành động của thiết bị.

Ví dụ: Bàn phím có thể có một phím để điều chỉnh âm lượng. Khi nhấn phím đó, “bộ mô tả HID” sẽ cho máy tính biết mục đích của hành động đó được lưu trữ trong các gói tin ở đâu và lệnh đó sẽ được thực thi.

Cách biến Kit Bluepill thành chuột máy tính với USB HID

Để sử dụng kit stm32f103c8t6 Bluepill thành chuột máy tính chúng ta cần phân tích dữ liệu truyền lên máy tính của 1 con chuột.

Cấu trúc dữ liệu truyền lên bao gồm:

Chúng ta sẽ sử dụng Joystick đọc ADC 2 kênh X Y và nút nhấn trên nó sẽ tương ứng với phím Left Click.

Mỗi khi có sử kiện nhấn nút hoặc di chuyển, chúng ta sẽ gửi dữ liệu theo gói thông qua USB HID.

Các tool dùng trong lập trình STM32 USB HID

Phần mềm gửi và nhận dữ liệu HID Terminal:

Tools giải mã report descriptor.

http://eleccelerator.com/usbdescreqparser/

Hướng Dẫn Chi Tiết Các Bước Đăng Ký Thi TOEIC Online tại IIG Việt Nam

Đăng ký thi TOEIC tại IIG Việt Nam dưới hình thức online giúp tiết kiệm thời gian và đảm bảo tính chính xác trong quy trình đăng ký. Dưới đây là các bước chi tiết để bạn hoàn thiện thủ tục đăng ký thi TOEIC online:

Trước tiên, bạn cần truy cập vào trang đăng ký online của IIG Việt Nam tại địa chỉ https://online.iigvietnam.com/.

Sau khi đăng nhập thành công, bạn chọn vào mục “Đăng ký thi”, sau đó chọn “Các bài thi tiếng Anh” và chọn “TOEIC”.

Một bảng đăng ký thi TOEIC sẽ hiện ra. Bạn cần điền đầy đủ thông tin cá nhân theo yêu cầu của IIG Việt Nam. Các thông tin này bao gồm họ tên, ngày sinh, số CMND/CCCD/Hộ chiếu, và các thông tin liên hệ khác.

Hoàn thiện thông tin cá nhân đầy đủ và chính xác

Lưu ý rằng thời gian bạn chọn ở bước này chưa phải là ngày dự thi TOEIC, mà là ngày bạn sẽ đến trực tiếp văn phòng IIG Việt Nam để hoàn thiện thủ tục đăng ký và đặt lịch thi TOEIC tại quầy đăng ký.

Sau khi nhập đầy đủ thông tin, bạn nhấn vào nút “Đăng ký”. Khi đăng ký thành công, màn hình sẽ hiện ra thông báo chúc mừng bạn đã đặt lịch hẹn đăng ký thi thành công, kèm theo thông tin cá nhân bạn đã đăng ký.

Ngay sau khi hoàn thành đăng ký, hệ thống sẽ gửi email xác nhận hồ sơ và lịch hẹn, kèm theo các hướng dẫn thực hiện cho ngày đến đăng ký. Bạn cần đọc kỹ email này trước khi đến văn phòng để đảm bảo không bỏ sót bất kỳ thông tin quan trọng nào.

Bạn có thể in phiếu đăng ký dự thi bằng hai cách:

In rõ ràng và đầy đủ phiếu dự thi trước khi đến nộp hồ sơ

Human Interface Device Class hoạt động như thế nào?

Trước khi máy chủ có thể nói chuyện với thiết bị, nó cần biết cách sử dụng hoặc ứng dụng của thiết bị này là gì? Dữ liệu của nó được tổ chức như thế nào? và Dữ liệu thực sự đo lường điều gì?

Lấy ví dụ: Nếu thiết bị của bạn là một con chuột máy tính, các nút bấm và tọa độ sẽ điều khiển Pointer trên màn hình. Sự kiện click hoặc righ click sẽ làm gì, scroll sẽ làm gì. Để tất cả các sự kiện đó được sảy ra, trình điều khiển lớp HID phải biết rõ:

Tất cả các thông tin này sẽ được mô tả trong phần Report Descriptor. Khi trình điều khiển phân tích cú pháp của Report Descriptor nó sẽ hiểu được khi thiết bị chuột máy tính truyền dữ liệu lên, dữ liệu nào sẽ thuộc ứng dụng nào của máy tính. (Tương tự bạn phân luồng dữ liệu UART vậy).

Khi một thiết bị HID được kết nối, Host sẽ tạo ra 1 Request đó là GET_DESCRIPTOR, sau khi hoàn tất quá trình. Chuột máy tính và máy tính sẽ giao tiếp với nhau mà ko cần thêm driver gì cả.

Bộ Report Descriptor được mô tả bởi chuỗi các mục, các mục này mô tả dữ liệu sẽ truyền đi khi thiết bị USB HID device truyền hoặc nhận. Mỗi mục bắt đầu bằng tiền tố là 1 Byte quy định vai trò của mục và độ dài dữ liệu của nó.

Mỗi mục chia làm 3 loại thẻ chính:

Mỗi loại thẻ bao gồm một số loại chính như:

Mỗi thẻ mục sẽ được phân loại tương ứng với 1 mã từ 0 – 255 ( 1 Byte).

Cấu trúc của Report Descriptor như sau:

Lấy ví dụ về Report Descriptor cho chuột máy tính như sau:

Phần khoanh đỏ cấu hình 3 nút nhấn của chuột, phần khoanh xanh cấu hình tọa độ của chuột.

Phần Usage Page và Usage xác định kiểu thiết bị đó là Mouse và thuộc máy tính để bàn (Generic Desktop).

Các bạn có thể tham khảo link này để phân tích 1 RD: https://www.crifan.com/files/doc/docbook/usb_hid/release/webhelp/hid_report_example_analysis.html

Hướng dẫn chi tiết các bước chuẩn bị và đăng ký thi toeic tại IIG Việt Nam

Với nhu cầu ngày càng tăng cao của học sinh, sinh viên và người lao động trong việc thi TOEIC để đáp ứng yêu cầu tốt nghiệp hoặc thăng tiến trong công việc, việc nắm rõ quy trình đăng ký thi TOEIC tại IIG Việt Nam là rất cần thiết. Dưới đây là hướng dẫn chi tiết các bước đăng ký thi TOEIC tại IIG Việt Nam và những lưu ý cần thiết.

Thi trên máy tính (TOEIC Online)

Thi TOEIC trên giấy hay thi TOEIC Online

Cấu hình STM32 USB HID trên Cube MX

Mở CubeMx, chọn chip STM32f103C8T6, trong System Core

Trong Tab Analog ta sẽ cấu hình ADC1 để đọc giá trị Joystick

Thiết lập Clock cho USB là 48Mhz (Bắt buộc)

Đặt tên bài học rồi Gen code như tất cả các bài trước

Lập trình STM32 USB HID trên Keil C

Open bằng Keil C. Đầu tiên chúng ta sẽ thêm thư viện Hid vào main để dễ dàng thao tác bằng lệnh #include “usbd_hid.h”

Sau đó extern biến chứa giá trị cài đặt của USB vào main

Khi chọn chế độ USB HID, CubeMX đã mặc định chọn thiết bị HID đó là chuột máy tính. Chúng ta cùng phân tích Report Desciptor mà CubeMx đã cho sẵn nhé. Các bạn vào USBD_HID.c và tìm dòng code như sau:

Copy đoạn dữ liệu và paste vào công cụ phân tích mình vừa mới nêu trên: http://eleccelerator.com/usbdescreqparser/

Ta thấy rằng trình tự các byte gửi như sau:

1 byte nút nhấn -> 3 byte X, Y, Whell -> 2byte Wakeup -> 1 byte kết thúc

Số byte này bạn chỉ cần đếm trong các đoạn Report Count theo thứ tự từ trên xuống dưới. Còn ý nghĩa của các từ mình đã giải thích bên trên rồi nhé.

Vậy nên chúng ta sẽ tạo 1 mảng chứa giá trị của các byte gửi lên với 1byte kết thúc là mặc định nên ko cần thêm vào. Mình tạo mảng mouse_report[5], và mảng lưu 2 giá trị ADC1 truyền qua DMA

Trước Main ta sẽ lập trình như sau

Tạo một hàm tên là map để chuyển đổi giá trị ADC từ 0 – 4096 thành -127,127

Tạo hàm đọc giá trị nút nhấn, thực hiện chuyển đổi và ghi vào mảng mouse_report

Trước While cho bắt đầu chuyển đổi ADC DMA, Trong While ta đọc giá trị của mouse và gửi qua cổng USB HID

Nhấn F7 để Build và F8 để nạp Code vào Kit.

Kết nối Joystick vào Kit theo hướng dẫn:

Cắm dây Micro USB vào mạch và cắm đầu còn lại vào máy tính. Mở Manager ra xem bạn sẽ thấy thêm 1 thiết bị Mouse

Mở Paint Sử dụng Joystick điều khiển thử.

Ta thấy rằng chuột chạy quá nhanh, không thể kiếm xoát và khi không di chuyển chuột cũng vẫn tự chạy. Lý do đó là điểm cân bằng của Joystick không giống lý thuyết đó là giá trị 2048.

Và chuột chạy quá nhanh do mạch sẽ gủi các giá trị từ -127 đến 127 cực nhanh khi giữ Joystick, các tọa độ này khiến chuột di chuyển rất nhanh. Vậy làm ntn để hiệu chỉnh hai thứ đó

Rút dây cắm HID từ chuột ra, chạy chế độ debug.

Trong debug ta add giá trị ADC_Val vào Watch 1 và nhấn chạy chương trình. Chúng ta thấy rằng: giá trị cân bằng khác nhau dẫn tới chuột luôn luôn di chuyển.

Sửa lại trong hàm Get Action, như sau:

Sửa -127, 127 thành -10 và 10 sẽ giúp chuột di chuyển chậm hơn.

STM32 USB HID được sử dụng rất rộng rãi khi muốn giao tiếp với máy tính, điện thoại, game pad một cách đơn giản nhất. Về cơ bản tất cả các device sử dụng USB HID đều làm việc giống nhau, sự khác nhau của chúng là cấu trúc gói tin truyền và đích đến sẽ được định nghĩa hết trong Report Descriptor.

Nếu thấy bài viết này có ích hãy like và chia sẻ cho người khác, đừng quên vào nhóm Anh Em Nghiện Lập Trình để giao lưu nhé các bạn

Nguồn: Lập trình STM32 USB HID giả lập chuột máy tính Tác giả: Khuê Nguyễn

from Khuê Nguyễn – Học Điên Tử Lập Trình https://ift.tt/3bSo3gA