Thiết bị này được làm từ những thanh gỗ y tế, động cơ servo và một bo mạch điều khiển Arduino. Về cách thức hoạt động của cánh tay robot này là sau khi ghi nhận hình ảnh các mặt của khối lập phương, các thuật toán sẽ được dịch sang chuyển động của động cơ.
Các nguyên, vật liệu và dụng cụ cần chuẩn bị:
-Bo mạch điện tử Arduino UNO R3.
-Động cơ servo.
-Dây điện và cáp USB.
-Que gỗ dùng trong y tế (que đè lưỡi).
-Một tấm ván ép mỏng.
-Bánh xe bằng gỗ.
-Khăn giấy cuộn.
-Súng bắn keo nóng.
Các phần mềm: Arduino IDE – (thuật toán C++), Python 2.7+ và Tkinter – (GUI), Pyserial.
Các bước thực hiện:
Bước 1: Sơ đồ mạch
-Kết nối dây màu vàng (tín hiệu) quay và đẩy của servo tương ứng với các pin 9 và pin 6.
-Kết nối dây cực dương và cực âm đến nguồn điện 5V và chân ground.
Bước 2: Thiết kế mô hình
Đây là một robot đơn giản, thiết kế sao cho các động cơ servo hoạt động nhịp nhàng mà không bị cản bởi các que gỗ. Bạn có thể tham khảo hình bên dưới để thiết kế theo gợi ý.
Bước 3: Arduino Sketch – Thuật toán giải khối lập phương rubik
Code: github.com/matt2uy/Cube-Solver
Về cơ bản, sử dụng kết hợp giữa các thuật toán đẩy, giữ và quay để áp dụng cho khối lập phương. Ba thành phần cơ bản trong đoạn mã này là thuật toán, giao diện GUI và kết nối tất cả (Serial Communications). Về tổng quan cấu trúc của đoạn mã: Cube Decide functions < Cube Algorithms < Cube Move functions < Servo functions < Move Function.
Bước 4: Python GUI
Không giống như các robot được giới thiệu trên các báo, nó sử dụng camera để quan sát các mặt của rubik. Robot nhập trực tiếp các mặt vào Arduino sketch thông qua GUI. Nếu không muốn làm từ đầu thì bạn có thể sử dụng đoạn mã giao diện Tkinter GUI đã được làm sẵn (tại địa chỉ này).
Bước 5: Kết nối tất cả (Serial Communications)
Một khi thuật toán trong Arduino sketch và giao diện python GUI đã sẵn sàng thì cần phải có một thứ gì đó để thu thập thông tin từ GUI chuyển vào Arduino sketch, và thuật toán sẽ giúp điều khiển robot giải rubik.
Bạn cần sử dụng Send_Cube_State.py (tại đây) để chuyển dữ liệu màu sắc từ GUI thành chuỗi và sử dụng một cánh tay được điều khiển bởi mạch Arduino (mạch chuyển đổi dữ liệu chuỗi đến các động cơ servo).
Tác giả bài viết: Dr@gon