Ready to Race: Part 2

DIY Racing Simulator Dashboard

Liam Davies

Issue 43, February 2021

This second and final part of the project will be dedicated to wiring up and programming the dashboard.


In the first half of this project, we demonstrated how the fundamental electronics concepts worked, and assembled the physical construction of the dashboard. In this half, we’re building the final electronics that will drive the dashboard. This issue won’t discuss in depth how the electronics works as we’ve already discussed in the last issue of how the project operates.

The Main Build (Part 2):

Wiring Pushbuttons

To begin Part 2 of our Main Build, we started by setting up the joystick buttons attached to the front of the panel. The Joystick Encoder used for this project includes support for up to 12 buttons, which we’ll hook up to the board with the included JST cable connectors. The eight pushbuttons we have inserted into the back of the dashboard now need to be wired up to our joystick board.

It’s worth noting that the Joystick Encoder only includes wires for 10 buttons, so you will need to source some additional 2.54mm JST connectors suitable for the board, or purchase two Joystick Encoder kits. We’ve provided a parts list so you should be able to track these connectors down. You’ll notice in some pictures throughout this build we’ve left two buttons disconnected while we waited for the delivery of the additional cables. On a related note, the dashboard’s buttons and display circuitry are two entirely different circuits of the project, and so they can be completed and tested concurrently if delivery of other parts are pending. You will notice this in some of the photos shown, so don’t freak out if you see parts you haven’t used yet!

The connectors themselves include a JST connector on one end and two spade connectors on the other. If your set of pushbuttons can suitably fit these spade connectors, go ahead and slide them on – since this kit is made for arcade-style joystick boards, many arcade buttons available from Jaycar and Core Electronics have these. The buttons we chose had solder tabs on them instead, so we cut the spade connectors off and stripped the wires. Then, after adding small cuts of heatshrink to each wire, solder the wires to the solder tabs. For these pushbuttons, it doesn’t matter which way the wires are orientated since the Joystick Encoder board is simply polling for a closed circuit, which the pushbutton provides when depressed.

Electronics Parts Required:JaycarAltronicsCore Electronics
2 x Universal Perfboard Plates (2.54mm pitch) *HP9550-ADA2670
1 x Arduino UnoXC4410Z6240CE05629
1 x 3-pin 2.54mm Terminal Block ^HM3132P2041AADA2136
1 x 5-pin 2.54mm Terminal Block ^--ADA2139
1 x 2-pin 2.54mm Terminal Block ^HM3130P2040AADA2138
1 x 16 Pin IC Socket - DIP16PI6456P0565-
7 x 200Ω Resistors *RR0680R7541COM-10969
1 x 470Ω Resistor *RR0680R7042COM-10969
1 x 10kΩ Resistor *RR0680R7058COM-10969
1 x 7805 5V 1A Voltage Regulator (TO-220)ZV1505Z0505ADA2164
1 x 1uF Electrolytic CapacitorRY6802R4718CE05268
1 x 10uF Electrolytic CapacitorRE6066R4767CE05274
1 x 40-pin 2.54mm Female HeaderHM3230P5390PRT-00115
1 x 40-pin 2.54mm Male HeaderHM3212P5430FIT0084
1 x 2.1mm DC Socket With Screw TerminalsPA3713P0610AADA368
1 x 12VDC Power Supply PlugMP3011M8932AAM8936
2 x 2-pin JST Connector Wires--PRT-09914
General Hookup WireWH3025W2431-
Solid-Core Breadboard WireWH3032W2430-

Electronics Parts Required:

* Quantity shown, may be sold in packs. ^ Some terminal blocks include dovetail connectors that allow joining of smaller blocks together.

Wiring Momentary Switch

Wiring up the Momentary Switch is virtually the same process as the other pushbuttons, but with a small difference in that we are wiring up two digital inputs to one switch. To do this, we’ll need to cut off two button connectors and solder their white wires together. As will be explained more when we wire the ignition panel, the white wire is the 5V rail of the Joystick board and once it is connected to the digital pin (the blue wire), the IC triggers a button press. Since our momentary switch will connect the centre pin to the top or bottom pin – depending on which way the switch is pressed – we need to connect the blue wires of each digital pin to the top and bottom of the switch. The switch we used is actually DPST, so it’s okay to ignore the other pole of the switch – meaning you only need to wire to one side of the switch and leave the other side as it is.

