So, a little introduction as to why I made this project. I play a lot of Elite:Dangerous, like a lot. And one of the things I noticed is that when you are in a combat situation, you have to do a lot of micro managing and often it is really difficult to find the buttons you have to press on your keyboard. That is why I made an extended keyboard where all the functions I need are easy to find. I also added some switches to the things you would expect to have them to add more realism and immersion. I have linked all the commands on the panel with Voice Attack, a program that allows voice feedback (among other things), so every time I use a function on the panel, a voice will give me feedback, thus making the whole project more interactive.
Step 1: Materials
I started this project with already owning a keyboard (Roccat arvo) and a joystick setup (Thrustmaster T.Flight Hotas).
The instructions will be for the button panel only, I will include pictures of all my steps though.
For the panel you will need:
- 1x Arduino Leonardo
- 1x USB to micro-USB cable
- 1x Breadboard
- 1x Solder board
- 13x 10k Ohm resistors
- 4x 180 Ohm resistors
- 4x 5mm LED lights (I got one red for the weapons and the rest blue)
- 4x 5mm LED housing (plastic or metal)
- 1x 3mm thick 300x600 lasercut piece of black perspex
- 8x square pushbuttons **
- 4x toggle switches **
- 1x elevated pushbutton **
- a lot of wires
I used circuits.io for the layout of the circuit and Illustrator for the file for the laser cutter.
** (If you want to use other buttons/switches please make sure you either choose ones with of the same size or change the measurements for the laser cutter in the Illustrator file)
Step 2: Wooden Frame
I made an outline of my Hotas setup and keyboard, cut that out by hand and used 6 cm thick wood to fill any areas that would otherwise be empty between the joysticks and the keyboard. On the right and left of the board I used little round wooden pieces to secure the joysticks in place.
Step 3: The Panel
I used all the exact mounting measurements in the Illustrator file so that everything fits as nicely as possible, it is doable by hand, but this saves a lot of time and effort (you don't want to be making holes of 6x19,2 mm by hand).
I had this cut out by a local company, other people might handle different color codes (red for cutting, black for engraving)
The text in the Illustrator file is used exclusively for Elite:dangerous, if you wish to change it you can of course, just make sure you convert your text to 'outlines' and keep these outlines are black so they can be engraved and not cut.
Step 4: The Circuit
So once you have mounted all your buttons in place it is time to get on with the wiring. In the image above You can see the basic layout of all the electronics, sadly circuits.io did not have any toggle switches and only had push buttons with 4 'legs' instead of 2. Because of this, some additional information might be handy:
- for the buttons (1-9 from the left): attach the 5v output from your arduino to one of the buttons legs and all the other wires (so ground and the one to your arduino input) to the other leg.
- The four buttons from the right are actually toggle switches, they have no neutral position so they also have two legs. As before, the 5v output should be attached to one of the legs and the wires to ground, the arduino input and the LED to the other leg.
- Make sure you connect the + (long leg) of your LED to the button and the other to the resistor and ground, otherwise, your LED's will not work.
Step 5: Mounting the Arduino and Breadboard
As shown in the picture, I attached my arduino and breadboard to the back of the panel to keep everything together.
NOTE: I only used the breadboard to extend my 5v output and ground to all 13 buttons and 4 LED's, you might want to use a smaller breadboard or just fit everything into a solder board (which I should have done)
NOTE: In this picture you can see I mounted the arduino Uno to the board, this is before I knew Uno can NOT send key codes directly to your computer, you will absolutely NEED arduino LEONARDO!
Step 6: Resistors (are NOT Futile!)
I used a little piece of solder board to attach all my buttons and LED's to ground. All resistors are on one side connected to one wire that goes the ground (or gnd) on your arduino (doesn't matter which side as resistors are not directional). The other side of each resistor is connected to a wire that either goes to a button/switch (10k Ohm resistors) or an LED (180 Ohm resistors). I also mounted this board to the back of the panel as shown above.
Step 7: Wiring It All Up
So this is how it looks when all wired up, you can use any copper wire to do this but for all the connections to the breadboard and arduino I advice special wires with special connector pieces for the arduino for the best connection.
Step 8: Finishing the Setup
Using plank with the same thickness as the plank I used in step 1, I made a bottom layer to start from. (NOTE: I had to make this plank to size and attach it later because I measured along the way and not beforehand, if you want to do it more precise, you can measure everything out before hand and already include this bottom layer with the wooden frame in step 1). Then I determined at what angle I wanted my panel and made wooden pieces to fit it all accordingly. The hole in the middle 'wall' is for the micro-USB and other wiring. On the left side under the panel I made a gap so I could easily remove wires when I want to use just my keyboard and mouse. The square holes left and right under the panel are there so I could place some white (somewhat transparent) perspex there and mount an RGB LED strip there for added effect, this of course is optional.
Step 9: The Code
For this code to work properly you will have to connect the buttons to inputs 1-9 and the switches to 10,11,12 and 13. The codes I used are ASCII codes and I tried to set them up so that they would work with the default settings in Elite:Dangerous. This ended up not working (for reasons unknown), so you will have to wire the individual buttons to the functions in Elite and/or Voice attack. I used Arduino IDE to upload my code to the Arduino.
Step 10: Painting and Final Assembly
Once everything is fitted together just nicely you can give the frame a paint job to make it look better, I just did a layer of black acrylics (watered down for better distribution) and then 2-3 layers of lacquer to finish it of.
Step 11: Play!
A demonstration video will be posted soon