GamePi - the Handheld Emulator Console

183,539

730

188

Introduction: GamePi - the Handheld Emulator Console

Intro:

This instructable describes the build of a Raspberry Pi 3 powered handheld emulation console - I've baptized it GamePi.

There are a lot of similar instructables for such devices but for my taste most of them are either too big, too small, too complicated or I just do not like the look.

This is the second version of my GamePi device (I did not write an instructable for the first one). The main difference between the old one and this are the analog joysticks and some minor improvements.

If you like the GamePi check out my page AraymBox for other versions and the upcoming devices. You can also post ideas on how to improve the design - just let me know

Other Versions:

  • On thingiverse you can find an updated version of this GamePi - Version 2.1. It combines all the good stuff of my other device.
  • Check out my new alternation of this GamePi - the GamePi Zero. It's cheaper, smaller and lighter.
  • If you like it super affordable and simple you should take a look at the GamePi XS - a console in a controller.

Note:

Please note that English is not my first language. If you find any mistakes or something is not clear feel free to tell me and I'll try to fix it. Same goes for general mistakes.

This is my very first instructable so if you have any suggestions for improvements please let me know.

Step 1: Tools & Materials

Make sure you have everything you need for the build. There is nothing more annoying than stopping your project because you have to wait for some small part being delivered.

You do not have to buy the listed parts and material from the amazon links. These are examples and show the required properties of the parts.

Parts:

Consumables:

Tools:

Step 2: 3D Printing the Case

I've designed the case to be as simple and small as possible. There is only the bare minimum of single parts: case front and back and buttons.

The case front and back fit perfectly on a 20x20cm 3D printer bed if you rotate it 45 degrees.

I've printed my case with black ABS filament. I like printing with ABS because I love the post processing possibilities. You can sand, cut, paint and most important you can glue or fix it using acetone.

If you have a 3D printer with a smaller bed or no printer at all you can use a 3D printing service like 3D Hubs, Thingiverse, Pinshape, etc. to print the parts for you for some money. Or PM me - maybe I'm in the mood to print it for you.

You'll find all needed 3D parts on this thingiverse design page. I'll keep them on thingiverse to avoid redundancy.

Step 3: 3D Print Post-processing (Case)

Depending on your taste this step is optional.

3D printed parts are not perfect - they have small cracks, holes, bubbles, visible layers, etc. If you want a decent smooth glossy look you have to take an extra step and post process the parts.

Here are the steps I've done:

1. Clean drill the screw holes:

Use the M2 and M3 drill bits and clean the holes for the screws.

2. Clean holes and edges:

Use the appropriate file to clean all holes and edges.

3. Sand the case front and back:

  • run 1: use 120 grit sanding paper
  • run 2: use 240 grit sanding paper
  • run 3: use 600 grit sanding paper
  • run 4: use the wet extra fine sanding sponge

4. Clean the parts:

Wash the parts with clear water and let them dry

5. Paint:

  1. Spray a thin layer of paint primer. Let it dry for 24 hours.
  2. Check the surface.
  3. Spray a thin layer of paint. Let it dry for 24 hours.
  4. Soft sand the surface with a dry extra fine sanding sponge
  5. Spray a thin layer of paint. Let it dry for 24 hours.

Step 4: 3D Print Post-processing (Buttons)

Depending on your taste this step is optional.

Here are the steps I've done to make the printed buttons look like they do on the pictures:

Sanding:

  • Sand all buttons using 240 grit sanding paper.
  • Sand all buttons using 600 grit sanding paper.

Labels:

  • Fill the "engraved" labels with the white wood filler using your fingers.
  • Let the filler dry for 24 hours.
  • Remove the excess filler using 240 and 600 grit sanding paper.

Finish:

  • Clean the Parts with a wet cloth.
  • Spray a thin layer of clear varnish on the buttons.
  • Let the clear varnish dry for 24 hours.

Step 5: Buttons (Software)

In this step we want to write the button control code to the Teensy LC. The Teensy will register the button clicks and joystick movement and send the signals to the Raspberry Pi via USB.

