Mục lục:

Vẫy tay để điều khiển cánh tay robot OWI Không có dây đính kèm: 10 bước (có hình ảnh)
Vẫy tay để điều khiển cánh tay robot OWI Không có dây đính kèm: 10 bước (có hình ảnh)

Video: Vẫy tay để điều khiển cánh tay robot OWI Không có dây đính kèm: 10 bước (có hình ảnh)

Video: Vẫy tay để điều khiển cánh tay robot OWI Không có dây đính kèm: 10 bước (có hình ảnh)
Video: VUA CHẾ TẠO - Cuộc Thi Làm Cánh Tay Robot Iron Man Bằng Giấy Và Bàn Tay Robot Ống Hút 2024, Tháng bảy
Anonim
Image
Image
Các bộ phận
Các bộ phận

Ý TƯỞNG:

Có ít nhất 4 dự án khác trên Guiductables.com (tính đến ngày 13 tháng 5 năm 2015) xung quanh việc sửa đổi hoặc kiểm soát Cánh tay robot OWI. Không có gì đáng ngạc nhiên, vì nó là một bộ robot tuyệt vời và rẻ tiền để chơi cùng. Dự án này có tinh thần tương tự (tức là điều khiển Cánh tay robot bằng Arduino), nhưng khác về cách tiếp cận. [băng hình]

Ý tưởng là có thể điều khiển Cánh tay robot không dây bằng cử chỉ. Ngoài ra, tôi đã cố gắng giữ các sửa đổi của Cánh tay robot ở mức tối thiểu để nó vẫn có thể được sử dụng với bộ điều khiển ban đầu.

Nghe có vẻ đơn giản.

Những gì nó kết thúc là một dự án ba phần:

  1. Một chiếc găng tay có đủ cảm biến để điều khiển đèn LED và 5 động cơ
  2. Một thiết bị phát dựa trên Arduino Nano để chấp nhận các lệnh điều khiển từ găng tay và gửi nó không dây đến thiết bị điều khiển Cánh tay
  3. Thiết bị thu không dây dựa trên Arduino Uno và thiết bị điều khiển động cơ được gắn vào Cánh tay robot OWI

TÍNH NĂNG, ĐẶC ĐIỂM

  1. Hỗ trợ cho tất cả 5 độ tự do (DOF) và đèn LED
  2. Nút lớn màu đỏ - để dừng ngay các động cơ trên Cánh tay để tránh hư hỏng
  3. Thiết kế mô-đun di động

Đối với người dùng di động: "video quảng cáo" của dự án này có trên YouTube tại đây.

Bước 1: Các bộ phận

GĂNG TAY:

Bạn sẽ cần những thứ sau để xây dựng bộ điều khiển găng tay:

  1. Isotoner Smartouch Tech Stretch Stitched Glove (hoặc tương tự) - trên Amazon.com
  2. Spectra Symboflex Sensor 2.2 "- trên Amazon.com
  3. GY-521 6DOF MPU6050 3 Trục con quay hồi chuyển + Mô-đun gia tốc kế - trên Fasttech.com
  4. THNG ĐẦU ĐẦU HỘP 2X5 - trên Phoenixent.com
  5. 2X5 IDC SOCKET-RECEPTACLE - trên Phoenixent.com
  6. FLAT RIBBON CABLE 10 Conductor.050 "Pitch - trên Phoenixent.com
  7. Đèn LED 2 x 5mm - Xanh lục và Vàng
  8. 2 x Nút nhỏ
  9. Điện trở, dây điện, kim, chỉ đen, súng bắn keo, súng hàn, thuốc hàn, v.v.

HỘP DÂY CHUYỀN TRUYỀN TẢI:

  1. Bo mạch Nano v3.0 ATmega328P-20AU tương thích Arduino - trên Fasttech.com
  2. nRF24L01 + Bộ thu phát không dây 2.4GHz Tương thích Arduino - trên Amazon.com
  3. Gymboss WRISTBAND - trên Amazon.com
  4. Hộp đựng hộp đựng pin 9V có công tắc BẬT / TẮT dây dẫn - trên Amazon.com
  5. THNG ĐẦU ĐẦU HỘP 2X5 - trên Phoenixent.com
  6. Pin 9v
  7. Tụ điện 47uF (50v)
  8. Điện trở, dây điện, súng bắn keo, súng hàn, thuốc hàn, v.v.

