1. Trang chủ
  2. » Thể loại khác

KHOÁ LUẬN TỐT NGHIỆP ĐỀ TÀI: THIẾT KẾ VÀ THI CÔNG MẠCH ĐIỀU KHIỂN ĐỘNG CƠ XOAY RUBIK GVHD: Ths Lâm Quang Chuyên

71 21 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ế và thi công mạch điều khiển động cơ xoay rubik
Tác giả Hồ Quốc Khải, Hồ Tuấn Khanh, Nguyễn Phương Duyên
Người hướng dẫn Ths. Lâm Quang Chuyên
Trường học Trường Cao Đẳng Công Thương TPHCM
Thể loại Khóa luận tốt nghiệp
Năm xuất bản 2019
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 71
Dung lượng 9,03 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Cấu trúc

  • CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN VỀ ROBOT XOAY RUBIK (14)
    • 1.1. Rubik (14)
    • 1.2. Robot xoay rubik (16)
    • 1.3. Giới hạn đề tài (18)
  • CHƯƠNG 2: CƠ SỞ LÝ THUYẾT (19)
    • 2.1. Sơ đồ mạch điều khiển (19)
    • 2.2. Giới thiệu nguồn tổ ong (nguồn xung) (20)
    • 2.3. Giới thiệu IC LM2576 (21)
    • 2.4. Giới thiệu module DRV8825 (23)
      • 2.4.1. Tổng quan (23)
      • 2.4.2. Thông số kỹ thuật (24)
    • 2.5. Giới thiệu động cơ bước (25)
      • 2.5.1. Cấu tạo động cơ bước (25)
      • 2.5.2. Nguyên lý làm việc chung của động cơ bước (27)
      • 2.5.3. Thông số kỹ thuật động cơ bước (29)
    • 2.6. Giới thiệu module Bluetooth HC-05 (30)
      • 2.6.1. Giới thiệu (30)
      • 2.6.2. Sơ đồ chân HC-05 (30)
      • 2.6.3. Các chế độ hoạt động (31)
    • 2.7. Tổng quan về Arduino (33)
      • 2.7.1. Khái niệm (33)
      • 2.7.2. Giới thiệu Arduino Mega2560 (34)
      • 2.7.3. Đôi nét về Arduino Mega2560 (35)
    • 2.8. Giới thiệu App Inventor (37)
      • 2.8.1. Giới thiệu (37)
      • 2.8.2. Giao diện điều khiển động cơ trên điện thoại (0)
  • CHƯƠNG 3: THIẾT KẾ MẠCH ĐIỀU KHIỂN (41)
    • 3.1. Sơ đồ nguyên lý mạch điều khiển động cơ xoay rubik (41)
    • 3.2. Thiết kế các khối trên mạch điều khiển (42)
      • 3.2.1. Thiết kế khối nguồn (42)
      • 3.2.2. Thiết kế khối bluetooth HC-05 (42)
      • 3.2.3. Thiết kế khối xử lý trung tâm (44)
      • 3.2.4. Thiết kế khối driver DRV8825 (45)
      • 3.2.5. Thiết kế khối Input (46)
      • 3.2.6. Thiết kế khối Output (47)
    • 3.3. Hình ảnh mô phỏng mạch điều khiển trên phần mềm Altium (47)
    • 3.4. Hình ảnh thực tế thi công hoàn thiện khoá luận (48)
    • 4.1. Kết luận (50)
    • 4.2. Kiến nghị (50)
  • PHỤ LỤC (52)
    • 5.1. Bước thứ nhất: tạo thành một chữ thập trắng (52)
    • 5.2. Bước thứ hai: hai lớp đầu tiên – F2L (53)
    • 5.3. Bước thứ ba: định hướng hai lớp cuối cùng – OLL (55)
    • 5.4. Bước cuối cùng: hoán vị lớp cuối cùng – PLL (57)
  • TÀI LIỆU THAM KHẢO (71)

Nội dung

GIỚI THIỆU TỔNG QUAN VỀ ROBOT XOAY RUBIK

Rubik

Vào năm 1974, kiến trúc sư Erno Ruik đến từ Hungary đã cho ra đời món đồ chơi Rubik nổi tiếng, xuất phát từ niềm đam mê hình học và nghiên cứu các mẫu dạng ba chiều.

Rubik 3x3x3 có sáu màu sắc khác nhau: trắng, đỏ, vàng, cam, xanh lá cây và xanh dương, với mỗi mặt gồm chín ô vuông Bài toán xoay rubik bắt đầu bằng việc xáo trộn các ô vuông trên mỗi mặt, tạo ra sự xen kẽ màu sắc.

Rubik là trò chơi có cách chơi đơn giản nhưng đầy thử thách, giống như việc giải một bài toán Người chơi bắt đầu bằng cách xáo trộn các ô màu trên khối Rubik và nhiệm vụ của họ là sắp xếp lại các ô màu để khôi phục hình dạng ban đầu với 6 mặt màu đồng nhất.

Khối Rubik tiêu chuẩn có kích thước mỗi cạnh là 5,7 cm và được cấu tạo từ 26 khối nhỏ Mỗi mặt của khối Rubik có một hình vuông ở giữa, kết nối với cơ chế khung lõi, giúp các mảnh khác xoay quanh Khối Rubik có thể dễ dàng tháo ra bằng cách xoay một mặt 45° và lắc một khối ở cạnh cho đến khi nó rời ra, phương pháp này thường được sử dụng để "giải" khối Các mảnh ở cạnh của khối Rubik có màu sắc khác nhau, nhưng không phải tất cả các tổ hợp màu đều xuất hiện, như với khối Rubik tiêu chuẩn, mặt xanh lá và xanh dương không có cạnh giáp nhau.

Minh Thái, một người Mỹ gốc Việt, đã giành chiến thắng trong cuộc thi vô địch thế giới về xoay Rubik đầu tiên tại Budapest vào tháng 6 năm 1982 với thời gian 22,95 giây khi mới 16 tuổi, đang là học sinh trung học ở Los Angeles Kể từ năm 2003, các cuộc thi Rubik tính điểm dựa trên thành tích tốt nhất trong 5 lần thử, nhưng mỗi kết quả của từng lần vẫn được ghi nhận Liên đoàn Rubik thế giới (WCA) chịu trách nhiệm theo dõi và công nhận các thành tích tốt nhất trong môn thể thao này.