Install the Framework

  • In order to compile the code and write it to the Teensy you'll need the Arduino Framework and the Teensyduino support files.
  • Follow this tutorial to install both.

Load and write the code

  • Connect the Teensy LC to your PC (it should be detected automatically if you are using Windows).
  • Download the attached code file.
  • Double click the downloaded file. The arduino IDE should start.
  • Select the Teensy LC board (in the menu bar: Tools > Board > Teensy LC)
  • Select the correct port the Teensy is attached to (in the menu bar: Tools > Serial Port > COM x)
  • If you connect the buttons like shown in the picture you can use the attached code.
  • If you connect the buttons in any other way you'll need to modify the attached code.
  • Write the code to the Teensy LC (in the menu bar: Sketch > Upload).

Step 6: Buttons (Hardware)

Now we want to build the controls and connect them to the Teensy.

Cut the PCB

  • Use some kind of saw (I used a bread knife) to cut the double-sided PCB.
  • You can see the size of the needed pieces in the pictures (count the holes).
  • You need 2 pieces of every PCB (cross-, button-, Start/Select-PCB).
  • Carefully drill the 3mm mounting holes (see pictures for location) in each PCB.

Solder the switches to the PCBs

  • Use the hard click tactile switches for the Start and Select button PCBs and the soft tactile switches for all other PCBs.
  • Insert the legs of the switches into the correct holes of the PCB (see pictures).
  • Double check the correct position.
  • Solder the legs to the backside of the PCBs.

Step 7: Assembly

After finishing all PCBs you can now assemble the device.

After this step your build should look like the one in the picture.

Threading the screw sockets:

  1. Use the M2 drill bit to clean the screw holes.
  2. Use the M2.5 thread tap and slowly cut the thread into the holes. (You can skip this step if you do not have the thread tap but be careful when screwing in the screws as the plastic sockets could break when too much force is applied.)

Display:

  1. Connect the display to the raspberry pi according to the display manual (connect GPIO bar, attach the HDMI connector).
  2. Slide the two top "nipples" (see picture) of the display into the two holes in the case top side.
  3. Secure the display by screwing to lower two "nipples" of the display to the case.

Button PCBs and Joysticks:

  1. Put the buttons into their holes.
  2. Put the PCBs on the sockets according to the picture and screw in the M2.5x8 torx screws.
  3. Be careful as the plastic sockets could break if to much force is applied.

Step 8: Wiring

The following steps describe how the single parts are being connected.

After all wiring steps your device should like the one on the picture.

  • I like to use the single wires inside LPT cables (or parallel cables). There are 25 wires in such a cable - they are color coded and they are very cheap.
  • When soldering I like to apply solder on the wire and on the PCB first. This way it take a little bit more time but it's easier when working in smaller cases/enclosures.

Step 9: Wiring: Teensy LC

We're going to start with the component most of the wires are connected to. In this step you'll need to solder 27+ wires - hurray.

Always double (and triple) check your soldering.

Connect the Buttons and Joysticks:

  • The pictures in this step and in Step 6: Buttons (Hardware) show all wiring points.
  • Start off with the ground line. The ground line is connected to all of the buttons and joysticks.
  • Now you can connect all signal wires to the buttons.
  • When connecting the joysticks check the labeling of the pins and make sure you use the correct ones.
  • Each joystick uses two potentiometers - so they have to be connected to the 3.3V power output of the Teensy LC.
  • If you want to test the controls first, do not connect the Tennsy LC to the Rasperry Pi yet.

Testing the controls (optional):

  • After writing the code on the Teensy LC and soldering all buttons and joysticks you can test the controls.
  • !!! Make sure you did not connect the Teensy LC to the Raspberry Pi yet. If you already did disconnect it. !!!
  1. Connect the Teensy LC to your Windows PC using a USB cable.
  2. Windows should detect the Teensy LC and install it as a joypad/gamepad.
  3. Press the WindowsKey+R to open the Run dialog.
  4. Enter "joy.cpl" and press Enter.
  5. Select the Teensy and click Properties.
  6. Press any of your buttons and see if something happens in the Test tab.
  7. Check all buttons. If some of them are not working check you wiring. If none of them work check the code. If the Teensy LC is not recognized by Windows rewrite the code to Teensy.
  8. If the tests were successful disconnect the Teensy LC from the PC.