Wiring Ignition Panel

The ignition panel we’ve chosen from Jaycar has been designed to be implemented in actual cars, but it’ll work with our dashboard so long as we connect the right wires onto the correct terminals. To connect the “Start Engine” button, connect the white wire to the top left – looking from the back – terminal and connect the blue wire to the bottom left. Unlike any of the other buttons in our dashboard project, the Start Engine button does not include solder tabs, and instead relies on screwing down our wires or using eye connectors if you have them available. Since we’re not wiring a heavy-duty electrical system in a real race car, it’s okay to directly strip the wires and wrap them around the screws. After the screws are tightened down, check the wires won’t come loose by giving them a firm tug.

Wiring up our ignition switch is a bit trickier than the other buttons here, since we’re also hooking it up to the red circular LED in the centre of the ignition panel. To make the LED work, we need access to a ground point on our Joystick encoder board. Strangely enough, this joystick encoder board does not include a ground plane in its PCB design and the plane is instead tied to 5V! This means that there are few components on the board which have a readily available connection to ground that we can solder to. The most convenient ground connection we found was on a 0-ohm resistor next to the USB port, which we soldered a black wire to.

IMPORTANT NOTE: If you plan to mount this joystick board onto a metal dashboard, be very careful screwing it down as the 5V plane present on the underside of the joystick board may short with any ground-connected components on your chassis.

To continue wiring up the ignition switch, solder the white wire of a button connector to the bottom pin of the ignition switch. Heatshrink should be added before soldering to protect the solder tabs from shorting out. Before soldering the blue wire onto the centre tab in the same way, another hookup wire should be twisted together with it. This wire will be connected to 5V when the ignition switch is flipped upwards, which will illuminate our red LED.

To do this, connect the black wire we just soldered to the joystick board to the bottom LED solder tab and the blue wire to the top. To test that the LED is operating as expected, connect the USB cable to the joystick board and verify that flipping up the switch illuminates the LED. Note that the LED won’t be bright as it is designed to be since we’re only running it from 5V, so significantly less current flows through it compared to if it was run on 12V. This isn’t an issue as any overly bright LEDs on our dashboard just become distracting.

If would prefer to wire the LED to illuminate when the “Start Engine” button is depressed – simply wire the black and blue wire to the button in the same way as the ignition switch. We’ve only chosen the ignition switch to remind the user when the ignition is turned on.

Mounting the Joystick Board

It’s now time to plug in all of our wires and finally mount the joystick encoder onto the rear of the dashboard, if you haven’t already done so. On the bottom of the Joystick board, there are 12 JST connectors for each of our buttons, which can be connected in any order you prefer. From left to right, the USB board recognises the inputs as Button0 through to Button11 – this is how you will see the buttons listed in your favourite racing games.

Before properly mounting the unit, we suggest ensuring that the button presses are all recognised by your computer. After plugging in the included USB cable to the joystick board, open the Start Menu on your Windows computer and search for “Game Controllers”. The “Generic USB Vibration Controller” should appear – to test the state of each button, press “Properties” and test each button appears on the red numbered circles. Each red circle should light up when the button is pressed. When the ignition switch is flipped up, Windows should report it as being permanently pressed, and the red LED we wired should illuminate.

To mount the unit, we used some double-sided tape to attach it to an available area on the rear of the dashboard. Before sticking it to the rear of the panel, check that the cables are not visible from your normal sitting position. Once the joystick board is mounted, we cleaned up the wires by adding cable ties to keep everything organised.

Control Shield

To make the control board simple to build with off-the-shelf components, we’re opting to build a double-layer Arduino Uno shield. The double-layer shield is integrated with the main 7-segment gear display, which makes it super easy to keep everything organised and reduces the amount of cabling required behind the dashboard.

The first part of the control shield we’re building is adding the header pins to connect directly to the Arduino Uno board. We’re orientating the Arduino Uno horizontally so the USB port does not protrude from the top of the dashboard or prevent the dashboard from sitting properly.