Trong đó, liên đoàn Rubik thế giới chỉ chính thức quản lý giải bịt mắt, liên tiếp bịt mắt, một tay, bằng chân và tối ưu

Kỷ lục thế giới hiện tại trong bộ môn giải Rubik là 3,47 giây, do Yusheng Du đến từ Trung Quốc thiết lập Trong khi đó, thành tích trung bình cao nhất thế giới thuộc về Feliks Zemdegs với thời gian trung bình 5,69 giây, ghi nhận tại sự kiện Koalafication Brisbane 2019 với các lần giải lần lượt là 6,90, 5,64, 5,57, 5,79 và 5,63 giây.

Ngoài giải xoay nhanh, các hình thức thi đấu Rubik khác bao gồm: giải bịt mắt, giải bịt mắt liên tiếp, giải đồng đội, giải dưới nước, giải một tay, giải bằng chây và giải tối ưu Những giải đấu này không chỉ thể hiện kỹ năng mà còn mang đến thử thách đa dạng cho người chơi.

Rubik hiện đại chủ yếu được làm từ nhựa và bao gồm bốn phiên bản chính: 2×2×2 (hay còn gọi là "Khối bỏ túi"), 3×3×3 (khối tiêu chuẩn), 4×4×4 ("Rubik báo thù") và 5×5×5 ("Rubik giáo sư") Gần đây, thị trường cũng đã xuất hiện các khối lớn hơn như 6×6×6 và 7×7×7 (V-Cube).

Hình 1-1: Rubik 2x2 Hình 1-2: Rubik 3x3 Hình 1-3: Rubik 4x4

Rubik không chỉ giới hạn ở các khối 3x3, 4x4 mà còn có nhiều biến thể thú vị như Rubik 5x5, 6x6, 7x7 và các khối khác như Pyraminx, Skewb Diamond, Megaminx và Dogic Ngoài ra, còn có những khối không lập phương như 2×3×4, 3×3×5, 1×2×3 Sự phát triển của công nghệ máy tính cũng đã mở ra nhiều khả năng mới cho việc giải quyết các khối Rubik này.

3 đã có thể mô phỏng các khối Rubik trong không gian đa chiều mà bình thường không thể tạo ra ngoài thực tế

Hình 1-7: Một số biến thể khác của khối rubik chuẩn

Robot xoay rubik

Khối Rubik, nổi tiếng với màu sắc đa dạng và các ô vuông phức tạp, đã được robot Sub1 giải trong thời gian kỷ lục 0,887 giây Được chế tạo bởi kỹ sư Albert Beer, robot này chỉ cần 20 động tác để sắp xếp các ô vuông cùng màu vào một mặt, với các động tác xoay được thực hiện nhờ thuật toán máy tính.

Robot Rubik Contraption, được phát triển bởi Jared Di Carlo và sinh viên Ben Katz tại Viện Công nghệ Massachusetts, đã thiết lập kỷ lục mới khi giải khối rubik 3x3 chỉ trong 0,38 giây Kỷ lục trước đó thuộc về Sub1 Reloaded của Infineon Technologies với thời gian 0,63 giây.

Rubik Contraption được trang bị camera Playstation Eye với công nghệ thị giác máy tính, cùng với sáu động cơ ServoDisc U-9 và sáu trình điều khiển có khả năng nhận dạng cử chỉ.

Nhóm nghiên cứu đã áp dụng thuật toán hai pha min2phase kết hợp với camera Playstation 3 để giúp robot nhận diện màu sắc và tìm ra giải pháp trước khi thực hiện nhiệm vụ Di Carlo cho biết toàn bộ quá trình chỉ mất khoảng 45 mili giây.

Robot MasterP, do Mike Thomas chế tạo, đã xuất sắc giải khối Rubik 3x3 chỉ trong 0,337 giây, phá vỡ kỷ lục trước đó là 0,38 giây của robot Rubik Contraption Thành tích này cũng vượt xa kỷ lục 4,59 giây của con người do SeungBeom Cho thiết lập vào năm ngoái.

Hầu hết các mẫu robot lập kỷ lục xoay rubik 3x3 dưới một giây trước đây đều sử dụng động cơ công nghiệp, bao gồm động cơ bước và động cơ servo cao cấp.

MasterP sử dụng động cơ servo thường, phổ biến trong ôtô, máy bay và tàu thuyền Mặc dù động cơ servo thường có trên thị trường không nhanh bằng động cơ công nghiệp, nhưng tôi đã thực hiện nhiều cải tiến để tăng tốc độ, bao gồm thiết kế lại cảm biến, bảng mạch điều khiển và hộp số, Thomas giải thích.

Các điều chỉnh đã nâng cao hiệu suất của động cơ, nhưng robot vẫn chưa đủ nhanh để phá kỷ lục thế giới Thomas đã tìm ra giải pháp cải thiện thời gian bằng cách xoay cả hai mặt đối diện cùng lúc Mặc dù không thể giảm số bước cần thiết (20 bước) để giải khối rubik, việc di chuyển đồng thời hai khối lập phương chỉ trong một lần xoay giúp robot MasterP chỉ cần 13 động tác cơ học để hoàn thành 20 bước dịch chuyển.

Giới hạn đề tài

 Thời gian nghiên cứu: 11/02/2019 đến 15/06/2019

 Phạm vi nghiên cứu: Trường Cao đẳng Công Thương TP HCM

 Cấp độ nghiên cứu: Khoá luận tốt nghiệp

CƠ SỞ LÝ THUYẾT

Sơ đồ mạch điều khiển

Hình 2-1: Sơ đồ khối mạch điều khiển

Giới thiệu nguồn tổ ong (nguồn xung)

Nguồn tổ ong, hay còn gọi là nguồn xung, được đặt tên theo hình dạng lỗ thông hơi thoát nhiệt của nó, giống như cấu trúc của tổ ong Tên gọi này giúp người dùng dễ nhớ và nhận diện sản phẩm hơn.

Nguồn xung là bộ nguồn chuyển đổi điện xoay chiều thành điện một chiều thông qua chế độ dao động xung, sử dụng mạch điện tử kết hợp với biến áp xung.

