PSP: PiStation Portable

by Ellindsey, published

PSP: PiStation Portable by Ellindsey Jun 8, 2015
1 Share
Download All Files

Thing Apps Enabled

Order This Printed View All Apps



Use This Project

Give a Shout Out

If you print this Thing and display it in public proudly give attribution by printing and displaying this tag.

Print Thing Tag


Thing Statistics

27310Views 1661Downloads Found in Video Games


This is my Retropie Portable implementation. I put it together as a design challenge, a chance to learn more about using the Raspberry Pi, and to have a fun hand-held battery-powered gaming console.

My main design goal was to have good ergonomics. This design fits nicely with my large hands, with an analog joystick that I find more comfortable than a D-pad. I really didn't like the feel of the little tactile membrane buttons everyone else is using, so I opted for these nice 16mm illuminated mechanical pushbuttons instead. They have a really smooth action, feel much nicer for prolonged play sessions, and have the additional bonus of being panel mount instead of PCB mount which makes fitting them in the case simpler.

There are only 2 pieces to print with this design. Admittedly, they are large pieces, about 240mm wide. Mechanical assembly is simple, nearly all the electrical parts attach to the case with small self-tapping screws, most of them to the front half with just the battery and charger board attaching to the rear.

It has an internal battery charger, and can be played while charging - although you will discharge faster than you charge, so you still need to shut down to recharge fully. The second USB port on the PI is accessible, so you can plug in a USB drive to transfer roms, or an external keyboard for configuration or emulating systems needing a keyboard.

I'm using a Teensy 2.0 for the joystick function. There is a mode switch button which can be used to switch the teensy into a keyboard emulator mode that maps the joystick to arrow keys and the various buttons to certain keypresses, so you can navigate the file transfer utility and some of the other configuration menus without needing a keyboard.

No internal speakers - the amp was drawing too much current and the speakers were hard to fit, so I decided to make it headphone-only.

I wouldn't recommend that anyone build this as is and am uploading it for reference purposes. There are a handful of things that I'm not happy with that would be fixed on a redesign. For one thing, I'm using an original model Raspberry Pi B for this, while a new design should be based around a Pi 2.

These pictures were taken before I had the soft power control circuit working. Since then I have replaced the toggle switch with a button and included a circuit to turn power on by button-press and off when the Pi shuts down. A schematic is included.

In order to fit everything in the space behind the display, I had to forgo connector and solder wires directly to the back of the Raspberry Pi. Between that and all the wires to the illuminated pushbuttons, this is not a design to attempt unless you're very comfortable with a soldering iron.

The case is nearly 240mm wide, so you'll need a large bed printer to print it. It barely fit on my 250mm circular bed. Both front and rear case halves will need to be printed with support.


Parts I used:

1 printed front case half
1 printed rear case half

RaspBerry Pi Model B: https://www.adafruit.com/products/998
Teensy 2.0: http://www.adafruit.com/products/199
Battery: https://www.adafruit.com/products/328
Powerboost 500 + charger: https://www.adafruit.com/product/1944
2-axis analog joystick: http://www.adafruit.com/products/245

Illuminated pushbuttons:

2x white: http://www.adafruit.com/products/1479
1x red: http://www.adafruit.com/products/1439
1x green: http://www.adafruit.com/products/1440
1x yellow: http://www.adafruit.com/products/1441
3x blue: http://www.adafruit.com/products/1477

I also used two non-illuminated buttons from this pack of 15: http://www.adafruit.com/products/1009

8gb SD card from amazon or anywhere else really
4.3" TFT Display: http://www.amazon.com/gp/product/B005CFLMNC

The toggle switch show in some of the pictures is not included in the final design, being replaced by a button along with the new power control circuit attached to the Powerboost 500. Note that you will have to desolder one part on the Powerboost board to use the included power control circuit.

Five 220 ohm 1/8W resistors for the blue and white illuminated pushbuttons, and three 330 ohm 1/8W resistors for the red, yellow, and green illuminated pushbuttons.

The display was modified by removing the stand, rear case, and small board with pushbuttons. I also desoldered the cable off the main board and replaced it with wires soldered directly to the back of the Raspberry Pi for power and composite video. The display I used seems to be able to run directly off 5V without modification and I have it taking power directly from a header on the Pi.

For the connection between the Teensy and the Pi, I cut an old USB cable in half and soldered wires directly to the USB connector pins on the underside of the Pi. Note that this has to be done to the 4 pins closer to the edge of the board to get the lower USB port, leaving the upper one free for an external USB device.