It’s worth noting that the header pin spacing on the Arduino is not fully 2.54mm compatible – meaning it won’t exactly fit into the grid of a solderless breadboard or prototyping board we are using. More precisely, three banks only of the Uno’s pins are spaced at a pitch of 2.54mm; the fourth bank can’t be used.

Soldering male header pins onto the underside of a prototyping board is quite tricky. Because the black plastic bar directly meets with the copper underside of the board, we can’t get a soldering iron underneath it to solder our header pins. As a result, we had to get creative with spacing the male headers slightly raised above the board so we could get a soldering iron onto the pins. To do this, put the prototyping board on a flat surface and insert the male header pins into the underside. You should find that the thickness of the board will provide a 2-3mm gap underneath the headers, enough to solder them. While it doesn’t look as neat as we’d like, it’ll definitely get the job done and as a bonus, it will provide 2-3mm of additional clearance between the shield and the Arduino, reducing the chance of any shorts.

LED Controller Chip

This is the most finicky part of the wiring for the control shield, so we suggest completing this part of the control shield next to avoid headaches later. Our 16-pin IC socket will be inserted in the direct centre of the control shield, which has the benefit of hot-swapping chips should we accidentally kill our shift register chip.

IMPORTANT NOTE: The orientation and pin assignments for the 7-segment display of this project is very specific, so double-check with the provided schematic that you are soldering to the correct pins! The SimHub software has predefined assignments for each current sink on the TPIC6C595 chip, so incorrectly wiring the segments will result in unreadable characters.

The IC socket’s orientation - with the notch in one end - must face towards the right side of the racing dashboard when looked at from the front. After the IC socket is soldered in, we added the current-limiting resistors for each segment. All 7 segments consist of four LEDs, so we need to drop the 12V rail to 8V and provide 20mA to the display. For this reason, we’re using seven 200Ω resistors in series with each drain of the TPIC6C595 chip. The other drain of the chip – Drain 8 – can be optionally connected to the decimal point of the display through a 470Ω resistor. While SimHub does not currently utilise the decimal point for any purpose, in future updates its functionality may be used for additional information (e.g. a low fuel indicator). The higher value resistor is used to correctly limit the current considering there are only two LEDs in series for the decimal point.

At this point, we added two rows of female headers to the top and bottom of the prototyping board to line up with the next layer of the shield – which will hold the 7-segment display. While the 7-segment display only requires 5 pins on each of the header rows, we suggest adding around 7-8 instead to help physically support the electronics, considering that this is a multi-layer shield. We used two 8x1 rows of female headers on each end of the board to do this.

All resistors soldered next to the drains of the TPIC6C595 need to be connected to the male headers on the top and bottom of the board. These connections need to be mirrored horizontally – i.e. crossed over each other – to ensure the correct orientation is achieved of the 7 segment display. While we don’t typically like crossing solid-core wires on a prototyping board – it becomes difficult to fix wiring errors - it is the simplest arrangement we came up with due to the fixed pin assignments. Remember that the middle pin of the 7-segment display headers is the common cathode, meaning the pin connected to 12V. We’ll come back to this later, but for now, do not connect any of our blue drain wires to them.

The next step we worked on was building the second layer of the shield, which has the 7-segment display. After we soldered the display to the middle of another blank prototyping board, we added 8-pin male headers to the bottom of the board to link up with the first layer. Take note of where the pins of the 7-segment display are connected to the header, as you’ll need to connect the TPIC6C595 shortly to the corresponding pins. Another part we added to the second layer was some more female headers on the top side of the board, directly next to the 7-segment display. This serves no purpose electronically, but it conveniently is the perfect height to act as a stopper for the display in the MDF panel! The female headers sit against the MDF and prevent the shield from falling forward.

After you’ve figured out where the cathode and anode wires are of the 7-segment display (see our schematic), you can add the blue drain wires to link up with the TPIC6C595 pins.

We then added power connections to the IC socket, starting with the 5V rail. The top-left pin of the IC, Pin 1, is logic Vcc and must be connected to the 5V pin of our Arduino shield. To do this, slot the board into your Arduino Uno and check which header pin corresponds to 5V. This should be the fifth pin from the bottom of the shield.

