A 6DOF DIY HID. A what? A 6 degrees of freedom, do it yourself, human interface device. In other words, a 3D mouse, or an open hardware SpaceNavigator. You know, one of these thingies CAD designers use to zoom around.
All the existing DIY designs out there I could find are not actually 6DOF. Some are literally a knob on a joystick. So I set out to make a better one.
This one is based on a stewart platform made from potentiometers. It was designed so that any idiot with access to a 3D printer can build one. You might even get away with some careful jigsawing!
Since doing this project I've become aware of a few other people making true 6DOF DIY spacemice that may actually be worth your time.
Watch the Youtube video:
Close-up of the spring-loaded potentiometers:
CAD model of one of the arms:
CAD model of the knob:
CAD model of the base
- 3x arm-Body + arm2-Body, 3D printed.
- 1x top-Body, 3D printed.
- 1x base, cut from 4 layers of 4mm triplex.
- 1x PCB Aisler
- 6x potentiometer, 6mm flatted shaft Farnell
- 1x Arduino Pro Micro Sparkfun AliExpress
- 12x ball joint rod ends, 2mm, half pad AliExpress
- 6x torsion spring, 1mm diameter, 3mm length, 90 degrees, 8.5mm outer diameter AliExpress
- 6x threaded rod, 2mm, 20mm length AliExpress
- 9x Cherry MX compatible switches AliExpress
- 9x keycaps AliExpress
- 2mm & 3mm nuts and bolts
- 0.1" male & female headers
- Put the springs on the potentionmeters and snap them onto the PCB. Solder. Cut the ends short below the PCB.
- Push the male and female headers together and insert them between the Arduino and PCB. Solder. (This way you ensure they end up straight)
- Slide the arms halfway onto the potentionmeters facing 45 degree outwards. Apply a drop of hot glue to the slot for the spring and push them all the way in. Apply hot glue to secure the arm to the shaft.
- Screw the rod ends onto the push rods and secure the rod ends to the arm with nuts and bolts.
- Secure the knob to the rod ends with bolts.
- Cut 4 sheets of the base plate (the middle sheet twice)
- Insert Cherry MX switches in the top plate
- Wire switches to the header on the PCB
- Bolt the base plates together
- Bolt the PCB onto the base plate
- Upload the Arduino code.
- Install spacenavd and add
device-id = 1b4f:9206
to/etc/spnavrc
.