Connect Teensy LC to the Raspberry Pi:

  • I've soldered the Teensy directly to the Raspberry Pi USB pins. This way a lot of space is saved which would have been wasted by USB cables.
  • Use the picture to connect the Teensy and the Pi.

Step 10: Wiring: Sound

In this step we will wire the amplifier PAM8403, the volume control, the switched audio jack and the speaker.

With this setup you have the possibility to control the volume with the hardware wheel and redirect the sound from the speaker to headphones if plugged in.

Or -if you want- you can omit the volume wheel and the audio jack. This way you have to control the volume using a software solution on the Pi. But for now we stick with the full feature setup.

Soldering:

  • Solder the wires according to the picture.
  • This setup does not use the audio jack of the Pi in order to save space. Solder the audio wires directly to the Pi test pads:
    • audio ground (black line in the picture) is soldered to PP6
    • left channel (green line in the picture) is soldered to PP25
    • right channel (blue line in the picture) is soldered to PP26
  • The amplifier needs 5V power. Solder it to the 5V GPIO pin and the ground pin of the Raspberry Pi (see picture).
  • !!! Double check polarity !!!

Install the sound components:

  • Put the switched audio jack into its mounting hole and secure it with the nut.
  • Use hot glue to glue the volume wheel to the wall of the case so a part of the wheel sticks out of the case front. Do not use to much glue the wheel must turn.
  • Put duct tape all over the amplifier to isolate it and fit it between the display and the Raspberry Pi.
  • Fit the speaker wherever some space is left.

Step 11: Wiring: External USB Port

For the easiest part of wiring we're going to add the external USB jack.

This external USB port in the case is quite useful if you want to add additional peripherals such as a keyboard, a second controller for player two or something else running via USB.

Soldering:

  • Well ... connect the USB jack according to the picture.

Install the component:

  • Insert the USB jack into its hole in the GamePi case.
  • Plug in some USB device (should be a consumer, e.g. a keyboard or thumb drive) so the glue does not run into the port.
  • Use hot glue to secure the USB jack. Do not use to much glue since it can clog the jack.

Step 12: Wiring: Power

Now we are going to add some power to the system.

In this step you should as often as possible check the polarity of your soldered wires.

Disassemble the PowerBank:

  • Disassembling the powerbank is easy as the case is quite thin.
  • Use a screwdriver or smash the case against the floor to open it.
  • Remove the battery and the electronics.
  • Unsolder the battery from the electronics.

Soldering:

  • Connect all components but the battery according to the picture.
  • Again this setup does not use the micro USB jack of the Pi in order to save space. Solder the wires from the slide switch directly to the Pi test pads. There are several solder points where we could feed the Pi with 5V, e.g. the GPIO pins - but we're going to use the first possible point after the Pi's power USB jack. This way the incoming 5 Volts have to pass a fuse and the Pi is protected if something bad happens:
    • the positive 5V wire (red line in the picture) is soldered to PP2.
    • the negative GND wire (black line in the picture) is soldered to PP5.
  • !! Before adding the battery double check polarity on every component. !!
  • Add the battery.

Install the power components:

  • The powerbank electronics should already be mounted to the back piece of the GamePi case.
  • Insert the micro USB jack into its hole in the GamePi case.
  • Use hot glue to secure the micro USB jack. Do not use to much glue since it can clog the jack.
  • Insert the slide switch into its hole in the GamePi case.
  • Use hot glue to secure the slide switch. Do not use to much glue.
  • Use hot glue to stick the battery to the back of the display. Do not use to much glue.

Step 13: Installing RetroPie

Since the hardware part of this project has been finished we can now take a look on the software.

In this step we're going to download all needed software, write the RetroPie image to the SD card, start and configure emulationstation.