Nguồn tuyến tính cổ điển sử dụng biến áp sắt từ để hạ áp, sau đó kết hợp với chỉnh lưu và IC nguồn tuyến tính để tạo ra các mức điện áp một chiều theo yêu cầu, như 3.3V, 5V, 6V, v.v.

Nguồn tuyến tích thường nặng nề, cồng kềnh và tiêu tốn nhiều vật liệu, do đó ít được sử dụng trong một số trường hợp Mặc dù nguồn tuyến tính có những ưu điểm mà nguồn xung không thể đạt được, nhưng nguồn xung lại tạo ra sóng hài, ảnh hưởng tiêu cực đến chất lượng lưới điện Ngược lại, nguồn tổ ong có giá thành rẻ, gọn nhẹ và dễ tích hợp cho các thiết bị nhỏ gọn, đồng thời mang lại hiệu suất cao.

Chế tạo thiết bị yêu cầu kỹ thuật cao và thiết kế phức tạp, gây khó khăn trong việc sửa chữa cho người mới học Hơn nữa, tuổi thọ của sản phẩm thường không cao do chủ yếu được cấu tạo từ các linh kiện bán dẫn.

Hình 2-2: Cấu tạo bộ nguồn xung

Giới thiệu IC LM2576

IC LM2576 là một mạch nguồn tích hợp theo nguyên lý Buck, cung cấp dòng điện đầu ra tối đa 3A với các điện áp cố định là 3.3V, 5V, 12V và 15V, cùng với các điện áp biến đổi tùy thuộc vào từng loại Serial Đây là một giải pháp hiệu quả cho nguồn điện ổn định, hoạt động tốt trong khoảng nhiệt độ cho phép nhờ vào thiết kế tản nhiệt hiệu quả.

Một số tính năng chính của LM2576:

 Điện áp đầu ra của các Serial là 3.3V, 5V, 12V, 15V và điện áp điều chỉnh

 Điện áp điều chỉnh được từ 1.25V đến 37V Với điện áp đầu vào là lớn nhất

 Dòng đầu ra định mức là 3A

 Điện áp đầu vào định mức là 40V có thể lớn 60V tùy từng dòng Serial

 Chỉ giao tiếp với 5 chân đầu vào ra

 Tần số đóng cắt chuẩn 52Khz

 Bảo vệ quá dòng và quá nhiệt

Sơ đồ cấu tạo của LM2576:

Nguyên tắc hoạt động của nguồn xung Buck là điều chỉnh liên tục điện áp đầu ra để duy trì giá trị cố định Sơ đồ cấu tạo của LM2576 bao gồm các khối như so sánh, tạo dao động, công suất và bảo vệ quá dòng.

Chân 1 (Vin): Chân nguồn đầu vào

Chân 2 (Vout): Chân điện áp đầu ra Tùy thuộc dòng LM2576 mà chân này có điện áp ra ổn định khác nhau

Chân 3 (GND): Chân nguồn chung

Chân 4 (Feedback): Chân đưa tín hiệu phản hồi từ đầu ra về đầu vào Đưa vào bộ so sánh để điều chỉnh ổn định điện áp

Chân 5 (On/Off): Chân đóng mở Thường để GND

Thông số chính của LM2576: Điện áp đầu vào: LM2576: 45V, LM2576HV: 60V

Giải nhiệt độ hoạt động là: −65˚C to +150˚C Điện áp ổn định đầu ra: LM2576HVS-3.3:3.3V, LM2576HVS-5.0:5V, LM2576HVS- 12:12V, LM2576HVS-15:15V, LM2576HVS-ADJ: ADJ (1.25V ~ 37V)

Sơ đồ nguyên lý theo nhà sản xuất đưa ra như sau:

Mạch cần phải được lắp chính xác và tản nhiệt tốt cho LM2576.

Giới thiệu module DRV8825

Driver DRV8825 với đầy đủ các tính năng của một driver chuyên nghiệp: điều chỉnh dòng giới hạn, vi bước ( 1/32 bước), bảo vệ quá dòng, quá nhiệt, …

Driver hoạt động hiệu quả trong dải điện áp từ 8.2V đến 45V, cung cấp khoảng 1,8A trên mỗi pha mà không cần tản nhiệt Với chân ra và bề mặt tương tự như module A4988, driver này có thể thay thế cho board A4988 trong nhiều ứng dụng khác nhau.

Giao diện điều khiển bước và hướng đơn giản Sáu độ phân giải bước khác nhau:

 Bước đầy đủ, nửa bước, 1/4 bước, 1/8 bước, 1/16 bước và 1/32 bước

Điều khiển dòng điện có thể điều chỉnh cho phép bạn thiết lập đầu ra dòng tối đa thông qua chiết áp, giúp sử dụng điện áp vượt quá mức định mức của động cơ bước, từ đó đạt được tốc độ bước cao hơn.

 Điều khiển cắt thông minh tự động chọn chế độ phân rã hiện tại chính xác (phân rã nhanh hoặc phân rã chậm) Điện áp cung cấp tối đa 45 V

 Bộ điều chỉnh tích hợp (không cần cung cấp điện áp logic bên ngoài) Có thể giao tiếp trực tiếp với hệ thống 3,3 V và 5 V

Bảo vệ quá nhiệt, quá dòng và khóa dưới điện áp là những tính năng quan trọng, cùng với bảo vệ ngắn mạch và tiếp đất PCB 4 lớp với hai lớp phủ đồng giúp cải thiện hiệu suất tản nhiệt hiệu quả.

 Điện áp cung cấp: 8.2~45VDC Dòng trung bình (RMS): 1.5A, dòng đỉnh (Peak) lên đến 2.5A

 Sáu độ phân giải bước khác nhau: full, half step, 1/4 step, 1/8 step, 1/16 step, 1/32 step

 Điện áp điều khiển: 3.3V và 5V Tự động shutdown khi quá nhiệt, quá dòng Bảo vệ ngắn mạch và bảo vệ quá tải

 Mạch 4 lớp, 2 lớp phủ đồng giúp cải thiện khả năng tản nhiệt Có thể thay thế tốt cho Driver A4988 trong máy in 3D

Hình 2-5: Sơ đồ chân module Driver8825

Hình 2-6: Sơ đồ chân và cách kết nối linh kiện với IC DRV8825

Giới thiệu động cơ bước

2.5.1 Cấu tạo động cơ bước Động cơ bước là một loại động cơ điện có nguyên lý và ứng dụng khác biệt với đa số các loại động cơ điện thông thường

