Nintendo Switch Steering Wheel V2 - D4E1
by Daan Van de Velde in Circuits > Raspberry Pi
428 Views, 5 Favorites, 0 Comments
Nintendo Switch Steering Wheel V2 - D4E1
In this project we improved the Nintendo Switch steering wheel by GauravSaha to make it even more accessible for people with disabilities, while keeping it fun and engaging for everyone.
This project was developed as a college assignment (Howest, Industrial Product Design) in collaboration with the Dominiek Savio School, an institution dedicated to supporting people with disabilities (https://www.dominieksavio.be/).
The team:
- Joost Waege (joost.waege@student.howest.be) – Product Designer
- Maarten Peeters (maarten.peeters@student.howest.be) – Product Designer
- Daan Van de Velde (daan.van.de.velde@student.howest.be) – Product Designer
- Adrian Debrabandere (adrian.debrabandere@student.howest.be) – Product Designer
Where GauravSaha and his colleagues focused on combining functionality with universal enjoyment, our goal was to keep those qualities while making the wheel easier to assemble (Design For Assembly, DFA) and more adaptable, so it works for a wider range of users.
What makes this version more accessible:
- External switch inputs: four 3.5 mm jacks let you plug in standard assistive/adaptive switches, so each user can use the buttons or switches that suit them best — not only the built-in arcade buttons.
- Adjustable steering angle: the steering column tilts. Just turn the knob to set the angle that is comfortable for the user.
- Swappable gear sets (adjustable range of motion): two interchangeable gear sets let you choose how far you turn the wheel. One set has a full 180° of motion (90° left / 90° right); the other only 90° of motion (45° left / 45° right). Users who can't comfortably make large movements can pick the smaller range. Swapping is quick and simply uses a different gear ratio.
- Compatible with the modular system of our colleages of howest.
Supplies
Tools needed:
- 3D printer
- Laser cutter
- Soldering iron (and solder)
- Screwdriver
- Wire cutters/strippers and a crimping tool (recommended)
Materials required:
- Electronics:
- Raspberry Pi Pico (RP2040) – 1
- Breakout board for the Pico – 1
- Arcade buttons (30 mm diameter) – 3
- Joystick module – 1
- Potentiometer (10k) – 1
- Female 3.5 mm mono jack – 4
- Hook-up wire (stranded) – approx. 1 m
- Crimp terminals / female Dupont pins – see Step 5
- Others:
- M5 threaded rod (80mm)-1
- M5 threaded rod (90mm)-1
- M5 threaded rod (130mm)-1
- M5 nuts – 6
- Plywood, 4 mm thickness (for the laser-cut panels)
- PLA filament – approx. 650 g
- M3 bolts (16 mm) – 12
- M3 nuts – 5
Note: this build uses two interchangeable gear sets (printed in Step 2) so you can choose your steering range of motion (see intro).
Laser Cutting
Laser-cut the two files below from 4 mm plywood sheets:
3D Printing
Print all the STL files for the steering wheel. Print everything without support at 15% infill, except the attachment, which should be printed at 50% infill for extra strength.
Print quantities:
- Gear pin, screw connector and tilt arm: print 2× each
- Handle connector and handle: print 4× each
- All other parts: print 1× each
Tip: print both gear sets if you want to be able to switch between the 180° and 90° steering ranges (see intro).
Downloads
Step Files
Here are the .step files in case you want to edit or modify the parts in CAD. The geometry is identical to the .stl files, so for printing just use the .stl. You don't need both. ;)
Downloads
Preparation
- Take the printed gears and the small pins, and press a pin into the centre of each gear.
- Break the support material off the joystick holder.
Attach the Raspberry Pi to the Breakout Board
- Solder the header pins (and screw terminals) onto the breakout board.
- Place the Raspberry Pi Pico onto the board.
Prepare the Wires
Cut and prepare your wires. Lengths are approximate. Measure so each wire comfortably reaches the board once everything is mounted, and leave them slightly long so you can trim later.
- Solder two wires (approx. 10 cm each) to each of the four 3.5 mm audio jacks.
- Solder three wires (approx. 20 cm) to the potentiometer.
- Crimp six wire terminals onto wires (approx. 30 cm) for the buttons.
- Crimp five female pins onto wires (approx. 30 cm) for the joystick.
Wiring Overview
Before wiring each input, here is the full picture. Use the diagram and the table as your reference.
Colour code: blue = signal, red = 3V3 (power), grey = GND.
Key points:
- Each control connects to one GPIO pin and to GND.
- Buttons A and L each have both an on-wheel arcade button and an external 3.5 mm jack. Button + uses an arcade button only, Button R uses a jack only, and Button B uses the joystick's click plus a jack.
- The joystick and potentiometer share 3V3 and GND. The potentiometer's wiper is wired in parallel with the joystick's VRy line into GPIO27, so turning the wheel controls the steering.
Connecting the Wires - Button A
- Twist one wire from an audio jack together with one wire from an arcade button.
- Insert this twisted pair into the GPIO7 screw terminal.
- Twist the two remaining wires (the jack's other wire and the button's other wire) together and insert them into GND.
Connecting the Wires - Button L
- As in the previous step, make two twisted pairs (each pair = one button wire + one jack wire).
- Insert one pair into GPIO13.
- Insert the other pair into GND.
Connecting the Wires - Button +
This input uses only the arcade button (no jack).
- Insert one button wire into GPIO17.
- Insert the other button wire into GND.
Connecting the Wires - Button R
This input uses only an external jack (no arcade button).
- Insert one wire from the audio jack into GPIO12.
- Insert the other jack wire into GND.
Connecting the Wires - Joystick
- Clip the cable onto the joystick module.
- Twist the joystick GND and the potentiometer GND together.
- Twist the joystick 3V and the potentiometer 3V together.
- Twist the joystick VRy and the potentiometer's wiper (middle pin) together.
- Insert the twisted GND into the GND terminal of the breakout board.
- Insert the twisted 3V into 3V3.
- Insert the twisted VRy + wiper into GPIO27.
- Insert the joystick VRx into GPIO26.
Connecting the Wires - Button B
- Twist the joystick's SW (click) together with one wire from an audio jack.
- Insert this pair into GPIO22.
- Insert the remaining jack wire into GND.
Assemble the Box
- Place the Raspberry Pi into the box.
- Fit the audio jacks into their openings.
- Fit the potentiometer into place.
- Route the cables through.
- Close the box by sliding the top cover into place.
Assemble the Base - Turning Knob
- Slide the slide block over the threaded rod.
- Screw the turning knob into place.
Assemble the Base - Stand
- Insert the threaded rods and secure them with nuts.
- Check the result: turning the knob should now tilt the wheel. This angle-adjustment lets each user set a comfortable steering position.
Assemble the Base - Steering Attachment
- Place the 3 nuts into their slots.
- Fit the attachment and its back cover into place.
- Secure it with one bolt.
Secure the Joystick in the Joystick Holder
- Place 2 bolts into position.
- Slide the joystick holder into place.
- Tighten the nuts.
Assemble the Steering Wheel - Joystick
- These are the parts for assembling the steering wheel.
- Place the joystick holder into the largest circle of the front panel, with the pins facing the top side of the wheel.
- Place the back panel behind the front panel.
Assemble the Steering Wheel - Handles
- Put the connector pieces inside one half of a handle.
- Push them through the holes in the steering wheel.
- Place the other half of the handle on top.
- Repeat on the other side. The wheel is now complete.
Connect Wheel to Base
- Attach the wheel to the base with 3 bolts.
- Insert the arcade buttons.
- Click the joystick into the joystick module.
Attach Main Gear
- Choose which gear set you want to use (180° for the full range, or 90° for a smaller range, see intro), and take its main gear.
- Fasten it with 2 bolts. Make sure the alignment mark/slot is visible at the bottom of the gear.
Attach Secondary Gear
- Click the matching secondary gear into place.
- Make sure the alignment marks line up correctly.
- Tip: to change the steering range later, just swap in the other gear set — the different gear ratio changes how far you have to turn the wheel.
Software Upload
To install the GP2040-CE firmware on the Raspberry Pi Pico, follow this guide by Glenn De Backer:
https://github.com/glenn-de-backer/pico-switch-controller
It has detailed instructions for the software configuration.
Software Configuration
- To enter configuration mode, hold down the + button (this is S2) while plugging the controller into your computer.
- Then open your browser and go to http://192.168.7.1.
Software Tips - Button Mapping
- Open the GPIO Pin Mapping in the configuration menu.
- Use the GPIO Pin Viewer to see which press sends which signal.
- Good to know: GP2040-CE's button names are not the same as the Switch's. The mapping is:
- B1 → B
- B2 → A
- R1 → R
- L1 → L
- S2 → +
- Don't forget to save after changing anything, then reboot the controller (as shown in image 5).
Software Tips - Inverted Joystick
- If the steering works but feels inverted, first flip the potentiometer physically so the wheel direction matches the on-screen movement. Only change the software after the physical direction is correct.
- Open the add-ons configuration and find the Analog tab.
- Open the Analog tab and look for "Invert joystick".
- Select the axis that needs inverting.
- Make sure Analog stick 2 has no pins assigned if it isn't connected — this prevents false inputs.
- Make sure the add-on is enabled.
- Don't forget to save before rebooting.
Have Fun!
Your accessible steering wheel is ready! Plug in any assistive switches you need, set a comfortable angle with the knob, choose the gear set that matches the user's range of motion, and enjoy!