SpaceMouse mini với Hall Effect Joysticks, đi dây PCB và “BALLS OF STEEL”
SpaceMouse nhỏ gọn dùng Hall Effect joysticks cho điều khiển mịn, ít dead zone. Bi thép thay cho bi in 3D, chạy trong ống dẫn thép cho cảm giác trơn tru. Kích thước khoảng 80×80×90mm, có PCB để đi dây gọn.
Mô tả
Việc dùng bi (ball bearings) chạy trong ống lót kim loại giúp thao tác mượt hơn và làm SpaceMouse gọn hơn.
Hall effect joysticks loại bỏ “dead zone” và cho phép điều khiển mịn, chính xác hơn nhiều.
Điểm duy nhất cần lưu ý là dung sai gia công của bi 8mm và vòng bi 608 (skateboard bearings) đôi khi có thể làm cho bi 8mm không lắp vừa vào giữa vòng bi 608. Mấy món này rất rẻ, nên tốt nhất là mua từ hơn một nhà cung cấp cho mỗi loại.
Phần cứng cần có
Hall Effect Joysticks (X 4)
Xem bản remix của mình ở trên để biết chi tiết cách lấy/chuẩn bị chúng
Bảng mạch in (PCB)
Dùng file Gerber_Compact-Space-Mouse.zip để đặt PCB cần thiết nhằm xử lý phần đi dây trong không gian chật của bản remix này.
Chi tiết cách đặt PCB có trong bản remix “No Wires” của mình.
Jack JST XH 4 pin 2.54mm (đầu cắm + ổ cắm, dây bấm sẵn) (X 4)

Tìm trên Ali Express, eBay, Amazon… với từ khóa: Male Female Plug Socket JST XH2.54 XH 2.54mm
Bi thép 8mm khoan xuyên lỗ 2mm (X 4)

Tìm trên Ali Express, eBay, Amazon… với từ khóa: Through Hole Steel Balls
Vít tự ren đầu chìm M2 dài 14mm và long đền (washer) M2 (X 4)
Để bắt bi vào joystick

Vòng bi 608 (skateboard bearings) (X 4)
Chỉ cần phần “lõi giữa” của loại này
Tìm trên Ali Express, eBay, Amazon… với từ khóa: 608 bearings
(đường kính 22mm, dày 7mm và có lỗ 8mm xuyên giữa)
Cách lấy phần lõi giữa ra khỏi vòng bi 608

- Tháo phớt (seal) (cao su (rs) hoặc kim loại (zz))
- Tháo “lồng” nhựa (plastic “cage”)
- Dồn tất cả viên bi lại một phía
- Đẩy phần lõi giữa tách ra khỏi bi
- Lau sạch mỡ bôi trơn
Hướng dẫn lắp ráp
Khoan rộng các lỗ 1mm chạy dọc giữa tay joystick lên 1.5mm – để tránh vít M2 làm hư chi tiết.
Joystick Drill Guide.stl giúp làm bước này rất chuẩn. Nó cũng hoạt động như chặn độ sâu (depth stop) cho mũi khoan.

Bắt bi thép 8mm vào joystick bằng vít M2 dài 14mm và một washer M2.

Hàn Arduino vào PCB bằng hàng pin đi kèm.
Hàn các đầu JST XH vào PCB và chú ý chiều của hai rãnh (slots) trên chúng.

Cắt dây trên đầu nối JST XH theo đúng chiều dài.
(Lưu ý hình chụp hơi bị lệch thứ tự – nhưng nhìn là hiểu 😁)
Để gọn nhất, các dây này cần được cắt so le. Wire Cutting Gauge.stl giúp cắt đúng chiều dài tối ưu.
Chú ý chiều của phích cắm – dây GND (trong ví dụ này là dây đỏ – thực tế màu dây có thể rất khác nhau) phải là dây dài nhất.

Tuốt 4mm lớp cách điện

Hàn vào joystick PCB như hình

Bắt vào khung joystick bằng vít đầu chìm M3 dài 10mm, tán M3 (“nyloc”) và dùng washer nylon hoặc sợi (fibre) để bảo vệ PCB.
Luồn phần lõi giữa của vòng bi 608 vào các joystick và kẹp chặt hai chụp (dome) trên/dưới cố định lên chúng bằng vít tự ren M2.6 dài 10mm.
Bắt nắp (lid) bằng vít tự ren M2.6 dài 10mm.
Bắt núm (knob) bằng vít tự ren M3 dài 10mm.
Cắm cáp USB vào Arduino và gắn PCB vào các joystick (vừa khít đủ chỗ – có thể cần kìm mũi nhọn dài để giữ phích cắm).
Cố định phần đế (base) bằng vít tự ren đầu chìm M3 dài 10mm.
Firmware hiện tại (cảm ơn Andun_HH@Andun_HH).
https://github.com/AndunHH/spacemouse
Hiệu chỉnh/Chỉnh tuning
Kết hợp Hall effect joysticks, cơ cấu bi chạy và việc giảm kích thước/hình học đã cho cảm giác vận hành rất mượt. Vẫn còn nhiều cơ hội để tinh chỉnh thêm, nhưng bản thân hiện tại đã chạy rất ổn (theo ý mình 😀)
Sau các bước calibration ban đầu như tài liệu trong firmware, mình thấy các thiết lập sau là điểm bắt đầu khá hợp lý
define MODFUNC 3
define DEADZONE 20
define TRANSX_SENSITIVITY 3
define TRANSY_SENSITIVITY 3
define POS_TRANSZ_SENSITIVITY 5
define NEG_TRANSZ_SENSITIVITY 5 //I want low sensitiviy for down, therefore a high value.
define GATE_NEG_TRANSZ 15 // gate value, which negative z movements will be ignored (like an additional deadzone for -z).
define GATE_ROTX 15 // Value under which rotX values will be forced to zero
define GATE_ROTY 15 // Value under which roty values will be forced to zero
define GATE_ROTZ 15 // Value under which rotz values will be forced to zero
define ROTX_SENSITIVITY 1.5
define ROTY_SENSITIVITY 1.5
define ROTZ_SENSITIVITY 2
Giấy phép
Tác phẩm này được cấp phép theo
Creative Commons — Attribution — Noncommercial — Share AlikeCC-BY-NC-SA
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!