Once you’ve found which header is your 5V supply, solder a wire from it to Pin 1 on the socket and near Pin 7 – second from the bottom. This Pin 7 on our shift register chip is the CLR pin, which when held high to 5V, allows the register to hold data contents. We tied it to the 5V wire we just soldered with a 10kΩ pullup resistor, but any reasonably large value resistor will work just as well.

Next, we’ll add the ground connections for our chip. From either one of the ground pins on the Arduino headers – they’ll be two pins grouped together, right next to the 5V pin – solder a wire to the Ground pin (Pin 16) and the Output Enable pin (Pin 8) on the shift register. These are the top right and bottom left pins of the chip, respectively.

After adding the power connections for the shift register, we’re going to be adding the data pins for the Arduino to interface with the 7-segment display. There are three data wires that are required to interface with the TPIC6C595: DATA, SLAVE and LATCH. It’s worth noting, however, that those who are curious enough to peek into the datasheet for the IC will notice there are no pins explicitly assigned those names. We had to experiment with the SER IN, RCK and SRCK pins of the register to get it working correctly. We’ve provided a simple table below, which in addition to the project schematic, will help you wire up the three data pins from the Arduino to the register. The pins 10, 11 and 13 are located on the bank closest to the USB port on the Arduino Uno and unfortunately cannot be changed due to library limitations with the SimHub software.

All of our data connections are finished for the shift register chip! However, since the shift register chip only acts as a drain for the current of our 7-segment display, we need to provide the common cathode power for the LEDs. As we have mentioned throughout this project, the common cathode power needs to be 12V in order to overcome the large voltage drop of the LEDs within the display. Our 12V power supply on the board will be supplied from a 2-way screw terminal, which we will connect an external 12V power supply to later. We used the left-side terminal to connect the ground of the Arduino to the ground of our power supply and the right-side terminal to provide a 12V power to the circuit. You can see in the photo below that we’ve used yellow wires connecting to the two middle pins of the 7-segment display for the common cathode power.

At this point, we’ve added sufficient electronics to get the 7-segment display working. We recommend giving it a test run now, as you can isolate any problems a lot easier now than when everything else is assembled. If you’d like to do this, skip to The Code section and upload the SimHub Arduino with only the 7-segment display enabled.

You’ll need to use some hookup wire to connect a 12V power supply to the screw terminals we added – any reasonable quality plug pack or lab bench power supply will work fine. We recommend sourcing at least a 1A power supply to support the RGB LEDs we’ll be adding shortly.

Tachometer Wiring

Now that we’ve finished the 7-segment display circuitry, we can move on to adding the terminals for controlling the tachometer. While it’s not strictly necessary to add the circuitry for the tachometer onto this board, we’re choosing to do so because it’ll keep all of the electronics much more compact and robust. We’re adding five screw terminals next to the 12V power terminals, one terminal for each cable on the tachometer.

As shown below, the wiring for the gauge is self-explanatory – just be sure not to use the black wire as ground! Regarding the tachometer backlight, ours included both red and orange backlight. We connected the colour we wanted – red – to 12V and left the other colour floating. The floating terminal pin was soldered to the board but not to any other components. In testing, this worked just fine.

Shift Meter Wiring

Like the terminals for the tachometer, the shift meter is just a matter of connecting power wires and a data wire to get it to work. After inserting a 3-wide screw terminal at the bottom of the board, connect one terminal to ground, one terminal to 5V and one terminal to pin D8 on the Arduino Uno.

If you have problems regarding the NeoPixel display including strange lighting behaviour, try adding a 200 ohm resistor in series with the data wire and 1000µF decoupling capacitor near the strips. This should help regulate inrush current and provide stable light operation.

Regulator Circuit

We’re adding an additional 5V linear regulator to our dashboard to help alleviate the power requirements of the shift lights. This is important because especially at high brightnesses, the LEDs rapidly require current when changing. While we tested the display shield without the regulator and had no issues, we would rather reduce the power requirements of the Arduino’s USB 5V rail and instead offload the power draw to the external 12V power supply. Because we’ll be drawing around 300mA – 500mA from the 12V supply when running both the tachometer and the shift meter at a reasonable brightness, we chose a 7805 linear regulator. Since linear regulators effectively dissipate any voltage drop down to the required voltage through heat, this approach isn’t super-efficient. However, given that our maximum current draw will be around 500mA when the LEDs are lit for short periods of time, the inefficiency isn’t a huge issue.

