Open-Source Spacemouse - DFMod (v1.3 - Hỗ trợ Hall Effect & TMR)
Phiên bản cải tiến của SpaceMouse v2 với tính năng double-tap, đèn RGB sang trọng và khả năng nhận diện chuyển động chính xác hơn. Hỗ trợ cả bản biến trở vanilla và bản Hall Effect cao cấp cho công việc 3D.
Mô tả
18.12.2025: Mình tạm nghỉ vô thời hạn trên Printables vì bận công việc và gia đình - hiện tại mình không thể hỗ trợ bất kỳ vấn đề gì. Rất mong các bạn thông cảm và xin cảm ơn.
Đây là phiên bản tùy biến của mình dựa trên SpaceMouse v2 mã nguồn mở, với một vài cải tiến giúp thiết bị mang lại cảm giác “xịn” hơn hẳn bản gốc. Hầu hết các thay đổi quan trọng đều nằm ở phần mềm, còn phần cứng thực ra thay đổi rất ít. Nếu bạn đã có sẵn một chiếc SpaceMouse v2 (dù là bản ‘vanilla’ V2 hay bản dựa trên thiết kế của Kempy) và không muốn can thiệp vào phần cứng, bạn chỉ cần nạp sketch của mình vào là đã có ngay tính năng di chuyển mượt mà hơn, double-tap và hiệu chuẩn tốt hơn. Nếu bạn đang dùng sketch của mình hoặc lắp ráp bản remix này, hãy thường xuyên kiểm tra trang này - mình thỉnh thoảng sẽ cập nhật sketch, các chỉnh sửa phần cứng hoặc phụ kiện mới. Hãy xem mục “Sự khác biệt với bản gốc” để biết các thay đổi mới nhất.
Có hai phiên bản remix của mình: bản ‘vanilla’ và bản ‘Hall Effect’. Bản vanilla (dùng biến trở) tốn ít linh kiện hơn nhưng lắp ráp khó hơn, chiếm diện tích lớn hơn và di chuyển kém chính xác hơn với deadzone cao hơn. Bản Hall Effect đòi hỏi nhiều linh kiện khó tìm hơn (bao gồm cả PCB tùy chỉnh phải đặt in), nhưng bù lại khâu lắp ráp dễ chịu hơn và cho cảm giác di chuyển tốt hơn nhiều. Mình đã lắp cả hai và thực sự ưu tiên bản Hall Effect, mặc dù việc săn lùng linh kiện mất vài tuần. Nếu bạn chỉ muốn làm một món đồ chơi thú vị và đã có sẵn vài cần joystick Arduino, hãy lắp bản vanilla. Nếu bạn muốn một bộ điều khiển thực sự hữu ích cho CAD và các công việc 3D khác, hãy chọn bản Hall Effect.
Có hai phiên bản núm vặn - nhỏ và lớn. Chúng có thể thay thế cho nhau, bạn dùng cái nào cho bản nào cũng được. Mình cũng đã thêm các tệp cho vỏ TPU (để in với chế độ fuzzy skin), nếu bạn thích cảm giác tay đó. Bạn có thể tìm thấy chúng trong mục “Accessories” ở phần Files. Nếu bạn muốn tự thiết kế núm vặn, hãy đảm bảo rằng nó có ren M22 ở phía dưới và cách để ánh sáng từ đèn LED truyền lên phía trên.

Các tính năng chính của bản remix này
-
Di chuyển tốt hơn! Mình đã cải tiến toán học cho việc di chuyển, giúp nhận diện thao tác chính xác hơn đáng kể. Ngoài ra, tín hiệu joystick thô giờ đây đã được lọc, giảm nhiễu, cho phép giảm deadzone và di chuyển siêu mượt như có quán tính. Bạn có thể điều chỉnh hoàn toàn trong Arduino sketch nếu không thích cảm giác mượt mà này.
-
Thao tác double-tap! Gõ hai lần vào núm vặn sẽ kích hoạt một sự kiện nút bấm. Mặc định là nút FIT (tự động căn giữa khung nhìn trong hầu hết các phần mềm), nhưng bạn có thể gán lại thành bất cứ thứ gì trong phần mềm 3Dconnexion.
-
RGB! Nhưng theo phong cách chuyên nghiệp, sang trọng, không lòe loẹt như đồ chơi game đâu nhé. Bản remix này sử dụng đèn LED RGB trong núm vặn để cung cấp phản hồi hình ảnh bằng màu sắc cho các thao tác di chuyển, cử chỉ và hiệu chuẩn thông qua lớp khuếch tán ánh sáng.
-
Hiệu chuẩn tốt hơn! Việc đạt được đầu ra đối xứng hoàn hảo từ các joystick biến trở rất khó, và đầu ra không đối xứng sẽ làm trải nghiệm rất tệ... Sketch Arduino của mình cho phép hiệu chuẩn thủ công từng trục, giúp đạt được đầu ra đồng đều với toàn bộ phạm vi di chuyển. Ngoài ra, việc tự động hiệu chuẩn khi khởi động cũng đã được làm lại. Nó mất thời gian hơn một chút nhưng cung cấp giá trị cơ sở tốt hơn nhiều, cho phép giảm deadzone mà vẫn ít bị rung lắc.
-
Hỗ trợ SpaceMouse v2 ‘vanilla’ và thiết kế của Kempy!

