I found this outdated joystick in a free bin and decided to give it a new life as a bluetooth controller for a Raspberry Pi. This joystick was designed for an Xbox 360 but you could use any similar device or even an old gamepad.
Wire cutters/ wire strippers
Soldering Iron/ Solder
Desoldering tool (optional)
1 Joystick (use one you have or keep an eye out at thrift stores)
1 Adafruit Bluefruit EZ-Key
1 Adafruit Micro Lipo - USB LiIon/LiPoly charger
30 gage wire (optional)
Lithium Ion Polymer Battery - 3.7v
5 Resistors (optional)
Some Heat-shrink tubing or electrical tape
Adafruit has a great guide for assembling and using their Bluefruit EZ-Key.
I recommend you follow the link above and read their whole guide before we get started.
Step 1: Disassemble and Take a Look Inside
The decal on the front panel is just a sticker, it can be removed with carefully peeling. Take care around the buttons and joystick.
Flip the controller over and remove all the screw on the back panel.
Now take a look inside the case. We have the main circuit-board in the center, the assembly for the joystick, a small circuit-board for four buttons, and two small circuit boards for the status lights and small buttons.
Everything is attached to the main circuit-board with ribbon cable or wire except for two buttons in the center.
We are going to have to desolder those two buttons from the circuit-board in order to remove it.
Step 2: Cut the Cables
Take a good pair of wire cutters and carefully snip all the wires that connect the main circuit-board to the buttons.
Once everything is cut you can use the wire strippers to strip the insolation off each button you are going to use.
This takes a bit of time its a good idea to heat up your soldering iron while you are stripping wire.
Step 3: Desolder the Main Board
The only thing keeping this circuit-board attached is four soldered pins (the positive and ground for the red and green buttons.)
Desoldering is always a bit tricky, it helps to use a desoldering tool to remove the bulk of the solder. This tool sucks up hot solder but you could also use solder wick or some other method.
Heat up each soldered pin with your soldering iron. Once the solder begins to flow use a desoldering tool to remove the solder. Once most of the solder is removed heat up each pin one at a time and pull on the board until it pops off.
Step 4: Attach the Bluetooth Board
I used an Adafruit Bluefruit EZ-Key attached to a Lithium ion battery and a charger. The parts cost around $30 total.
Adafruit has a great tutorial on how to wire this up. The link is HERE.
The guide is for a Super Nintendo controller but you can still follow it pretty closely.
The Bluefruit EZ-Key has 12 pin-outs (0-11) for all the buttons and extra pin-outs for the onboard buttons and LEDs.
You have at least 12 buttons on the Joypad (Up, Down, Left, Right, A, B, X, Y, Left trigger, Right trigger, Start, Select). Each button will have two wires coming out of it, one will be connected to a ground pin on the EZ-Key and one will be connected to one of the 12 numbered pins (0-11). This is the order Adafruit suggests connecting:
0 = Up, 1 = Down, 2 = Left, 3 = Right, 4 = Select, 5 = Start, 6 = Left Trigger, 7 = Right Trigger, 8 = A, 9 = B, 10 = X, 11 = Y
You can then connect all of the ground wires together to one wire and then connect that wire to the ground pin on the EZ-Key.
Now we still have a few more pinouts on the EZ-Key, they are for controlling the bluetooth chip itself. reset button, pair button and some pin outs to connect LEDs too.
I want to use the status lights on the old Joystick as my bluetooth status lights and one of the extra buttons as the pair button. Lets get to it!
Step 5: Hack the Status LEDs
One of the pin-outs on the other side of the board is for the pair button (used to pair the EZ-Key to your computer) it is labeled PB. There is also a pin labeled L2, this pin-out can be wired to a LED which will then blink to let the user know the if the bluetooth is connected or not.
The joystick has a small circuit board on the top with one button contact and four onboard LEDs. I used two coin cell batteries to test the LEDs. If you have a breadboard you can use it to test each wire and figure out which LED it is connected to.
The first four wires on the board are for the ground for each LED and the next wire is the power for all four. The two wires on the far right are the positive and the ground for the center button.
We can use this button and its four LEDs without PB and L2 pin-outs. First solder a 500 ohm resistor to each LED wire then solder the other end of each resistor to a ground wire and solder it to a ground on the EZ-Key. Then connect the L2 pin to the power in wire for the LEDs. Check this now by powering the EZ-Key on. The LEDs should blink with a red light on the EZ-Key. Remember LEDs are diodes so electricity only flows through them in one direction. If yours don't light up, flip the power and the ground.
Now, connect the PB pin to one of the button wires on the mini board and connect the other wire to the ground on the board.
Look for a place on your joystick for the charger and the switch to exit the case. My case had a perfect hole right in the front.
Now we are almost done! You can carefully put the back panel on and pair it to your device.
Step 6: Finished! Time to Pair!
Now you can turn on your new joystick and if all your wiring is correct you will see the indicator lights blinking.
To pair the joystick to your device follow the Adafruit pairing tutorial HERE.
Follow the link and you will see instructions on how to pair it with a Windows, Mac, or Linux device. I hooked mined up to a Raspberry Pi 2.
I hope you enjoyed my instructions please post any questions you have.