Required Software:

  • Download the pre-made RetroPie image for the Raspberry Pi (the red "Raspberry Pi 2/3" button). This is basically the operating system of this console. Of course you can use whatever you want on the Pi - there are dozens of other solutions.
  • Download and install 7-zip - a free file de/archiver. We need it to unpack the RetroPie image archive.
  • Download and install SD Memory Card Formatter. As the name says this tool formats SD memory cards.
  • Download Win32 Disk Imager. We need this tool to write the unpacked RetroPie image to the SD card.

Preparing the SD Card:

  1. Plug the SD card into your Windows PC.
  2. Make sure Windows detects the card.
  3. Open "My Computer" or "This Computer" or the Windows Explorer and remember the drive letter of the SD card. In my case it was F:\ (differs from systems to system). Make sure it's really the letter of the card and not some of your harddrives.
  4. Start SDFormatter.exe, select your drive letter from the "Drive:" dropdown menu and hit the Format button.
  5. When formatting has finished close SDFormatter with the Exit button and unplug the SD card.

Write the RetroPie image to the SD card:

  1. The downloaded RetroPie archive should be called something like "retropie*.img.gz".
  2. After installing 7-zip right click the RetroPie archive and select 7-Zip from the context menu. Select "Extract Here" and wait for the unpacking to finish.
  3. Plug the SD card into your Windows PC. Make sure Windows detects the card and again remember the drive letter of the SD card.
  4. Start Win32 Disk Imager.
  5. Select the unpacked RetroPie image from the field "Image File".
  6. Select the drive letter of the SD card from the "Device" dropdown menu.
  7. Click the "Write" button and wait until the writing finished.

Configure the Display:

  1. With the SD card plugged in your PC navigate to the content of the card.
  2. Open the file "config.txt".
  3. Append the following lines at the end of the file, save the file and unplug the SD card:
max_usb_current=1 
hdmi_group=2 
hdmi_mode=87 
hdmi_cvt 800 480 60 6 0 0 0 
hdmi_drive=1 
display_rotate=2 
lcd_rotate=2 

Step 14: Configuring RetroPie

Time to boot up the whole thing!

  1. Insert the SD card into the Raspberry Pi and slide the power switch.
  2. Wait until emulationstation shows up and asks you to "Configure Input".
  3. Follow the onscreen instructions and map your buttons.
  4. Now we are going to configure some basic settings.

Configure WiFi:

  1. Connect a keyboard to the external USB port of the GamePi.
  2. In the main menu of emulationstation (where you select the systems) select RETROPIE and press the A button.
  3. Select WiFi and press the A button.
  4. In the new menu select "Connect to WiFi network" and press the A button.
  5. Select you SSID (WiFi network name).
  6. Enter your WiFi password using the attached keyboard.
  7. Welcome to the internet.

Update RetroPie:

This step take a while - make sure the battery of the GamePi is fully loaded or it could die while updating (happened to me - not cool).

The updates will be loaded from the internet so make sure you configured the GamePis WiFi.

  1. In the main menu of emulationstation (where you select the systems) select RETROPIE and press the A button.
  2. Select "RETROPIE SETUP" and press the A button.
  3. In the new menu select "Update RetroPie-Script" and press the A button.
  4. Select OK a couple of times and press the A button.
  5. Select "Update" and press the A button.
  6. When the update asks you if you want to "[...] update the underlying OS [...]" select Yes and press the A button.
  7. Wait for the update to finish - it takes some time 20 minutes in my case.
  8. After the update has finished select OK and press the A button.
  9. Select Exit and press the A button. Wait for emulationstation to reboot.

Step 15: Adding Games

To play emulated games we need those games first.

Getting Roms (the games ... as files):

  • I won't describe where to get the roms for the emulators because from what I understand this is kind of a legal grey zone.
  • Use google to find your favourite rom - there are a lot of websites offering them. Just search for something like "Mario Kart Super Nintendo Rom".