Quy trình hiệu chuẩn mới cung cấp phản hồi bằng hình ảnh: đèn xanh dương nháy mỗi 10 mẫu, xanh lá nháy mỗi 100 mẫu, đỏ nháy mỗi 1000 mẫu. Độ sáng nền màu trắng tăng dần từ không đến tối đa để báo hiệu thời gian hiệu chuẩn. Đèn RGB quét màu khi hiệu chuẩn xong.
In ấn
Mình đã đính kèm các tệp .3mf chứa tất cả các linh kiện in cần thiết, cùng với thông số in hoạt động tốt cho người dùng X1C/P1S/P1P. Nếu bạn chỉ muốn in lẻ từng bộ phận (ví dụ: nâng cấp SpaceMouse v2 cũ), có các tệp .3mf riêng trong mục Files.
Trước khi in, bạn cần quyết định xem sẽ xây dựng bản vanilla V2 (dựa trên thiết kế của TeachingTech) hay bản Hall Effect/TMR (dựa trên thiết kế của ). Bạn có thể tìm thấy tệp DFMod cho cả hai trong thư mục tương ứng ở phần Files.
LƯU Ý QUAN TRỌNG:
-
Bản remix này đòi hỏi nhựa trong suốt (hoặc mờ). Mình dùng Bambu PETG Transparent cho miếng nối và Elegoo Clear PLA cho núm vặn. Nhựa trắng cũng có thể dùng được ở một mức độ nào đó.
-
Núm vặn yêu cầu AMS/MMU. Mình đang làm bản đơn nhựa/nhiều bộ phận, nhưng chưa hoàn thiện.
Một số lưu ý:
-
Núm vặn không được quá nặng - hãy dùng infill thấp cho phần thân chính. Trọng lượng lớn có thể làm lò xo joystick khó khăn trong việc trở về vị trí trung tâm.
-
Tương tự với nắp trên và dưới, không quá quan trọng nhưng hãy giữ infill ở mức vừa phải.
-
Với các miếng đệm tùy chọn (cho bản vanilla) thì ngược lại - càng nặng càng tốt. Mình đã in bản 15mm bằng colorFabb SteelFill, nó đóng vai trò như đối trọng để giữ cho Spacemouse ổn định trên bàn.
Lắp ráp (phiên bản vanilla)
Lắp ráp gần như giống hệt bản v2 gốc, hãy làm theo hướng dẫn của nó. Sự khác biệt duy nhất là:
-
Các khớp cầu có thể lắp ép trực tiếp vào trục joystick, không cần khoan.
-
Bạn sẽ cần một đèn LED RGB. Mình dùng loại common-anode - hãy điều chỉnh dây nối của bạn cho phù hợp và sửa hàm setRGB() trong sketch nếu bạn dùng loại common-cathode.

Nối dây đèn LED với điện trở phù hợp (mình dùng 150Ω) và kết nối nó vào bất kỳ ba chân PWM nào (mình dùng chân 3, 5 và 10 vì đang trống) cũng như chân 5V.


Luồn toàn bộ cụm LED qua đáy của nắp dưới lên đến tận vành trên của nắp trên.
Lưu ý: hình ảnh hiển thị mình dùng đầu nối Dupont cho LED - đừng làm vậy. Hãy hàn dây LED trực tiếp vào cáp & bọc cách điện bằng ống co nhiệt hoặc băng dính. Khi LED nằm đúng vị trí, dùng keo nóng cố định lại. Đừng để keo dính vào khoang của cụm nắp. Tiếp tục lắp ráp như bình thường.


