Skip to content

Game Controllers

Andreas Rottach edited this page Mar 27, 2018 · 6 revisions

Required Parts

Instructions

  • After printing all the parts, cut out two perfboard pieces with a dimension of 40x40 mm each. Check if they slide perfectly into the provided slots in the controller case.
  • Solder 4 buttons on each perfboard and pay attention to the proper alignment (use the printed case as reference, the pushbuttons have to be centered under the individual printed buttons.)
  • Connect one pin of each button to the I2C port extender. Connect the other pin of each button to GND on the port extender circuit board. You have to connect the buttons in the same order as shown in the image below. If your wiring does not match or you would like to use a different key layout, you can change the key mapping in the configuration file.

  • Slide the two prefboards into their rails and use hot glue to fixate them (check if they align with the corresponding button holes as good as possible.

  • Use a longer cable to connect the I2C port of the port extender to the raspberry pi. The port extender requires 4 connections that are marked on the board and they have to be connected to the counter part on the raspberry pi. To do this, have a look at the GPIO pin list from here: https://pinout.xyz and look for the following pins:

    • Ground
    • 5V
    • SLC (clock, physical pin 5)
    • SDA (data, physical pin 3)

    If you use multiple gaming controllers, you have to connect all of them to the pins, listed above. Just solder a small external board to connect all the controllers in parallel.

  • Fixate the port extender board with some hot glue in the center of the controller as shown in the picture above and close the case.

  • To support multiple controllers in software, you have to use the jumper connectors (dark yellow in the upper image) to adjust the I2C address. Usually, there are 3 jumpers that can be shifted by one pin (see picture above). You can select a different address for each controller, by shifting any combination of jumpers but each combination of jumper positions has to be unique among all your controllers! This allows you to integrate up to 8 different controllers.

Clone this wiki locally