We added the regulator to the right of the shift register chip and added a 1µF and 10µF capacitor for smoothing the output voltage rails. Feel free to add additional decoupling capacitors if you are experiencing unstable behaviour. After connecting the middle pin of the regulator to ground, the left pin to 12V and the right pin to 5V, the regulator is good to go. If you want to verify the regulator is working as expected, before connecting the right pin to 5V, use a multimeter to check it's outputting a stable 5V.

Final Assembly

With the electronics all finished, it’s time to hook everything up and get our software uploaded. We suggest connecting all of the necessary wires to the terminals before stacking the shield layers and inserting them into the board. Grab your screwdriver and get connecting! Note that these cheaper screw terminals have a habit of not gripping the wires very well, so give all of the wires you insert a good tug to check they won’t come out and short with other components. Double check that the wires you’re connecting are where they are meant to go in the terminals. We also used some wire guides and cable ties to keep everything organised, wrapping around the tachometer body to use up some cable length.

Once the screw terminals are connected, go ahead and stack the remaining layers of the shield, including the Arduino Uno. Depending on your 12V power source, you may want to use a barrel jack adapter to convert the screw terminals into a jack suitable for a wall adapter. You’ll need to connect three external cables for this project: One USB cable for controlling the display shield, one USB cable for the joystick board, and a 12V power connection as mentioned. You can bundle these cables up and run them in a cable sheath to keep everything neat if you desire.

The Code

Unlike many Arduino projects in DIYODE, we aren’t writing our own program to get the final build of the project finished. Instead, we’re using a racing dashboard control software called SimHub to provide an interface between the racing game on the computer and the Arduino itself.

We want to clarify that it is not required to use this software – the Arduino libraries used within the SimHub software are already available on the Arduino IDE library manager and can be used in your own projects. However, SimHub is an incredible software that makes the job of DIY makers like us many times easier. Most modern racing games available today allow the interfacing of their telemetry data (meaning car information we’ll be displaying on our dashboard, and much more) through a protocol. However, these protocols tend to differ and can be in the form of anything from an UDP server or an SDK for a software interface. If we weren’t using SimHub, we’d have to not only write all of the code responsible for controlling our display, but also for receiving data from each individual racing game! Since there are hundreds of racing games that are popular on online platforms such as Steam, it’s impractical for makers to implement code that supports each one.

Luckily for us, SimHub has already done most of the heavy lifting and includes support for both a large variety of modern racing games and a very user-friendly interface for setting up our Arduino hardware.

To get started with SimHub, head over to and download it to your computer. While the software itself only supports Windows installations, if you are gaming on a platform other than Windows, such as Mac, PS4 or Xbox One, it is still possible to make SimHub work with some configuration, depending on the game. After extracting the compressed folder and running the installation file, you should be greeted with the main SimHub screen.

Uploading The Arduino Sketch

SimHub includes an Arduino configuration program that allows us to select the displays we have installed on our display, and then upload the sketch directly to our Arduino board! To access it, you’ll need to head over to the Arduino tab in the SimHub software, then go to the My Hardware panel. From here, SimHub is able to detect connected Arduinos running the inbuilt sketch. To upload this sketch, click on the Arduino Setup tool for a single Arduino. If you have multiple racing dashboard components, you can upload separate sketches to separate Arduinos too.

Once the Arduino configuration window is open, we need to select the Arduino we are using from the drop-down menu in the top-right corner. After we selected our Arduino Uno, we checked in the box to the right to verify that our Arduino is recognised on a COM port.

From here, we can create a new setup and then select from the list which components we are using with our Arduino. We first selected the Tachometer option, leaving the Data pin on Pin 9 of the Arduino. No other configuration needs to be done here, as SimHub will handle the frequency driving code for us. For adding the Shift Lights, scroll to the WS2812B LEDs section and configure SimHub to handle 16 LEDs on Pin 8.

Then, scroll down to the bottom of the window and enable the TPIC6C595 7-segment display option – the default pin assignments will work fine.

