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

2222thumbnail.jpeg

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:

  1. Joost Waege (joost.waege@student.howest.be) – Product Designer
  2. Maarten Peeters (maarten.peeters@student.howest.be) – Product Designer
  3. Daan Van de Velde (daan.van.de.velde@student.howest.be) – Product Designer
  4. 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:

  1. 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.
  2. Adjustable steering angle: the steering column tilts. Just turn the knob to set the angle that is comfortable for the user.
  3. 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.
  4. Compatible with the modular system of our colleages of howest.

Find our project video here.

Supplies

Tools needed:

  1. 3D printer
  2. Laser cutter
  3. Soldering iron (and solder)
  4. Screwdriver
  5. Wire cutters/strippers and a crimping tool (recommended)

Materials required:

  1. Electronics:
  2. Raspberry Pi Pico (RP2040) – 1
  3. Breakout board for the Pico – 1
  4. Arcade buttons (30 mm diameter) – 3
  5. Joystick module – 1
  6. Potentiometer (10k) – 1
  7. Female 3.5 mm mono jack – 4
  8. Hook-up wire (stranded) – approx. 1 m
  9. Crimp terminals / female Dupont pins – see Step 5


  1. Others:
  2. M5 threaded rod (80mm)-1
  3. M5 threaded rod (90mm)-1
  4. M5 threaded rod (130mm)-1
  5. M5 nuts – 6
  6. Plywood, 4 mm thickness (for the laser-cut panels)
  7. PLA filament – approx. 650 g
  8. M3 bolts (16 mm) – 12
  9. 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

Lasercutting2.jpg
Lasercutting1.jpg

Laser-cut the two files below from 4 mm plywood sheets:

3D Printing

prints.jpg
Schermafbeelding 2026-06-13 004422.png
Schermafbeelding 2026-06-13 004427.png
Schermafbeelding 2026-06-13 004432.png
Schermafbeelding 2026-06-13 004438.png
Schermafbeelding 2026-06-13 004443.png
Schermafbeelding 2026-06-13 004450.png

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:

  1. Gear pin, screw connector and tilt arm: print 2× each
  2. Handle connector and handle: print 4× each
  3. 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).

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. ;)

Preparation

pingear1.jpg
pingear2.jpg
joysticksupports1.jpg
joysticksupports2.jpg
  1. Take the printed gears and the small pins, and press a pin into the centre of each gear.
  2. Break the support material off the joystick holder.

Attach the Raspberry Pi to the Breakout Board

breakoutboard.JPG
breakoutscrewholes.JPG
raspberrypionbreakoutboard.JPG
  1. Solder the header pins (and screw terminals) onto the breakout board.
  2. Place the Raspberry Pi Pico onto the board.

Prepare the Wires

audiojacks.JPG
terminals.JPG

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.

  1. Solder two wires (approx. 10 cm each) to each of the four 3.5 mm audio jacks.
  2. Solder three wires (approx. 20 cm) to the potentiometer.
  3. Crimp six wire terminals onto wires (approx. 30 cm) for the buttons.
  4. Crimp five female pins onto wires (approx. 30 cm) for the joystick.

Wiring Overview

wiringdiagram.png
wiringandpinmap.png

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:

  1. Each control connects to one GPIO pin and to GND.
  2. 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.
  3. 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

buttonA1.JPG
buttonA2.JPG
buttonA3.JPG
buttonA4.JPG
  1. Twist one wire from an audio jack together with one wire from an arcade button.
  2. Insert this twisted pair into the GPIO7 screw terminal.
  3. 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

buttonL1.JPG
buttonL2.JPG
  1. As in the previous step, make two twisted pairs (each pair = one button wire + one jack wire).
  2. Insert one pair into GPIO13.
  3. Insert the other pair into GND.

Connecting the Wires - Button +

button+.JPG

This input uses only the arcade button (no jack).

  1. Insert one button wire into GPIO17.
  2. Insert the other button wire into GND.

Connecting the Wires - Button R

buttonR1.JPG
buttonR2.JPG

This input uses only an external jack (no arcade button).

  1. Insert one wire from the audio jack into GPIO12.
  2. Insert the other jack wire into GND.

Connecting the Wires - Joystick

joystick1.JPG
joystick2.JPG
joystick3.JPG
joystick4.JPG
joystick5.JPG
  1. Clip the cable onto the joystick module.
  2. Twist the joystick GND and the potentiometer GND together.
  3. Twist the joystick 3V and the potentiometer 3V together.
  4. Twist the joystick VRy and the potentiometer's wiper (middle pin) together.
  5. Insert the twisted GND into the GND terminal of the breakout board.
  6. Insert the twisted 3V into 3V3.
  7. Insert the twisted VRy + wiper into GPIO27.
  8. Insert the joystick VRx into GPIO26.