The Teensy is wired to the joystick, 8 illuminated pushbuttons, and 1 non-illuminated pushbutton. Connections are as follows:

Analog 0: x input from joystick
Analog 1: y input from joystick
Digital 0: A button
Digital 1: X button
Digital 2: Y button
Digital 3: B button
Digital 4: R button
Digital 5: L button
Digital 6: Start button
Digital 7: Select button
Digital 8: mode select button

The display screen, the Raspberry Pi, and the Powerboost are held in place with small self-tapping screws. I use the ones that come with the micro servos my robots keep going through since I have a lot of them spare. The front and back of the case are held together with four M3 socket head screws and hex nuts.

More from Video Games

view more

All Apps

3D Print your file with 3D Hubs, the world’s largest online marketplace for 3D printing services.

App Info Launch App

Auto-magically prepare your 3D models for 3D printing. A cloud based 3D models Preparing and Healing solution for 3D Printing, MakePrintable provides features for model repairing, wall thickness...

App Info Launch App

Kiri:Moto is an integrated cloud-based slicer and tool-path generator for 3D Printing, CAM / CNC and Laser cutting. *** 3D printing mode provides model slicing and GCode output using built-in...

App Info Launch App
KiriMoto Thing App

With 3D Slash, you can edit 3d models like a stonecutter. A unique interface: as fun as a building game! The perfect tool for non-designers and children to create in 3D.

App Info Launch App

Today (sunday-15jan2017) I have finished mine !!!!!
But using other cheaper components ( Arduino + chinese charger + chinese 3.7to5v adapter + chinese joystick)
Fantastic!!!!!! It works !!! Thanks for the design ! Really pro.
In next days i will upload pictures and info...
Best regards to everyone!!! :)

what configuration did you use for the initial configuration of retropie? I mean ,, which buttons, etc, did you configured initially?? which other configuration did you set up in your raspberry/retropie ??
thanks!! regards!!!

Hey There. Are this 2 Joysticks or Buttons ?:) Thanks

1 joystick and 10 buttons

any chance you could write an assembly/installation guide? i would love to build this but it would be great to see how its all done!

Hi imahotmail9....
its more a question for the original author, ELLINDSEY, but it seems he does not support it any more... :(
no, this design is only for the RP1 ... but,,, i suposse it can easily be adapted for the RPI2/3 ...
maybe this will be my next project after I finished the creation of one instance of this original design ... (well , using inexpensive modules in my case...)

regards !

The connectors are in different places on the Pi 3. If I was going to make one of these today, I'd redesign it from scratch to fit the Pi 3, and probably use the 7" touchscreen for the pi instead of the one I used here.

could i use a Raspberry Pi 3 in this?

Yes, but the design would have to be changed as the Pi 3 has connectors in different places..

Awesome design dude,
I am trying to design my own retropie handheld console, however I am a software engineer and really struggle with the design element of the project. Do you know anyone on here who is able to help with creating 3d models?

Sorry to post here but not sure where I can post it?
Thanks for any help, and again dude awesome design!

hi Andrew
I really like your design,,, in fact I'm now purchasing all the parts I need,,, but using chinese cheaper modules (not the official ones by adafruit)... will see the result... I will also try to add mono or stereo sound , i think it will be possible to include above the joystick at least one speaker... will see the result ... :)

for future works,, will be great to design the same style but less than 20cm in length,,, the majority of 3d printers can only print things less than 20cm,,, 24cm could be a challenge for the people who has basic 3d printers.... (I ordered your design to be printed via 3dhubs ...)

could be interesting to reduce the size to use psp joysticks (really small) and smaller buttons 12mm, 8mm ... also the screen frame could be redesigned to save 2cm.... they are just ideas ....

on the other hand,, stereo sound + a raspberry pi zero inside with access to hdmi port will be awesome...

I will share my work soon.. i hope.-

thanks!, regards!

Would you consider being commissioned to recreate this with a dpad instead of an axis joystick?

I could do that, although I'd also do a lot of other redesigning and improvements in the process. And I can't provide it with any actual game ROMs installed for legal reasons. Send me a message and we'll discuss it.

i would really love to this thing with some changes like a bigger battery. any chance to get the original 3d-file you made?

I'd really want to redraw it before releasing the original files, I didn't know Solidworks very well and they're really a mess.

would the powerboost 1000 allow for charge and play or is it pulling over 1A

ok so a newbee at this kinda stuff. Good all around handy man but anyway you could upload some more pics of the insides and wiring. Also it says remove R13 from the poweboost 500 were it that??

I've added a picture of the Powerboost 500C showing which one is R13. However, I don't recommend this project to someone who is a newbie at electronics - there's a lot of complex soldering involved, and removing surface mount parts from a board is tricky and easy to screw up.

so one other question, why would the led screen blink off and on. I can see the pi is booted up and at the login but screen will not remain on.

Do you have the GPIO14 pin connected on the Pi? The power circuit needs that to be connected to stay on.

were does the GPIO14 pin get connected to?

It's one of the pins on the Raspberry Pi pin header. Do a google search for 'Raspberry Pi pinout' and that should show you the pins on the header.

nope maybe this was to much!

came right off!

ok i mean im handy but gotta start somewere! lol thanks for the photo

Is there a complete schematic that you could make available for this? I have a case printed out and have most of the parts. I'm comfortable with arduinos and board level solder work. I can figure it out from what you have posted but it would save a bunch of head scratching if I could see all the connections at once. Also, does the Pi emulation software see the teensy as a USB controller? I am thinking so. Guess I need to load up the sketch and see what's up. Thanks for posting this.

Is it possible to share your CAD files for this? I'd like to make a few alterations.

Can you post the model number for the lcd screen and the buttons? Awesome build I am working on one with an raspi a+. I have not decided on a case yet but this looks awesome!

The links to the lcd screen and buttons are in the instructions. The buttons are adafruit parts 1477, 1441, 1440, 1439, 1479 and the lcd screen is part number B005CFLMNC from amazon or elsewhere.

Hi Ellindsey !

I like too much your design :) I planning to make a mix with Super Game PiSP and yours with a Raspberry Pi 2 hehe I don't like too much the illuminated buttons, is there any way to turn off the lights or I need to go for other buttons? Other question, your PiStation have speakers? I say it because if you conect the TFT trought composite video I think the Raspberry doesn't have other connection for audio output :S