Finally, head up into the top-right corner of the window and upload the code! If all goes well, SimHub will verify the success of the upload and the Arduino will then be recognised in the “Hardware” Arduino tab.

SUPPORTING THE AUTHOR: We highly recommend purchasing the full licence of SimHub! While it’s primarily intended to support the further development of SimHub, it also includes some awesome upgraded features to the software. Instead of updating your Arduino displays (such as our LED Shift Meter) at 10FPS, the licenced version includes support for a silky-smooth 60FPS update speed. It also includes automatic game switching so you don’t have to worry about heading into SimHub every time you change racing games. Head over to and grab a paid licence for the price of a coffee or two.

Configuring the Tachometer

Depending on which tachometer you have sourced, you may need to configure your tachometer to provide a usable range when gaming. For example, our tachometer has a maximum of 8000RPM, so it won’t use the entire range with an engine that peaks at only 3000RPM. We are going to calibrate and scale our tachometer, which can be done in the “Gauges” tab in SimHub. Across tachometer models, you will have to experiment with the cylinder count and the Max RPM variable to get it working properly – use the “Test Max RPM” button to verify it works. Tick “Always use tachometer full range” to make the Max RPM point on your tachometer the max point of the particular car driven – however, this will effectively make the tachometer inaccurate since it scales the RPM readings.

Configuring LEDs

SimHub’s newer versions include features for fully customising exactly how your LEDs work. If there is a particular pattern, colour, brightness, or indicator you would like on your shift meter, there is a very good chance that SimHub will support it! We’re going to show you how to set up an F1-style touring shifter, with distinctly coloured bar sections for each stage of RPMs. These lights can be programmed to fill up like a progress bar with different coloured segments corresponding to the engine speed. The great thing about SimHub is that once the initial hardware sketch has been uploaded, all other adjustments can be accomplished on the fly, with no code reuploading required! If the behaviour of your lights or gear display isn’t to your liking, simply head into SimHub and adjust as required – and that’s it, the changes appear immediately.

To get started, head into the RGB LEDs section in the SimHub software and add a new profile. Profiles allow you to quickly change shift light behaviour depending on the game you are playing, so there isn’t any messing around adjusting the lights for each game. Depending on whether you want a universal setup for the same behaviour across games or a specific game, go ahead and select it from the list.

Once the profile has been created, click on Add Effect. You’ll notice a ton of behaviours corresponding to specific functionality within games, including Speed, RPM, ABS, and DRS. We selected RPMs – Show LEDs gradient based on car RPMs. This effect will progressively illuminate LEDs when we have reached the RPM value specified.

There is a ton of functionality you can specify when you add an effect, so we suggest playing around until you find something you like the look of while driving!

Because we’re going to be adding 3 bars of 5 LEDs each, we need to specify this bar to fill up 5 LEDs and start from the first LED. After you’ve specified the start position and 5 for the LED count, we can then choose the colour we want to display.

We chose bright green for both the start and end of the bar – if you want a progressive change, choose a gradient instead. Make sure “Use Dimming” is selected, which will interpolate the brightness between LEDs create a satisfyingly smooth animation as the revs climb.

Finally, you need to specify your minimum and maximum RPM as a percentage. Since this is the first of three bars, we chose to display the bar between 70% and 80%.

Once that’s all done, we can hover over the effect name and select Clone Effect to duplicate another one beneath it. Do this twice to make three bar segments. To properly set up the remaining bar segments, just change the Start position five positions across, change the bar to the desired colours, and increase the RPM range for the bars.

Since we’re only using 15 LEDs for the three bars, we can also add some additional functionality to the last LED. Depending on the game you are playing, you could add a warning light for low fuel, or any flags currently displayed on the track. We used the light for displaying the Drag Reduction System (DRS) status – a technology on F1 cars that can be activated at certain points on the track to increase-straight line speed. To do this, we added a new Effect Group which both groups similar effects and permits “layering” effects. Two status lights were added, a DRS available and a DRS ON light. When DRS can be activated, a yellow light blinks rapidly and then turns solid green once the driver has activated it. This is super handy for racing as it shows when a DRS overtake can be completed without looking at the in-game Heads Up Display!

