Simulator Button Box

While creating a complete DIY racing sim, it was time for a button box.
Goal is to be relatively cheap to make with a 3D printable enclosure.

Features 31 buttons (toggles and momentary).
Thanks to the FreeJoy firmware button box is plug and play.
C clamps for desk mounting.

Components:

Electronics and Firmware:
I tried 2 different methods for the box.

  • Battery powers ESP32 based with Bluetooth connection. Due to the lower power from the battery the LEDs were causing delay in inputs.

  • Wired connection is better option when LEDs are involved.
    So for this project I decided to use FreeJoy firmware: https://github.com/FreeJoy-Team/FreeJoy
    You will need one STM32F103C8 micro controller. I got a clone board that works great.
    Buttons and switches are connected to a 74HC165 Button expansion board.
    • This can be purchased or self-made. For 32 buttons you will need 4 shift registers.
      Follow the guide in GitHub to do the wiring and the software configuration.

Note: You can use Pro Micro with button matrix or PCF8575 expansion boards as well.

Hardware for assembly:
-For the front (all black):
4x M4 x 20mm flat head countersunk bolts
2x M4 x 25mm round cap bolts

Printing:
I separated the back of the box in 2 for easier printing with no supports. Non of the part require supports or rafts.
Print either on its side or flat.

  • For the box frame: I switched to a 0.6 nozzle and layer height to 0.35 some faster printing.
    Everything else printed with standard 0.4 nozzle and 0.2 layer height.
  • 3 wall line count and 10%-20% infill.

Assembly:
I did not use any heat inserts. Just screw firmly and it will hold pretty well.

  • Back is a bit strange to assemble. You will need to screw the "button-box-back" to the box frame and then screw the C clamps from inside the box.
  • "button-box-back-cover" might need some filling to fit. Can be glued if necessary.
  • All buttons and switches are on the front plate of the box and can be inserted after you assemble everything else.
  • Using USB Type C male and female for extension inside the box.