Động cơ đồng bộ là thiết bị chuyển đổi tín hiệu điều khiển thành chuyển động góc quay hoặc chuyển động của Rotor, đồng thời có khả năng cố định Rotor ở các vị trí cần thiết.

Động cơ bước bao gồm 4 cuộn dây Starto được bố trí đối xứng qua tâm, trong khi rotor là nam châm vĩnh cửu với nhiều răng.

Động cơ bước hoạt động dựa trên nguyên lý điện – từ trường, trong đó các cực cùng dấu đẩy nhau và các cực khác dấu hút nhau Chiều quay của động cơ được xác định bởi từ trường của Stator, được tạo ra bởi dòng điện chạy qua lõi cuộn dây Khi dòng điện thay đổi hướng, cực từ trường cũng thay đổi theo, dẫn đến chuyển động ngược lại của động cơ (đảo chiều).

Động cơ bước hoạt động nhờ vào các bộ chuyển mạch điện tử cung cấp tín hiệu điều khiển cho Stator theo một thứ tự và tần số nhất định Tổng số góc quay của Roto tương ứng với số lần chuyển mạch, trong khi chiều quay và tốc độ của Roto phụ thuộc vào thứ tự và tần số chuyển đổi.

Khi một xung điện áp được áp dụng vào cuộn dây Stator của động cơ bước, Rotor sẽ quay một góc nhất định, được gọi là góc bước (Step Angle) Góc bước này là độ quay nhỏ nhất mà nhà sản xuất quy định cho động cơ.

Khi điện áp liên tục thay đổi trên các cuộn dây phần ứng, Roto sẽ quay liên tục, mặc dù chuyển động này thực chất diễn ra theo các bước rời rạc.

Hình 2-9: Cấu tạo của động cơ bước

Động cơ bước là một linh kiện số, chuyển đổi thông tin số hóa thành chuyển động quay theo từng bước Nó thực hiện chính xác các lệnh số hóa mà máy tính yêu cầu.

Hình 2-10: Một xung tương ứng với một bước của Roto

Hình 2-11: Tương quan giữa quá trình điện và quá trình cơ của động cơ bước

2.5.2 Nguyên lý làm việc chung của động cơ bước

Khác với động cơ động bộ thông thường, động cơ bước không sử dụng cuộn dây ở rotor mà khởi động bằng phương pháp tần số Rotor của động cơ bước có thể được chia thành hai loại: rotor tích cực, khi được kích thích, và rotor thụ động, khi không được kích thích.

Hình 2-12: Xung điện áp Xung điện áp cấp cho cuộn dây Stator có thể là xung 1 cực hoặc 2 cực

Chuyển mạch điện tử cung cấp điện áp điều khiển cho các cuộn dây Stator một cách linh hoạt, có thể theo từng cuộn hoặc theo nhóm Trị số và chiều của lực điện từ tổng F phụ thuộc vào vị trí của các lực điện từ thành phần Do đó, vị trí của Rotor trong động cơ bước hoàn toàn phụ thuộc vào phương pháp cung cấp điện cho các cuộn dây.

Hình 2-13: Nguyên lý hoạt động động cơ bước với Rotor 2 cực và các lực điện từ khi điều khiển bằng xung 1 cực

Động cơ bước m pha với Rotor có 2 cực (2p=2) được mô tả qua sơ đồ nguyên lý Khi các cuộn dây được cấp điện lần lượt theo thứ tự 1, 2, 3, … m bằng xung 1 cực, Rotor sẽ có m vị trí ổn định phù hợp với trục của các cuộn dây Để tăng cường lực điện từ tổng của Stator, từ đó nâng cao từ thông và moment đồng bộ, cần cấp điện đồng thời cho hai, ba hoặc nhiều cuộn dây Khi đó, Rotor sẽ có vị trí cân bằng ổn định trùng với vector lực điện từ tổng F, và giá trị của lực điện từ tổng này sẽ lớn hơn lực điện từ thành phần của các cuộn dây Stator.

Khi cung cấp điện cho hai cuộn dây, lực từ tổng F được tạo ra có trị số lớn hơn và nằm ở vị trí chính giữa hai trục của các cuộn dây.

Khi cung cấp điện cho ba cuộn dây cùng lúc, lực điện từ tổng F được tạo ra nằm trùng với trục của cuộn dây và có giá trị lớn hơn.

Trong cả hai trường hợp, khi cấp điện cho một số chẵn hoặc lẻ cuộn dây, Rotor của động cơ bước sẽ đạt được m vị trí cân bằng.

Góc xê dịch giữa hai vị trí trên của Rotor bằng 2π/m

Khi cấp điện theo thứ tự các cuộn dây chẵn và sau đó là các cuộn dây lẻ, số lượng cuộn dây được điều khiển sẽ liên tục thay đổi giữa chẵn và lẻ Điều này dẫn đến việc số vị trí cân bằng của Rotor tăng gấp đôi lên 2m, trong khi độ lớn của một bước giảm xuống còn 2π/m Tình huống này được gọi là điều khiển không đối xứng hoặc điều khiển nữa bước (half step).

Giới thiệu module Bluetooth HC-05

Bluetooth là công nghệ truyền thông không dây cho phép trao đổi dữ liệu ở khoảng cách ngắn, sử dụng sóng radio tần số UHF trong dải tần ISM từ 2.4 đến 2.485 GHz Khoảng cách truyền tối đa của công nghệ này thường đạt khoảng 10 mét.

Module được thiết kế dựa trên chip BC417, có cấu trúc phức tạp và sử dụng bộ nhớ flash ngoài 8Mbit Tuy nhiên, việc sử dụng module này rất dễ dàng nhờ vào sự tích hợp đầy đủ của nhà sản xuất trên module HC-05.

Hình 2-14: Hình ảnh thực tế của Bluetooth

Hình 2-15: Sơ đồ chân HC-05

 KEY: Chân này để chọn chế độ hoạt động AT Mode hoặc Data Mode

 VCC chân này có thể cấp nguồn từ 3.6V đến 6V, bên trong module đã có một IC nguồn chuyển về điện áp 3.3V và cấp cho IC BC417

 GND nối với chân nguồn GND

 TXD, RND đây là hai chân UART để giao tiếp module hoạt động ở mức logic 3.3V

 STATE các bạn chỉ cần thả nổi và không cần quan tâm đến chân này