Connecting the Wires - Button B

buttonB1.JPG
buttonB2.JPG
  1. Twist the joystick's SW (click) together with one wire from an audio jack.
  2. Insert this pair into GPIO22.
  3. Insert the remaining jack wire into GND.

Assemble the Box

assemblebox1.jpg
assemblebox2.jpg
assemblebox3.jpg
assemblebox4.jpg
  1. Place the Raspberry Pi into the box.
  2. Fit the audio jacks into their openings.
  3. Fit the potentiometer into place.
  4. Route the cables through.
  5. Close the box by sliding the top cover into place.

Assemble the Base - Turning Knob

base1.jpg
basedraaias1.jpg
basedraaias2.jpg
basedraaias3.jpg
basedraaias4.jpg
  1. Slide the slide block over the threaded rod.
  2. Screw the turning knob into place.

Assemble the Base - Stand

basestand1.jpg
basestand2.jpg
basestand3.jpg
basestand4.jpg
  1. Insert the threaded rods and secure them with nuts.
  2. 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

steeringattachment1.jpg
steeringattachment2.jpg
steeringattachment3.jpg
steeringattachment4.jpg
  1. Place the 3 nuts into their slots.
  2. Fit the attachment and its back cover into place.
  3. Secure it with one bolt.

Secure the Joystick in the Joystick Holder

securejoystick1.jpg
securejoystick2.jpg
securejoystick3.jpg
  1. Place 2 bolts into position.
  2. Slide the joystick holder into place.
  3. Tighten the nuts.

Assemble the Steering Wheel - Joystick

joystickinplace1.jpg
joystickinplace2.jpg
joystickinplace3.jpg
  1. These are the parts for assembling the steering wheel.
  2. Place the joystick holder into the largest circle of the front panel, with the pins facing the top side of the wheel.
  3. Place the back panel behind the front panel.

Assemble the Steering Wheel - Handles

handles1.jpg
handles2.jpg
handles3.jpg
handles4.jpg
  1. Put the connector pieces inside one half of a handle.
  2. Push them through the holes in the steering wheel.
  3. Place the other half of the handle on top.
  4. Repeat on the other side. The wheel is now complete.

Connect Wheel to Base

steeringwheeltobase1.jpg
steeringwheeltobase2.jpg
steeringwheeltobase3.jpg
  1. Attach the wheel to the base with 3 bolts.
  2. Insert the arcade buttons.
  3. Click the joystick into the joystick module.

Attach Main Gear

attachgear1.jpg
attachgear2.jpg
attachgear3.jpg
attachgear4.jpg
  1. 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.
  2. Fasten it with 2 bolts. Make sure the alignment mark/slot is visible at the bottom of the gear.

Attach Secondary Gear

secondgear1.jpg
secondgear2.jpg
  1. Click the matching secondary gear into place.
  2. Make sure the alignment marks line up correctly.
  3. 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

softwareupload.png

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

softwareconfiguration.png
  1. To enter configuration mode, hold down the + button (this is S2) while plugging the controller into your computer.
  2. Then open your browser and go to http://192.168.7.1.

Software Tips - Button Mapping

buttonmapping1.png
buttonmapping2.png
buttonmapping3.png
buttonmapping4.png
buttonmapping5.png
  1. Open the GPIO Pin Mapping in the configuration menu.
  2. Use the GPIO Pin Viewer to see which press sends which signal.
  3. Good to know: GP2040-CE's button names are not the same as the Switch's. The mapping is:
  4. B1 → B
  5. B2 → A
  6. R1 → R
  7. L1 → L
  8. S2 → +
  9. Don't forget to save after changing anything, then reboot the controller (as shown in image 5).

Software Tips - Inverted Joystick

invertedjoystick1.png
invertedjoystick2.png
invertedjoystick3.png
invertedjoystick4.png
invertedjoystick5.png
invertedjoystick6.png
  1. 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.
  2. Open the add-ons configuration and find the Analog tab.
  3. Open the Analog tab and look for "Invert joystick".
  4. Select the axis that needs inverting.
  5. Make sure Analog stick 2 has no pins assigned if it isn't connected — this prevents false inputs.
  6. Make sure the add-on is enabled.
  7. Don't forget to save before rebooting.

Have Fun!

winningmariokart.png

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!