As a related note on these LEDs, you may notice there is a brightness slider in the top-right corner of the SimHub window. We suggest leaving this very low – less than 10% - because the NeoPixel LEDs get so bright it actually becomes difficult to see the computer screen. Ideally, the LEDs should be indicator lights and not environment lighting for your racing setup!

Running the LEDs at a low brightness will also reduce the load on the 7805 regulator, keeping it cool by not supplying as much current to the NeoPixel LEDs.

Setting Up Games

Depending on the racing games you plan on playing with the racing dashboard, you will have to configure each game to correctly work with SimHub. To do this, find and select your game from the “Games” tab and click on “Configure Game” in the top-right corner of the window.

Depending on the specific game you are configuring, SimHub may be able to automatically set up the game for you, or you will have to do some manual configuration to get it to work. SimHub will give you a general guide on how to configure each game.

Configuring Buttons

Now that we’ve finished setting up SimHub, we can assign the buttons on the dashboard to the required functionality in our favourite games.

As we’ve mentioned before, while the buttons on our dashboard do have permanent assignments, the functionality of these assignments can be changed from game to game. To do this, go into your game’s “Control” or “Input” menu and begin assigning functions to each button. Some games will require you to set up the “Generic Vibration Joystick” – as recognised by Windows – to correctly register the inputs of the dashboard. The process will differ from game to game, but generally, we had no trouble setting up the exact functionality we wanted for each of the buttons. We found it very convenient to assign the standard pushbuttons to commonly-used car and game control inputs such as pause, change camera, wipers, hazards, etc.

The more specialised inputs on our dashboard such as the up/down momentary switch can be assigned to fine-tuned adjustments in your game. We set ours to adjusting brake bias – the balance of braking between the front and rear wheels - to quickly make changes during a race.

Game: Beam.NG Drive


Testing the dashboard is as simple as hooking up your simulation hardware including wheels and pedals, and starting your preferred racing games. SimHub should automatically connect to the game and wait for input data.

Overall, we think the dashboard itself is an incredible addition to both the functionality and aesthetics of any sim racing setup. Having most of the core information you need to know on a physical display lets you turn off a huge amount of in-game HUD, removing more distractions and letting you focus on driving. Having a large, physical display of the currently selected gear was awesome, especially in games like F1 where the wrong gear will significantly slow your car through a corner.

The shift meter lights in particular were smooth, especially if operated at 60FPS with the licensed version of SimHub. Since the LEDs are fully dimmable to any brightness, SimHub slowly lights up each LED which feels like real-life high-quality racing hardware.

Unfortunately, we didn’t find the tachometer as helpful as we hoped – its needle is just too hard to see in peripheral vision and the shift meter does a better job of helping to time gear shifts. Saying that, it was still an awesome addition to the dashboard and provides an authentic analogue display in a digitally controlled project! The backlight of all of the parts look great at night and really adds to the immersion of racing.

In terms of the games we have tested it with, mainstream simulation games work awesome – Assetto Corsa, the Dirt series, F1 and Beam.NG Drive all work perfectly with the dashboard. Arcade games more popular on gaming consoles such as Forza Horizons 4 or GRID have not been tested but are on the compatibility list for SimHub, so with any luck, they will work fine too.

We’ve included some photos of the final result, but we think they don’t do the project justice! On our social media you’ll find some videos of this dashboard being used with a simulation setup.

Where To From Here?

While this project should cater to the interests of most simulation racing categories, feel free to fully customise the project build to match your niche of racing.

Want a more modern and digitised dashboard style? There are many guides on the internet showing how to install customised LCD screens to a SimHub dashboard! If you love complete control of your racing experience, you can add more buttons and assign each to allow for in-car tuning.

Why not add a 120mm fan to your dashboard to simulate the wind velocity of driving open-wheel cars? SimHub includes control software that can be used to drive DC fans proportional to the car’s speed!

We hope that this project has demonstrated that custom racing simulation hardware can be built yourself, and more importantly, without breaking the bank! We’d love to see what simulation setups you come up with - be sure to tag us with #diyodemag on your socials.

Racing Simulator Dashboard PART 1

Liam Davies

Liam Davies

DIYODE Staff Writer