Gaming Steering Wheel
A gaming steering wheel which control a car game and PC race gaming
I was inspired by the Steering wheel controller from childhood, So I decided to make it by myself to be as possible as the real one.
It will control the direction, speed and lights of the car, So I searched for the best car which I can make until I saw a Tesla car model, then I started to make it.
Software
Fusion 360 Software to design sketches of the steering wheel and assemble them together.
Grabcad to install electrical components of the project.
Coreldraw to extract car files to dxf files which i can use them in fusion.
Steering Wheel Design
General view of the main steering wheel design points.
Front
Back
Wheel stand
Joint point
Inside Design
Front Design
First i sketch a circuit and another smaller one with rectangle in the center then after adding the electrical components, I use extrude cut tool to edit the main front sketch.
Back Design
The same as the front sketch, I sketch a circle and another with the same dimension then extrude cut after adding the another parts and joints.
Wheel Stand
The function of wheel stand is to make the wheel fixed and stable on the table so as there is no standard dimensions for the table , I sketch many holes to change the height level to be fixed as possible as.
Main Joint Point
To read angle from steering wheel, The Stand must be fixed on the table then we can change the angle of the steering by change and the value of the potentiometer.
Back Buttons
To achieve the best experience for the user, I added two back limit switches to control the speed and brake of the car.
Inside Design
Here, I added the needed components for main functions and then extrude cut the required joints.
Tesla Car Design
General view of the main Tesla Car design points.
Extrude Coreldraw sketches design.
Assembly The parts together.
Modify the car design to be able to move using Arduino.
Extruding DXF files
The source file was in cdr format, So I extracted the sketches as dxf files.
I modified them in fusion.
I extruded them then I assembled them together with the electrical components.
Parts Modifications
I modified the side part to be able to carry the yellow motor and tyres of the car.
I modified this part to be able to carry the driver and to pass the jumpers throw it.
I sketched this part to carry the Arduino and on-off switch. Also to make the car more stable.
I modified this part to pass the jumpers throw it and I added T-slot to make the car more stable.
Overview
Machines
Materials
Software
Fabrication Steps
Laser Cutter Phase
Export parts as DXF files.
Assemble the files together in one sheet.
Remove spaces between parts much as possible.
Set parameters for the cut to be 20 for speed and 70 for power.
Set parameters for speed cut to be 300 for speed and 45 for power.
Connect the laptop to the machine and download the files.
Put the 3mm plywood sheet in its position.
Start the machine then wait until finished.
3D printer Phase
Export models as STL files.
Assemble the files together in one file.
Remove spaces between parts much as possible.
Set parameters for printing to be 20 for infill and .2mm for resolution.
Add supports for parts.
Config supports to be touching buildplate.
Export file as gcode file.
Copy the file to the SD card then put it in the printer.
Start the machine then preheat it then wait until finished.
Final Results
Tesla Car
Steering wheel
Laser cutter for fabrication
3D printer for fabrication
Components
Arduino UNO for control the circuit and run the code.
Bluetooth module HC-05 for communication between steering and car.
Yellow motor to move the tesla car.
Mini Breadboard to wiring the circuit.
Toggle Switch for reverse function.
Limit switch for steering back buttons.
ON OFF Switch to turn on and turn off the wheel and the car.
Potentiometer to measure the angle of the steering.
Motor driver L298 to control the motors of the car.
Resistance to control the powering of Bluetooth.
Software
Arduino IDE for compiling the code, test it and burn it on Arduino board.
Tinker Cad for wiring the circuit and simulate it.
Inputs & Actions description
At the steering wheel,
The Arduino reads the state of gas and brake input from the player.
Also, it measures the analog value of the potentiometer as its the angle of the steering.
Also, it reads the reverse state input from the player.
The Arduino does some processing on the inputs to create a string variable that contains the speed value of the right and left motors.
The Arduino sends the string by Bluetooth serial to the car to control it.
At the Tesla car,
The Arduino receives the data string from the steering wheel.
The Arduino reads the values of motors from the string.
Then, It applies the value to the motor driver to control the car depending on the steering inputs.
Final Circuits Diagram
Wiring Description
For Tesla car:
Connect motors pins to output pins of H-Bridge.
Connect the power and ground of the H-Bridge to the power supply.
Connect H-Bridge input pins to pins 2,3,5,7 in Arduino.
Connect RX & TX pins of Bluetooth to pins 9,10 in Arduino.
Connect the power and ground of Bluetooth to 5V and ground pins in Arduino.
For the steering wheel:
Connect RX & TX pins of Bluetooth to pins 9,10 in Arduino.
Connect the power and ground of Bluetooth to 5V and ground pins in Arduino.
Connect the potentiometer pin to pin 3 in Arduino.
Connect buttons to pins 3,5,6 in Arduino.
Connect 5V and ground to buttons and potentiometer.
Circuit Diagram
Steering wheel
For the steering wheel, I designed it to contain two ways for powering, The USB cable and the 5v adapter.
The main power source is the USB cable to connect Arduino to the laptop as the steering can control pc games.
Tesla car
For the Tesla car, I designed it to be powered using a 5V, 2A power bank as the car must be powered wireless and the motors need 2A to start the movement.
Master & Slave Configuration
The main purpose of the code is to config the Bluetooth module in the steering wheel to connect automatically with the Bluetooth module in the tesla car.
Implementation Steps
Include "softwareSerial" library.
Create an object and pass to it the RX and TX pins of the Bluetooth.
Connect the key pin to high voltage to switch to AT mode.
In setup fun, Pass the default speed of Bluetooth (38400) to the initialization function of the Bluetooth module.
In loop fun, Use "serial.available" fun to read from Arduino serial then write the input string in Bluetooth serial by using "object.write" fun.
Check the Bluetooth serial also then read the output by using "serial.write" fun.
Slave At commands
AT+RMAAD (To clear any paired devices).
AT+ROLE=0 (To set it as a slave).
AT+ADDR (To get the address of this HC-05, remember to jot the address down as it will be used during master configuration).
AT+UART=38400,0,0 (To fix the baud rate at 38400).
Master At commands
AT+RMAAD (To clear any paired devices)
AT+ROLE=1 (To set it as master)
AT+CMODE=0 (To connect the module to the specified Bluetooth address and this Bluetooth address can be specified by the binding command)
AT+BIND=" slave address" (To connect with the slave address)
AT+UART=38400,0,0 (To fix the baud rate at 38400)
Steering Wheel code
The main purpose of the code is to read inputs from sensors like direction, angle of direction, gas pedal and break pedal then send the data as string variable to the car using Bluetooth module.
1.
Inclusion, definition and global variables required for steering wheel functions.
2.
Setup function which initializes the pins mode and speed of Bluetooth serial communication.
3.
Check the mode of the steering.
4.
Tesla control mode is divided into sub-functions that read inputs and then set the required variables to control the car.
5.
To read potentiometer value, gas pedal state, break pedal state and reverse state input.
6.
To control the speed depending on gas and break pedal inputs.
7.
To read analog potentiometer input and then map it to control the speed value of a single right or left motor to change the direction.
8.
To create a string variable that includes the values of the motor's speed and direction to send it to the car and then control it.
Tesla car code
The main purpose of the code is to receive the speed values of right and left motors which are required to control the car.
1.
Inclusion, definition and global variables required for tesla car functions.
2.
Setup function which initializes the pins mode and speed of Bluetooth serial communication.
3.
To receive input string from Bluetooth serial then apply the values on the right and left motor to control speed and direction of the car.
4.
Debug the code and test the perforamnce.
Tesla car
Tesla integration steps
wire the circuit together with motors, Bluetooth, motor driver and Arduino.
Assemble the parts together to make the car.
Fix the parts with screws and nuts to be stable.
Test the car module performance after completing fabrication.
Steering wheel
Steering wheel integration steps
wire the circuit together with the potentiometer, Bluetooth, limit switches, toggle switch, on-off switch and Arduino.
Assemble the parts together to make the steering wheel.
Fix the parts with screws and nuts to be stable.
Test the steering module performance after completing fabrication.
Final integration
As the number of car parts is about 50 part. My friends in fab lab Zagazig helped me a lot in fabricating and assembling the parts together so All thanks and gratitude to them and special 💖 thanks to Ahmed, Alaa, Abdulrahman and Yosr.
Samir and Alaa also helped me in printing 3D parts.
Design Problems
The source design of tesla was in cdr format so I searched for Coreldraw software tutorials to learn how to deal with tesla's sketch parts.
The Tesla sketches after extruding it from Coreldraw can not be extruded as they weren't fully closed, SoI searched for a solution then I found this tutorial on YouTube that helped me to fix this problem by using a line and then changing its position until an area is created.
Software Problems
I faced a problem during changing the configuration of the master and slave Bluetooth modules, So I searched about it and found documentation that helped me to config the module correctly.
Tesla car
Add mode to control the car from a mobile application using a gyroscope or joystick button.
Add front and back lights.
Add a buzzer sound.
Add some colors to the car.
Steering wheel
Add mode to control pc games.
Add gas and brake pedals.
Increase the angle of the steering wheel.
Add more buttons to give more functions.
Increase the performance of the wheel stand.
Add some colors.
Tesla Car Files
Steering Wheel Files