Hey maker! In todays blog post, we will be building one of the most crucial parts of a sim racing setup, a DIY Steering Wheel. The sim racing steering wheel we are going to build will be able to move 900 degrees and will be compatible with many driving games like iRacing, Dirt Rally, Asetto Corsa, Euro Truck Simulator 2 and more! So without losing anymore time, lets start building our own racing wheel.
Here is the video, you can watch now!
Materials and Tools for Making DIY Steering Wheel
You can get materials for this project from my product lists on amazon: DIY steering wheel materials.
Electronics
- Arduino Leonardo
- 10K Potantiometer
- Micro USB Cable
- Copper Cable
Hardware
- 2 x (150×300 mm) 4 mm Thick Plexiglass
- 2 x Ball Bearing
- 4 x 11 cm M8 Shear Connector
- 1 x 15 cm M8 Shear Connector
- 9 x M8 Fiber Nut
- 22 x M8 Nut
- 19 x M8 Washer
- 4 x M5x16 mm Hex Socket Head Bolt
- 4 x M5 Fiber Nut
- 8 x M3x6 mm Bolt
- 4 x 10 mm Female-Female Spacer
- 2 x M4x20 mm Hex Socket Head Bolt
- 2 x M4 Nut
- Steering Wheel
- 3D Parts: https://bit.ly/2Tsj9gd
Software
The software part of this project is not that hard, thanks to the software called MMJoy. MMJoy is a software designed for hobbyists and sim racing enthusiast. It lets our steering wheel interface with the driving games without much configuration and effort. Thus, you don’t need much coding and software knowledge to build this project.
Let’s start by downloading MMJoy and extracting the .zip file to our computer from the link below.
https://github.com/MMjoy/mmjoy_en
The necessary software is inside the “firmware and software release” file. Extract the “MMJoy2” file to your computer. This file includes all the necessary files like firmwares, images, softwares.
To proceed with the setup, launch the MMJoySetup application which is inside the “MMJoy2” file.
The first step is uploading the firmware to our Arduino Leonardo card. We will do the configuration from the section indicated by the red rectangle.
In the “Firmware file” part, we are going to choose the firmware we will upload. The file we need to choose is inside the “MMJoy2/Firmware” file. There are 3 .hex files. We need to choose the one with the “ATMEGA32U4”, since we are using Arduino Leonardo.
After choosing the firmware file, we need to choose “atmega32u4” for the “Chip, “Arduino” for the “Bootloader Type”.
In the port selection part, you will encounter different ports after you click “COM ports list” button, but we are not going to choose one yet. Here is why:
In order to upload firmware to our Arduino Leonardo, we need to force it to ”bootloader” mode. When the board is in bootloader mode, the port changes. Thus, we need to determine the port the board is connected to, when it is bootloader mode.
In the MMJoy2 software, click on “Device Management and choose “Ports” on the opened window. Next, press the button on the Arduino Leonardo board twice to force the board to “bootloader” mode. Then, device manager will reload and we will be able to the port of our Arduino Leonardo board under the “Ports” section.
Now that we know which COM port our board is connected to, we can type it to the “Port” field in the MMJoy2 software. For instance, if you see COM6 on device manager, type COM6 in the “Ports” field.
Now it is time to upload the bootloader to our board. Again, double click the button on Arduino Leonardo and press “Upload Firmware” button on MMJoy2. Keep in mind that Arduino Leonarda stays in bootloader mode for 8 seconds and you should do the upload in that time gap.
If you see an upload screen like the one below, it means that the upload is successfully done. It is time to do the necessary configurations for the potentiometers.
MMJoy lets us play with many hardware components and configure them as we like. In our project we only use a single potentiometer so the set up process will be quiet straightforward.
After you upload the firmware, you’ll see that the device list on the top left will change and from now on our computer will see the Arduino Leonardo board as a joystick. We need to choose it from the device list.
Then, we need to visit the “Joystick Axes” section and do some settings on the areas indicated in the image below.
Our potantiometer is connected to the A0 pin on our Arduino Leonardo and A0 pin is connected to the PF7 of the MCU. Therefore, we pick F7 for the “MCU port”. For the “Source”, we pick “IntSensor” and for the “Assignment” we pick “X”. We pick 10 as the “Precision” setting because Arduino Leonardo has a 10-bit Analog Digital Converter (ADC). Finally, we press “Save sets to device” to upload the settings to our board.
After all these configurations, our hardware is ready to be used as a DIY Steering Wheel.
Schematics
The electronic circuit of this project is very simple. We are using a potentiometer in order to transfer turning angle into electrical signal. In addition, our Arduino Leonardo board will read these signals and communicate with our PC over USB. You can check the schematic below while building it yourself.
Making the Mechanic Parts
Now that the electrical and software side of the project is ready, it is time to complete the mechanical build and finalize our DIY steering wheel.
3D Files
To build this project, we need several 3D printed parts. To download them, you can visit this GitHub repo which has the necessary 3D parts. You can either print them on your own machines or use online services to have them printed for you.
Assemble
Here are several pictures that will guide in the assembly projects. If you need more visuals while building you own steering wheel, you can check out the 900 Degrees DIY Steering Wheel video which shows the whole building process.
After the mechanical assembly process, you very own DIY Steering Wheel is ready! You can now enjoy it in games like iRacing, Dirt Rally, Asetto Corsa, Euro Truck Simulator 2 and more. Don’t forget to share your thaughts about this project in the comments section.
DIY Sim Racing Pedals
In this blog post, we learned how to build our own steering wheel which is a very crucial part of a sim racing setup. Next up, you can check out this DIY Sim Racing Pedals video to add pedals to your system and make it better.
FAQ
Arduino Leonardo has Atmega32u4 chip while Arduino Uno uses Atmega328. This creates an important difference between these boards since Atmega32u4 based boards can communicate with computers natively just like a keyboard/mouse. Thanks to this functionality, Arduino Leonardo is a common choice for projects like sim racing systems. However, you can use other boards which feature the same chip (Atmega32u4) like Arduino Micro.
MMJoy is a piece of software spesifically designed for creation or modification of game controllers. It lets you build your own game controllers that can communicate with your PC without worrying about coding and complicated configurations. It is commonly used by sim racing hobbyist and enthusiast since it makes building simulation hardware easier.