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.

👁️
5.4K
Lượt Xem
❤️
151
Lượt Thích
📥
475
Lượt Tải
Cập Nhật Apr 22, 2026
Chi tiết
Tải xuống
Bình Luận
Khoe bản in
Remix

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

  1. Tháo phớt (seal) (cao su (rs) hoặc kim loại (zz))
  2. Tháo “lồng” nhựa (plastic “cage”)
  3. Dồn tất cả viên bi lại một phía
  4. Đẩy phần lõi giữa tách ra khỏi bi
  5. 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 Alike

CC-BY-NC-SA

Yêu cầu ghi công
Remix & phái sinh Được phép
Sử dụng thương mại Không được phép

File mô hình

TẤT CẢ FILE MÔ HÌNH (18 Tập tin)
Đang tải files, vui lòng chờ...
Vui lòng đăng nhập để bình luận.

Chưa có bình luận nào. Hãy là người đầu tiên!

Vui lòng đăng nhập để khoe bản in của bạn.

Chưa có bản in nào được khoe. Hãy là người đầu tiên!

Remix (0)