The illuminated buttons are easy to turn off. They have separate pins for the button and the LED, so just don't wire up the LED connections and you'll have non-illuminated buttons.

This design does not have internal speakers, it has an audio output jack where you can plug in headphones or external speakers. The old Pi B I'm using has separate connectors for audio and composite video, and I have the audio connector still present and unmodified so it can be used while the video is directly wired. On a Pi 2 you'll have to do a different wiring setup for audio and video because the connectors are different.

Comments deleted.
Jun 10, 2015 - Modified Jun 10, 2015
Greali - in reply to Ellindsey

Wow thanks for the fast reply! :)

Perfect then, because I think like you that this type of buttons are better, it feels like PSP ones or they make click like Nintendo DS ones or similar?
2 pins are for light and other 2 for the button then.

Ok, so.. I think that I need one of this www. techbuy .com.au/p/160072/CABLES_RCA/Sansai/MP-9103.asp
But I don't know if I can use the white connector for 2 speakers and the red one for plugging my headphones for example, and make a system to turn off the speakers while the headphones are conected hum...

And I think that your solution for connecting the screen is more simple and cheap hehe I can't buy from adafruit because of the shipping price u.u

Blessed be the day when the 3D printers are cheap xD

Really like your design! for the Teensy , did you have it acting as a HID gamepad / joystick ? I know you mentioned that you have it being able to switch to a keyboard mode, but is the default as a HID gamepad / joystick? I ask because I've played around with making a flight throttle with an arduino leonardo , and getting it to behave as a HID gamepad was a challenge, and I've since lost the files I used to do it, I'm wondering if the teensy is a better solution.

Love the design! what kind of battery life do you get from the 2500mAh battery?

The Teensy libraries include USB code that will make it act as a HID joystick/mouse/keyboard. It's really easy to do, I just copied the example code from the joystick complete demo and the keyboard demo and made some changes. I have it set up as a joystick/gamepad as default, but pressing down one button disables the joystick function and remaps the joystick to the arrow keys and the buttons to keyboard inputs so I can navigate the file copy utility without needing to plug in a keyboard. I have the code available as one of the source files for this project.

I'm not sure of the battery life yet, I haven't yet played it from full charge to dead in a single session on the new battery. I estimate 2-3 hours, but that's just a guess. I'm also considering putting in a switch to disable the illuminated pushbuttons to save some battery life. It does take a long time to charge off a USB port, 5 hours in theory which seems right from my experiments.