Skip to content

Ergonomouse Build

AndunHH edited this page Oct 6, 2024 · 2 revisions

Building the ergonomouse

This is a report by AndunHH how I built the ErgonoMouse MK XX [Free version] - 6DOF Controller Knob & Joystick with Wheel, Buttons & Keys by Jose L. González:

Picture of the ergonomouse in it's final form

Some of the hints here are very small and can be fixed on the go. Others are maybe just usefull pictures for other following along. In either case: This is not a step-by-step guide. Please follow the assembly instructions Jose put into his model.

I decided to print the version with the following features:

  • Left Hand version, because I will use the usual mouse with the right hand
  • Six Keys
  • Knob with:
    • Encoder on top
    • Two buttons (kill-keys) to select only translational or rotational movements
  • LEDs (ready... not jet built in)

Purchasing and sourcing the parts

I followed the instructions and especially the PDF Files with the Variants, Material & Assembly Guide. Here are hints, links to some of the parts.

Overview over most parts of the ergonomous project

Getting the best joysticks

The most cruzial part of the project are the four joysticks in the center of the mouse. Many discussions in the comments from TeachingTechs mouse revolved around poor, good or even better joysticks. Therefore I decided to try Hall Effect Joysticks. And with the finished project I can confirm, that they are definitely working better! Go for the yellow modules with little red PCB visible which are advertised to be a replacement for a PS5 controller.

To connect them Kempy did a great job designing PCBs for it: Hall Effect Joysticks For the Space Mouse. The description of his Printable model also shows you detailled pictures of the joysticks you should look for. I bought the PCBs from him on ebay for approx. 10€ (incl. delivery to germany).

Soldered hall effect joystick

I soldered the joysticks on the PCB together with a 5 pin XH connector and crimped the proper cables.

Hall Effect Joystick on PCB With Cable

Getting an Arduino Pro Micro

I bought a cheap knock off, which uses a USB-C instead of USB micro connector. It is more convenient and didn't encounter any problems jet. Only the little clamp 'mk-xx-base-arduino-clip-lh' needed a little cutting with a knife to make space for the bigger connector.

Also the tolerances for the PCB in the main body of the mouse could use some additional 0.5 mm in width, because my board had not so clean edges -> sanded them and it fits perfectly.

Detailled view of the arduino pro micro in the housing

Getting keys and switches

I just bought original Cherry MX Keys and they worked perfectly without any problems.

Cherry MX switches and key caps

For the two buttons "R" and "T": Jose suggests small tactile button switch. Unfortunately, mine were too big, which denied the final assembly of the knob. Therefore I did a cut out in the R and T cap with a simple negative volume block in the slicer: Cut out 1.3mm in the middle with 6.5mm width.

Details for the switches R and T

Getting the encoder

I bought the KY-040 Encoder. After assembly of the knob, I wondered why my shaft is too long. Than I noticed, that Jose suggests "KY-040 Encoder (no thread, 14mm hole distance)" in his PDF. Obviously, my encoder has a thread ... Therefore I needed some modifications on the top of the knob, see below. Therefore I can't recommend a proper source right now.

Encoder KY-040 with cables

Getting other parts

M8 bolts and nuts are suggested to add additional weight to the model. This is not necessary! The mouse is not wandering around the place, because you rest your arm on it. If you are unsure, you can buy them later on and put them into the mouse later without a struggle. Don't buy them upfront!

2 mm screws: You will need a lot of them in different lengths. I bought a set of them for around 10 €, which I recommend doing!

Printing and preparing the parts

I printed the parts in Prusament Galaxy Black PLA on a Prusa MK4S without bigger problems. Here are some suggestions and remarks.

Printing the main body

I printed the many body for the left hand in one piece on the MK4S. I used classical support, which needed much effort to clean up. Next time I would try (and suggest to do!) using organic/tree support.

I used dynamic layer height to make the visible steps on top of the main part as small as possible. The first 10 mm on the other hand don't need a special layer height but are good with 0.2 mm.

Print the main axis parts

The two main parts which make the central axis need special attendance: 'mk-xx-axis-core-top-hollowed' should be turned upside down, because we definitely don't want support on the sliding surface for the balls. Additionally, and more important to shorten the necessary sanding: Place the seam manually on both axis parts to avoid the seam on the sliding surface for the balls: Slicer setting for manual seam for axis

Printing the key caps

They are really nice symbols! I have no AMS and printed the 'mk-xx-key-caps-monocolor-carved'. I placed them upside down and started with a dark color. At the top of the carving I changed to filament to white to have a bright background. After three layers I changed back again to the dark color.

I found that the key caps can be - of course - rotated by 180° but don't want to stay rotated by 90°. Some of the keys would better fit a cap, rotated once. Maybe this needs only a little change, I have not jet tried it.

Details how to print the key caps

Some small details for other parts:

In mk-xx-axis-core-bottom-hollowed.3mf: The pockets for the four m3 screw heads: I'm using other screws with a diameter of the screw head of 6 mm. The holes have also exactly 6mm. There is enough room to give a little clearance. Maybe 6.3mm diameter.

Take care to reorient this part before printing, because it is sligthly tilted: 'mk-xx-base-keys-array-side-3x-lh.3mf'.

Assembly

Most of the assembly is well documented in the PDF files by Jose. The compartment around the arduino get's quite full, but it will fit with some persuasion.

Assembling the axis and the main axis

After sanding, glue the balls to the joysticks: Balls glued to the joysticks

This main axis channel for the four balls needed much sanding and lubricant to give a smooth sliding. Check also the printing instructions above, to avoid the seam at the wrong positions! Sanded and lubricated balls

Cables, junctions etc.

To connect all 5V and GND connectors, I used two XH plug and sockets: Details of the junction box for GND and 5V

Assembling the encoder

As written above, I bought the wrong encoder, which resultet in a shaft that was 5 mm taller, than intended. The result was no problem in general. I just had to change the top cap of the knob. No big deal, I did it directly in the slicer.

Details of the assembly of the encoder

With respect to the ball bearing: I assembled the encoder as suggested with the ball bearing, but without the washer.

More details of the encoder assembly

The main purpose of the washer is to disable the "click" / the integrated switch in the encoder. But if the encoder shaft is low enough, clicking on the encoder should not be possible, because the top rests on the ball bearing and not the top of the encoder shaft. (As my shaft was to long, I had to drill those few mm into the top part)

Even though, I think the ball bearing is not necessary. Just using the encoder as a bearing on it's own should be enough in a next iteration.

LEDs

I have no proper LEDs in the system. Another problem: There is yet no pin on the arduino left to use a digital, more intelligent led stripe. We have to work on this in the repo and reuse some pins e.g. from the keys.

Calibration

I followed the instructions from the main repo and copied the config_sample.h and renamed it to config.h.

One point to struggle for beginners is always, that the printed X and Y on the joystick may not be the same as the X and Y we are using.

Please consider the main picture from the repo and the detail explanations in the following pictures. Long story short: Ignore the printed X and Y on the joystick and reassign pins or invert them until the serial output give the correct values for the correct channels.

Mapping of the axis A, B, C and D

Calibrate AX

Calibrate AY