2.6.3 Các chế độ hoạt động

HC-05 có hai chế độ hoạt động chính: Command Mode và Data Mode Trong Command Mode, người dùng có thể giao tiếp với module qua cổng serial bằng lệnh AT Ngược lại, ở Data Mode, module cho phép truyền nhận dữ liệu đến các module Bluetooth khác Để chuyển đổi giữa hai chế độ này, chân KEY được sử dụng, và có hai phương pháp để đưa module vào chế độ Data Mode.

Khi đưa chân KEY lên mức logic cao trước khi cấp nguồn, module sẽ chuyển sang chế độ Command Mode với baudrate mặc định 38400, rất hữu ích khi không biết baudrate đã thiết lập Trong chế độ này, đèn LED trên module sẽ nháy chậm khoảng 2 giây Ngược lại, nếu chân KEY được nối với mức logic thấp trước khi cấp nguồn, module sẽ hoạt động ở chế độ Data Mode.

Để chuyển module từ chế độ Data Mode sang Command Mode, bạn cần nâng chân KEY lên mức cao Khi đó, module sẽ hoạt động ở chế độ Command Mode với Baud Rate đã được thiết lập lần cuối Do đó, bạn cần biết baudrate hiện tại của thiết bị để có thể tương tác hiệu quả Lưu ý rằng nếu module chưa được thiết lập lại, nó sẽ sử dụng cấu hình mặc định.

 Baudrate 9600, data 8 bits, stop bits 1, parity: none, handshake: none

The HC-05 device operates in Data Mode and can function as either a master or slave, depending on your configuration, while the HC-06 is limited to slave mode only In slave mode, you need to establish a connection from a smartphone, laptop, or USB Bluetooth to search for the module and pair it using the PIN code 1234 Once paired successfully, you will have a remote serial port operating at a baud rate of 9600.

Trong chế độ MASTER, module sẽ tự động tìm kiếm các thiết bị Bluetooth khác như module HC-06, USB Bluetooth hoặc Bluetooth của laptop và thực hiện quá trình ghép nối mà không cần bất kỳ thiết lập nào từ máy tính hoặc smartphone.

 AT: Lệnh test, nó sẽ trả về OK nếu module đã hoạt động ở Command Mode

 AT+VERSION?: Trả về firmware hiện tại của module

 AT+UART00,0,0: ( thiết lập baudrate 9600,1 bit stop, no parity)

Các lệnh ở chế độ Master:

 AT+RMAAD: Ngắt kết nối với các thiết bị đã ghép

 AT+ROLE=1: Đặt là module ở master

 AT+RESET: Reset lại thiết bị

 AT+CMODE=0: Cho phép kết nối với bất kì địa chỉ nào

 AT+INQM=0,5,5: Dừng tìm kiếm thiết bị khi đã tìm được 5 thiết bị hoặc sau 5s

 AT+PSWD34: Set Pin cho thiết bị

 AT+INQ: Bắt đầu tìm kiếm thiết bị để ghép nối

Sau lệnh này một loạt các thiết bị tìm thấy được hiển thị Định ra kết quả sau lệnh này như sau: INQ: address, type, signal

Phần địa chỉ (address) sẽ có định dạng như sau: 0123:4:567890 Để sử dụng địa chỉ này trong các lệnh tiếp theo ta phải thay dấu “ : ” thành “ , ”

 AT+PAIR=,: Đặt timeout(s) khi kết nối với 1 địa chỉ slave

 AT+LINK= Kết nối với slave

Các lệnh ở chế độ Slave:

 AT+ORGL: Reset lại cài đặt mặc định

 AT+RMAAD: Xóa mọi thiết bị đã ghép nối

 AT+ROLE=0: Đặt là chế độ SLAVE

 AT+ADDR: Hiển thị địa chỉ của SLAVE

Tổng quan về Arduino

Arduino là một board mạch vi xử lý được phát triển tại Ivrea, Ý, nhằm tạo ra các ứng dụng tương tác hiệu quả hơn với môi trường Phần cứng của Arduino bao gồm một board mạch nguồn mở, sử dụng vi xử lý AVR Atmel 8-bit hoặc ARM Atmel 32-bit Hiện tại, các model Arduino được trang bị một cổng giao tiếp USB.

Arduino cung cấp 6 chân đầu vào analog và 14 chân I/O kỹ thuật số, tương thích với nhiều board mở rộng khác nhau Ra mắt vào năm 2005, Arduino hướng đến việc tạo ra một phương thức dễ dàng và tiết kiệm cho những người yêu thích, sinh viên và chuyên gia để phát triển các thiết bị tương tác với môi trường thông qua cảm biến và cơ cấu chấp hành Những dự án phổ biến cho người mới bắt đầu bao gồm robot đơn giản, hệ thống điều khiển nhiệt độ và phát hiện chuyển động Arduino đi kèm với một môi trường phát triển tích hợp (IDE) cho phép người dùng viết chương trình bằng ngôn ngữ C hoặc C++ trên máy tính cá nhân.

Giá các board Arduino thường dao động khoảng €20, $27 hoặc 574,468 VNĐ, nhưng nếu là hàng giả, giá có thể giảm xuống dưới $9 Các board này có thể được mua dưới dạng lắp sẵn hoặc kit tự lắp Thông tin thiết kế phần cứng được công khai, cho phép những ai muốn tự làm mạch Arduino có thể thực hiện dễ dàng nhờ vào mã nguồn mở.

2011 có trên 300 ngàn mạch Arduino chính thức đã được sản xuất thương mại, và vào năm 2013 có khoảng 700 ngàn mạch chính thức đã được đưa tới tay người dùng

Arduino được ra mắt vào năm 2005 như một dự án dành cho sinh viên tại Viện thiết kế tương tác Ivrea, Italy Lúc bấy giờ, sinh viên đã sử dụng thiết bị "BASIC Stamp" với giá khoảng

$100, xem như giá dành cho sinh viên Massimo Banzi, một trong những người sáng lập,

Tên gọi "Arduino" xuất phát từ một quán bar tại Ivrea, nơi các nhà sáng lập của dự án thường xuyên gặp gỡ Quán bar này được đặt theo tên Arduino, Bá tước của Ivrea, người từng là vua của Italy từ năm 1002 đến 1014.