HỘP ĐIỀU KHIỂN QUÂN ĐỘI ROBOTIC OWI:

  1. Bảng phát triển Uno R3 Rev3 tương thích Arduino - trên Fasttech.com
  2. Prototype Shield DIY KIT cho Arduino (hoặc tương tự) - trên Amazon.com
  3. nRF24L01 + Bộ thu phát không dây 2.4GHz Tương thích Arduino - trên Amazon.com
  4. 3 x L293D 16-pin tích hợp IC điều khiển động cơ - trên Fasttech.com
  5. 1 x SN74HC595 74HC595 Thanh ghi dịch chuyển 8-bit với thanh ghi đầu ra 3 trạng thái DIP16 - trên Amazon.com
  6. Tụ điện 47uF (50v)
  7. Hộp cho Arduino - trên Amazon.com
  8. BẬT / TẮT chuyển đổi
  9. 2 nút x 13mm (một nút màu đỏ và một nút màu xanh lá cây)
  10. THNG ĐẦU ĐẦU HỘP 2 x 2X7 - giống như trên trên Phoenixent.com
  11. FLAT RIBBON CABLE 14 Conductor.050 "Pitch - tương tự như trên trên Phoenixent.com
  12. Pin 9v + đầu nối clip-on
  13. Điện trở, dây điện, súng bắn keo, súng hàn, thuốc hàn, v.v.

… và dĩ nhiên:

OWI Robotic Arm Edge - Cánh tay robot - OWI-535 - trên Adafruit.com

Bước 2: TIẾN HÀNH

TIẾN HÀNH
TIẾN HÀNH
TIẾN HÀNH
TIẾN HÀNH

Tôi thực sự khuyên bạn nên tạo mẫu từng thiết bị điều khiển trước khi hàn tất cả các thành phần lại với nhau.

Dự án này sử dụng một số phần cứng đầy thách thức:

nRF24L01

Tôi mất một lúc để làm cho hai nRF24 nói chuyện với nhau. Rõ ràng cả Nano và Uno đều không cung cấp đủ nguồn 3.3v ổn định để các mô-đun hoạt động ổn định. Một giải pháp trong trường hợp của tôi là một tụ điện 47uF trên các chân nguồn trên cả hai mô-đun nRF24. Ngoài ra còn có một vài điều khó hiểu khi sử dụng thư viện RF24 ở các chế độ IRQ và không phải IRQ, vì vậy tôi khuyên bạn nên nghiên cứu các ví dụ thật cẩn thận.

Một số tài nguyên tuyệt vời:

nRF24L01 Trang sản phẩm IC thu phát RF 2.4GHz công suất cực thấp

Trang thư viện trình điều khiển RF24

Chỉ cần googling nRF24 + arduino sẽ tạo ra rất nhiều liên kết. Rất đáng để nghiên cứu

74HC595 ĐĂNG KÝ SHIFT

Không ngạc nhiên khi phải điều khiển 5 động cơ, một đèn LED, hai nút và một mô-đun Không dây, tôi đã hết các chân trên Uno tương đối nhanh chóng. Cách phổ biến để "mở rộng" số lượng pin của bạn là sử dụng thanh ghi dịch chuyển. Vì nRF24 đã sử dụng giao diện SPI, tôi quyết định sử dụng SPI cho lập trình thanh ghi dịch chuyển (để tăng tốc độ và lưu các chân) thay vì hàm shiftout (). Tôi ngạc nhiên là nó hoạt động như một cái duyên ngay từ lần đầu tiên. Bạn có thể kiểm tra nó trong bài tập ghim và trong các bản phác thảo.

Breadboard và dây jumper là những người bạn của bạn.

Bước 3: TÌNH YÊU

GĂNG TAY
GĂNG TAY
GĂNG TAY
GĂNG TAY
GĂNG TAY
GĂNG TAY
GĂNG TAY
GĂNG TAY

OWI Robotic ARM có 6 mục để điều khiển (OWI Robotic Arm Edge Picture)

  1. Đèn LED nằm trên GRIPPER của thiết bị
  2. MỘT GRIPPER
  3. MỘT CỔ TAY
  4. ELBOW - là một phần của cánh tay robot được gắn vào WRIST
  5. CHỤP là một phần của cánh tay robot được gắn vào CƠ SỞ
  6. CƠ SỞ

