Introduction: "Space Mushroom" : Full 6 DOFs Controller for CAD Applications

About: I am interested in designing something curious but functional. Please take a look at my summary page, https://shiura.com/dfab/index-en.html

Very simple and easy to assemble 3D mouse for CAD softwares. It can input full 6 degrees of freedom (rigid motion) simultaneously.

  • Very easy to assemble.
  • Tripod mount (thread hole) is on the bottom side of the triangle shaft.
  • Two types of base (tilted and horizontal types) are provided (personally I prefer tilted type.)

Note : My code (mouse.ino) is tuned for Blender on ARM based Mac. It handles very frequent change of keyboard / mouse button operation correctly. Some modifications or tunings (ex. insert weight function `delay()` or limit motion) might be necessary for the other environment.


Note (Jan. 1, 2023) : Code with conservative mouse operation (no frequent button press / release) is added. Please try "mouse-conservative.ino". You can configure this code for your app by modifying not "the code" but "table". Currently it has no function to switch between multiple apps, but it can be easily modified.


Note (Feb. 14, 2023) : Some people succeeded to port the code which makes the hardware compatible to SpaceMouse. Please take a look at the comments. Since my design and software are just at the level of prototype to present my ideas, the contributions to improve it from the both aspect of hardware and software are of course VERY VERY welcome.

Supplies

  • Three analog joystick sensors with board. I used https://www.amazon.co.jp/dp/B082M4V5S9
  • "pro micro" (ATmega 32U4 based micro controller, Arduino Leonardo compatible)
  • 2mm tapping screws with various lengths

Step 1: Print Essential Parts

  • Print three copies of "ball-joint.stl".
  • Support structure is necessary to print "knob.stl". If you set it upside down on the build plate, support structure might be not necessary.

Step 2: Assemble and Test

  • Select adequate length of screws. For "ball-joint.stl", shortest screws (M2 x 4mm) are recommended.
  • Flash the program "mouse.ino" to "pro micro" microcontroller using Arduino IDE.
  • Connect analog joystick sensors and pro micro.
  • Modify the code to work with your CAD software. The current software is for Blender.
  • Mount the controller to your tripod and test it.

Note (Jan 1, 2023) : Code with conservative mouse operation (no frequent button press / release) is added. Please try "mouse-conservative.ino". You can configure this code for your app by modifying not "the code" but "table". Currently it has no function to switch between multiple apps, but it can be easily modified.

Step 3: Mount to the Base / Palm Rest

  • Two types of base (tilted and horizontal types) are provided (personally I prefer tilted type.)
  • Attach the knob to the base using 2mm tapping screws.
  • The model is 120 degrees rotation symmetric. My code assumes [sensor 1 = at 2 o'clock], [sensor 2 = at 10 o'clock] and [sensor 3 = at 6 o'clock]. You can change the angle of the knob every 30 degrees.
  • For tilted version, pro micro board is fixed by the inner structure and the hole of the cover.
  • For horizontal version, pro micro board is stored with the connector of microUSB in the housing space.
  • Stick rubber pieces to increase the friction.
Anything Goes Contest

Participated in the
Anything Goes Contest