Lý thuyết phần cứng được phát triển bởi sinh viên Colombia Hernando Barragan, sau khi nền tảng Wiring hoàn thành Các nhà nghiên cứu đã hợp tác để cải thiện tính năng của nó, nhằm làm cho nó nhẹ hơn, rẻ hơn và dễ tiếp cận hơn cho cộng đồng mã nguồn mở Tuy nhiên, trường nơi họ làm việc đã bị đóng cửa, dẫn đến việc David Cuarlielles và các nhà nghiên cứu khác phải phổ biến ý tưởng này ra ngoài.

Arduino Mega 2560 là một bo mạch nổi bật trong dòng Mega, với nhiều cải tiến so với Arduino Uno, bao gồm 54 chân digital IO và 16 chân analog IO Bộ nhớ flash của Mega được tăng gấp 4 lần so với phiên bản UNO R3, cho phép xử lý nhiều dữ liệu hơn Ngoài ra, bo mạch còn được trang bị 3 timer và 6 cổng Interrupt, giúp giải quyết hiệu quả các bài toán phức tạp, điều khiển nhiều loại động cơ và xử lý song song nhiều luồng dữ liệu số và tương tự.

Arduino Mega 2560 không chỉ kế thừa thiết kế từ Arduino UNO với các chân digital từ 0-13, analog từ 0-5 và chân nguồn tương tự, mà còn được cải tiến với một con chip mới thay thế Atmega1280, cho phép nhiều vùng nhớ và chân IO hơn Sự thay đổi này đáp ứng nhu cầu ngày càng cao về dung lượng flash cho các dự án lớn trong lĩnh vực vi điều khiển nhúng, giúp người dùng dễ dàng phát triển và nghiên cứu bằng cách kết hợp các module từ Arduino UNO.

 Arduino Mega2560 là một vi điều khiển bằng cách sử dụng ATmega2560

2.7.3 Đôi nét về Arduino Mega2560

 54 Chân digital trong đó có 15 chân chúng ta có thể sử dụng như PWM

Hình 2-17: Sơ đồ từng khối của Arduino Mega2560

 Vi điều khiển: Arduino Mega2560 (8 bit)

 Điện áp đầu vào (được khuyến nghị): 7-12V

 Điện áp đầu vào (giới hạn): 6-20V

 Chân I/O kỹ thuật số: 54 (trong đó 12 cung cấp đầu ra PWM)

 Chân đầu vào tương tự: 16

 Dòng điện một chiều cho mỗi pin I/O: 20 mA

 Dòng điện một chiều cho pin 3,3V: 50 mA

 Bộ nhớ flash: 256 KB trong đó 8 KB được sử dụng bởi bộ tải khởi động

 Tốc độ xung nhịp: 16 MHz

 Tính năng nổi bậc của Arduino Mega2560:

Arduino Mega 2560 là một board mạch vi điều khiển mạnh mẽ, được phát triển dựa trên vi xử lý Atmega 2560 Board này sở hữu 54 chân I/O, trong đó có 15 chân có khả năng hoạt động như chân output với chức năng PWM, giúp mở rộng khả năng điều khiển và kết nối trong các dự án điện tử.

Mạch Arduino Mega2560 được trang bị 16 chân đầu vào Analog, 4 UART, 1 thạch anh 16Mhz, 1 cổng USB, 1 jack nguồn, 1 header và 1 nút nhấn reset, cung cấp đầy đủ các tính năng cần thiết cho lập trình vi điều khiển Người dùng chỉ cần kết nối mạch với máy tính qua cáp USB để bắt đầu học tập dễ dàng Ngoài ra, Arduino Mega2560 còn tương thích với hầu hết các Shield của Arduino UNO, mở rộng khả năng sử dụng cho các dự án khác nhau.

Giới thiệu App Inventor

App Inventor là một công cụ lập trình dễ sử dụng, phù hợp cho mọi đối tượng, bao gồm cả trẻ em Được phát hành dưới dạng phần mềm tự do, App Inventor đã tạo ra một cơn sốt chưa từng có trong lĩnh vực lập trình ứng dụng di động.

App Inventor là một ứng dụng web hoạt động trên trình duyệt máy tính cá nhân, nhưng yêu cầu người dùng cài đặt phần mềm Java gọi là App Inventor Extras để điều khiển điện thoại Android Phần mềm này kết nối điện thoại với máy tính qua cổng USB, cho phép người dùng dễ dàng chuyển ứng dụng từ máy tính sang điện thoại Android để thử nghiệm.

Với App Inventor, Google giúp mọi người dễ dàng tạo ứng dụng di động cho hệ điều hành Android mà không cần kiến thức lập trình Người dùng có thể phát triển không chỉ trò chơi đơn giản mà còn phần mềm hỗ trợ học tập, như ôn tập kiến thức cho kỳ thi Đặc biệt, ứng dụng có thể sử dụng chức năng đọc từ thành tiếng để đọc câu hỏi ôn tập App Inventor cho phép người dùng thiết kế giao diện ứng dụng một cách trực quan và lắp ráp các thẻ lệnh để thực hiện các chức năng mong muốn.

2.8.2 Giao diện điều khiển động cơ bước trên điện thoại

Hình 2-18: Giao diện điều khiển động cơ trên điện thoại

 Choose Bluetooth: Chọn kết nối Bluetooth

 LY+: Khi nút lệnh được tác động động cơ bước trê trục LY quay phải 50 bước (1/4 trên 200 bước 1 vòng )

 LY-: Khi nút lệnh được tác động động cơ bước trê trục LY quay trái 50 bước (1/4 trên 200 bước 1 vòng )

 RX+: Khi nút lệnh được tác động động cơ bước trê trục RX quay phải 50 bước (1/4 trên 200 bước 1 vòng )

 RX-: Khi nút lệnh được tác động động cơ bước trê trục RX quay trái 50 bước (1/4 trên 200 bước 1 vòng )

 RY+: Khi nút RY được tác động động cơ bước trê trục RY quay phải 50 bước (1/4 trên 200 bước 1 vòng )

 RY-: Khi nút lệnh được tác động động cơ bước trê trục RY quay trái 50 bước (1/4 trên 200 bước 1 vòng )

 BR+: Khi nút lệnh được tác động động cơ bước trê trục BR quay phải 50 bước (1/4 trên 200 bước 1 vòng )

 BR-: Khi nút lện được tác động động cơ bước trê trục BR quay trái 50 bước (1/4 trên 200 bước 1 vòng )

 FR+: Khi nút lệnh được tác động động cơ bước trê trục FR quay phải 50 bước (1/4 trên 200 bước 1 vòng )

 FR-: Khi nút lệnh được tác động động cơ bước trê trục FR quay trái 50 bước (1/4 trên 200 bước 1 vòng )

 LY+ AND RY+: Khi nút lệnh được tác động thì động cơ bước LY quay phải và

