Buildin my own joystick article

When I noticed the availability of Elite:Dangerous for OS X, I immediately investigated my options on getting a proper Hands-On-Throttle-And-Stick, or HOTAS to play this wonderful game. You can get a very decent joystick combo at €30 and upwards but what’s the fun in that? I decided to make my own.


read all about it here

Throttle done

I’m finished soldering and wiring the throttle assembly. All the buttons work and are recognised in-game. All the leds work and all the animations a properly triggered.

Pretty proud.

Final touches on the HOTAS project.

No picture this time. I want to save them for when i’m done.

Today I finished the soldering of the prototype board and I am very much a happy camper now. Dropping the breadboard and switching to properly soldered wires made the whole contraption much more stable. The potentiometers have almost no jitter anymore even though there’s 2 meter of cable between the two modules. The data is looks pretty solid. The potentiometers I am using right now were taken from a scrapheap, but after I sprayed some ‘Kontakt’ contact spray into the potmeters they runs absolutely smooth and jitter-free.

I have a few more solder joints to do to finish up the lighting scheme for the throttle housing, and then I have a few lights left on the yoke (X/Y stage). This second module doesn’t have the throttle lighting bar so it hasn’t got as much leds as the other one.

All this means that i am close to finishing the project. I need to figure out a way to mount the modules to my desk or my chair. The modules aren’t heavy enough to sit solid on the desk. Some mounting fixture is needed and i’m not ready to drill holes in the desk just yet.

Oh joy(stick)

And so we arrive at the end of yet another day of tinkering. Working on the electronic bits here and there. I managed to connect and test all the analog axes. They work great but my change to turn the Z-axis into a proper ‘Throttle’ HID report resulted in Elite Dangerous no longer recognising the axis. So that was a total waste of time. Nevertheless I also worked on some lighting effects and they look pretty ok. Not as bright as I would’ve liked but legible nonetheless.

So the status now is a working throttle block with a few lights, and a partially working X/Y stage with just the trigger, no light, and a buckload of wires sticking out with a possible chance of shorting something out. That will be my first priority.

All the hardware works. All communication between throttle and yoke works, the lights work, the data gets through. It is now a question of expanding on the same concept (connect a light, connect a button).

Firmware is also coming along nicely. With this amount of leds and wires it is becoming impossible to keep the firmware generic, especially with all the animation stages going on. I did keep the source nice and clean though by using a few object classes here and there so people checking out the code later on should be able to understand it. One example is a Calibration class which takes care of doing all the math work to take the potmeter value and turn it into an self-calibrating value between -32000 and 32000 (which is what the joystick reports to the computer). So what does the calibration do? Well basically after plugging in the device is filters out the noise, calculates the minimum and maximum values and transforms that into a proper scale with a few end-stop deadzones. The deadzones will make sure that the maximum or minimum value can be reached in top or bottom 5% of the stick. The reason for this work is to avoid having to implement a custom calibration tool.

Tomorrow I hope to move from the breadboard to a solderboard so I can get rid of all the jumper cables and have some solid reliable connections. All these wires is making the readings a bit noisy.

IMG_1929 IMG_1930

Lighting day

Today and yesterday was lighting day. I’ve been working on assembly a 32-digit multi-color led bar. Man this take a lot of time. Next time i’ll just buy the specific parts and design a PCB to mount them on. I’ve been soldering and stripping 64 wires and i’m barely halfway.

Yesterday I also received vinyl sheet for masking out the leds. This time it’ll be blacked out instead of the white you see in the video above.

The joystick itself is fine. I will have to do a lot of work on the stability of the base plate and the mounting because it feels a little loose (which wasn’t my plan at all). Also one of the hat switches broke down (already!). It may have something to do with me prying the button hat on and off and on and off a little too many times since the other one that i use most still feels solid.

Back to the picture, you see a lot of wires which is a lot because there are a lot of leds. By using the concept of multiplexing all those wires come down to 4 groups with 8 leds each where each led has 2 wires (red+green) which makes 64 pins. By switching the lights very very fast (several kHz or so) i only need 4 + 16 pins to drive 4×16 = 64 led pins