1. Trang chủ
  2. » Luận Văn - Báo Cáo

Khóa luận tốt nghiệp Kỹ thuật máy tính: Thiết kế thiết bị nhận dạng bàn tay hỗ trợ phát triển các giải pháp điều khiển tự động

94 1 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Thiết Kế Thiết Bị Nhận Dạng Bàn Tay Hỗ Trợ Phát Triển Các Giải Pháp Điều Khiển Tự Động
Tác giả Nguyễn Lệ Tuyết Hoa, Nguyễn Hữu Nam
Người hướng dẫn TS. Đoàn Duy
Trường học Đại Học Quốc Gia TP. Hồ Chí Minh
Chuyên ngành Kỹ Thuật Máy Tính
Thể loại khóa luận tốt nghiệp
Năm xuất bản 2024
Thành phố Thành Phố Hồ Chí Minh
Định dạng
Số trang 94
Dung lượng 31,34 MB

Nội dung

Dựa vào lợi ích của phương pháp điều khiến cử chỉ tay va van đề thực trangnêu trên, nội dung đề tài nghiên cứu khóa luận sẽ tập trung chủ yếu trong việc xâydựng và thực hiện mô hình nhận

Trang 1

ĐẠI HOC QUOC GIA TP HO CHÍ MINH

TRUONG DAI HOC CONG NGHE THONG TIN

KHOA KY THUAT MAY TINH

NGÔ LE TUYET HOA - 20521333 NGUYEN HUU NAM - 20521630

KHOA LUAN TOT NGHIEP

THIET KE THIET BI NHAN DANG BAN TAY HO TRO PHAT TRIEN CAC GIAI PHAP DIEU KHIEN TU DONG

Implementing a finger detection box for

automated control applications

CU NHAN KY THUAT MAY TINH

GIANG VIEN HUONG DAN

TS DOAN DUY

TP HO CHÍ MINH, 2024

Trang 2

bạn sinh viên Nguyễn Thành Tài, Nguyễn Đình Sơn, Nguyễn Minh Lộc, Trương

Công Thành, Đỗ Phương Nam đã giúp đỡ phát triển phần hệ thống thiết bị xe điềukhiển góp phần xây dựng mô hình đề tài, xin cảm ơn các bạn Ngoài ra, cũng xin gửilời cảm ơn đến giảng viên phản biện thạc sĩ Nguyễn Thanh Thiện, cảm ơn thầy vì đãđóng góp ý kiến giúp nhóm cải thiện luận văn và đề tài của nhóm được tốt hơn

Cuối cùng, xin gửi lời cảm ơn đến gia đình, những người bạn đã luôn là chỗ

dựa tinh thần vững chắc trong suốt quá trình thực hiện khóa luận

Một lần nữa, khoảng thời gian thực hiện luận văn trên dù không nhiều cũngkhông ít nhưng đều là những trải nghiệm vô cùng quý giá, nhóm chúng em xin chânthành cảm ơn tất cả mọi người đã luôn kề bên hỗ trợ và giúp đỡ

Thành phố Hồ Chi Minh, tháng 07 năm 2024

Nhóm sinh viên thực hiện

Ngô Lê Tuyết Hoa, Nguyễn Hữu Nam

Trang 3

MỤC LỤC

Chương 1 GIỚI THIEU 2-22 2£ E£+E£EE£EE£+EE+EE£EEEEEEEEEEEEEEEEEEEEZEEEEkerkerrrrree 3

1.1 Ly do thực hiện đề tài 2¿-55c2Sc SE 2222112211221 eEcrkrrrei 31⁄2 Mục tiêu của để tài cccctrhhnhtHh re 4

1.2.1 Mục tiêu tổng quan :-©©c+5<+EktEE2EEEEEEEEEEEEEEECEErerkerrrerreeg 41.2.2 Mục tiêu cụ thể cccccccrvrttrrrrtttrrrrrttrirrrririerrirrrriree 41.3 Giới hạn đề tài cv nghe 5Chuong 2 TONG QUAN DE TÀI - 2-5252 52+SE2EE2EE2EE2EE2E2EEEE22E22E22EeErkee 6

2.1 Phuong pháp điều khiển sử dụng nút bấm 2 2 2 2+sz+s+zzxzzez 62.2 Phương pháp điều khiển sử đụng giọng nói -2- +2 csecszze- 62.3 Phương pháp điều khiển băng cử chỉ tay - 2-2 2©5z+se+£+sczezeeres 7

2.3.1 Cac nghiên cứu ứng dụng trong nƯỚC - - «- «+ £+£+xe+xesrsxe 7

2.3.2 Cac nghiên cứu ứng dụng ngoài nước +++s+++s+sssexesess 7

2.3.3 Ưu, nhược điểm các giải pháp, sản phẩm của các nhóm nghiên cứu 8Chương 3 CO SỞ LÝ THUYẾTT -2-©2©++2E++EE++EE++EE++Ex+zrxrzrxrrrxee 10

3.1 Thu viện hỗ trợ Al/ ML Mediapipe - - 2 5 +cz+x+xecszxexerxzrcrs 10

3.2 Xu lý chương trình da tác VỤ -.- -Ă- ch như 12

3.2.1 _ Hệ điều hành thời gian thực RTOS - 2-2 2 ++czrzzrrrzes 123.2.2 Lập trình đa luồng bằng ngôn ngữ lập trình - 2-2 252 153.3 Cơ sở lý thuyết về MQTTT 2: + s+SE+EE+EESEE2EE2EEEEEEEE2E22E.2E.Ee re l6

3.3.1 Tổng quan về giao thức MQTTT 2-2 2 2+++£++£+zEzEzxzes 163.3.2 Nguyên tắc hoạt động MQTT :- 2 + 2+c++E++Ezrzrrrsrreres 16

3.3.3 Broker MQTT fÏespI1.1O -.- Ăn ng ren 18 3.4 Giao 0 v0 19

Trang 4

3.4.1 Tổng quan về UARTT -:- + + ++EE+EE£EE+EE+EEEEEEEEEEEErrrrrrrrrei 193.4.2 Nguyên tắc hoạt động của giao tiếp UART -¿-sz5-++ 19

3.5 Giao thre GPO an 21 3.6 RMT viccccccccsessesssessessssssessessuessessussusssecsussuscsecsussssesecsusssssessusssessessuessecsssseeses 22 3.7 Giao thức I2C veceececscssssssessessessesssessecsesssessessesesecsecsusssessecsuessessesssessessueeseeses 22

3.7.1 Téng quan giao thức [2C - + + x+++Ek+EE+EE+EE+EEeErErrsrreres 223.7.2 Nguyên tắc hoạt động giao thức I2C -2¿©-z+cs+cxzzzrxeres 233.8 Công cụ phát triển ứng dụng MIT App Inventor - 2-2522 25Chương 4 THIẾT KE MÔ HÌNH GIẢI PHÁP 2 2+2+£z+£z+£zzsz+z 26

4.1 - Giải pháp dé xuất csck2Ekvck ìct HH1 11111111 1x 264.2 _ Thiết kế thiết bị nhận diện cử chỉ bàn tay 2- 2 22+sz+sz+se2 +: 29

4.2.1 Thiết kế phần cứng thiết bị nhận diện cử chỉ ban tay 294.2.2 Xây dựng giải pháp, cau hình mô hình nhận diện cử chỉ tay dựa trên

MMe1apID€ cà 19010 1n TH Họ re 33

4.2.3 Luông giải thuật chung cho chương trình 2-2 2 25z+ss+s2 354.3 Thiết kế các thiết bị mô hình ứng dụng ¿ ¿¿©++2s+2s++cszzex 364.4 _ Thiết kế thiết bị điều khiển đèn dây RGB 2- 2 2 2+5z+£zzsz+czez 38

4.4.1 Thiết kế phần cứng -2¿ 2¿©+2++2E++EE+2EEEtEEEerkrsrxrrrkrrrree 384.4.2 Định nghĩa tập lệnh điều khiến -2- 5: ©22 +£2z+££££xzxzzxcres 394.4.3 Luong giải thuật chương trình 2-2 2+c2+++E++EzEzrzrezes 414.4.4 Ứng dụng hỗ trợ đèn dây RGB woc.ceccssceccescsssesessessessessessessessestessesessens 434.5 _ Thiết kế thiết bị điều khiển màn hình OLED 2-5252: 46

4.5.1 _ Thiết kế phần cứng -¿- 2 2+ ++EE+EE+EE+EE+EEEEEEEEEEEEEEErrrrrrrei 464.5.2 Định nghĩa tập lệnh điều khiển -2- 2 2 2+2£+£++£czxzxzxezes 47

Trang 5

4.5.3 Luông giải thuật chương trình 2-2 2+s++++£+EzEezrzrzes 484.5.4 Ứng dụng hỗ trợ màn hình OLED -2- 2 ¿s++zx++zx+zse2 504.6 _ Thiết kế mô hình xe điều khiến -¿- 2 5¿25+22++2x2E++zxerxzrxerxeee 52

4.6.1 Biéu đồ ý tưởng thiết kẾ - +52 k2 2 2112111121121 524.6.2 Thiết kế phần cứng -¿ 2¿- +¿©++22++2E++EEEtEE+tEEEtrkrsrxrrrxrrrree 534.6.3 Thực thi phần mềm ¿- 2 2£ +22 EE+EE+EE+EE+EEEEEEEEEEEEErrerrerei 56

4.7 Thông số kỹ thuật linh kiện phần cứng được sử dụng trong các mô hình

Chương 5 _ THỰC NGHIỆM VÀ DANH GIIÁ -2- 2 52+ £+£x+txzzzserxez 63

5.1 Kết qua thu được từ thiết bị nhận diện bàn tay - 2-2 2522 63

5.2 Kiểm tra đánh giá chức năng các thiết bị hiện thực phần cứng của hệ thốngM6 hinh 8/61 11 1Ó: 69

5.2.1 Truyền giá tri UART cho Module Wifi Server và thực hiện đánh giá

thiết bị màn hình OL/ED ¿2 £ E£+E£+EE+EE£EEEEEE£EEEEEEEEEEEEEEEErrkerrerrkrree 69

5.2.2 Đèn dây RGB - 2c k2 2H E12 1 11111 21eterke 73

5.2.3 Xe robot điều khiến ¿- 2: ©£+c++EEt£EEtEEEEEEtEEerkerrerrkrree 76Chương 6 KET LUẬN - 252 E+EE+EESEEEEEEEE2E1211211211212 21.21 xe, 81

6.1 Hạn chế đề taicccecccecccccccccsscsssessssssssessusssessessusssessessusssessessusssecsessseesecsueeseeses 81

6.1.1 UU ie ceeececccccccccssesssessesssessessecsueescsecsusssecsucsuessecsusssessecsussseesessseeseess 816.1.2 Nhược điểm 2¿©2¿5++2E+2EEEEkEEEEEEEEEEEEEEEErkrrrrerrrree 816.2 Hướng phát triển đề tai ccceccccccccccccsessessessessessessessessssssssessessessssesseseeseeses 81TAI LIEU THAM KHÁO - - St St SE+E‡EEEE+EEEEEEEEEEESEEEEEEEEEEEEEEEEEkrkrkrrrrkrrrree 83

Trang 6

3 Hai tác vụ đang luân phiên thực hiện đồng thời 2-2-2 13

4 Giản đồ minh họa hai công việc được thực hiện bằng RTOS 14

5 Thiết bị chơi game đèn đuổi được thiết kế sử dung kit Arduino 14

6 Luéng chương trình thiết bị chơi game đèn đuôi sử dung RTOS 15

7 Mô hình Publisher — SubSCTIĐeT - -ó- <6 5 1+3 E*E+sEEseseeeesersersvke 17

8 Mô hình giao tiếp UART giữa 2 thiết bị -2- 2-52 2S2+£2£zzczzzez 19

9 Định dạng gói tin giao tiếp UART 2 25s £+£++E+E++EzEzrzrersee 20

10 Tín hiệu kỹ thuật số (Digita]) ¿- ¿52-52 52+S++E‡E2E2EEEEErrrrrrrrree 21