Găng tay được thiết kế để điều khiển đèn LED của Cánh tay robot và tất cả 5 động cơ (Độ tự do).

Tôi có các cảm biến riêng lẻ được đánh dấu trên hình ảnh cũng như mô tả bên dưới:

  1. GRIPPER được điều khiển bởi các nút nằm trên ngón giữa và ngón út. Gripper được đóng lại bằng cách ấn ngón trỏ và ngón giữa vào nhau. Gripper được mở bằng cách nhấn vòng và ngón út với nhau.
  2. WRIST được điều khiển bởi điện trở linh hoạt trên công cụ tìm chỉ số. Uốn nửa ngón tay làm cho cổ tay cụp xuống, và uốn cong hết cỡ làm cho cổ tay cụp lên. Giữ thẳng ngón trỏ thì cổ tay dừng lại.
  3. ELBOW được điều khiển bằng gia tốc kế - nghiêng lòng bàn tay lên và xuống sẽ di chuyển khuỷu tay lên và xuống tương ứng
  4. VÒNG TAY được điều khiển bằng gia tốc kế - nghiêng lòng bàn tay sang phải và sang trái (không phải lộn ngược!) Sẽ di chuyển vai lên và xuống tương ứng
  5. BASE cũng được điều khiển bằng gia tốc kế, tương tự như vai - nghiêng lòng bàn tay sang phải và sang trái theo hướng ngược hoàn toàn (lòng bàn tay hướng lên) di chuyển đế tương ứng sang phải và trái
  6. Đèn LED trên bộ kẹp được bật / tắt bằng cách nhấn cả hai nút điều khiển bộ kẹp với nhau.

Tất cả các phản hồi của nút đều bị trễ 1/4 giây để tránh hiện tượng giật.

Việc lắp ráp găng tay đòi hỏi phải hàn và khâu rất nhiều. Về cơ bản nó chỉ là gắn 2 nút, điện trở dẻo, mô-đun Accel / Gyro vào vải của găng tay và dây định tuyến vào hộp kết nối.

Hai đèn LED trên hộp kết nối là:

  1. XANH - bật nguồn
  2. VÀNG - nhấp nháy khi dữ liệu được truyền đến hộp điều khiển cánh tay.

Bước 4: HỘP CHUYỂN GIAO

HỘP CHUYỂN GIAO
HỘP CHUYỂN GIAO
HỘP CHUYỂN GIAO
HỘP CHUYỂN GIAO
HỘP CHUYỂN GIAO
HỘP CHUYỂN GIAO

Hộp phát về cơ bản là Arduino Nano, mô-đun không dây nRF24, đầu nối dây linh hoạt và 3 điện trở: 2 điện trở 10 kOhm kéo xuống cho các nút điều khiển kẹp trên găng tay và một điện trở phân chia điện áp 20 kOhm cho cảm biến linh hoạt điều khiển cổ tay.

Tất cả mọi thứ được hàn với nhau trên một bảng mạch. Lưu ý rằng nRF24 đang "treo" trên Nano. Tôi đã lo lắng rằng điều này có thể gây nhiễu, nhưng nó hoạt động.

Sử dụng pin 9v khiến phần dây đeo hơi cồng kềnh, nhưng tôi không muốn sử dụng pin LiPo. Có lẽ sau này.

Vui lòng xem bước gán pin để biết hướng dẫn hàn

Bước 5: HỘP ĐIỀU KHIỂN ARM

HỘP ĐIỀU KHIỂN ARM
HỘP ĐIỀU KHIỂN ARM
HỘP ĐIỀU KHIỂN ARM
HỘP ĐIỀU KHIỂN ARM
HỘP ĐIỀU KHIỂN ARM
HỘP ĐIỀU KHIỂN ARM
HỘP ĐIỀU KHIỂN ARM
HỘP ĐIỀU KHIỂN ARM

Hộp điều khiển cánh tay dựa trên Arduino Uno. Nó nhận lệnh không dây từ găng tay qua mô-đun nRF24 và điều khiển OWI Robotoc Arm thông qua 3 chip điều khiển L293D.

Vì hầu hết tất cả các chân Uno đã được sử dụng, có rất nhiều dây bên trong hộp - nó hầu như không đóng lại!

