Last summer I upgraded my wheel base from a Logitech G27 that I've had for ~10 years. I went with the MOZA R9 direct drive base, but didn't really have the budget to get any of their wheels. So, I decided to use some of the tools in the shop and build my own wheels over the course or about 3 months. I wanted a formula style wheel for the GT racing I do in iRacing and Assetto Corsa, and I wanted a round wheel for drifting and offroading sims.

For the formula wheel, I used the Turn Racing GTE (https://www.thingiverse.com/thing:5173143) wheel as a basic shape/layout, and remodeled pretty much all of the parts (besides the shifters). I used a carbon plate for the basic structure, 3D printed covers and button plates, billet paddle shifters, and electronics from Amazon (push buttons, toggle switches, rotaries, and microswitches for the paddles). 

I used a SparkFun Arduino Pro Micro as the "brain," which allows for 20 buttons and 5 encoders. The Pro Micro is recognized as a USB gamepad so it's natively supported in Windows. I followed an AMSTUDIO how to for a button box and adapted it to the wheel. 

The grips are 3D printed, which actually feels fine. I'll probably upholster it in some way eventually, but it feels great as is. 

I used a local hardware store, BelMetric (https://belmetric.com/) for all the hardware. 

I wired everything myself, which ended up being fairly difficult. I'm not terrible at stripping wire and soldering connections, but trying to connect 4 wires to a single pin of a tiny Arduino was harder than I expected. If I did it again, I'd probably try to make a PCB for the wiring or at least have some type of breakout board to connect wires to. 

I used a MOZA quick release to attach it to the MOZA base. The quick release is identical to NRG-style quick release, but was a little bit cheaper when I bought the base. 

I use a DIY cable kit from ZAP! Cables, that included a USB C connector, a USB A connector, and a 5 pin aircraft cable disconnect. The kit I got was designed to be coiled. To coil the cable, you basically form the coil by hand around a dowel (I used a 10mm allen key), hold it in position, and then bake it for 10 minutes. This was a pretty fun process. This cable setup is very similar to those used in DIY keyboard builds. 

I machined the QR mount from a piece of billet 6061. The original 3D printed mount worked great, but there was a little bit of squish when tightening the bolts down. With the aluminum mount, things are rock solid and I was able to open up the space where the Arduino sits. 

The shifters also felt great, but I decided I wanted to do billet shift towers. I machined those from 6061 as well, and they work fine. 

The wheel feels great and the buttons are all easy to use, even with gloves on. The only issue I have is that there are certain button combinations that cause another button to trigger. The only time this is an issue is when both toggle switches are closed. When a 3rd button is pressed, a 4th button can short and cause issues. However, the toggle switches are not mapped to commands that need to stay engaged (pit limiter and traction control off). It's definitely not an issue, but could be if you were using the toggle switches in the "closed" position all the time.