11 Tín hiệu tuần tự (Analog) cccccccccccccsecsesssessesssessteseessecseesesseesesssesseeseesseesecs 21

12 Mô hình Remote Control Reciever của ESP32 - «++s<+sx++s+2 22

13 Mô hình giao tiếp Master — Slave của I2C -¿- sccz+csscseee 23

14 Định dạng gói tin I2C - - c5 32+ SE **ESvEeeEreererrreerrerrrerrerrree 24

1 Sơ đồ giải pháp đề xuất đơn giản - 2-2-5 £+++£+E+xzrerrrrree 26

2 Gian đồ độ trễ truyền thông giao tiếp của giải pháp đề xuất 28

3 Kiến trúc thiết kế phần cứng cho thiết bị nhận diện cử chỉ bàn tay 29

4 Kit ESP32-S AI-ThiinK€T - c3 1 91 91 9 9E ng ng rệt 30

5 Raspberry Pi 4 Model B, - - - - Sc 1 ng HH ky 31

6 Module Camera Raspberry Pi V2 IMX219 S§MP -.- «<<<+2 32

7 Sơ đồ luồng giải thuật xử lý thiết bị nhận diện cử chi bàn tay 33

8 Luéng giải thuật chương trình thiết bị nhận diện ban tay RTOS 35

9 Sơ đồ tối giản thiết kế chung cho thiết bị mô hình ứng dụng 36

10 Kit ESP32-WROOM-32 NodeMCU LuaNode ‹ 5<- 36

11 Nút bam cơ nhấn nhả -+c+++++ttEExxrtEEktrrttrkrrrtrrrrrrrrrrre 37

12 Led 3mm đục chân ngắn 2-2 5£++£+EE+EEE+EEtEEtEEEvEEerkrrrkrrkeee 38

13 Thiết kế phan cứng thiết bi điều khiển đèn dây RGB 38

14 Đèn dây WS2812 RGB 5050 - ng niệ, 39

Trang 7

15 Luong sơ đồ giải thuật xử lý cho thiết bị đèn dây RGB 42

16 Luéng giải thuật chương trình thiết bị điều khiến đèn dây RGB RTOS 43

17 Giao diện ứng dụng đèn dây RGB - - SG vs ssseersrres 44

18 Xử lý kết nỗi MQTT cho back end đèn dây RGB - 45

19 Xử lý back end cho việc cập nhật trạng thái thiết bị đèn dây RGB 46

20 Màn hình OLED SSD1306 -.¿ 2-©22©5+22+2E+2EE2EE+2Eerxrrxrerxerxee 41

21 Thiết kế phan cứng thiết bị điều khiến màn hình OLED 47

22 Luong sơ đồ giải thuật xử lý cho thiết bi man hình OLED 49

23 Luông giải thuật chương trình thiết bị hiển thi màn hình OLED RTOS 50

24 Giao diện ứng dụng hỗ trợ thiết bị màn hình OLED - 51

25 Xử lý back end ứng dụng hỗ trợ OLED -¿- + 25++s+c++szxecs2 52

26 Biểu đồ ý tưởng thiết kế chung cho xe điều khiên - 52

27 Thiết kế phan cứng xe robot điều khiền - 2 522©5+2cs+2c+2 53

