This final assembly video explains all about my remixes in this set:
This Teaching Tech video explains about the wiring and Arduino programming etc:
Many thanks to all the makers whose remixes I utilized, and also thanks to all the makers upstream from their work. Amazing community!
I'm including an OrcaSlicer file of the whole set, ready to slice, in case you want to use it: "v3-spacemouse-slim-remix by Design8Studio (OrcaSlicer).3mf"
Please let me know if you find any issues. Thanks!
Regarding this remix —I'm referring to it as v3. See below for both modeling changes from original models and changes regarding software / Arduino sketches:
Changes from original models
While working with Fabien'sSpaceMouse Mini - Slim profile, and acknowledging the issues probably predated his remix (likely did).
Location of all joysticks was slightly off — to the left, staggered in a counterclockwise direction by about one degree (almost exactly one degree). I corrected that. It had caused the joystick operation to be “off” just enough to bother me.
On the main body, I corrected the screw holes & nubs not fitting the joysticks right. For the exact joysticks recommended by the Teaching Tech listing — “Open source SpaceMouse - Space Mushroom remix” (which were these items: Amazon.com), the mount holes and mount nubs were not located in the right spots; they were off vertically by 0.65 mm each, and they were off horizontally by 0.05 mm each. I corrected this. The horizontal was not the issue. The vertical was problematic. Actually I got rid of the nubs entirely.
Speaking of those screw holes, I designed “bottom slots” for each of the joystick PCBs, so the two screws needed for each are now both located at the top, and more importantly, the joystick PCBs attach smoothly and evenly and perfectly. This made assembly easier and better, at least in my humble opinion.
Also I added a small retainer tab for holding the Arduino in place (see screen shot below), presumably with hot glue, and there are slots on the side to facilitate zip ties). Fabien had wrapped his Arduino, and its soldered wiring, with heat shrink tubing, and then attached that to the bottom with hot glue. I like that approach, but overall the assembly seems a bit challenging because of the order of events. The top needs to be attached before the bottom, as its screws are internal. If the top is in place, then you cannot reach down from above to attach the Arduino to the bottom. I guess Fabien may have applied zip ties through the base “blindly” after attaching his bottom, or (I just now thought of this) maybe he had enough spare wire to attach the Arduino before attaching the bottom, and then pivot the bottom into position. At any rate, my remix has its new “Arduino retainer tab” as part of the main body (not the case bottom), so that once the Arduino is in place, and the top is on, nothing of wiring or electronics has the bottom “tethered” to the design. The case bottom can easily be attached last of all, and easily removed for whatever reason.
The screw holes in the “v2-upper-dome” were made for threaded heat inserts (its BOM called for 4x M3x5x4 heat-serts and 4x M3x10 screws). However, weight is a concern for the whole floating knob assembly. M3 machine screws should be fine, but the heat-serts are for if one plans to change knobs / try other knobs several times. I don't plan to change knobs again, so I adjusted the screw holes' sizes down to suit normal M3 screws.
On the remix named Big knob for SpaceMouse V2 (which I downloaded for use before its 4-post option was removed):
The openings for the screw heads were too small for the heads of my M3 screws. So, I remixed the openings.
Also, I wanted a shorter (medium) version of this knob, so I made that edit.
I'm offering both the tall and medium here.
Regarding assembly interface between both of the remixes mentioned directly above:
I also found the tolerance to be so tight between the posts (on the knob) and the sockets for those posts (on the dome-upper part), that once I finally got the knob inserted, neither screws nor glue were needed. So, I went ahead and did additional remix work on the dome-upper, to gain additional clearance room on insertion of the knob.
I printed these at 0.1mm layer height for added smoothness.
I did not make any remix edits here.
I am providing both the original normal tolerance ball joints and the tighter tolerance remix.
Regarding pretty much all the remixes:
I added slight a chamfer (0.3 mm) on the bottom faces of all parts to help prevent elephant’s foot for any printers that struggle with first layer issues that way.
Regarding the idea to CA glue the ball joints onto the joysticks, instead of drilling and screwing.
In a recent rebuild / test of a new remix, I attempted this (glue) on 2 out of 4 joysticks, because the screw method had some of my ball joints attached slightly crooked. In both attempts, somehow a small amount of CA glue made it to the edge where the printed ball joint part interfaces with a little metal bow-type springy thing, and the glue is preventing the joystick from moving freely. I’ve ordered replacement joysticks. You may be able to do glue instead of screw, but carefully.
FIRMWARE - newly updated June 16, 2024
Arduino IDE - regarding firmware for 3Dconnexion's driver
Kudos to Printables user @stavros who pointed us to a newly revised repo on Github that works with all axes at once, and likewise kudos to Github maker AndunHH who posted this new code, which is available here: https://github.com/AndunHH/spacemouse
The new code supports keys being added to your Spacemouse. I'm not yet using this new feature, but maybe you want to.
After careful efforts, I have created two variations of AddunHH's work, which I am providing here, and they each have the following attributes:
The “config.h” file is already created for you, but you should still do some hardware calibration, which is made easier by use of a semi-automatic method triggered by setting the debug mode to a value of 20, and then compiling and uploading the code, and turning on the serial monitor in Arduino IDE, and physically toggling your Spacemouse's knob all around to its extremes in all directions, for about 15 seconds. The serial monitor will then spit out some values to copy and paste into your config! Cool.
Of the two new sketches I added for Arduino IDE, they both work for either Mac or Windows. The difference between them is one is for up+down = zoom (my preference) while the other is for forward+back = zoom (the default behavior for the 3D Connexion tutorial). So here's what to do:
Steps to setup and upload one of the new firmware sketches:
Using the info above, be sure you add the modified content to your “boards.txt” file for Arduino IDE, so it will show a choice for you, under "Tools > Board > Arduino AVR Boards" of “Spacemouse Pro Wireless (cabled).”
Download and unzip your choice of either —“spacemouse w fwd-back = zoom.zip” or —“spacemouse w up-down = zoom.zip”
Browse into the subfolder named "spacemouse-keys" and double click on the “spacemouse-keys.ino” file inside that folder, to open it in Arduino IDE.
Select your board under "Tools > Board > Arduino AVR Boards" of “Spacemouse Pro Wireless (cabled).”
Select your port under “Tools > Port” —presumably this is a USB port by which you're connecting your Spacemouse.
Click the “Upload” button (arrow icon) or press Command+U (Mac) or Ctrl+U (Windows) or in the menu, tap on “Sketch > Upload” — to compile and upload your firmware.
To edit debug mode and do some calibration, go to the subfolder named “spacemouse-keys” and open the “config.h” file in your favorite code editor / text editor such as Visual Studio Code.
Set the debug mode to 20, save the file, and repeat the upload step above.
In Arduino IDE, switch on the Serial Monitor —in the menu tap “Tools > Serial Monitor”
Once the upload completes, the output in the Serial Monitor will tell you to physically move your Spacemouse's knob all around to its extremes in all axes for about 15 seconds. Once it gathers the movement data, it will show you values looking something like this: MINVALS {-526, -517, -522, -518, -508, -506, -508, -512} MAXVALS {497, 506, 328, 505, 515, 517, 515, 511}
Copy those values and paste them into the “config.h” file, replacing the existing values, but being careful to not remove the following at the start of each of the two lines: #define (Note: all lines starting with "//" are merely remarks that the compiler ignores.)
Do any other debugging modes you like, which are explained at the start of the “config.h” file.
Download the driver from 3Dconnexion, and install it.
In 3Dconnexion Home, run the trainer.
If you have trouble with any directions being wrong, be aware that although I have them working right in my environment for both Mac and Windows, on some systems they may need tweaked. The tweaks would happen either in the “config.h” file or the main “spacemouse-keys.ino” file.
Happy Spacemousing!
OLD firmware sketches (left in the listing just in case):
Windows
joy4_tt_v2_firmware_v3_DJ_tweaks_Ver_003
Works well in Windows, with correct rotation & movement in all axes, without any reversals needed in the 3DConnexion driver, and the Zoom is done by Up and Down like I wanted.
MacOS
joy4_tt_v2_firmware_v3_DJ_tweaks_Ver_004
Works well in MacOS, with correct rotation & movement in all axes, without any reversals needed in the 3DConnexion driver, and the Zoom is done by Forward and Back like default tutorial.
joy4_tt_v2_firmware_v3_DJ_tweaks_Ver_005
Works well in MacOS, with correct rotation & movement in all axes, without any reversals needed in the 3DConnexion driver, and the Zoom is done by Up and Down like I wanted.
Note: on the MacOS driver from 3Dconnexion, I had to adjust the speed setting way down for all the axis to get a comfortable working speed range.
Pics of the modeling and slicing
Print settings
Supports: No
Seam alignment: Back
Layer height:
0.2 mm for all parts except the ball joints
0.1 mm for the ball joints
Perimeter walls:
2 walls for all parts, except (arguably)
1 wall (0.6mm) for knob (recommended by maker whose remix I used), but I did 2 at 0.4mm.
I did 3 walls for the frame (main body) and base, but 2 probably would've been OK.
Infill:
15% for most items
5% to 10% for dome-upper and dome-lower
1% for knob
For the knob (your choice of medium or tall):
Print as light as possible to make it more responsive.
My settings to make it light, yet also easy to setup in OrcaSlicer:
Layer height: 0.2mm
Sparse infill 1% (this resulted in a single wall X of infill, plenty light)
Wall loops: 2
Supports: NO
Fuzzy skin: YES - “Contour”
Fuzzy skin point distance: 0.15mm
Fuzzy skin thickness: 0.05mm
As per the author I remixed from: Their settings to make it extremely light, but they didn't say which slicer software:
0.001% infill (to make minimum sparse infill threshold effective but generate no infill)
Minimum sparse infill threshold 20mm^2 to make the pegs solid
1 outer wall at 0.6mm width
6 top layers and 2 bottom layers
7mm/s internal bridge
40mm/s outer wall and solid infill
Ensure vertical wall thickness to all
0.05mm fuzzy skin with 0.15mm point distance
Change log
June 16, 2024 at 12:30 AM eastern —Added new firmware sketches for Arduino IDE. Kudos to Printables user @stavros who pointed us to a newly revised repo on Github that works with all axes at once, and kudos to Github maker AndunHH who posted their work. See above, in the “Firmware” section, for more details about my variations of this.
June 11, 2024 at 4:10 PM eastern — Added a new alternate base, “v3-slim-profile-base-extra-2mm-room.stl.” The initial upload certainly works, but is tight at the bottom. This new one has 2mm extra headroom in the base. Regarding overall height, it adds 2mm. As observed by @paulminor4707 on YouTube, “the TT [Teaching Tech] V2 Frame file is 102x102x49mm, this one is 102x102x37.” As of now, if one chooses the alternate base, the overall dimensions are 102x102x39 (exactly 10mm reduction instead of 12mm reduction of size).
June 10, 2024 at 8:37 PM eastern — realized the OrcaSlicer set I provided did not have brim switched on for the ball joints. They're easy to break loose while printing without it. Added the brims, and re-uploaded the OrcaSlicer set.
June 10, 2024 at 6:00 PM eastern — realized the OrcaSlicer set I provided did not have the ball joints in it. Added them, and re-uploaded the OrcaSlicer set.
June 10, 2024 — initial upload
PayPal Tip Jar
If you'd like to buy me a cookie for all my work in this, you can send me a tip via this link: https://paypal.me/design8studio