RY quay trái 1000 bước tương ứng với 5 vòng Vì 2 động cơ đối xứng nhau

Khi nút lệnh được kích hoạt, động cơ bước LY sẽ quay trái và động cơ RY sẽ quay phải, mỗi động cơ thực hiện 1000 bước tương ứng với 5 vòng Hai động cơ này được bố trí đối xứng với nhau.

 BX+ AND FX+: Khi nút lệnh được tác động thì động cơ bước BX quay phải và

FX quay trái 1000 bước tương ứng với 5 vòng Vì 2 động cơ đối xứng nhau

 BX- AND FX-: Khi nút lệnh này được tác động thì động cơ bước BX quay trái và

FX quay phải 1000 bước tương ứng với 5 vòng Vì 2 động cơ đối xứng nhau

 LR 90: Khi nút lệnh được tác động thì động cơ LR xoay kẹp 1 góc 90 o

 LR 180: Khi nút lệnh được tác động thì động cơ LR xoay kẹp 1 góc 180 o

 LR 270: Khi nút lệnh được tác động thì động cơ LR xoay kẹp 1 góc 270 o

 RR 90: Khi nút lệnh được tác động thì động cơ RR xoay kẹp 1 góc 90 o

 RR 180: Khi nút lệnh được tác động thì động cơ RR xoay kẹp 1 góc 180 o

 RR 270: Khi nút lệnh được tác động thì động cơ RR xoay kẹp 1 góc 270 o

 BR 90: Khi nút lệnh được tác động thì động cơ BR xoay kẹp 1 góc 90 o

 BR 180: Khi nút lệnh được tác động thì động cơ BR xoay kẹp 1 góc 180 o

 BR 270: Khi nút lệnh được tác động thì động cơ BR xoay kẹp 1 góc 270 o

 FR 90: Khi nút lệnh được tác động thì động cơ FR xoay kẹp 1 góc 90 o

 FR 180: Khi nút lệnh được tác động thì động cơ FR xoay kẹp 1 góc 180 o

 FR 270: Khi nút lệnh được tác động thì động cơ FR xoay kẹp 1 góc 270 o

Khi người dùng nhấn nút lệnh Start, động cơ bước sẽ quay Rubik để nhận diện màu sắc trên sáu mặt, mỗi mặt mất 5 giây, sau đó tiến hành giải thuật.

THIẾT KẾ MẠCH ĐIỀU KHIỂN

Sơ đồ nguyên lý mạch điều khiển động cơ xoay rubik

Hình 3-1: Sơ đồ nguyên lý mạch điều khiển động cơ xoay rubik

Thiết kế các khối trên mạch điều khiển

Khối nguồn đầu vào sử dụng nguồn tổ ong với điện áp 12V – 10A, từ đó một mạch nguồn 5V được ổn áp thông qua IC LM2576 để cung cấp điện cho module bluetooth và các ngõ I/O trong mạch.

Trong mạch có tám động cơ bước, mỗi động cơ tiêu thụ khoảng 1A nguồn cấp 12V, lấy I=1 x 8 = 8A

Chúng tôi sử dụng nguồn 12V-10A để cung cấp cho mạch, trong khi nguồn 5V cho các IC được cấp từ ngõ ra 5V của Arduino Điện áp đầu vào và đầu ra đều được lọc bởi tụ 100µF để đảm bảo điện áp ổn định và mượt mà.

Khối nguồn được trang bị hai đèn báo cho nguồn 5VDC và 12VDC, cùng với bốn ngõ ra dự phòng, hỗ trợ cho việc phát triển trong tương lai khi thay động cơ bước bằng động cơ servo mà không cần phải thiết kế lại nguyên lý.

3.2.2 Thiết kế khối bluetooth HC-05

 KEY: Chân này để chọn chế độ hoạt động AT Mode hoặc Data Mode

 VCC chân này có thể cấp nguồn từ 3.6V đến 6V, bên trong module đã có một IC nguồn chuyển về điện áp 3.3V và cấp cho IC BC417

 GND nối với chân nguồn GND

 TXD, RND đây là hai chân UART để giao tiếp module hoạt động ở mức logic 3.3V

 STATE các bạn chỉ cần thả nổi và không cần quan tâm đến chân này

Hình 3-3: Hình ảnh khối Bluetooth HC-05 và Uart CP2102

UART (Universal Asynchronous Receive/Transmit) là chuẩn giao tiếp dữ liệu không đồng bộ phổ biến và dễ sử dụng, thường được áp dụng trong việc giao tiếp giữa các vi điều khiển và các thiết bị khác.

Hai thiết bị giao tiếp UART thông qua hai đường RX (nhận) và TX (truyền) Do là giao tiếp không đồng bộ, nên cần thiết lập thống nhất về khung truyền và tốc độ truyền giữa hai thiết bị.

Hình 3-4: Hình ảnh phương thức giao tiếp UART

Hình 3-5: Hình ảnh truyền bit dữ liệu UART

 Start bit: Báo hiệu quá trình truyền dữ liệu

 Data bits: Bữ liệu cần giao tiếp, thường là 8 bit

 Parity bit: Bit kiểm tra chẵn lẻ, dùng để phát hiện lỗi

 Stop bit: Báo hiệu kết thúc một frame dữ liệu Có thể tùy chọn 1 hoặc 2 bit

3.2.3 Thiết kế khối xử lý trung tâm

Hình 3-6: Hình ảnh khối xử lý Arduino Mega2560

Arduino Mega 2560 hoạt động với nguồn 12V từ nguồn tổ ong, kết hợp với module bluetooth để nhận tín hiệu từ điện thoại hoặc máy tính Điều này cho phép thực hiện lệnh điều khiển cho driver DRV8825.

