DIY Joystick - Parametric (Joystick USB tùy biến)
Joystick USB dạng parametric cho bạn tự chỉnh theo nhu cầu: đổi kích thước, bearing, lò xo và cách bố trí nút. Dùng Arduino Pro Micro (ATMega32U4) + 2 hall effect sensor, phù hợp làm side panel cho Farming/Flight Simulator.
Mô tả
Mình muốn có một cái joystick để chơi mấy game như Farming Simulator hay Flight Simulator, nhưng không muốn mua vì mình tính tích hợp nó vô một side panel cho farm sim. Với lại tự làm đồ của mình cũng vui nữa.
In ấn (Printing):
Chỉ những mẫu có file 3mf mới cần supports.
Linh kiện (Parts):
- Arduino Pro Micro: Hoặc bất kỳ Arduino nào dùng chip ATMega32U4.
- Hall effect sensor x2: Nhớ mua loại sensor tuyến tính (linear). Cái mình dùng là S49E, nhưng có nhiều model khác.
- Bearings x4: Nếu bạn dùng các file .stl stock có sẵn và không chỉnh tham số trong CAD thì phải dùng bearing 625zz. Còn nếu bạn có bearing khác thì mở file CAD ra và chỉnh kích thước bearing cho đúng loại bạn có.
- Springs x4 hoặc x8: Mình dùng 2 lò xo 25 mm cho mỗi góc, nhưng bạn có thể dùng loại nào cũng được tùy độ cứng bạn muốn, thậm chí dùng dây thun cũng được.
- Jumper wires
- Dupont connectors
- Screws: Bạn cần 4 con ốc có cùng đường kính với lỗ bearing. Mình dùng m5x12. Còn phần lắp joystick và base mình dùng 6 con m3x16.
- Magnets: Mình dùng nam châm tròn 8x4.5mm. Phần này có thể đổi.
- Buttons (tùy chọn): Mình dùng nút nhấn 6x6x6mm
- Joystick module (tùy chọn): Mình dùng HW-504
Dụng cụ (Tools):
- Soldering iron
- Crimping tool (tùy chọn): Bạn có thể bấm (crimp) connector bằng kìm.
- Hot glue gun hoặc keo CA
- Thread tap set
- Double sided tape
Lắp ráp (Assembly):
Mình cũng khuyên bạn dùng phần assembly trong file onshape này làm tham khảo: file. Cái này không cần tài khoản.
Bạn có thể đổi chân (pins) dùng trong code theo ý mình.
Base:
In tất cả các chi tiết cho phần base.
Lấy phần Roll, taro ren (tap) vào các lỗ tương ứng (trừ 2 lỗ phía dưới) theo đúng chuẩn ren của ốc bạn dùng. Cắt bớt hoặc chà nhám những chỗ bị gờ/cao quanh lỗ.


Dán nam châm vào khe như hình bên dưới. Mình dùng keo nến (hot glue) và ép cố định. Nhớ đảo cực (polarity) của nam châm thứ hai. Lấy 2 viên nam châm dính với nhau, dán một viên theo hướng sao cho nó hút viên còn lại, rồi xoay viên thứ hai ngược lại và dán sang phía đối diện. Nếu keo nến tràn ra thì cắt bỏ.


Lấy Pitch và Roll holder rồi ép bearings vào các lỗ. Với phần Pitch, mình khuyên chà nhám bề mặt quanh bearings trước khi ép vào để chuyển động của Roll được mượt.


Lấy phần Base và vặn ốc vào 4 lỗ xung quanh. Đừng siết sát quá, chừa lại một khoảng hở nhỏ giống như trong hình.


Giờ vặn Pitch và Roll holder vào Roll. Đảm bảo Pitch có cái lỗ nằm phía trên con ốc ở bên có nam châm, rồi bắt nguyên cụm này vào base bằng các lỗ ốc ở đáy của Roll holders. Canh cho cụm lắp ráp nằm tương đối ở giữa các ray ốc.


Gắn spring holder lên trên, canh notch của nó trùng với notch trên Pitch. Gắn lò xo như hình. Mình dùng 8 lò xo, 2 cái mỗi góc vì lực tự trả tâm (self-centering) nặng hơn chút, nhưng tùy loại lò xo bạn có.
Đút hall effect sensor vào trong lỗ cho tới khi không đẩy sâu hơn được nữa, kéo lùi lại xíu rồi dán keo nến từ bên ngoài. Hàn dây vào các chân theo datasheet đúng model bạn dùng. Với S49E mình dùng thì đây là datasheet.
Nối dây OUT của Roll vào chân A0 và dây OUT của Pitch vào chân A1. Còn nguồn và mass thì mình làm kiểu này: 3 sợi dây hàn chung vô 1 sợi. Nhánh này đi vào chân VCC, nhánh tương tự cho mass thì vào GND.
Joystick:
In tất cả các chi tiết cho phần joystick. Nếu muốn thì bạn cũng có thể tự thiết kế joystick của riêng mình.
Dán một miếng double sided tape nhỏ dưới đáy mỗi button rồi gắn 8 nút vào Backplate. Hàn theo dạng ma trận (matrix) giống như mạch này. Arduino Uno chỉ là ví dụ vì tinker-cad không có các board Arduino khác. Mình dùng chân 4, 5, 6 cho cột (màu trắng) và chân 7, 8, 9 cho hàng (màu vàng).
Mẹo:
Với dây màu vàng, mình quấn lại như hình dưới rồi hàn vào các điểm tiếp xúc. Làm vậy sẽ dễ hàn vào button hơn nhiều trong không gian chật.
Sau đó nếu bạn cũng muốn lắp joystick module: tháo hàn (de-solder) các pin và hàn dây trực tiếp vào pad/tiếp điểm, vì để nguyên pin thì lắp vô không vừa lắm. Module được nối vào Arduino như sau: SW: 10, VRX: A3, VRY: A2 và nguồn, mass. Dán module bằng double sided tape lên 2 vách phía trên các nút. Mình khuyên xem assembly trên onshape để đặt cho đúng.
Gắn backplate vào các ngàm (notches) trên hai nửa joystick. Luồn dây ra quanh các lỗ ốc. Khi mọi thứ khớp hết rồi thì bắt ốc lại. Trượt nó lên phần Pitch, cho dây đi qua cái lỗ.
Bắt joystick vào base.
Giờ bạn có thể dán keo nến cho các button caps và trượt nắp joystick module vào. Nếu có nút nào cấn không vừa thì chà nhám nhẹ thành nút một chút.
Chỉnh (Adjustments):
Nếu joystick không nằm đúng tâm theo trục pitch, bạn có thể nới nhẹ các con ốc ở đáy base rồi đẩy cụm lắp ráp tới/lui để pitch vào tâm, sau đó siết lại.
Phần mềm (Software):
Clone GitHub repository hoặc chỉ cần copy code từ main.cpp rồi nạp vào Arduino theo cách bạn quen dùng. Mình dùng PlatformIO.
Calibration:
Windows:
win + r → joy.cpl
Bấm vô properties của thiết bị rồi calibrate. Thao tác này sẽ set điểm giữa (center) và giới hạn (limits).
Linux:
Mình khuyên dùng jstest-gtk, có kèm tùy chọn calibration.
Credits:
Các model mình dùng trong phần assembly làm ví dụ:
Giấy phép
File mô hình
Chưa có bản in nào được khoe. Hãy là người đầu tiên!
Chưa có bình luận nào. Hãy là người đầu tiên!