Transfer Roms to the GamePi:

  1. Turn on the GamePi and wait until it boots up completely.
  2. Make sure you have connected the GamePi to your WiFi.
  3. Open a Windows Explorer (a folder not the Internet Explorer).
  4. Enter "\\RETROPIE\roms" in the address field of the folder and press Enter. You are now in a shared folder of the GamePi.
  5. Copy your downloaded rom into the correct emulator directory. For example: if you downloaded the "Super Mario Kart" rom for the Super Nintendo copy the rom into the SNES folder.
  6. Restart emulationstation (press the Start button in the main menu, select QUIT, select RESTART EMULATIONSTATION).
  7. After the reboot the new system and game should be visible in the main menu.

Step 16: The Final Step

If everything went fine you can now close the GamePi case and secure it with 4 M3x18 hex screws.

Congratulations:

  • Congratulations you've build your own GamePi.
  • Have fun playing some all time classics.
  • Show some love and have a nice day.

Step 17: Change History

02-MAR-2018:

  • Corrected some links in the "Tools & Materials" step.

02-MAR-2018:

  • Added Demo Video.

20-MAR-2018:

  • Corrected slide switch link in "Step 1: Tools & Materials".

28-MAR-2018:

  • Added offer to 3D print the case in "Step 2: 3D Printing the Case".

20-APR-2018:

  • Added links to GamePi XS and GampePi Zero.
  • Added new title picture.

15-MAY-2018:

  • Added (in first step INTRO) thingiverse link to updated version - GamePi 2.1

6 People Made This Project!

Recommendations

  • The 1000th Contest

    The 1000th Contest
  • Battery Powered Contest

    Battery Powered Contest
  • Hand Tools Only Challenge

    Hand Tools Only Challenge

188 Discussions

0
murphree853
murphree853

25 days ago

Is it possible to make this with the raspberry pi 4?

0
gillmanc
gillmanc

27 days ago on Step 5

I am trying to write the Teensy code that is up above, and re-create this project. However, after installing the arudino framework as well as the teensy extensions, I plug the Teensy LC into my USB, change the board to Teensy LC, select the correct serial port. On Compile, I get the error message "Joystick was not declared in this scope. Is there a missing library? I do not specifically "Joystick" called out anywhere in the declarations.

0
gillmanc
gillmanc

Reply 27 days ago

Nevermind,, I didn't realize I needed to change thhe USB to keyboard + mouse + joystick

0
gillmanc
gillmanc

Question 6 weeks ago on Step 2

Does anyone have any recommendations for a 3D Printer off the shelf that can be purchased, that prints ABS filament as suggested, has a working table large enough or larger, and doesn't cost $5000? I'm just getting into 3D printing and looking for a printer that can handle the specifications of this project and others and don't have the time to build and construct my own 3D Printer. I'd ideally like to spend <$1000 on the printer itself, but still have a decent setup. Having a hard time getting good recommendations.

0
araymbox
araymbox

Answer 6 weeks ago

I'd recommend the Prusa i3 Mk3S.
Best printer on the market with a buttload of feature which makes printing super easy. you can also buy it pre-assembled and pre-tested.

3
towneater
towneater

Tip 5 months ago

I finished this project recently and I wanted to share some guidance based on the issues I encountered. I completed the version 3 GamePi, and I found that some instructions were missing and some parts were not as described. If you're thinking about making this project, just be aware that doing the version 3 might be more difficult. As far as I can tell, the version 1 is well documented, but I did not do that version of the project so I cannot vouch for it.

There were a number of difficulties I encountered during this build that the instructions did not help with. They are as follows:

* The switch joysticks do not have easily solderable pins
* The switch joystick pinouts were not described
* The switch joystick teensy code was not working
* The volume wheel potentiometer pinouts were described incorrectly
* The battery/power control board did not have the described pins
* The Raspberry Pi 3B itself needed to have parts removed to fit in the version 3 case

Here are the solutions I came up with. I am not an expert so use my solutions at your own risk.

1. The switch joysticks do not have easily solderable pins

