Skip to the content
PCBKitNew board
2 layers48.3 × 40.6 mmPs2Plus, the printed circuit board in 3D

PS2 controller emulator designed for the PIC16F18876

Size
48.3 × 40.6 mm
Copper layers
2
Thickness
1.6 mm
Parts
41
Nets
46
Pads
95
Tracks, vias
171, 4
Pours
1
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
23 Jul 2019
Updated
25 Sep 2019

Overview

Ps2Plus is an open-source printed circuit board by mcranford13, from the mcranford13/Ps2Plus repository on GitHub, published under the GPL-3.0 licence. It is a 2-layer board of 48.3 × 40.6 mm with 41 parts on 46 nets, routed with 171 tracks and 4 vias.

Its parts include 5 resistors, 3 inductors, 1 capacitor, 1 IC and 1 diode.

README

README.md

PS2 Plus

This project is a work in progress for making a PS2 Controller emulator. It was designed for the PIC16F18876 microcontroller. As of right now the controller emulation is working great. There are still some features that I want to add but the main part of the project is complete.

There are several hold-ups keeping this project from being complete, the main one being that writing an application for the PS2 and being able to send custom commands to the controller is difficult. I am slowly deciphering everything done by the PS2Dev team but it is slow going. If anyone would like to contribute or offer help/advice, I would gladly take it.

This project consists of several smaller projects each with its own folder, and is, as follows:

firmware - Main code of the project. Contains the PS2 protocol code.

hardware - The schematics and pcb design of the project. Includes information regarding external circuitry.

updater - The PS2 application for updating the controller.

bootloader - The bootloader code for the mcu.

docs - Contains datasheets, pinouts, and other useful documentation.

TODO

  • Bootloader
  • PS2 Updater Application

Build

You will need a pickit3, MPLAB (free), and XC8 compiler to flash this. To build from source, open the firmware project in MPLAB and click 'run'. This will compile the project and then initiate the transfer to the mcu.

The correct pinout of the microcontroller can be found in the docs folder.

Analog Stick Setup

  1. Press Select, L1, and L2 to enter configuration mode. The PS2 should say that there is no controller connected (if you are in a game).
  2. Move the analog sticks slowly in a circle.
  3. Press Select, L1, and R1 to exit. The PS2 should now recognize the controller.
  4. Reboot the controller (rebooting the ps2 works too). Analog sticks should now be working.

To set the analog sticks back to the default values:

  1. Press Select, L1, and L2 to enter configuration mode.
  2. Press L2, R2, Select, Start.
  3. Reboot controller (or ps2).

Hardware

Please note that this is my first pcb design and if there are mistakes or any room for improvement please make an issue or a pull request. I am always happy to learn and improve.

I have recieved feedback that the pad layout of the pcb is not optimal, this occured due to the pins chosen during the prototyping phase and when I switched from the DIP to the TQFP. I intend to update this but I am been really busy with school and life. Therefore I will release it how it is for now, and update it when I get a chance. If anyone would like to submit an updated pcb, I'd be happy to include it. Thanks for your understanding.

Acknowledgements

This project has only moved forward due to these individuals and sites (in no particular order):

  1. Curious Inventor - documentation of the PS2 controller Protocol
  2. Scanlime - documentation of the PS2 controller protocol
  3. Aurelio Manara - for answering countless questions and advice.
  4. Gman - for initial interest in this project and countless contributions to it.
  5. PS2Dev Team - for all the hard and amazing work on homebrew for the PS2.

Parts

41
QtyValueFootprintReferences
4MountingHole_2.7mmMountingHole:MountingHole_2.7mmM1, M2, M3, M4
1100KResistor_SMD:R_0805_2012Metric_Pad1.15x1.40mm_HandSolderR1
110uFCapacitor_SMD:C_0805_2012Metric_Pad1.15x1.40mm_HandSolderC1
11KResistor_SMD:R_0805_2012Metric_Pad1.15x1.40mm_HandSolderR2
11N58XXDiode_SMD:D_0805_2012Metric_Pad1.15x1.40mm_HandSolderD1
12N7000Package_TO_SOT_SMD:SOT-23Q1
13.3VTestPoint:TestPoint_Pad_2.0x2.0mm3.3V
1ACKTestPoint:TestPoint_Pad_2.0x2.0mmACK
1ATNTestPoint:TestPoint_Pad_2.0x2.0mmATN
1CIRTestPoint:TestPoint_Pad_2.0x2.0mmCR
1Conn_01x06_FemaleConnector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_VerticalJ1
1DDTestPoint:TestPoint_Pad_2.0x2.0mmDD
1GNDTestPoint:TestPoint_Pad_2.0x2.0mmGND
1MTR+TestPoint:TestPoint_Pad_2.0x2.0mmMT+
1MTR-TestPoint:TestPoint_Pad_2.0x2.0mmMT-
1PS2+PIC16F18876-I_PT:QFP80P1200X1200X120-44NU1
1R1TestPoint:TestPoint_Pad_2.0x2.0mmR1
1R2TestPoint:TestPoint_Pad_2.0x2.0mmR2
1RMBTestPoint:TestPoint_Pad_2.0x2.0mmRMB
1SLTestPoint:TestPoint_Pad_2.0x2.0mmSL
1SQTestPoint:TestPoint_Pad_2.0x2.0mmSQ
1STTestPoint:TestPoint_Pad_2.0x2.0mmST
1TP10TestPoint:TestPoint_Pad_2.0x2.0mmL2
1TP11TestPoint:TestPoint_Pad_2.0x2.0mmRX
1TP12TestPoint:TestPoint_Pad_2.0x2.0mmDAT
1TP13TestPoint:TestPoint_Pad_2.0x2.0mmCMD
1TP18TestPoint:TestPoint_Pad_2.0x2.0mmR3
1TP19TestPoint:TestPoint_Pad_2.0x2.0mmCLK
1TP20TestPoint:TestPoint_Pad_2.0x2.0mmL3
1TP23TestPoint:TestPoint_Pad_2.0x2.0mmLY
1TP26TestPoint:TestPoint_Pad_2.0x2.0mmLX
1TP27TestPoint:TestPoint_Pad_2.0x2.0mmDU
1TP4TestPoint:TestPoint_Pad_2.0x2.0mmRY
1TP7TestPoint:TestPoint_Pad_2.0x2.0mmDL
1TP8TestPoint:TestPoint_Pad_2.0x2.0mmDR
1TP9TestPoint:TestPoint_Pad_2.0x2.0mmL1
1TRITestPoint:TestPoint_Pad_2.0x2.0mmTR
1XTestPoint:TestPoint_Pad_2.0x2.0mmX

Questions

How big is the Ps2Plus PCB?

It measures 48.3 × 40.6 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Ps2Plus use?

41 parts. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Ps2Plus KiCad files?

From the mcranford13/Ps2Plus repository on GitHub, at the commit this page was made from: the board is hardware/ps2plus.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Ps2Plus design in my own project?

Its repository publishes it under the GPL-3.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 2 layers70 × 35 mmTLF35584 breakout, the printed circuit board in 3D

    TLF35584 breakout

    rusefi/rusefi

    rusefi - GPL internal combustion engine control unit

    41 parts1.2k
  • 2 layers270 × 11 mmDaylight Disco, the printed circuit board in 3D

    Daylight Disco

    VoronDesign/Voron-Hardware

    Cool Hardware designed by the Voron Design group

    41 parts1.1kGPL-3.0
  • 2 layers27.5 × 48.3 mmICE40DevBoard, the printed circuit board in 3D

    ICE40DevBoard

    hackclub/OnBoard

    💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

    41 parts915
  • 2 layers45 × 25 mmEasy PD Sink, the printed circuit board in 3D

    Easy PD Sink

    openwch/ch32v003

    CH32V003 is an ultra-cheap RISC-V MCU with 2KB SRAM, 16KB flash, and up to 18 GPIOs that sells for under $0.10

    41 parts599
  • 2 layers97 × 78.5 mmDumbpad, the printed circuit board in 3D

    Dumbpad

    imchipwood/dumbpad

    Simple 4x4 numpad with rotary encoder. Powered by QMK via ATmega32u4 Pro Micro

    41 parts517GPL-2.0
  • 2 layers37 × 15 mmCanTactDist, the printed circuit board in 3D

    CanTactDist

    bondus/KlipperToolboard

    A 3D printer tool head controller board

    41 parts373GPL-3.0
  • 2 layers20.3 × 69.7 mmPG attiny404, the printed circuit board in 3D

    PG attiny404

    fabiansteiner/OpenValve

    3D-printable pinch valve for irrigation and sensor-driven liquid control.

    41 parts276CERN-OHL-S-2.0