28 Servo SƠO( - HH H1 HT ng ng KT ket 54

29 Mạch cầu H L/289N -: :- 2 ©222EE22E2EEE2122122171E21121 2E crrrrree 54

30 Mach LMooMPƑ'> xœ@1 / 55

31 Động cơ giảm tỐC . -2¿- ¿22c ©22222‡EE29EE2EEE2EE2EE22E21121.21.Ekecree 55

32 Led 5mm đục chân dầt - - - + + 2< *** + + +22 ‡‡+£+z#eeeeeezzeeeees 56

33 Luồng sơ đồ giải thuật xử lý cho thiết bị xe robot - 2-2 57

34 Định nghĩa kỹ thuật các chân pin của L289N - 5555 <5+<s+<+2 59

1 Thử nghiệm nhận diện các khung hình khác nhau « 64

2 Nhận diện cử chi cả NAM ngÓñ - 5 5 + k2 19v ng ng cưy 65

3 Cảnh báo khi không hỗ trợ nhận diện 2 tay cùng một lúc - 66

4 Cu chỉ bàn tay nhận diện đÚng 55 + 33+ 13+ E+*vE+seereeeeseeereeses 68

5 Cử chỉ bàn tay nhận diỆn Sa1 - 5< S1 12313911 vs rey 68

6 Cau tao phần cứng hiện thực thiết bị nhận diện cử chỉ ban tay 70

Trang 8

Bảng 4.

Bảng 4.

Bảng 4.

Bảng 4.

Bảng 4.

Bảng 4.

Bảng 4.

Bang 5.

Bang 5.

Bang 5.

Bang 5.

Bang 5.

Bang 5.

Bang 5.

Bang 5.

Bang 5.

Bang 5.

Bang 5.

DANH MUC BANG

1 Bang dac ta Noi chi DAN tay eee 27

2 Bảng đặc ta điều khién thiết bi đèn RGB dựa vào cử chi ban tay 41

3 Bang đặc tả điều khiến thiết bi hiển thi man hình OLED 48

4 Bảng đặc ta cấu hình chân pin thiết kế phan cứng xe điều khiển 56

5 Bảng đặc tả điều khiển cho xe robot -:- 2:22 ©5+225+2£x++zx++zxzzzei 59 6 Thông số kỹ thuật đèn dây RGB WS2812 -2¿©22csccccccsccxee 60 7 Thông số đặc ta kỹ thuật Raspberry Pi 4 -2-©5¿©5z+cxvcxccrserxeee 62 1 Mỗi tương quan giữa kích thước khung hình và kết qua FPS 63

2 Kiểm tra FPS trong từng điều kiện khác nhau khi nhận diện tay 64

3 Kết quả kiểm tra nhận diện cử chỉ bàn tay - 2 scz+sz+c+czse2 67 4 Két qua thir nghiém thiét bi man hinh OLED va Wifi Module Server 72

5 Kết quả độ chính xác trung bình cho chức năng OLED - 73

6 Kết quả thử nghiệm đánh giá thiết bị đèn dây RGB . 75

7 Độ chính xác trung bình cho chức năng hành vi của chế độ chọn màu 75

8 Kết quả độ chính xác trung bình Servo - 2-2 2 s+sz+££+se+x+zxz 77 9 Kết quả độ chính xác trung bình của đèn -2- ¿c5z2cs+5c+2 77 10 Kết quả độ chính xác trung bình của Motor -: ¿-5¿5c5+ 77 11 Kết qua thử nghiệm đánh giá thiết bi xe điều khiển robot 79

Trang 9

DANH MỤC TU VIET TAT

STT | Ký hiệu chữ viết tắt Chữ viết đầy đủ

1 RGB Red Green Blue

2 OLED Organic Light Emitting Diode

3 CPU Central Processing Unit

4 ĐC Inter-Integrated Circuit

5 UART Universal Asynchronous Receiver/Transmitter

6 MQTT Message Queuing Telemetry Transport

7 RTOS Real Time Operating System

8 IoT Internet of Things

9 AI Artificial Intelligence

10 TV Television

11 CNN Convolutional Neural Network

12 ECU Engine (Electronic) Control Unit

13 RMT Remote Control Transciever

14 SSD Single Shot Detector

15 FPS Frame Per Second

Trang 10

TÓM TẮT KHÓA LUẬN

Dựa trên sô liệu và thực trạng hăng năm, công nghệ luôn thay đôi và phát triên theo thời gian với câp sô nhân nhăm đáp ứng nhu câu cuộc sông của con người sao cho thuận tiện, nhanh chóng và dê dàng cùng với sự phát triên của xã hội, đặc biệt là

công nghệ các thiết bị điện tử hay còn được gọi là hệ thống máy tính [1]

Sau một khoảng thời gian dài học tập, nghiên cứu các dự án điện tử, thiết kếthiết bị điều khiển tự động nhóm chúng tôi nhận ra rang một trong những yếu tố mangtính quyết định khả năng hiệu quả của một thiết bị điện tử được quyết định bởi khảnăng tương tác giữa con người và hệ thống máy tính đó thông qua phương thức điềukhiển Hiện nay, với vô vàn phương thức điều khiển từ cổ điển đến hiện đại việc lựachọn phương thức điều khiển sao cho phù hợp, đem lại sự tiện nghi dễ dàng tươngtác cho người sử dụng là một vấn đề mà một kỹ sư thiết kế cần phải xem xét So với

các phương thức truyền thống như nút bam và các phương thức công nghệ tiên tiến

ngày nay như điều khiên thiết bị bằng giọng nói thì phương thức điều khiển bằngnhận dạng bàn tay [2] nỗi bật hơn cả khi có thê khắc phục các rủi ro về nhiễu, bị ảnhhưởng tác động vì lý do vật lý từ môi trường và cấu tạo chính nó [3], sự đa dạng mẫugiọng nói và ngôn ngữ trong việc xây dựng thiết bị nhà thông minh [4] và mang nhiều

ý nghĩa, tiềm năng điều khiến có thê khai thác

Ngoài ra, như một hệ quả tất yêu của sự phát triển công nghệ đối mặt với 2vấn đề dễ dàng nhận thấy trong quá trình xây dựng thiết kế một hệ thống máy tínhtrong thực tế Thứ nhất, với số lượng thiết bị điều khiển giao tiếp với hệ thống máytính quá tải dẫn đến việc có thé gây bối rối cho người sử dụng Thứ hai, các thànhphan thiết bị thiếu tính độc lập, khó thay đổi trong việc tái sử dụng gây tốn thời gian,chi phí và tài nguyên phát triển [5] Do đó, việc thiết kế độc lập các thành phan trongmột hệ thống nhúng trở nên vô cùng cấp thiết tại giai đoạn nhu cầu phát triển côngnghệ cao với von hóa thị trường hiện tại đã hơn 4 tỉ đô từ năm 2022 [6] nhằm tối ưugiải pháp thiết kế và giới hạn số lượng thiết bị điều khiển dư thừa

Trang 11

Dựa vào lợi ích của phương pháp điều khiến cử chỉ tay va van đề thực trangnêu trên, nội dung đề tài nghiên cứu khóa luận sẽ tập trung chủ yếu trong việc xâydựng và thực hiện mô hình nhận diện cử chỉ bàn tay nhằm khai thác tiềm năng cử chỉ

bàn tay trong việc điều khiển đa thiết bị điện tử, đặc biệt là các thiết bị IoT bao gồm:

Thiết bị điều khiển đèn day RGB, thiết bị hiển thị màn hình OLED va xe điều khiến,chi tiết mô tả thiết kế và chức năng của thiết bi sẽ được trình bày ở chương 4, kết quảđiều khiển thu được sẽ được trình bày ở chương 5 và chương 6 sẽ là phần kết luận,đánh giá kết quả mô hình thu được

Trang 12

Chương 1 GIỚI THIỆU

1.1 Lý do thực hiện đề tài

Đề tài “Thiết kế thiết bị nhận dạng bàn tay hỗ trợ phát triển các giải pháp điều khiển

tự động” xoay quanh những vấn đề chính sau:

Hạn chế trong các phương thức điều khiển: Phương thức nhận diện cử chỉ bantay giúp con người giao tiếp với các hệ thống máy tính, thiết bị điện tử được

dễ dàng hơn do thuận với phương pháp giao tiếp tự nhiên giữa con người vớicon người và mang nhiêu tiềm năng, ý nghĩa khai thác trong việc điều khiểnthiết bị Đồng thời, việc sử dụng phương pháp nhận diện cử chỉ bàn tay mangnhiều ưu điểm vượt trội hơn so với các phương thức điều khiển điển hình có

thé kế đến như nut bam, công tắc cơ học, phương thức điều khiển nhận diện

bằng giọng nói

Quá nhiều thiết bị điều khiển cho các thiết bị khác nhau gây khó khăn chongười dùng trong khi dùng chung một loại giao thức có thê kể đến như remote

TV, remote máy lạnh, remote máy hơi nước, remote máy lọc khí, remote máy

chiếu, remote điều khiến xe, đều dùng chung một loại giao thức điều khiển

IR nhưng lại dùng nhiều bộ điều khiển khác nhau.

Phụ thuộc, hạn chế trong việc thay đôi và kết hợp giao tiếp giữa các mô hình

hệ thống nhúng: Các sản phẩm thiết bị điện tử đều khá giống nhau để giảiquyết cho biến thê các loại vấn đề bài toán nhưng lại không tái sử dụng cácthành phần của hệ thống được, thiếu tính độc lập, không có khả năng tái sửdụng, kết hợp và hợp tác phát triển Ví dụ, ta có thiết bị xe điều khiển và đèncùng với một bộ thiết bị điều khiển nhận diện cử chỉ bàn tay Nếu theo thiết

kế điều khiển thông thường thì chúng ta cần phải có 2 bộ điều khiển khác nhauphục vụ cho đèn và xe Chính điều này vô hình chung sẽ gây ra việc lãng phí,tốn kém chỉ phí, tài nguyên Việc có một chuẩn mã hóa giao tiếp dữ liệu chung

cho tắt cả thiết bị và chỉ sử dụng một bộ thiết bị điều khiển tích hợp duy nhất,

Trang 13

dễ dàng cho việc thay đối tích hợp vào đa hệ thống là một giải pháp cấp thiết

có thé góp phan giải quyết van đề được nêu ra trên

- Cac giải pháp nhận diện cử chỉ ban tay chưa đem lại nhiều hiệu quả: Đề xuất

giải pháp hiết kế thiết bị nhận diện cử chỉ bàn tay bằng phương pháp tối ưu,không cần tiêu tốn, công sức tài nguyên như phương pháp train model nhậndiện truyền thống

Tóm lại, với những vấn đề nêu trên đề tài được lựa chọn thực hiện nhằm hướng đếnviệc xây dựng mô hình điều khiển đa thiết bi với từng thiết bị độc lập với nhau bằngphương pháp nhận diện cử chỉ bàn tay dễ dàng triển khai hơn các phương pháp cũtrước đó, khai thác tiềm năng điều khiển từ phương thức này, giúp cho người dùng

dễ dang điều khién bat kỳ thiết bi mình mong muốn sao cho thuận với ban năng tựnhiên khi giao tiếp của con người nhất, khai thác tiềm năng của phương pháp điềukhiển nhận diện cử chỉ bàn tay với nhiều chức năng, thiết bị điều khiển Đồng thời,

dé tài cũng nhằm mục đích mong muốn mang lại giá trị nghiên cứu cho việc kết hợpcác loại hệ thống mô hình với nhau, giúp hệ thống được tích hợp và phát triển ở mức

cao hơn.

1.2 Mục tiêu của đề tài

1.2.1 Mục tiêu tong quan

Hiện thực thiết kế thành công mô hình sử dụng hệ thống nhận diện các cử chỉ bàntay cơ bản trong việc giao tiếp điều khiển các thiết bị khác nhau và xa hơn nữa làtích hợp vào các hệ thống nhúng đáp ứng từng ngữ cảnh yêu cầu theo từng bài toánxây dựng hệ thống thiết kế khác nhau.

1.2.2 Mục tiêu cụ thể

- Mục tiêu 1: Thiết kế giải thuật, sơ đồ kiến trúc cho các hệ thống nhận diện cử chỉ

bàn tay có khả năng nhận diện các cử chỉ thay đổi của bàn tay và các mô hình ứngdụng (đèn dây RGB, màn hình OLED, xe điều khiển)

- Mục tiêu 2: Hiện thực và đóng gói thành công thiết bị nhận diện cử chỉ bàn tay

Trang 14

- Mục tiêu 3: Hiện thực và đóng gói thành công các thiết bị mô hình ứng dụng trongviệc tích hợp điều khién với thiết bị nhận diện cử chỉ bàn tay.

1.3 Giới hạn đề tài

- Giới hạn chỉ nhận diện một bàn tay tại một thời điểm

- Nhận diện cử chỉ ban tay dưới góc độ hình ảnh cử chi tĩnh 2D.

- Đề tài được thực hiện với mô hình nhận diện cử chỉ bàn tay được định nghĩa tối đa

9 cử chỉ và điều khiển, tích hợp tối đa 3 thiết bị loT bao gồm: Thiết bị điều khiển đèndây RGB, thiết bị hiển thị màn hình OLED va mô hình xe điều khién dé chứng minh

- Đê xuât mô hình giải pháp điêu khiên nhăm chứng minh, không đi quá sâu vào việc

phát triển chức năng thiết bị điện tử hoàn chỉnh

Trang 15

Chương 2 TONG QUAN DE TÀI

Việc con người giao tiếp với máy tinh là một trong những tiền dé cơ bản, quan trọngtrong cách thức con người tương tác và sử dụng hệ thống thiết bị điện tử Hiện naytrong thời kỳ công nghệ 4.0 IoT bùng né, xã hội con người ngày càng phát triển trongcác lĩnh vực công nghệ thông tin, các biện pháp điều khiên thông minh ngày càng trởnên phô biến nhằm thay thế các phương pháp điều khiển truyền thống

2.1 Phương pháp điều khiển sử dụng nút bam

Với phương pháp giao tiếp truyền thống nút nhấn, công tắc phô biến, rẻ, dé cau hình

và thiết lập nhưng lại có hạn chế khi dé bị tác động từ môi trường vật lý ảnh hưởng

độ bền, giới hạn tuổi thọ thông qua số lần nhấn nút, rủi ro độ chính xác tín hiệu do

cấu tạo cơ học, không linh động trong quá trình sử dụng, bắt buộc phải tương tác lực

dé thực hiện tác vu, hạn chế khả năng mở rộng, hệ thống thiết bị sẽ trở nên phức tạp

với nhiều nút bam khi có nhiều chức năng, hạn chế kích thước nút bam gây khó khăn

cho trải nghiệm người dùng.

2.2 Phương pháp điều khiển sử dụng giọng nói

Đối với phương pháp điều khiến giọng nói mặc dù mang nhiều ưu điểm trong sự tiệnlợi, có thé tích hợp đa chức năng, đa giải pháp đa thiết bị nhưng lại mang nhiều hanchế trong việc chưa đáp ứng được thời gian thực, độ trễ phản hồi đầu cuối [7], giớihạn ngôn ngữ khi Alexa chỉ hiểu được tiếng Anh và tiếng Đức [7], phải có kết nốimạng dé có thé sử dung engine, phụ thuộc server [7][8], rủi ro bao mật va quyền riêng

tư khi hacker có thể tấn công vào kết nối không dây của hệ thống [7][8], độ chính xác

giọng nói không được đánh giá cao do ngữ điệu khi nói của con người tùy vào quốctịch, giới tính, vùng miền nhìn chung sẽ có sự khác biệt dẫn đến nhận diện sai [7][8]

Trang 16

2.3 Phương pháp điều khiến bằng cử chi tay

2.3.1 Cac nghiên cứu ứng dung trong nước

Cử chỉ ban tay con người mang nhiều thông tin ý nghĩa trong việc giao tiếp giữangười và người, là hình thức giao tiếp tự nhiên của con người và mang nhiều hiệuquả khi áp dụng giao tiếp với hệ thống máy tính Do đó, việc nhận diện hành vi, cửchỉ bàn tay, hành vi giao tiếp của con người thông qua “Thị giác máy tính” vẫnluôn là một đề tài có tính khai thác sâu rộng với nhiều ứng dụng khác nhau

Trước đây, việc nhận diện cử chỉ tay của con người trước khi có máy học người ta

thường sử dụng găng tay phát hiện chuyên động tay từ đó nhận diện cử chỉ tay con

người [9] Ngày nay, khi thời đại máy học, các mô hình học sâu lên ngôi công nghệ

chuyên dần sang việc sử dụng camera như là con mắt của hệ thống máy tính nhằmnhận diện hành vi, vật thể cử chỉ con người tối ưu hơn han so với công nghệ dùnggăng tay trước đó Ở thời điểm hiện tại, các công trình nghiên cứu và hiện thực của

các bài toán ứng dụng việc sử dụng các mô hình mạng học sâu, thuật toán “Thị giác

máy tính” cho việc nhận diện cử chi tay có thê ké đến như đề tài về thiết bị thôngminh của nhóm sinh viên đại học bách khoa hỗ trợ cho người khiếm thanh, khiếmthính (SYM — Speak your mind) vào năm 2021 Tức là, thiết bị của các bạn thôngqua việc nhận diện hình ảnh của cử chỉ tay, các động tác thủ ngữ, chuyên ngôn ngữ

ký hiệu sang văn bản và giọng nói dé những người khiếm thanh, khiếm thính dễdàng trao đổi cũng như giao tiếp với mọi người, hỗ trợ và cũng như xóa đi phầnnao đó rào cản của các bạn với giao tiếp xã hội với mọi người xung quanh khôngbiết về ngôn ngữ ký hiệu cũng có thê giao tiếp với các bạn thông qua giao tiếp vớiứng dụng trên nền tảng điện thoại thông minh [10]

2.3.2 Cac nghiên cứu ứng dụng ngoài nước

Một số nghiên cứu đề tài ngoài nước hướng đến trong việc nhận diện cử chỉ tay

như đề tài nghiên cứu “Điều khiến các thiết bị điện tử sử dụng cử chỉ tay” của cácsinh viên trường đại học Amity, cụ thê đề tài trên nhắm vào việc bật/tắt các thiết bịđiều khiển điện tử trong nhà thông minh như TV, đèn, quạt, hệ thống âm thanh,

Trang 17

nhac trong nhà, [11] Ngoài ra, việc sử dụng nhận diện cử chỉ tay còn có thể ứngdụng trong việc điều khiển các thiết bị robot như thiết bị Flycam, xe tự hành, cánh

tay tự động trong các nhà máy, công nghiệp với mô hình thuật toán học sâu mạng

lưới Q (Deep Q Network) dựa trên nền tảng mạng tích chập (CNN) điều hướng cácthiết bị theo cử chỉ tay chang hạn với cử chỉ giơ 1 ngón tay lên thì Flycam điều

hướng quay một góc tương ứng phụ thuộc vào định nghĩa của người lập trình viên.

Tương tự, nghiên cứu trên cũng được áp dụng cho việc hiện thực xe tự hành, cánh tay cơ khí [12].

2.3.3 Ưu, nhược điểm các giải pháp, sản phẩm của các nhóm nghiên cứu

Các ứng dụng nghiên cứu vừa nêu trên đều có điểm chung là đều trích xuất đặctrưng tìm điểm đặc trưng trên bàn tay và nhận dạng, thông thường sẽ việc nhận

diện sẽ phụ thuộc vào các điểm lồi, lõm trên bàn tay và chuyền động tay Như vậy

xử lý ảnh tốn nhiều công đoạn và độ chính xác cũng chỉ ở mức tương đối, khônglinh hoạt chuyên động tay, trùng lặp chuyền động tay gây ra kết quả nhận diệnkhông mong muốn và vẫn còn phụ thuộc vào việc train mô hình gây tốn tài nguyên,

công sức và thời gian, chi phí.

Tuy nhiên, vào năm 2023 nhóm phát triển AI của Google cho ra mắt bộ công cụMediapipe với mã nguồn mở giúp hỗ trợ kỹ sư, lập trình viên dé dang hơn trongviệc áp dụng máy học vào thiết bị, hệ thống máy tính Mediapipe hỗ trợ nhiều loạinhận diện khác nhau, trong đó bao gồm nhận diện tay với module Hands cho phép nhận diện tay trong thời gian thực từ đữ liệu từ hình ảnh và video, nó cung cấpthông tin về vị trí, hướng và đặc trưng của các điểm trên tay, cho phép ứng dụng

xử lý và phân tích các cử chỉ tay Khi sử dụng mediape người sử dụng có thể thaythế xử lý ảnh nhưng vẫn mang kết quả tương tự thậm chí vượt trội hơn, thông qua

đề tài ứng dụng nghiên cứu thực hiện thiết bị giao tiếp bằng cử chỉ bàn tay của bạn

du học sinh người Việt Nam tại Nhật được thực hiện vào cuối năm 2023 [13]

Bên cạnh đó, có thé thay thông qua các ứng dụng ké trên tùy vào thiết kế chức năng

từ lúc ban đầu cho đối tượng thiết bị đầu ra hướng tới mà sỐ lượng tín hiệu điều

Trang 18

khiển sẽ phức tạp hơn, dẫn đến khi phát triển hệ thống nhận diện cử chỉ tay vớinhiêu thiết bị, thì cứ mỗi thiết bị sẽ có các cách điều chỉnh khác nhau sao cho phùhợp, 6n định dé điều khiến thiết bị đấy và dẫn tới tình trạng cứ mỗi thiết bị khácnhau thi sẽ phải có hướng điều chỉnh, điều khiển khác cho thiết bị nhận diện cử chibàn tay Hiểu được vấn đề này, chúng tôi mong muốn thực hiện mô hình nhận diện

cử chỉ bàn tay có khả năng điều khiển hành vi nhiều thiết bị khác nhau được thiết

kế độc lập với thiết bị nhận diện, nhận dữ liệu điều khiến từ thiết bị nhận diện cử

chỉ bàn tay.

Trang 19

Chương 3 CƠ SỞ LÝ THUYET

3.1 Thư viện hỗ trợ AI/ ML Mediapipe

Hiện nay, AI không còn quá xa lạ với con người khi lần lượt các mô hình thuật toán

ra đời, AI bot hỗ trợ con người như ChatGPT mà với nhu cầu ngày càng cao việc đòi

hỏi các mô hình máy học phục vụ cho mục đích tự động hóa đáp ứng con người phải

có độ chính xác cao Tuy nhiên, các mô hình AI được train trên một số nền tảng nhưGoogle Colab hoặc trên chính máy tính nhúng được đánh giá là khá nặng và tốn thờigian train khi lượng dữ liệu, tập dữ liệu lớn, yêu cầu phần cứng lớn Do đó, để giảiquyết cho van dé trên Google đã cho ra đời bộ công cụ cho các bài toán AI/ ML vớitên gọi Mediapipe giúp đỡ cho người kỹ sư thiết kế hệ thống tập trung hơn trong việcxây dựng giải pháp thay vì tốn thời gian cho việc training model, có thể chạy đa nềntang với độ 6n định đáng tin cậy được khang định bởi Google với nhiều giải phápđược cung cấp khác nhau, nhẹ Một số giải pháp Mediapipe cung cấp có thé kế đếnnhư: Nhận diện mặt băng các hộp mặt được đóng khung, nhận diện tay bằng mô hìnhkhung xương, nhận diện hành vi toàn bộ cơ thê người dựa trên nguyên lý mô hình

khung xương 3D, tạo lưới mặt, [14].

Trong định nghĩa lý thuyết của Mediapipe đã được tích hợp thuật toán Hands

Detection hay còn gọi là nhận điện bàn tay Đầu ra của bài toán sẽ là một mô hình

dưới dạng khung xương (skeleton) của bàn tay bao gồm vị trí của các điểm trên bàntay (landmarks) và được nối với nhau thành một khung bàn tay hoàn chỉnh

WRIST 11 MIDDLE_FINGER_DIP THUMB_CMC 12 MIDDLE_FINGER_TIP THUMB_MCP 13 RING_FINGER_MCP THUMB_IP 14 RING_FINGER_PIP THUMB_TIP 15 RING_FINGER_DIP

INDEX_FINGER_MCP 16 RING_FINGER_TIP INDEX_FINGER_PIP 17 PINKY_MCP

INDEX_FINGER_DIP 18 PINKY_PIP INDEX_FINGER_TIP 19 PINKY_DIP

MIDDLE_FINGER_MCP 20 PINKY_TIP MIDDLE_FINGER_PIP

SLMNAMRWNA0

=

Hình 3 1 Mô hình Hand Landmark [15]

10

Trang 20

Các keypoint được minh họa là các điểm tọa độ màu đỏ trên landmarks (Hình 3.1)được nhận diện từ Mediapipe cần được chuyền đổi thành những hành động có ý nghĩa.Chang hạn như từ hình landmark bàn tay ở trên, hệ thống sẽ ở trạng thai là “Open”

vì tat cả các ngón tay đều được dudi thăng Dé làm được điều đó cần phải có mộtmodel khác để phân loại (classify) các hành động, hand-gesture-recognition-medipipe này chứa các tập lệnh Python giúp người dùng train và triển khai các model

dé nhận dang dấu hiệu bàn tay va cử chỉ ngón tay

Bản chất Mediapipe là sự kết hợp hai mô hình học máy (model): Thứ nhất, mô hìnhpalm detector (nhận diện bàn tay) để tìm vị trí của bàn tay và thứ hai là mô hình mốc(landmark) bàn tay dé định vị chính xác 21 tọa độ khớp ngón tay từ vi trí tìm được ởpalm detector được minh họa ở hình 3.1 Nó đã được huấn luyện (train) với khoảng

30 nghìn dir liệu có gắn nhãn (label) và chạy rất nhanh theo cách thức SSD - Single

Shot Detector.

Đi vào chỉ tiết hơn về nguyên tắc hoạt động của SSD — Single Shot Detector, tại mỗi

vị trí trên feature map, SSD đặt các default bounding boxes với kích thước, tỉ lệ khácnhau Trong quá trình xử lí, SSD sẽ đánh giá và tìm đối tượng trên các bounding boxnày nhằm tìm ra box phù hợp nhất với đối tượng cần tìm kiếm Thêm vào đó, bằngviệc tìm kiếm trên các feature map khác nhau, SSD có thê tìm kiếm các đối tượng vớikích thước khác nhau mà không thay đổi kích thước của các bounding box (Hình 3.2)

Extra Feature Layers

Conv: 1x1x256 Conv: 1x1x128 Conv: 1x1x128 Conv: 1x1x128

Conv: 3x3x512-s2 Conv: 3x3x256-s2 Conv: 3x3x256-1 Conv: 3x3x256-s1

NI aa! Nha N|gz \ 26

~~ Gan: 3x3x1024 Conv: 1x1x1024

Hình 3 2 Kiến trúc SSD [16]

Y tưởng chính cua SSD đến từ việc sử dụng các bounding box, bằng việc khởi tạo

san các box tại mỗi vị trí trên anh, SSD sẽ tính toán và đánh giá thông tin tại mỗi vị

11

Trang 21

trí xem vị trí đó có vật thé hay không, nếu có thì là vật thể nào, và dựa trên kết quảcủa các vi tri gần nhau, SSD sẽ tính toán được một box phù hop nhất bao trọn vậtthể Ngoài ra, băng việc tính toán bounding box trên các feature map khác nhau, tạimỗi tầng feature map, một box sẽ ôm trọn một phần hình ảnh với các kính thước khácnhau Thay vì sử dụng một box và thay đổi kích thước box cho phù hợp với vật thé,SSD sử dụng nhiều box trên nhiều tầng, từ đó tổng hợp ra các vị trí và kích thước boxkết quả.

3.2 Xử lý chương trình đa tác vụ

Lập trình xử lý đa tác vụ thông qua ngôn ngữ lập trình và hệ điều hành thời gian thựcRTOS là hai khái niệm thường gặp khi lập trình chương trình yêu cầu quan lý và điềuphối các tác vụ đồng thời, giúp tối ưu tài nguyên CPU, giảm thiêu độ trễ cho các ứngdụng chương trình phần mềm và phần cứng

3.2.1 Hé điều hành thời gian thực RTOS

Hệ điều hành thời gian thực RTOS thường được tích hợp firmware hỗ trợ các loại

vi điều khiển có thé kề đến như các đòng vi điều khiển thuộc ho STM32, ATMega,ESP32, Bản chất, hệ điều hành thời gian thực là phần mềm giúp quản lý phần

cứng và các phần mềm khác bên trong hệ thống nhúng, thiết bị điện tử

Hệ điều hành thời gian thực hỗ trợ, giúp người lập trình dễ dàng trong việc lập lịch

và quản lý các tác vụ luân phiên thay nhau thực hiện đồng thời (Hình 3 3) Dé cóthé luân phiên thực hiện các công việc đồng thời, các tác vụ được xem như là tiếntrình được lưu trữ thông tin, trạng thái tiến trình cũ thông qua PCB và nap thôngtin trạng thái tiến trình mới vào bộ nhớ chính cũng như các thanh ghi, hành vi nàycủa RTOS còn được gọi là chuyên ngữ cảnh (switching context)

12

Trang 22

General Purpose Operating System

Job 4 | [| [|

Job 2 L L L—] [|

o ft @¢ Il II I I ft

Hình 3 3 Hai tác vụ đang luân phiên thực hiện đồng thời [17]

Trong quá trình xây dựng và thiết kế các chương trình vi điều khiển, việc tuân thủ

va đáp ứng các hạn định thời gian nghiêm ngặt là một van đề hết sức quan trọng

Có thé lay ví dụ để chứng minh cho tính quan trọng của RTOS như sau, trong một

hệ thống xe Automotive nhằm điều khiển xử lý các tác vụ trên xe, mọi hoạt độngcủa hệ thống đều phải thông một mạng lưới giao tiếp của các ECU Với mỗi ECU

sẽ mang một chức năng cụ thé, ở đây chúng tôi sẽ xét đến ECU điều khiến việcbung mở túi khí bảo vệ tài xế khi phát hiện nguy hiểm, va chạm, hạn chế rủi ronguy hiểm khi lái xe Ở hình 3.4 có 2 tác vụ được thực thi, chúng tôi giả định tác

vụ (Job 1) là tác vụ bung mở túi khí và tác vụ (Job 2) là tác vụ ECU nhận các tín

hiệu từ môi trường bên ngoài Ở đây, tác vụ sẽ luôn nhận phản hồi, giám sát liêntục các yêu tô bên ngoài từ đó lay được các thông tin phát hiện quyết định mức độnguy hiểm, còn tác vụ bung túi khí thì sẽ luôn chờ cho đến khi nhận thông báo từcác cảm biến từ đó trưng dụng mọi quyền ưu tiên của CPU thực hiện việc bung túikhí đúng thời điểm bảo vệ tính mạng tài xế, hạn chế thương vong, việc bung túi khíđúng thời điểm là vô cùng quan trọng việc bung sớm hoặc trễ hơn đều có thé gây

ra thương vong nghiêm trọng cho tài xế khi lái xe chỉ tích tắc trong vài mili giây.Cũng vì lẽ đó, RTOS chính là sự lựa chọn tốt nhất dé quản lý các công việc đượcthực thi đồng thời với nhau và phải đảm bảo tính thời gian thực.

13

Trang 23

Real-Time Operating System (RTOS)

Job 1 preempts Job 2

Hình 3 4 Giản đồ minh họa hai công việc được thực hiện bằng RTOS [17]

Ngoài ứng dụng yêu cầu nghiêm ngặt về thời gian vừa được nêu trên, RTOS cũng

được ứng dụng trong các thiết bị điện tử đơn giản nhằm tận dụng tối đa tài nguyên

CPU, giảm độ trễ phản hồi, tạo trải nghiệm thoải mái hơn cho người dùng, thựchiện nhiều tác vụ với các chức năng được thực hiện đồng thời, ví dụ như thiết bịchơi game đèn đuôi ở hình 3.5

Hình 3 5 Thiết bị choi game đèn đuôi được thiết kế sử dung kit Arduino

Luật chơi của thiết bị yêu cầu người chơi phải nhân nút vào đúng thời điểm đèn ởgiữa sáng đèn để tính điểm và mỗi khi người chơi nhân đúng thi sẽ tăng tốc độ củađèn, khi người chơi nhắn sai thì giảm tốc độ đèn, song song với đó thiết bị cũng có

khả năng tính điểm in ra màn hình Console Log và người chơi sẽ chơi cho đến khi

nào hết điểm thì trò chơi kết thúc Có thê thấy, việc nhận phản hồi và xử lý ở thiết

bị trên khá nhiều và việc xử lý theo vòng lặp sẽ gặp nhiều van dé về độ trễ phản hồi

14

Trang 24

đầu vào/ đầu ra Tuy nhiên, đối với việc xử lý luồng chương trình đồng thời ở hình3.6 thì việc phản hồi nút bam trong quá trình đèn led được chạy sáng từng đèn từtrái qua phải sẽ bị trễ, khó nhận phản hồi từ người dùng Tuy nhiên, khi sử dụngphương pháp lập trình đa luồng tận dụng RTOS ngoài việc có thé tận dụng tối dathời gian hoạt động của CPU, chạy đa tác vụ đồng thời với độ trễ là nhỏ nhất, phảnhồi tốt nhất.

Tang/ giảm diem, thời

gian led chaser

Hình 3 6 Luồng chương trình thiết bị chơi game đèn đuổi sử dụng RTOS

Tuy nhiên, dé thay thế cho RTOS lập trình viên cũng có thé sử dụng các ngắt độ

ưu tiên phần cứng dé trưng dụng chương trình đang thực thi Dù vậy, ngắt phan

cứng có thê gây khó khăn trong việc sửa lỗi chương trình, đồng bộ hóa và bảo vệ

tài nguyên sử dụng như RTOS Việc lựa chọn phương pháp lập trình trưng dụng,

định thời phần nhiều còn phụ thuộc vào giải thuật thiết kế của người kỹ sư

3.2.2 Lập trình đa luồng bằng ngôn ngữ lập trình

Như đã đề cập từ trước, ngoài việc sử dụng hệ điều hành thời gian thực RTOS đểquản lý, điều phối các tác vụ chương trình còn có một trường phái sử dụng nền tảng

ngôn ngữ lập trình (C/C++, Python, Java, ) trong việc xử lý đa nhiệm các tác vụ.

15

Trang 25

Đối với phương pháp lập trình đa luồng sử dụng ngôn ngữ lập trình yêu cầu nềntang OS dùng dé chạy chương trình cần phải được cài đặt và thiết lập từ trước nhưcác dòng máy tính nhúng, máy tính bàn, laptop Lập trình đa luồng đem lại khánhiễu lợi ích trong da tác vụ, tận dụng tối da thời gian nhàn rỗi, tài nguyên của CPU

và giảm thiểu độ trễ tối thiểu trong quá trình thực thi và xử lý chương trình Ngoài

ra, trong lập trình quản lý đa tác vụ không thể không nhắc đến lập trình đa tiếntrình Tuy nhiên, việc lập trình đa tiến trình mang nhiều hạn chế về tài nguyên bộ

nhớ, việc chuyên đôi giữa một tiến trình sang tiến trình khác đòi hỏi thời gian, tài

nguyên cho việc lưu trữ, chuyển đổi ngoại cảnh thông qua PCB — Process ControlBlock so với lập trình đa luồng

3.3 Cơ sở lý thuyết về MOTT

3.3.1 Tống quan về giao thức MQTT

MQTT (Message Queueing Telemetery Transport) là loại giao thức truyền thônggiao tiếp phổ biến trong môi trường mang Internet, đặc biệt thường được thiết kế,xây dựng các ứng dụng thiết bị IoT Với ưu điểm trong việc truyền/ nhận các gói

tin với dung lượng nhẹ, tốc độ nhanh, băng thông thấp, được cung cấp miễn phí bởi

nhiều nền tảng có thé kế đến như flespi.io, cloudshiftr.io, Hive MQ, Ngoài ra,giao thức MQTT có mức tiêu thụ năng lượng thấp thường được truyền với khoảngcách xa trong mô hình mang giao tiếp các thiết bị IoT nội bộ

3.3.2 Nguyên tắc hoạt động MQTT

Trong mô hình mạng lưới giao tiếp sử dụng giao thức MQTT (Hình 3 7) các thiết

bi được đối xử ngang bằng với nhau và giao tiếp thông qua trung gian MQTTBroker hay còn được gọi là MQTT Server, dữ liệu các gói tin được giao tiếp chủyếu thông qua các topic Trước hết, cần phải làm rõ vai trò của các thiết bị trong

mô hình giao tiếp bằng phương thức MQTT để nắm được một số nguyên tắc cơ

bản khi sử dụng loại giao thức nay.

16

Trang 26

Hình 3 7 Mô hình Publisher — Subscriber [18]

Đối với giao thức MQTT sẽ có 2 vai trò chính là Publisher và Subscriber vớiPublisher sẽ là thiết bị thực hiện hành vi gửi (publish) gói tin dữ liệu cho Subscriber

đăng ký thông qua gói tin đã đăng ký (subscribe) tương ứng với gói tin Publisher

gửi (publish) cho Subscriber Mỗi một thiết bị trong MQTT đều có thể đóng cả 2vai trò publisher, subscriber phụ thuộc vào thiết kế giao tiếp MOTT giữa các thiết

bị và topic của các thiết bị giao tiếp thông qua MQTT broker

Giao thức MQTT chủ yếu giao tiếp dữ liệu bằng định dạng dữ liệu được gọi là các

“message payload”, mỗi một “message payload chứa một lượng dữ liệu thông tinnhất định được truyền đi dưới dạng chuỗi các ký tự văn bản thông qua các topicphân cấp Ví dụ trong mô hình nhà thông minh chăng hạn có nhiễu thiết bị loTđiều khiển như đèn phòng bếp, phòng ăn, phòng khach, khi này topic thiết lậptruyền dữ liệu phân cấp dưới dạng “led/livingroom/” cho đèn phòng khách còn đènphòng ăn thì “led/kitchen/” nhằm dé dé dàng phân biệt các thiết bị trong hệ thốngtheo một phân loại ngữ cảnh cụ thê

17

Trang 27

Ngoài ra, MQTT cũng có hỗ trợ cho các wildcard trong thiết lập cú pháp topic baogồm ký tự “+” và “#° Khi sử dụng ký tự “+” tức người lập trình bao hàm thay thécác topic cùng một cấp với nhau, ký tự “#” bao hàm các topic nằm ở mức độ thấp

hơn so với hiện tại.

Nhằm hỗ trợ đảm bảo quá trình truyền/ nhận dữ liệu, MQTT cung cấp 3 mức

QoS chính:

- QoS 0 (Nhiều nhất một lần): Là mức thấp nhất dịch vụ với cơ chế bên gửi sẽ

gửi dữ liệu cho bên nhận mà không quan tâm dữ liệu trạng thái nhận được dữ

liệu bên nhận, không có cơ chế lưu và truyền lại dit liệu khi trong quá trìnhtruyền bị dữ liệu bị mất thường gây ra bởi nguyên nhân tín hiệu mạng, đườngtruyền Internet không ổn định.

- QoS 1 (Ít nhất một lần): Dữ liệu được đảm bảo nhận ở bên nhận, tuy nhiên

điều này vô hình chung dẫn đến tình trạng dữ liệu bị trùng lặp do cơ chế lưutrữ và tái truyền lại của dịch vụ này

- QoS 2 (Đúng một lần): Với cơ chế đảm bảo liên tục trong giao tiép dữ liệu

giữa bên truyền và nhận, đây là mức đảm bảo cao nhất Dữ liệu được gán QoS

2 cho topic được truyền đến bên nhận đúng 1 lần, không trùng lặp cũng không

bị mat tuy nhiên dịch vụ này lại tiêu tốn băng thông cao so với 2 dịch vụ còn

18

Trang 28

3.4 Giao thức UART

3.4.1 Tổng quan về UART

UART (Universal asynchronous receiver-transmitter) là một trong những chuângiao tiếp nối tiếp đơn giản, phổ biến trong hầu hết các thiết bị điện tử với 2 đườngtín hiệu giao tiếp cho việc truyền (Tx) và nhận (Rx) dữ liệu bất đồng bộ với xungclock, truyền thông theo cơ chế song công (Full duplex), tức là có thể truyền vànhận dữ liệu tại một thời điểm nhờ vào 2 đường truyén/ nhận dit liệu độc lập Đồngthời, giao tiếp UART khá linh hoạt trong việc chuyên đổi thành các phương thứcgiao tiếp khác ví dụ như CAN, Wifi, Bluetooth, Zigbee,

Trong truyền thông giao tiếp giữa các thiết bị UART, thông thường sẽ được nốichéo dây giao tiếp giữa 2 thiết bị như hình 3 § cùng với Gnd được nối với nhaunhằm trung hòa dòng điện giữa 2 thiết bị, hạn chế nhiễu

UART 1 UART 2

><

Hình 3 8 Mô hình giao tiếp UART giữa 2 thiết bị [18]

3.4.2 Nguyên tắc hoạt động của giao tiếp UART

UART truyền/ nhận dữ liệu không đồng bộ với xung Clock vì thế để các thiết bịUART có thể giao tiếp và hiểu được nhau, lập trình viên cần phải thiết lập và càiđặt sao cho hai thiết bị có cùng cài đặt, đặc biệt là tốc độ truyền của 2 thiết bị(baudrate) Baudrate tức là thời gian cần thiết dé truyền 1 bit, tốc độ baudrate càngcao thời gian truyền/ nhận càng nhanh Do vậy, việc thiết lập tốc độ truyền/ nhận

giữa các thiết bị UART sẽ dẫn đến tình trạng truyền/ nhận sai các bit dữ liệu, mat

dữ liệu truyền/ nhận

19

Trang 29

Ngoài ra, khi thiết lập cài đặt cấu hình thiết bị giao tiếp UART việc cấu hình cácthông số cho gói tin và hiểu định dạng gói tin giao tiếp UART là vô cùng quan

trọng.

Packet

0 to 1 1to2

_ 5 to 9 data bits parity

bit bit stop bits

its

Data Frame

Hình 3 9 Dinh dạng gói tin giao tiép UART [18]

Định dang gói tin UART (Hình 3 9) bao gồm các thành phan sau:

Start bit: Tại trạng thái mặc định bình thường trên đường truyền dữ liệu thôngthường luôn mang trạng thái điện áp cao khi đang treo và không truyền dữliệu Vì thé, dé thông báo tín hiệu một gói tin dữ liệu mới chuẩn bị được truyềngói tin UART luôn bat đầu bang Start bit với mức điện áp thấp (OV) trong 1

chu kỳ clock.

Stop bit: Nhằm mục dich báo hiệu kết thúc đoạn dữ liệu được truyền đi bằng

phương pháp kéo điện áp thấp lên cao trở lại với 2 hoặc 1 bit theo định nghĩa

lý thuyết của gói tin UART Tuy nhiên, trong các trường hợp thông thườngchỉ cần sử dung 1 bit Stop bit

Parity bit: Bit chan lẽ nhằm mục dich bao đảm sự vẹn toàn của dữ liệu gói tin

được truyền Khi bên nhận kiểm tra dữ liệu nhận được nó sẽ tiễn hành đếm số

lượng bit có giá trị 1 và đếm tổng số bit 1 là chan hay lẻ Nếu parity bit là 1 thì

tổng số lượng bit 1 là số lẻ còn parity bit là 0 thì tong số lượng bit 1 là số chan

nếu parity bit giống với dit liệu nhận được, nếu dữ liệu nhận được không trùng

số lượng tông bit 1 với parity bit, lập trình viên dé dang nhận biết rằng dữ liệu

20

Trang 30

truyền/ nhận có van dé và thường bi gây ra bởi độ xa đường truyền dữ liệu,nhiễu từ trường điện, chênh lệch baudrate giữa 2 thiết bị giao tiếp UART.

- Khung truyền dữ liệu (Data frame): Các bit dữ liệu UART được truyền đi năm

bên trong khung truyền dữ liệu có thể truyền đi từ 5 đến 8 bit nếu bit parityđược sử dụng, vì vậy tối đa lập trình viên có thé truyén được 9 bit di liệu nếukhông sử dung bit parity Lưu ý rang, dữ liệu được truyền theo nguyên tắcLittle Endian nên bit mang trọng số nhỏ nhất sẽ được truyền đi trước

3.5 Giao thức GPIO

GPIO là cách gọi tắt của General Peripheral Input Output, đây là cách thức giao tiếp

cơ bản nhất với các chân pin kỹ thuật số có thể xuất tín hiệu số ở mức 0 và 1 (Hình

3 10) hoặc tuần tự đưới dạng các dãy sóng (Hình 3 11) thường được tích hợp và gắn

liên với các chân pin của vi điêu khiên nhăm điêu khiên hành vi thiệt bị được kết nôi.

Hình 3 10 Tín hiệu kỹ thuật số (Digital) [19]

Hình 3 11 Tín hiệu tuần tự (Analog) [19]

21

Trang 31

3.6 RMT

RMT (Remote Control Transciever) là ngoại vi được thiét ké cho viéc diéu khién tir

xa có thé được sử dụng để gửi và nhận tín hiệu bằng hồng ngoại được tích hợp vào

ESP32 theo định nghĩa của hãng espress-if Nhờ vào tính linh hoạt của mô dun RMT,

trình điều khiển có thé được sử dụng để tạo hoặc nhận nhiều loại tín hiệu khác nhau.Nguyên tắc của RMT (Hình 3 12) bao gồm 2 phần chính:

- Phần (a): Tạo sóng xung điều khién thiết bi, cụ thé là điều khiển đèn dây RGB

với chuẩn giao tiếp One-Wire Data, định nghĩa cu thé chi tiết được đề cậptrong datasheet của chip WS2812 trong việc điều khiển đèn 5050

- Phan (b): Tạo sóng mang cho các thiết bị điều khiển sử dụng chuẩn giao tiếp

3.7.1 Tống quan giao thức I2C

I2C là chuẩn giao tiếp nối tiếp, đồng bộ và truyền/ nhận dữ liệu theo cơ chế bánsong công (half duplex), tức là tại một thời điểm chỉ có thê đọc hoặc ghi [2C giaotiếp thông qua 2 dây giao tiếp SDA (Serial Data Line) và SCL (Serial Clock) Lưu

ý rằng, để có thé giao tiếp I2C người kỹ sư cần thiết lập trở kéo lên cho 2 đườngdây SDA va SCL Nhờ vào ưu điểm giá thành rẻ, chuẩn giao tiếp I2C được sử dụngkhá rộng rãi trong thiết kế của các thiết bị nhập xuất tốc độ chậm với khoảng cách

ngắn có thé kê đến như màn hình OLED, LCD TFT

22

Trang 32

3.7.2 Nguyên tắc hoạt động giao thức I2C

Mạng lưới truyền thông giao tiếp giữa các thiết bị I2C tuân thủ theo nguyên tắc

Master-Slave, trong đó:

- Master: Master có quyền quyết định trong việc đọc/ ghi từ các thiết bi Slave

thông qua đường bus giao tiếp SCL

- Slave: Thiết bi đóng vai trò Slave trong giao tiếp I2C luôn chịu sự chỉ phối

điều khiển từ Master, dé Master phân biệt từng Slave khác nhau đều thông qua

địa chỉ riêng được gán cho mỗi Slave, tùy thuộc vào thiết bị Slave địa chỉ giaotiếp I2C cho Slave đều được định nghĩa trong datasheet của thiết bị

Hình 3 13 Mô hình giao tiếp Master — Slave của I2C [21]

Theo hình 3 13, một master có thể có nhiều Slave nhưng slave thì chỉ có một master

chi phối việc đọc/ ghi dữ liệu.

Cũng như các loại phương thức giao tiếp khác, I2C định nghĩa gói tin như hình 3

14.

23

Trang 33

":_——-Đ Address Frame —=~ =~

Start Condition Data Frame 1 Data Frame 2 Stop Condition

Hình 3 14 Dinh dạng gói tin I2C [21]

Gói tin I2C thông thường được gọi là các “messages” Message được chia thành

các khung dữ liệu truyền tuần tự cho đến khi nhận stop bit, với mỗi message được

truyền đi bao gồm cả địa chỉ dưới dạng nhị phân của Slave dé xác định Slave màMaster giao tiếp, sau đó sẽ có một hoặc nhiều khung dữ liệu với tối đa 8 bits đượctruyền đi, mỗi 8 bits tức 1 byte được xem như là một khung dữ liệu Ngoài ra,message cũng bao gồm các bit điều kiện Start/ Stop, bit Read/ Write (Đọc/ ghi) vàbit ACK/ ANCK nhằm dam bảo dữ liệu giao tiếp ở giữa mỗi khung Cụ thé cácthành phan cấu thành gói tin I2C được định nghĩa như sau:

- Start bit: Dây dữ liệu SDA sẽ chuyên mức điện áp từ cao sang thấp trước khi

dây SCL chuyền từ mức cao xuống thấp

- Stop bit: Dây dữ liệu SDA chuyền từ mức điện áp từ mức thấp lên cao sau khi

dây SCL chuyên từ mức thấp lên cao

- _ Khung địa chi Slave: Chuỗi địa chỉ bao gồm 7 hoặc 10 bit, định danh cho từng

Slave.

- Read/ Write bit: Bit xác định Master đọc/ ghi vào Slave với bit 0 là ghi và bit

1 là doc.

- ACK/NACK bit: Ở giữa mỗi khung dit liệu đều có bit ACK/ NACK, nếu một

khung dữ liệu được gửi thành công khi thực hiện thuật toán so sánh dữ liệu,

dữ liệu giữa Master và Slave khớp nhau thì sẽ trả về ACK thiết bị nhận để

thông báo.

24

Trang 34

3.8 Công cụ phát triển ứng dụng MIT App Inventor

Công cụ phát triển ứng dung MIT App Inventor là một công cụ hỗ trợ giúp cho người

dùng có thể thiết kế và phát triển ứng dụng dựa trên các khối block mà không cần

biết quá nhiều về không ngữ lập trình, ứng dụng được lập trình thông qua công cụđều có thé chạy trên ca 2 nền tảng hệ điều hành bao gồm: Android và iOS

25

Trang 35

Chương 4 THIET KE MÔ HÌNH GIẢI PHÁP

Hình 4 1 Sơ đồ giải pháp đề xuất đơn giản

Giải pháp được đề xuất dé giải quyết van dé dé tải đưa ra bao gồm 3 phan chính

theo sơ đồ mô hình của hình 4.1:

(a): Phần đầu tiên, là phần thiết bị nhận diện cử chỉ bàn tay Tại đây, chúng tôi thiết

kế thiết bị sao cho thiết bị có khả năng thu thập hình ảnh từ đó thông qua bộ xử ký

mang thuật toán AI bên trong dòng cho ra kết quả bàn tay được nhận diện Loại

bàn tay nhận diện và kết quả được đặc tả tượng trưng dữ liệu mã hóa giao tiếp giữathiết bị điều khiển nhận diện cử chỉ bàn tay đến các thiết bị được điều khiển trong

bảng 4 1 Tương ứng với mỗi cử chỉ bàn tay sẽ có các bit giá trị được xuất ra và

26

Trang 36

được truyền dữ liệu thông qua UART đến thiết bị trong mô hình chúng tôi tạm gọi

là “Wifi Module Server”, có thé gọi tắt là “Server”

STT Mô tả Mã Code Ghi chú

Bang 4 1 Bảng đặc tả cử chỉ ban tay

(b): Đối với thiết bị “Server”, thiết bị này mang vai trò như một thiết bị trung gian

trong việc phân phát gói tin dữ liệu nhận được từ thiết bị nhận diện cử chỉ bàn tayđến thiết bị thông qua nhiều loại giao tiếp vì giới hạn đề tài chúng tôi chỉ sử dụngWiFi để giao tiếp với các thiết bị ở bên phần mục mô hình ứng dụng (c) Do đó,thiết bị “Server” trung gian đóng vai trò như một module WiFi

(c): Mô hình ứng dụng bao gồm 3 thiết bị điều khiển và tương tác chính với thiết

bị nhận diện cử chỉ bàn tay: Thiết bị điều khiển màn hình OLED, thiết bị điều khiển

đèn dây RGB và xe robot điều khiến Tất cả thiết bị trên đều là các thiết bị giao tiếpToT có ứng dụng hỗ trợ được phát triển đi kèm nhằm hỗ trợ trong việc cấu hìnhhoặc chỉ đơn giản là giám sát thiết bị

Việc giao tiếp giữa thiết bị nhận diện bàn tay và các thiết bị mô hình ứng dụng bạnđọc có thê hình dung thông qua giản đồ giao tiếp sau:

27

Trang 37

Thiết bị nhận điện cử Wifi Module Server Driver điều khién đèn Driver điều khién man Driver diéu khién xe

chi ban tay day RGB hinh OLED

Hình 4 2 Giản đồ độ trễ truyền thông giao tiếp của giải pháp đề xuất

Cơ chế giao tiếp của mô hình yêu cầu thiết bị mô hình được điều khiển phải cho phépnhận dữ liệu điều khiển bằng cách gửi tín hiệu thông báo thì thiết bị nhận diện bàntay mới có khả năng điều khiến Việc giao tiếp chủ yếu diễn ra thông qua trung gianWifi Module Server thay mặt cho thiết bị nhận diện cử chỉ bàn tay giao tiếp vớiMQTT Broker loại được cung cấp miễn phí bởi nền tảng flespi.io trong việc truyền/

nhận dữ liệu với các thiệt bị mô hình điêu khiên, dựa vào hình 4.2 cân tông cộng

1300ms dé thiết bị nhận diện cử chỉ bàn tay gửi tín hiệu điều khiển đến thiết bị điều

khiến gửi tín hiệu cho phép điều khiển

28

Trang 38

4.2 Thiết kế thiết bị nhận diện cử chỉ bàn tay

4.2.1 Thiết kế phan cứng thiết bị nhận diện cử chỉ bàn tay

| Tay Tay OND {

| | GND] Trá Phả i

| |

a ' ' i| DOOOOO® \ Sub-Module phản hdi_ |

I | dén trang thai nhan Ï |

| | Sub-module web- cron | dién ban tay |

server | | Ị h

M WAY Lo EY eed Mek bok Ree Oe ede "+ | i

e - - STISELHNS FETPaELLEHLE chương ,Ở

Hình 4 3 Kiến trúc thiết kế phần cứng cho thiết bị nhận diện cử chỉ bàn tay

Kiến trúc phần cứng cho thiết bị nhận diện cử chỉ bàn tay (Hình 4 3) bao gồm các

thành phần cấu thành chính sau:

29

Trang 39

(a): Như đã được đề cập trước đó, Server module Wifi mà chúng tôi bàn luận đến sẽđược hiện thực bằng vi điều khiến ESP32 với nhiều ưu điểm trong việc phát triển hệthống IoT, đa hỗ trợ các kết nối không dây, có dây và hỗ trợ giao tiếp sử dụng MQTTkhiến cho ESP32 là module lý tưởng được lựa chọn dé làm thiết bị trung gian đảmnhận việc giao tiếp UART với máy tính nhúng Raspberry Pi 4 rồi truyền dữ liệu đếncác thiết bi ứng dụng điều khién Cụ thê, loại module ESP32 chúng tôi sử dụng thuộcdòng ESP32-S được sản xuất bởi hãng AJ-Thinker (Hình 4 4).

Hình 4 4 Kit ESP32-S AI-Thinker

Hình 4 4 minh họa cho vi điều khién ESP32-S thuộc dòng ESP32 con trong dòngseries họ vi điều khiên ESP32 với giá rẻ, mức tiêu thụ năng lượng thấp và có các chế

độ tiết kiệm năng lượng, tích hợp bộ phát sóng không dây cho cả Bluetooth (Hỗ trợ

cho cả BLE và Bluetooth Classic)/ Wifi với lõi xử lý kép Xtensa 32 bit LX6 được

phát triển bởi công ty công nghệ Shenzhen AI-Thinker dựa trên ESP32 được pháttriển bởi công ty Espresslf System Ở mỗi dòng họ ESP32 khác nhau sẽ có các đặcthù phan cứng kỹ thuật khác nhau về lõi chip, SRAM, dung lượng bộ nhớ Flash, thứ

tự sắp xếp chân chip của UART, số lượng chân chip, xung nhịp hoạt động tối đa

(b): Trong thiết kế hệ thống nhận diện cử chỉ bàn tay sử dụng máy tính nhúngRaspberry Pi 4 (Hình 4 5) làm bộ xử lý chính trong việc tiếp nhận các frame hình

ảnh từ Pi camera từ đó tính toán thông qua Framework Mediapipe nhận diện cử chi

bàn tay dé xác định loại cử chỉ bàn tay rồi xuất ra giá trị dữ liệu 8 bits thông qua cônggiao tiếp UART với chân Tx (GPIO14) Rx (GPIO15) được nối chéo đến chân Tx(GPIO17) Rx (GPIO16) của Server Wifi module trung gian Ngoài ra, dé việc truyền

dữ liệu UART được vẹn toàn giữa ESP32 va Raspberry Pi 4 cần có chung GND So

30

Trang 40

với các loại máy tính nhúng khác Raspberry Pi 4 Model B là một giải pháp tầm trungnoi bật hơn cả vì giá thành rẻ, công suất tiêu thụ thấp với mức giá trị công suất trung

bình dao động 3W — 4W [22] và khả năng xử lý với CPU và GPU cao hơn các dòng

Raspberry Pi trước đó 30% [23] so với các thế hệ trước đó của dòng Raspberry Pi 4,

mặc dù khả năng xử lý mô hình máy học của Raspberry Pi 4 Model B được đánh gia

yếu hơn Jetson Nano về khả năng xử lý của RAM, GPU, [24][25] nhưng khi xemxét về hiệu năng xử lý cùng giá thành đắt đỏ Raspberry Pi 4 Model B lại là lựa chọn

phù hợp hơn ca dé hiện thực thiết bị nhận diện cử chỉ bàn tay so với Jetson Nano thi

lại phù hợp hơn đối với các ứng dụng đòi hỏi xử lý cao hơn như các ứng dụng điềukhiển xe hoặc robot sử dụng học máy Đồng thời, việc thiết kế trên thiết bị máy tínhnhúng hạn chế về khả năng xử lý sẽ giúp cho giải thuật và mô hình xử lý phát triển

được tối ưu hơn và có thê chạy da dang nền tang máy tính nhúng hơn trong tương lai

Sơ lược qua về Raspberry PI 4 Model B (Hình 4 5), đây là một thiết bị máy tínhnhúng chạy hệ điều hành nhân kernel Unix của nhà sản xuất Raspberry Pi và hiện đây

là phiên bản mới nhất của họ Nhờ vào khả năng và bộ xử lý của mình tương tự như

một bộ máy tính nhỏ, tiện dụng với giá thành phải chăng, rẻ hơn so với Jetson Nano

khiến cho Raspberry Pi trở thành một trong những thiết bị lý tưởng áp dụng xây dựngthiết kế hệ thống mô hình AI trong việc nhận diện cử chỉ tay

31

Ngày đăng: 08/12/2024, 14:59

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w