After installing an emulator for the old NES games on my Android phone and playing Super Matio Bros. 3 for a while, I quickly realized how annoying the use of a touchscreen for a jump'n'run game could be. In addition it isn't really the same feeling playing it that way.
So I came up with the idea of building a Bluetooth NES controller for my phone. Actually its not only for phones, you can use it with your PC or Laptop too.
Step 1: How to Interconnect the Controller to the Phone
Of course the only reasonable way to connect the controller to the phone is Bluetooth since its wireless and easy to handle on various devices like phones and PCs.
So I found this little buddy called Bluefruit from Adafruit, which you can find here: Bluefruit EZ-Key
This is a pretty cool device which suits perfectly for a project like this. In detail this is a 12-channel Bluetooth HID (Human Interface Device).
Step 2: Testing the Bluefruit
At first I wanted to test the Bluefruit device that it really works the way I supposed, before I put to much work into it and then realizing that it doesn't behave as I want. So i hooked it up with some 5V supply voltage to the according pins (Vin - G) and attached just a single push-button to channel 0 which is pre-programed as arrow up by the manufacturer. Then I powered it up and paired it with my Laptop which worked at the first try. For pairing it with my phone I needed a bit more time because due to some reason you need to hold the pair-key on the bluefruit pressed while searching the device on the phone otherwise it cannot be found. Details on pairing the device with Win/Mac/Linux can be found on the Adafruit website.
SO TEST SUCCESSFULL!! yehaw... :D
Let's move on...
Step 3: Preparing the Bluefruit
The Bluefruit comes with unmounted pin headers so at first they need to be soldered to the breakout board.
I did this upside down, so that the pins are on the component side of the PCB. The reason for this decision is simple to minimize the height of the guts of the controller so that they will fit into the casing later on. Otherwise there would have been a lot of unused space between the pin headers.
Step 4: Working Prototype on Pin Board
I arranged the 8 push-buttons according to their original position on the NES Controller and wired them up to the Bluefruit channels. The pushbutton must be connected between GND and one of the 12 input channels.
For the prototype i just cut off and old USB power cable and soldered it to a pin header which connects to the pin board.
So basically thats all for building the prototype. Just a workload for about half an hour.
Step 5: Testing the Prototype
Due to the fact that I already paired the Bluefruit with my phone I just needed to power it up and it automatically connected to my phone.
Then I started my NES emulator, in my case it was the app Nesoid, and I configure the key input settings according to the input channels of the Bluefruit.
Save the configuration and start your favourite game's ROM and play till your fingers are bleeding and then play more!! ;D
Step 6: Future Plans
For the future I plan to put the protype into a cool self-designed casing or maybe I just hack an original old controller and hook it up with the Bluefruit device.
I also want to make the to onboard LEDs visible on the outer casing so I will attach some extra LEDs to the according pins of the header. The same I want to do for the pair and reset keys.
For all future changes I will make some pictures and keep you up to date.
Feel free to copy my idea and if you have some questions don't hesitate to contact me.
Have fun folks... :)
t0mm0t made it!