Theo thiết kế, hộp bắt đầu ở chế độ TẮT (như khi nhấn nút dừng lại), giúp người vận hành có thời gian để đeo găng tay vào và sẵn sàng. Khi đã sẵn sàng, người vận hành nhấn nút màu xanh lá cây và kết nối giữa găng tay và hộp điều khiển sẽ được thiết lập ngay lập tức (như được chỉ báo bằng đèn LED màu vàng trên găng tay và đèn LED màu đỏ trên hộp điều khiển).

KẾT NỐI VỚI OWI

Kết nối với cánh tay robot được thực hiện thông qua tiêu đề hàng kép 14 pin (theo hình trên) thông qua cáp dẹt 14 dây.

  • Kết nối LED với điểm chung (-) và chân A0 của arduino thông qua điện trở 220 Ohm
  • Tất cả các dây động cơ được kết nối với chân L293D 3/6 hoặc 11/14 (+/- tương ứng). Mỗi L293D hỗ trợ 2 động cơ, do đó có hai cặp chân.
  • Đường dây nguồn OWI là chân ngoài cùng bên trái (+ 6v) và ngoài cùng bên phải (GND) của đầu nối 7 chân ở mặt sau của đỉnh màu vàng. (Bạn có thể xem các dây cắm ở hình trên). Hai chân này được kết nối với các chân 8 (+) và 4, 5, 12, 13 (GND) trên cả ba L293D.

Vui lòng xem phần còn lại của việc gán mã pin ở bước tiếp theo

Bước 6: XÁC NHẬN PIN

GIM LẠI CÔNG VIỆC ĐƯỢC GIAO
GIM LẠI CÔNG VIỆC ĐƯỢC GIAO
GIM LẠI CÔNG VIỆC ĐƯỢC GIAO
GIM LẠI CÔNG VIỆC ĐƯỢC GIAO
GIM LẠI CÔNG VIỆC ĐƯỢC GIAO
GIM LẠI CÔNG VIỆC ĐƯỢC GIAO

NANO:

  • 3.3v - 3.3v đến chip nRF24L01 (chân 2)
  • 5v - 5v đến bảng gia tốc kế, các nút, cảm biến linh hoạt
  • a0 - đầu vào điện trở linh hoạt
  • a1 - điều khiển đèn LED "comms" màu vàng
  • a4 - SDA sang gia tốc kế
  • a5 - SCL sang gia tốc kế
  • d02 - chip nRF24L01 chân ngắt (chân 8)
  • d03 - đầu vào nút kẹp mở
  • d04 - đầu vào nút kẹp chặt
  • d09 - chân SPI CSN tới chip nRF24L01 (chân 4)
  • d10 - chân SPI CS tới chip nRF24L01 (chân 3)
  • d11 - SPI MOSI đến chip nRF24L01 (chân 6)
  • d12 - SPI MISO đến chip nRF24L01 (chân 7)
  • d13 - SPI SCK đến chip nRF24L01 (chân 5)
  • Vin - 9v +
  • GND - mặt bằng chung

UNO:

  • 3.3v - 3.3v đến chip nRF24L01 (chân 2)
  • 5v - 5v sang các nút
  • Vin - 9v +
  • GND - mặt bằng chung
  • a0 - Đèn LED cổ tay +
  • a1 - chân SPI SS cho Shift Register Chọn - đến chân 12 trên Shift Register
  • a2 - Đầu vào nút ĐỎ
  • a3 - Đầu vào nút XANH
  • a4 - cơ sở hướng bên phải - chân 15 trên L293D
  • a5 - comms đã dẫn
  • d02 - nRF24L01 đầu vào IRQ (chân 8)
  • d03 - bật chân cắm servo cơ sở (pwm) 1 hoặc 9 trên L293D
  • d04 - cơ sở hướng trái - chân 10 trên L293D tương ứng
  • d05 - bật servo vai (pwm) chân 1 hoặc 9 trên L293D
  • d06 - bật chân cắm servo khuỷu tay (pwm) 1 hoặc 9 trên L293D
  • d07 - Chân SPI CSN tới chip nRF24L01 (chân 4)
  • d08 - Chân SPI CS tới chip nRF24L01 (chân 3)
  • d09 - bật servo cổ tay (pwm) chân 1 hoặc 9 trên L293D
  • d10 - bật chân cắm servo (pwm) 1 hoặc 9 trên L293D
  • d11 - SPI MOSI đến chip nRF24L01 (chân 6) và chân 14 trên Thanh ghi Shift
  • d12 - SPI MISO đến chip nRF24L01 (chân 7)
  • d13 - SPI SCK đến chip nRF24L01 (chân 5) và chân 11 trên Thanh ghi Shift