The switch joysticks have tiny ribbon cable outputs, flat like a sheet of paper. The parts list for the version 3 includes .5mm FFC connectors (https://www.dropbox.com/s/yhb71a7k6quudqf/GamePi_3_Parts_List.xlsx) which are intended to connect to those ribbon cable outputs. The issue there is the .5mm pin outputs from the FFC connector are too small to solder to. Close inspection of the version 3 case internals picture (https://thingiverse-production-new.s3.amazonaws.com/assets/c2/57/93/4b/8b/IMG_20180923_205211.jpg) show a much larger FFC connector with pins that are able to be soldered directly. As phehr2 pointed out in their own discussion post, this problem can be solved with a breakout board. I bought mine here: https://www.ebay.com/itm/6-Pin-FPC-Connector-to-DIP-Breakout-Board-0-5mm-1mm-Pitch-Pack-of-3-/301724393113. The breakout board has 6 pins while the connector has 5, but of course you can just ignore the extra 6th pin and not solder anything to it. This step is one of the most difficult I encountered. If you are not comfortable doing surface mount soldering, or do not have the tools to do so, opt for different joysticks or buy a larger FFC connector.

2. The switch joystick pinouts were not described

The instructions left me to research the switch pinouts on my own. Luckily, since the switch is a widely available console and the joysticks themselves are closely studied, this information was readily available. In fact, phehr2 also provided this information in their discussion post. However, the order of the pins might be a little confusing. If you look at the ribbon cable the wires are visible and can be examined relative to the nearby screw hole. Counting from the closest to farthest wires from the screw hole, the pins are Y axis, ground, joystick button, X axis, and +3.3v. The X and Y axis for this pinout description seem to be flipped from what the actual switch uses for the joysticks, but since the teensy code to interpret the joystick inputs is custom written to use the pins this way, it works anyways.

3. The switch joystick teensy code was not working

Once again, phehr2 provided teensy code that was working for the switch joysticks, since that Y axis needed to be inverted. However, I ran into issues while following the calibration instructions. Basically, the teensy needs to be connected to the computer after being wired up to the inputs in the case. I compensated for this by leaving a microUSB cable attached to the teensy while it was in the case, and ran the wire out through the not-yet-filled external USB slot. It meant that the teensy was every so misaligned with its slot, but it worked. Next came the calibration, where I had issues with phehr2's program. The way phehr2 had mapped the lowest observed values and highest observed values assumed that the resting position of the joystick was directly in-between the highest and lowest values, and I found this not to be the case. I redesigned the program to allow calibration for the lowest and highest "resting values", when the joystick is not being moved. Then, the program determined if the joystick is below, within, or above the resting values. It maps values appropriately based on this. I also changed the calibration process to report the minimum and maximum values through Serial.println, viewable using the Arduino IDE serial monitor. phehr2 mentioned joy.cpl providing the numeric values from the joystick but mine was not doing that. I also used the online tool https://html5gamepad.com/ which allows testing the gamepad in a browser. That tool gave me better information while calibrating than joy.cpl, and it is not windows exclusive so it can help if you are calibrating on a non-windows environment. I will attach my version of the teensy code.

4. The volume wheel potentiometer pinouts were described incorrectly

The volume wheel listed for the version 3 parts list is not the same as the one used for any other version, and it is not the volume wheel show in the version 3 internals picture. It is this one: https://www.amazon.com/dp/B00O9Y6Z70. If you are using this potentiometer, the pinouts are shown in one of my attached photos.

5. The battery/power control board did not have the described pins

This part was pretty far outside my comfort zone, so my solution may be incorrect, use it at your own risk. The charger module listed in the version 3 parts list is not the same as described in any version of the build, and it is not the one shown in the version 3 internals picture. The internals picture shows a much easier board to use, with connections easily accessible and labeled. The board from the parts list, however, does not have the same pins and labels. Instead, what I had to do was de-solder the microUSB input and USB output from the board and solder my connections instead. The negative wire from the external charging port was wired to the negative connection for the board's microUSB connection, and the positive wire from the external charging port was wired to the positive connection for the board's microUSB connector. Similarly, the negative connection from the board's USB output was wired to the negative pin for the power switch, and the positive connection from the board's USB output was wired to the positive pin for the power switch. The battery was connected to the B- and B+ connections, with negative being connected to B- and positive being connected to B+. The - sign with a circle around it connection on the board I left unused. I assume this connection is meant to go to chassis ground, but this is a plastic case. Leaving it that way may cause static build up problems, I'm not sure. This wiring configuration allowed the external microUSB charging board to "pass through" to the power control board, and allowed the USB output for the power control board to provide power to the pi through the power switch. I left the tiny button on the power board alone, I did not press it and I did not desolder it. The only issue I have encountered with the board so far is that plugging a charging cable into the case's external power port while the pi is on causes it to restart suddenly. As a side note, the LEDs that indicate the level of charge are very bright, they can almost be used like a flashlight.

6. The Raspberry Pi 3B itself needed to have parts removed to fit in the version 3 case

This part is rather simple, but I didn't see it explicitly mentioned anywhere in the instructions for the version 3. The Pi itself will need to have certain components removed in order to actually fit in the case. The parts I had to remove are the USB ports and the ethernet port. I would recommend only removing these AFTER you are entirely certain that the pi is properly configured to work with the display and other components in the case. They can be desoldered off the board or gently pulled apart. I am not great at desoldering so I opted to just carefully pull them apart piece by piece.

Finally, some general tips:

* The volume was very quiet out of both the speakers and headphones for me at first. This was solved by increasing the volume inside the retropi software. I increased the volume from 50 to 80. I saw many recommendations to not set it to 100, this causes issues.
* (Once again, I'm not confident with the power wiring, so take my advice on this at your own risk) In the version 3 internals picture, the battery has its positive and negative connections directly exposed. In my opinion this is NOT good, as my battery came with a small under/over voltage protection board attached to the battery, and wires that came out of it. I left this under/over voltage protection board on the battery as a safety precaution. The protection board looks like these: https://www.amazon.com/Lithium-Battery-Protection-Polymer-Discharge/dp/B07MP2YQB1, though I am not certain if those boards will work for this battery and this circuit.
* The connections to the speakers were incredibly flimsy for me, and all 4 detached. Either be very careful with these and don't move them around much, or be ready to rip up the material covering the connections and re-solder.
* The breakout boards for the joysticks are large and unwieldy in the case, I cut mine down to a smaller size while keeping the connections intact.
* The version 3 internals photo shows a lot of hot glue being used, but I opted to use superglue for many portions instead. I still used some hotglue, but superglue did the job with less bulk.
* The switch joystick screw hole outcroppings were just a bit too big to fit with the speakers there, so I cut them off using a pair of wire cutters. Just be sure not to confuse the orientation of the joysticks after doing this!
* I had some issues with the teensy connecting to the pi until I covered the external USB with some electrical tape. There might have been some kind of short caused by it, so it's a good idea to cover the top of the external USB with some electrical tape.
* The switch joystick ribbon cables are VERY flimsy and I tore one by moving it around too much. Be careful and try not to strain the ribbon cables.
* If the buttons are off-center from the switches underneath, you get a gummy, not so great feeling button. Be sure to carefully align the buttons and their switches. This can be difficult to do with the prototyping boards.

I hope that my ramblings here can provide a little extra insight for anyone stuck struggling with this project or someone deciding if this project is for them. Good luck!

IMG_20200528_181852.jpgIMG_20200528_181921.jpgIMG_20200528_181938.jpgIMG_20200528_182034.jpgIMG_20200529_151859.jpgVolume Pinout.jpgIMG_20200528_181904.jpg
0
HoustonH
HoustonH

Reply 3 months ago

Hey there! First- thank you so much for posting all of this, I'm about to embark on making the GamePi 3 myself, and this provided A LOT of guidance. You seriously rock, and I only wish I came across your comment before I ordered the parts based on their list.

Second, since it's been about a month or so since you commented on this- how has yours held up with the modifications you made?

Thanks for your time!

1
towneater
towneater

Reply 3 months ago

I'm glad I could help with the info I provided, good luck making your own GamePi 3! Mine has held up pretty well, the only issue I have had is consistent under voltage issues. It's almost certainly due to the length and gauge of wire I used to connect the power from the battery control board to the switch and then finally to the pi. It's way to long and generates a lot of resistance because of it. I tried shortening the wire but the problem persisted. I finally "solved" it by adding a capacitor between the positive and negative power terminals on the pi. It still has under voltage issues when I start it up, but then once I restart it it's fine. I haven't tested this solution long enough to know how robust it is. I would recommend using short and thick wires for your power connections! I would outright replace my wires but the getting to the power switch would involve removing a lot of stuff and I don't want to do that.

If you run into any other problems leave another comment here, hopefully I can see it and provide some guidance. Good luck!

0
Taramatthew93
Taramatthew93

1 year ago

I am right at the end of this build, and can't wait to have it done. I'm having some problems hooking up the powerbank electronics PCB with the slide switch. I bought the PCB linked here https://de.aliexpress.com/item/32792636437.html, which is different to the one pictured in the instructions. It also has a push button on switch already soldered on. What do I have to do to get this working with a slide switch? I have tried desoldering the push button and soldering on the slide switch instead, but this doesn't seem to have worked. What am I missing? I also don't know which solder points to wire the switch up to?

0
towneater
towneater

Reply 5 months ago

I am also having this same issue. Did you ever solve the problem? The wiring pictures for the GamePi3 don't match the powerbank PCB in the parts list. I could try to just figure it out myself but I don't want to damage the battery.

0
krenneker16
krenneker16

7 months ago on Step 1

Is it possible to use the Rasberry Pi 3 B+ or A+ with this build? Would it affect the wiring diagrams at all?

0
jgabesanchez
jgabesanchez

Question 7 months ago on Step 6

What’s the pin out for the soft switches?

0
cabal2000
cabal2000

7 months ago

Hi guys. I was screwing around with the audio settings and now I can't seem to get it back. I am getting a an error mgs "VolumeControl::iit() - Failed to find mixer elements"
What are your default setting? Losing my mind here!!! Thanks guys and gals!

IMG_6334.JPG
1
phehr2
phehr2

Tip 1 year ago

The use of the Nintendo joycon joysticks in v3 (https://www.thingiverse.com/thing:3488841) is nice, but proved to be a challenge over the v2 joysticks. Congrats that you were able to solder wires to those teeny tiny clamshells. I couldn't do it. But I did find these 6 pin 0.5mm breakout boards https://www.aliexpress.com/item/FPC-FFC-flat-cable-transfer-plate-is-directly-inserted-DIY-0-5-mm-spacing-connector-6P/32827105259.html that did the trick (I couldn't find a breakout with 5 pins).

I had to adjust the TeensyLC program (attached) to invert the y axis on the joysticks and added compensation for the upper and lower bounds being different on every joystick (maybe not necessary, but didn't seem to do any harm).

I also converted the independent up/down/left/right d-pad into a HAT just for fun.

Here's the pinout:
pin 1 = Y
pin 2 = GND
pin 3 = SW
pin 4 = X
pin 5 = +3.3V

0
attackemartin
attackemartin

Reply 8 months ago

would you be able to drop the code for PSP joysticks (adafruit psp 2000) as well? Would really appreciate it :)

0
phehr2
phehr2

Reply 7 months ago

Sorry, I don't have one of those joysticks to test with. It's possible that it works with araymbox's original file though.

0
Clsmith8905
Clsmith8905

Reply 11 months ago

Is the pinout you listed for the Nintendo switch joycon's ffc? And is the order left to right?

0
phehr2
phehr2

Reply 11 months ago

Yes, that's the pinout for the switch joycon ffc. Left vs right would be different depending on how you're viewing it. But if you can find pin 1, you will be able to follow the order on the other 4. Just make sure to invert the Y axis in the teensy code, as it differs from the standard joysticks.

0
Acidman0123
Acidman0123

Tip 8 months ago

Could you please make it a kit? Like all the components in one box, rather than having to find an alternative to Amazon for all these parts (my dad hates amazon, so I can’t get any of the parts from them). You’d have to get the tools yourself, but you’d just need to order the one thing and print the buttons and case.