Ngoài ra trong mạch sử dụng chân 5V của khối xử lý cấp nguồn cho các IC số hoạt động trên mạch

3.2.4 Thiết kế khối driver DRV8825

Hình 3-7: Hình ảnh khối DRV8825

Driver DRV8825 hoạt động với nguồn 5V và nhận tín hiệu điều khiển từ Arduino qua hai chân STEP và DIR, trong đó chân STEP điều khiển bước và chân DIR xác định chiều quay của động cơ bước Để đảm bảo ổn định điện áp trong quá trình hoạt động, ngõ vào nguồn 12V giữa chân VMOT và GND được kết nối với tụ 100uF, giúp bù áp khi động cơ kéo tải làm giảm điện áp Việc lắp tụ gần DRV8825 là cần thiết để đảm bảo hiệu quả bù áp Ngoài ra, ngõ ra 12V với các chân A1, A2, B1, B2 được sử dụng để kết nối với động cơ bước, và driver này còn có ba switch để chia bước động cơ, tăng cường sức mạnh cho động cơ.

Để tăng cường sức mạnh cho động cơ bước, bạn cần kích hoạt chức năng vi bước (micro stepping) bằng cách nối ba chân M0, M1, M2 vào VCC Mỗi chân M0, M1, M2 được kết nối với VCC (High) sẽ làm tăng số bước của động cơ Trong chế độ full step, nếu không cấp VCC, động cơ chỉ cần quay 200 bước để hoàn thành một vòng Tuy nhiên, với chức năng vi bước, động cơ sẽ phải quay nhiều hơn, mang lại độ chính xác cao hơn.

Ví dụ, với các chân M0 = Low, M1 = Low, M2 = High, độ phân giải Microstep là 1/16 bước Điều này có nghĩa là với động cơ bước có 200 bước, mỗi bước sẽ được chia thành 16 bước, dẫn đến tổng số bước của động cơ là 200 * 16 = 3200 bước cho mỗi vòng quay Do đó, động cơ stepper sẽ nóng lên, vì vậy cần phải lắp thêm tản nhiệt cho DRV8825.

Hình 3-8: Hình ảnh khối Input Bảng 3.2.4.: Step mode

Khối Input bao gồm nhiều ngõ vào để giao tiếp với khối vi xử lý, thường sử dụng mức logic 0 Nguồn 5V và GND được sử dụng để cung cấp điện cho các cảm biến khi giao tiếp với vi xử lý.

Hình 3-9: Hình ảnh khối Output

Khối Output gồm bốn ngõ ra dùng để thay thế bốn động cơ bước bằng Servo trong tương lai mà không cần phải sửa lại nguyên lý.

Hình ảnh mô phỏng mạch điều khiển trên phần mềm Altium

Hình 3-10: Hình ảnh 3D trên Altium mặt Top

Hình 3-11: Hình ảnh 3D trên Altium mặt Bottom

Hình ảnh thực tế thi công hoàn thiện khoá luận

Hình 3-12: Hình ảnh mặt bằng robot

Khung robot được thiết kế với hình chữ X bằng nhôm định hình, sử dụng trục vitme 12mm dài 100mm và ba thanh trượt để cố định động cơ Đế khung làm từ mica đen dày 5mm, kích thước 47x47 cm, đảm bảo khả năng chịu lực tốt Sau khi hoàn thiện, khung robot tạo ra một sản phẩm thẩm mỹ và gọn gàng.

Hệ thống bao gồm bốn trục vitme tương ứng với các trục x, y, x’, y’ của khung nhôm, được kết nối với bốn động cơ bước FX – BX và LY – RY Các trục vitme này cho phép chuyển động trượt, với động cơ bước quay 1000 bước, tương đương 5 vòng Mỗi trục vitme được trang bị bốn động cơ FR – BR và LR – RR, có kẹp hình chữ U để giữ và xoay khối Rubik Kích thước lòng kẹp là 5,7cm, phù hợp với khối Rubik tiêu chuẩn, trong khi động cơ giữ kẹp có khả năng quay các góc 90 độ, 180 độ và 270 độ.

Kết luận

Trong thời gian thực hiện khoá luận nhóm đã đạt được những kết quả như sau:

 Cơ cấu kẹp khớp với Rubik kích thước 57mm

 Khung cơ khí hình chữ X để lắp động cơ và kẹp (nhựa)

 Bốn động cơ xoay Rubik được canh đồng tâm

 Điểu khiển được tám động cơ bước, bốn động cơ quay đúng góc theo yêu cầu 90 o,

180 o , 270 o , bốn động cơ quay thuận nghịch

 Giao tiếp với máy tính

 Giao tiếp với điện thoại android

 Giải thuật: đầu vào là các ma trận màu của khối rubik, giải thuật tính ra các bước quay khối rubik về vị trí yêu cầu

 Thiết kế và thi công mạch điều khiển robot xoay rubik với các chức năng:

 Điểu khiển vị trí của 4 động cơ bước xoay kẹp theo góc đã thiết lập

 Điều khiển bốn động cơ bước quay thuật nghịch kéo kẹp trên trục x, y, x’, y’

 Giao tiếp với máy tính

 Giao tiếp với điện thoại android

 Nghiên cứu các giải thuật xoay rubik

Bên cạnh đó nhóm chúng em vẫn chưa hoàn thành được một số việc trong quá trình làm:

 Chưa hoàn thành kẹp khối rubik bằng cơ khí

 Xử lý hình ảnh: nhận biết màu đơn sắc, xử lý các màu đơn sắc để giải thuật toán xoay rubik.

Kiến nghị

Một số hạn chế nhóm em vẫn chưa hoàn thành nhóm em xin kiến nghị để hoàn chỉnh đồ án cần khắc phục

Kẹp xoay được thiết kế đặc biệt để phù hợp với khối Rubik kích thước 57mm hình chữ U, sử dụng vật liệu nhôm hoặc Inox, đảm bảo độ bền và tránh tình trạng tuộc ren trong quá trình hoạt động, không sử dụng vật liệu nhựa.

 Dùng servo thay thế cho động cơ bước hiện tại vì động cơ bước quay chậm với lại khi tác động thì động cơ bước hay bị bỏ bước

 Xử lí ảnh: nhận biết màu đơn sắc, xử lý các màu đơn sắc để giải thuật toán xoay rubik

Ngày đăng: 10/06/2021, 03:02

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w