Khi hoàn thành lắp ráp chính, dùng keo CA gắn tấm nối vào nắp trên, và vặn núm vào sau khi keo đã khô.
Bây giờ đến lúc thiết lập loại bo mạch tùy chỉnh trong Arduino IDE. Điều hướng đến tệp boards.txt (thường nằm ở C:\Users[tên-người-dùng]\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.6\boards.txt). Sao chép tệp boards.txt và đổi tên thành "boards.txt_backup". Sau đó mở tệp boards.txt gốc, xóa hết nội dung và dán đoạn mã sau vào:
leonardo.name=Spacemouse leonardo.vid.0=0x2341 leonardo.pid.0=0x0036 leonardo.vid.1=0x2341 leonardo.pid.1=0x8036 leonardo.vid.2=0x2A03 leonardo.pid.2=0x0036 leonardo.vid.3=0x2A03 leonardo.pid.3=0x8036 leonardo.upload.tool=avrdude leonardo.upload.tool.serial=avrdude leonardo.upload.protocol=avr109 leonardo.upload.maximum_size=28672 leonardo.upload.maximum_data_size=2560 leonardo.upload.speed=57600 leonardo.upload.disable_flushing=true leonardo.upload.use_1200bps_touch=true leonardo.upload.wait_for_upload_port=true leonardo.bootloader.tool=avrdude leonardo.bootloader.low_fuses=0xff leonardo.bootloader.high_fuses=0xd8 leonardo.bootloader.extended_fuses=0xcb leonardo.bootloader.file=caterina/Caterina-Leonardo.hex leonardo.bootloader.unlock_bits=0x3F leonardo.bootloader.lock_bits=0x2F leonardo.build.mcu=atmega32u4 leonardo.build.f_cpu=16000000L leonardo.build.vid=0x256f leonardo.build.pid=0xc631 leonardo.build.usb_product="Spacemouse" leonardo.build.board=AVR_LEONARDO leonardo.build.core=arduino leonardo.build.variant=leonardo leonardo.build.extra_flags={build.usb_flags}
Lưu lại, khởi động lại IDE, kết nối Spacemouse và chọn loại bo mạch là "Spacemouse" trong trình quản lý Board/Port. Nạp sketch mình đã cung cấp vào Arduino và kiểm tra xem mọi thứ có hoạt động không.
Nếu bạn thấy màu RGB không đúng (đáng lẽ là X rotation → Đỏ, Y rotation → Xanh lá, Z rotation → Xanh dương, Z axis lên → Tím, Z axis xuống → Cyan, X translation → Cam, Y translation → Teal) thì hãy vào sketch và thay đổi cách gán chân RGB.
Cuối cùng, vào sketch, điều chỉnh các biến cấu hình theo ý thích và thực hiện hiệu chuẩn. Các giá trị cần chỉnh là:
-
DEADZONE (giữ thấp nhất có thể; tìm điểm bắt đầu bị rung, rồi đặt deadzone cao hơn một chút)
-
calibrationLength (số mẫu lấy để hiệu chuẩn tâm)
-
alpha (cài đặt lọc; thấp → mượt, cao → phản hồi nhanh hơn)
-
suppressDuration, tapThreshold & doubleTapWindow (cài đặt cho thao tác double tap)
-
AxisMaps.
Về AxisMaps: dùng để hiệu chuẩn thủ công từng trục. Đặt mức debug là 4, di chuyển tất cả các trục qua toàn bộ phạm vi, quan sát giá trị min và max, rồi điền các giá trị đó vào AxisMap tương ứng.
Ví dụ cho Z rotation:
Thông tin debug cho biết xoay Z sang trái tối đa cho giá trị -700, trong khi sang phải chỉ được +450. Hãy đến dòng “AxisMap mapRZ = …” và đổi giá trị thành “AxisMap mapRZ = {-700, 450, -500, 500};”. Nạp lại sketch, kiểm tra debug, và xác nhận xoay Z giờ cho đầu ra sạch từ -500 đến +500. Làm tương tự cho các trục khác.
Thế là xong! Hãy tận hưởng chiếc SpaceMouse của bạn. Có thể vào cài đặt 3Dconnexion để vọc vạch thêm. Nếu muốn thay đổi thao tác double tap, bạn có thể chỉnh thành bất kỳ thứ gì bạn muốn ở đó.
Lắp ráp (phiên bản Hall Effect)
Nếu bạn đang lắp bản Hall Effect, có lẽ bạn đã rành việc đặt PCB tùy chỉnh, nên mình sẽ viết ngắn gọn. In các bộ phận mình đã remix, sau đó làm theo . Trước khi đóng khung, kết nối đèn LED RBG Common Anode vào các chân RAW, 3, 5 và 10 trên PCB, với điện trở phù hợp giữa các chân RGB và Arduino. 120Ω-150Ω là ổn, nhưng hãy kiểm tra thông số đèn LED và tự tính toán nhé! Dán tấm nối vào nắp trên, luồn LED qua các lỗ, đảm bảo dây không cản trở khớp cầu, sau đó cố định LED bằng keo CA hoặc keo nóng. Vặn núm vặn vào là xong.
Thiết lập loại bo mạch, nạp sketch và bắt đầu tinh chỉnh. DEADZONE có thể đặt thấp hơn đáng kể (với joystick Hall Effect của mình, 4-8 là rất ổn). CalibrationLength và CalibrationRestPeriod có thể đặt là 10, joystick Hall Effect không cần hiệu chuẩn. TapThreshold và TapCooldown cần được chỉnh lại, hãy chơi đùa với các giá trị cùng mức debug 4 để tìm cài đặt kích hoạt double tap ổn định nhất. AxisMaps không thực sự cần thiết cho bản Hall Effect; bạn có thể bỏ qua việc hiệu chuẩn hoặc chỉ dùng nó để tạo đường cong trục tùy chỉnh.
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!