ĐĂNG KÝ SHIFT VÀ L293Ds:

  • chân QA (15) của 74HC595 đến chân 2 của L293D # 1
  • chân QB (1) của 74HC595 đến chân 7 của L293D # 1
  • chân QC (2) của 74HC595 đến chân 10 của L293D # 1
  • chân QD (3) của 74HC595 đến chân 15 của L293D # 1
  • chân QE (4) của 74HC595 đến chân 2 của L293D # 2
  • chân QF (5) của 74HC595 đến chân 7 của L293D # 2
  • chân QG (6) của 74HC595 đến chân 10 của L293D # 2
  • chân QH (7) của 74HC595 đến chân 15 của L293D # 2

Bước 7: GIAO TIẾP

LIÊN LẠC
LIÊN LẠC

Glove gửi 2 byte dữ liệu đến hộp điều khiển 10 lần mỗi giây hoặc bất cứ khi nào nhận được tín hiệu từ một trong các cảm biến.

2 byte là đủ cho 6 điều khiển vì chúng tôi chỉ cần gửi:

  • BẬT / TẮT cho đèn LED (1 bit) - Tôi thực sự đã sử dụng 2 bit để phù hợp với động cơ, nhưng một bit là đủ
  • TẮT / PHẢI / TRÁI cho 5 động cơ: 2 bit mỗi động cơ = 10 bit

Tổng số 11 hoặc 12 bit là đủ.

Mã chỉ đường:

  • TẮT: 00
  • QUYỀN: 01
  • TRÁI: 10

Từ điều khiển trông giống như thế này (khôn ngoan một chút):

Byte 2 ---------------- Byte 1 ----------------

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 0 0 0 LED-- M5-- M4-- M3-- M2-- M1--

  • M1 - bộ kẹp
  • M2 - cổ tay
  • M3 - khuỷu tay
  • M4 - vai
  • M5 - cơ sở

Byte 1 có thể được đưa trực tiếp vào thanh ghi dịch chuyển một cách thuận tiện, vì điều khiển hướng phải / trái của động cơ 1 đến 4.

Thời gian chờ 2 giây được bật cho liên lạc. Nếu thời gian chờ xảy ra, tất cả các động cơ sẽ dừng lại như khi nhấn nút ĐỎ.

Bước 8: SKETCHES và hơn thế nữa…

SKETCHES và hơn thế nữa…
SKETCHES và hơn thế nữa…

GĂNG TAY

Phác thảo găng tay sử dụng các thư viện sau:

  • DirectIO - có trên Github
  • I2Cdev - có trên Github
  • Dây - một phần của Arduino IDE
  • MPU6050 - có trên Github
  • SPI - một phần của Arduino IDE
  • RF24 - có trên Github

và ba thư viện do tôi phát triển:

  • AvgFilter - có sẵn trên Github
  • DhpFilter - có trên Github
  • TaskScheduler - có sẵn trên Github

Bản phác thảo găng tay có sẵn tại đây: Glove Sketch v1.3

HỘP ĐIỀU KHIỂN ARM

Bản phác thảo cánh tay sử dụng các thư viện sau:

  • DirectIO - có trên Github
  • PinChangeInt - có trên Github
  • SPI - một phần của Arduino IDE
  • RF24 - có trên Github

và một thư viện do tôi phát triển:

TaskScheduler - có sẵn trên Github

Bản phác thảo cánh tay có sẵn tại đây: Arm Sketch v1.3

Bảng dữ liệu cho phần cứng được sử dụng

  • Thanh ghi ca 74HC595 - bảng dữ liệu
  • Trình điều khiển động cơ L293D - bảng dữ liệu
  • mô-đun không dây nRF24 - bảng dữ liệu
  • Mô-đun gia tốc kế / con quay hồi chuyển MPU6050 - bảng dữ liệu

Ngày 31 tháng 5 năm 2015 CẬP NHẬT:

Phiên bản mới của bản phác thảo hộp điều khiển găng tay và cánh tay có sẵn tại đây: Bản phác thảo găng tay và cánh tay v1.5

Chúng cũng được đặt trên github ở đây.

Những thay đổi

  • Đã thêm hai byte nữa vào cấu trúc giao tiếp để gửi tốc độ động cơ được yêu cầu cho động cơ Cổ tay, Khuỷu tay, Vai và Cơ sở dưới dạng giá trị 5 bit (0.. 31) từ Găng tay tương ứng với góc của cử chỉ điều khiển (xem bên dưới). Hộp điều khiển cánh tay ánh xạ các giá trị [0.. 31] thành các giá trị PWM tương ứng cho từng động cơ. Điều này cho phép người vận hành kiểm soát tốc độ dần dần và xử lý cánh tay chính xác hơn.
  • Bộ cử chỉ mới:

1. Đèn LED: Đèn LED điều khiển các nút - nút ngón giữa - BẬT, nút ngón út - TẮT

2. GRIPPER: Điều khiển dải linh hoạt Tay cầm - nửa ngón tay cong - MỞ, ngón tay cong hoàn toàn - ĐÓNG

3. WRIST: Cổ tay được điều khiển bằng cách nghiêng lòng bàn tay từ vị trí nằm ngang hoàn toàn LÊN và XUỐNG tương ứng. Độ nghiêng nhiều hơn tạo ra tốc độ cao hơn

4. ARM: Cánh tay được điều khiển bằng cách nghiêng lòng bàn tay từ vị trí nằm ngang hoàn toàn TRÁI và PHẢI. Độ nghiêng nhiều hơn tạo ra tốc độ cao hơn

5. NÊN: Vai được điều khiển bằng cách xoay lòng bàn tay PHẢI và TRÁI từ vị trí lòng bàn tay hướng thẳng lên trên. Lòng bàn tay được xoay dọc theo trục khuỷu tay (giống như cách vẫy tay của bạn)

6. BASE: Cơ sở được điều khiển giống như vai với lòng bàn tay hướng thẳng xuống.

Bước 9: ĐIỀU GÌ?

CÁI GÌ?
CÁI GÌ?

TRÍ TƯỞNG TƯỢNG TRONG CÔNG VIỆC

Như thường lệ với các hệ thống như vậy, chúng có thể được lập trình để làm được nhiều việc hơn thế.

Ví dụ: thiết kế hiện tại đã tích hợp các khả năng bổ sung, không thể thực hiện được với điều khiển từ xa tiêu chuẩn:

  • Tăng tốc độ dần dần: mọi chuyển động của động cơ được bắt đầu ở tốc độ tối thiểu xác định trước, tốc độ này được tăng dần sau mỗi 1 giây cho đến khi đạt được tốc độ tối đa. Điều này cho phép điều khiển chính xác hơn từng động cơ (đặc biệt là cổ tay và tay cầm)
  • Hủy chuyển động nhanh hơn: khi Hộp cánh tay nhận được lệnh để dừng một động cơ, nó sẽ đảo chiều động cơ ngay lập tức trong khoảng 50 ms, do đó "phá vỡ" chuyển động và cho phép điều khiển chính xác hơn.

CÁI GÌ?

Có lẽ một cử chỉ điều khiển phức tạp hơn có thể được thực hiện. Hoặc các cử chỉ đồng thời có thể được sử dụng để điều khiển phức tạp. Cánh tay có thể nhảy không?

Nếu bạn có ý tưởng về cách lập trình lại găng tay hoặc có phiên bản phác thảo mà bạn muốn tôi thử nghiệm - vui lòng cho tôi biết: [email protected]

Bước 10: *** CHÚNG TÔI XONG !!! ***

*** CHUNG TA ĐA THĂNG !!! ***
*** CHUNG TA ĐA THĂNG !!! ***

Dự án này đã giành giải Nhất trong cuộc thi Sáng tạo được mã hóa do Microsoft tài trợ.

Kiểm tra nó ra! RỒI RỒI !!!

Sáng tạo được mã hóa
Sáng tạo được mã hóa
Sáng tạo được mã hóa
Sáng tạo được mã hóa

Giải nhì về Sáng tạo được mã hóa

Đề xuất: