Tutorial DUALSHOCK PS3 Xbee RC Controller

Storm Shadow

Staff member
Ida Pro Expert
Elite Cracker
source http://proofofprinciple.nl/index.php/ps3-rc


Inspired by projects such as: http://www.blairkelly.ca/2012/04/20/arduino-wifly-mini/ I decided to develop a custom PS3 RC controller pcb. So I ordered a used PS3 controller on Ebay, the guy told me it was an original Sony controller......not! After some googling on the model number: CECHZC2H I found out that this is a fake one. This isn't a bad thing because there are a lot of original Sony PS3 revisions, see: http://forums.xbox-scene.com/index.php?showtopic=648322
When using this cheap fake controller for the project there is probably only one version, so when I need spare parts it's easy to get them :)

Features for the custom DUALSHOCK PS3 Xbee RC controller:
- Long range 60mW Xbee Pro transceiver!
- Original 3.7V Lipo battery.
- USB Battery charge.
- All buttons will be functional!
- Force feedback from RC Car!
- USB Communication with PC!
- No adjustments on the original (fake) housing, will fit like the original pcb :)

First some pics from the original parts:

The original button board:

The original main board:

Small 2-button pcb:

For the custom controller I will use the original "button board", so this means developing only a new "main board". As you can see in the picture above from the "button board" I drilled out a area for the antenna. Luckily there were no traces here.

Things to copy:
- Main board outline.
- joystick footprints.
- 4 indicator leds.
- flatcable connection footprint to button board.
- force feedback motor connection footprints.
- small 2-button board connection footprints.
- Holes for mounting.
- USB connector position.

First I started drawing the main board outline. It helped a lot printing the pcb several times to see if it fits in the original housing (see picture below).

The custom controller will be equipped with:
- Atmel AVR Atmega 324P processor @ 10MHz.
- Xbee pro series 1 (ufl connector).
- 2.4 GHz antenna.
- MCP73831 Lipo charge management controller.
- 74HC165D shift registers.
- LTC3405A step down switcher.
- open collector output for force feedback.

The first prototype is just ordered (18-05-2013)! See 3D models below:



The first results!!!! <= PERFECT FIT


The old (original) one:

The new one:

The end result:





Communication with PC:
This week I developed a vb.net application for testing purposes, screenshot:


The PC transceiver:

Some theory:
The message size from the controller to the PC is 10 bytes in total, this 10 bytes contains all the button/joystick information. The baudrate is set at 38k4. The printscreen shows 42 messages/second * 10 bytes = 420 byte/sec.
The transmit interval at the controller is set at 25ms, so this is about equal to 1/0.025 = 40 msg/sec.
Faster communication is possible, but this is sufficient at the moment. For half duplex bidirectional communication the speed drops to 33 msg/sec. When i press the "vibrate" button, the controller vibrates for 500ms (timing is done at controller).

Configuration of the XBee module (inside the PS3 controller!)
It's possible to config the Xbee module through the usb connector. While holding the JOYSTICK button for 2,5 seconds, the controller enters "Xbee config mode", this way al RX UART0 is passed to TX UART1 and vice versa. Configuration can be done with X-CTU:


Schematic, bill of material and software.
Because of all requests:
- Schematic
- Software