Maker.io main logo

PS4 Controller Breakout PCB

2022-09-06 | By bekathwia

License: Attribution-Share Alike

 

Here's how I made a custom replacement circuit board for a PS4 controller. I started out with a few broken controllers, thinking what great interface devices they are, and what a shame that because they're bricked, they're basically trash. I had the thought that if I opened it up and connected to all the switches, I could repurpose the controller for something else.

inside controller

Inside the controller, there's a circuit board that hosts the joysticks, a few switches, and the brains of the operation, but most of the buttons are wired up through a membrane keypad. The connector on the circuit board is a rectangular cutout with small pads that line up with the membrane's contacts. So, this is what makes a custom PCB necessary for this project-- there just isn't another way to connect to all those membrane keypad switches.

So, I got to scheming a breakout board-- a circuit that would have the required membrane interface, but then wire it to headers I can wire out to the rest of my circuit. I started by drawing a circuit diagram with the joysticks and the 19 membrane contacts each connected to its own header pin.

Fusion 360

I designed the circuit board using Autodesk Fusion 360. I was able to pull in the shape of the board as a DXF, which I had traced from a scan of the original controller's board, and easily translate it to a PCB outline. I created a custom device for the membrane keypad connection area, and customized the footprint of the joysticks, using dimensions derived from the same scan as the board outline. Getting everything in the exact right spots to match up with the existing enclosure was probably the hardest part of this project.

The routing for something like this is pretty easy because it doesn't really matter which pads connect to which breakout pins, so long as they're each connected to their own. To make sure my board was manufacturable and was as likely as possible to work on the first run, I called on my ECAD Yoda, David Cranor, to double-check my work. Together we went through the DRC, making sure the board I designed met the criteria of my board manufacturer. I wish I could have, but I didn't use DKRed, Digi-Key's affordable board fab service, for this project because it doesn't currently support interior routing and I needed a couple of oblong registration slots. Next time!

3d print test fit

Since the board also exists in 3D in Fusion 360, I 3D printed a version to test if it would fit in the controller and if the holes fit my joysticks. This gave me some peace of mind that the boards I was planning to order would in fact fit. But I couldn't really be sure if the membrane contact area would work until the boards came in the mail.

it fits

The original circuit board has some conductive material on each membrane pad, so I applied solder blobs to help the pads stick up a little from the surface of the board. I also attached the joysticks and header pins.

testing

I cut out an area at the back of the controller to allow the wires connected to the headers to protrude straight out and connected everything to a solderless breadboard so I could figure out which pin did what. I used some 5V power and an LED to accomplish this. The LED was wired from power, then I'd plug it into an unknown pin, then press all the buttons on the controller to see if one lit up the LED. This process combined with some multimeter probing of the original board helped me reverse engineer the button to membrane wiring and create meaningful labels for the membrane pads on my circuit board.

pin mapping

Now that I had figured out the pin mapping, I could wire them up to a microcontroller to actually do something. So, I left my investigative circuit alone and started on another controller. Instead of headers, I soldered wires directly to the board, which meant they could protrude out the existing front opening on the controller instead of having to cut into it.

Here's where I tell you where this project is going. I'm collaborating with Lightfoot Beats and House of Content to make a music controller. His style lends itself to this sort of noise toy, sample playground type of vibe so I knew this was the perfect project to work on together. I had been playing around with an audio mixer program on an RP2040 board, based on John Park's breakbeat breadboard project, written in Circuit Python. I modified it to mute and unmute the loop tracks and layer one-off sounds separately. I loaded up Lightfoot's audio packs and this working prototype was born. 

version 1 board

I have plans to add the three mechanical switches I omitted from the first board and get all the components to fit inside the controller. That version won't be ready for a little bit, but I do have a revised PS4 controller breakout board PCB available in my shop, in case you have a broken controller you'd like to turn into something new.

And of course, you can download all of the files for this open source design on github.

制造商零件编号 430471035826
SWITCH TACTILE SPST-NO 0.05A 12V
Würth Elektronik
制造商零件编号 R-667834
SWITCH TACTILE SPST-NO 0.02A 15V
Mitsumi Electric Company Ltd
制造商零件编号 3197
VISE 6.14" JAW LOW PROFILE
Adafruit Industries LLC
制造商零件编号 32614
POCKET PRECISION 4-IN-1 SCREWDRI
Klein Tools, Inc.
制造商零件编号 3C301-NB
CALIPER 6" ELECT DGTL STEEL
TPI (Test Products Int)
制造商零件编号 239
BREADBRD TERM STRIP 2.20"-7.00"
Adafruit Industries LLC
制造商零件编号 1952
JUMPER WIRE M TO F 12" 28AWG
Adafruit Industries LLC
制造商零件编号 PH2RA-24-UA
CONN HEADER R/A 24POS 2.54MM
Adam Tech
Add all DigiKey Parts to Cart
TechForum

Have questions or comments? Continue the conversation on TechForum, DigiKey's online community and technical resource.

Visit TechForum