NES Controller IPod Remote

113,201

91

38

Intro: NES Controller IPod Remote

By embedding a PIC microcontroller into an NES controller, it can be converted into a replacement for Apple's iPod remote.
(Only 3rd and 4th Generation iPods have this, it is a the small oval port next to the headphone jack).

Update (8/26/2011):
It's been quite some time since iPods have used this iPod remote connector, but the dock connector (the one used on all iPods except the shuffle, iPad, and iPhone) has the same Rx/Tx pins, as well as a 3.3V out.  A simple breakout board can replace the hacked connector at the end, and you can get this to work with any recent Apple products.  You can buy breakout boards at: http://www.kineteka.com/PodBreakout-v1.aspx
(The mini one is pretty nice, and they also have pinout information).

Step 1: Parts

Microcontroller- dsPIC30F2011 These can be sampled from Microchip's sample site

Programmer- the drawback to using a dsPIC is the complicated programming procedure. The easiest way to program it is to use a Microchip ICD2, however these run fairly expensive. I have not tried this, but apparently the utilities found at http://homerreid.ath.cx/misc/dspicprg/ can be used with a homemade JDM Programmer.

IC sockets- I used 2 8-pin DIP sockets(a single 18 pin or 16 pin would have also worked). These are necessary for removing and replacing the IC for programming and debugging.

NES Controller

Dremel with a cutting bit

Sharp knife

Soldering iron and small gauge electrical solder

Desoldering pump

Flush cutters, or wire cutters

Needlenose pliers

Standard Ethernet (CAT-5) cabling

A good amount of small gauge wire- I used the innards of extra CAT-5 cable.

3G or 4G iPod.

A plug for the remote jack on the iPod. This is the most difficult to acquire. Several suggestions are made at iPod Linux's site.
I used a small piece of a shattered old memory module that perfectly fit the remote plug, but any of the other solutions also work.

Step 2: NES Controller Prep

Unscrew the controller with a small Phillips head screwdriver, and remove the PCB. The only components that need to be added are the PIC and the sockets to hold it. This way the original look and feel of the controller is completely uncompromised.

First, the NES chip must be removed. If you do not have a desoldering pump, then the IC can be cut off the board with flush cutters, and the pins can be removed with by heating them with a soldering iron, and pulling them out with pliers.

The original NES cable also must be desoldered from the board in a similar manner.

In order to make room for the PIC, a small portion of the board must be cut away from the top-right corner. Only just enough to allow the IC in the socket to sit across the board inside the controller case should be removed. Carefully use the dremel to cut away a section about .25" by 1".

Step 3: Schematic

The circuit within the controller will essentially be the below picture. This picture is difficult to follow, but is a better explanation of how the controller works. The following steps detail my application of this schematic.

Step 4: Wiring the Sockets

Because of the simplicity of the idea, the only electrical work that needs to be done is attaching the IC sockets to the board, and the controller cable to the board.
The wiring of the controller is very simple in theory, but is complicated by the usage of all original components (the black lines covered with green transparent tape are, in fact, pull-up resistors.)

Much of the wiring can vary based on how much of the board was removed with the dremel. Some of the traces that were cut must be replaced with wire, especially any that connect to the button pads or the pullup resistors.

Note: the pads for the old NES chip are counted counter-clockwise from the notch printed on the back of the controller. PIC pin numbers are counted in the same way.
The colors refer to the colors of the original NES cable wires, and are printed on the back of the board (not the colors in the parenthesis).

PIC pin 1 (Master Reset) --- V+ (NES pin 16)PIC pin 2 (IO 0) --- UP (NES pin 4)PIC pin 3 (IO 1) --- DOWN (NES pin 5)PIC pin 4 (IO 2) --- LEFT (NES pin 6)PIC pin 5 (IO 3) --- RIGHT (NES pin 7)PIC pin 8 (Transmit) --- yellowPIC pin 11 (IO 4) --- A (NES pin 1)PIC pin 12 (IO 5) --- B (NES pin 15)PIC pin 13 (VSS) --- ground (The empty pad near the top right corner that is farther away from the edge)PIC pin 14 (VDD) --- V+PIC pin 15 (IO 7) --- SELECT (NES pin 13)PIC pin 16 (IO 6) --- START (NES pin 14)PIC pin 17 (AVSS) --- ground (Same empty pad as above)PIC pin 18 (AVDD) --- V+

Step 5: Wiring the Cable

Cut a length of Cat5 cable (I used 2 feet), and cut away an inch of the insulation on each end. Cut off all but three wires from the exposed areas.
The 3 wires in the cable each will connect to a pin on the remote plug.
Attaching the connector varies depending on what kind of connector, so I will refer to each wire as its pin on the connector.

Connector pin 1(Receive) --- NES pin 3 (this is connected to the PIC's transmit)
Connector pin 3(Ground) --- brown
Connector pin 4(3.3V) --- V+

Once these three wires have been connected, simply push the cable into the stress relief posts that the old cable went through in the controller case.

There is a severe lack of places to tie into the V+ line. All pins that need to have V+ can be connected directly to each other, but NES pin 16 must be at 3.3V. I used a knife to scrape some of the soldermask off of the trace to create my own pads.

Step 6: PIC

I used a dsPIC30F2011. These and many other PICs can be sampled from Microchip's site at http://sample.microchip.com/
I used a dsPIC instead of a normal PIC because
1. It can run on 3.3V that is provided by the iPod
2. It has 8 I/O ports for all of the buttons
3. It has an easy to program UART module, which can send data to the iPod with no conversion needed.
4. I already had one and a programmer.

Any other microcontroller that you know how to use and meets these requirements can be substituted, but the wiring will be different.
The downside of using a dsPIC is that the programmer is quite expensive (The ICD2 is now $160). There are free tools at http://homerreid.ath.cx/misc/dspicprg/ that can be used with a homemade JDM programmer, but I have never attempted this.

The zipped files are the code for the PIC. It is a project in Microchip's freely available MPLAB IDE . If you want to modify it or recompile it, you will also need Microchip's C Compiler , which has a free student edition. These can be used to generate the neccesary hex file (also in the zip) for programming with MPLAB or the aforementioned JDM programmer.

The code samples the I/O ports 64 times per second, and if there is any change, sends various commands over serial to the iPod.
I used publicly available documentation on the Apple Accessory Protocol (AAP, or iAP) to write the code, and it is talked about at http://www.adriangame.co.uk/ipod-acc-pro.html and http://nuxx.net/wiki/Apple_Accessory_Protocol

Up, down, left, and right are volume up, volume down, previous song, and next song, respectively. A plays/pauses the music, while B stops it. The select button mutes, and the Start button, when held, enables you to control the iPod's interface directly. With start held, up and down scroll the wheel, and A and B operate the iPod's select and menu buttons.

Step 7: Final Assembly

Attach the NES controller case to the board and screw it together. Plug the controller into the remote port on your iPod and press the buttons. The PIC is turned on by simply plugging it into the iPod, which provides power to it. You now have a way of controlling an iPod from 2 feet farther away than ever before.

This instructable contains sharp, fast, and hot objects. Touching them might not kill you. I am not responsible for any forms of cancer that this will likely cause.

Share

    Recommendations

    • Fix It! Contest

      Fix It! Contest
    • Furniture Contest 2018

      Furniture Contest 2018
    • Metalworking Contest

      Metalworking Contest

    38 Discussions

    0
    None
    thefilmstars

    10 years ago on Introduction

    This is a very cool project. I am trying to build this on my own. I hope to use the ridax dock connector instead.

    1 reply
    0
    None
    jmorris30thefilmstars

    Reply 6 years ago on Introduction

    I wondered how you went with this given my recent comment. I'm planning to have a go with a breakout board and a reduced number of buttons :-)

    0
    None
    jmorris30

    6 years ago on Introduction

    Thank you very much for the detail you've put into this.

    I bought a Burton Snowboard jacket which comes with a SoftSwitch interface, basically buttons on the sleeve, leading to a control unit which is obsolete for todays hardware. 5 buttons are in the sleeve with a 6 wire ribbon cables coming to the pocket. I've identified the wires, 1 to 6. the old control unit is pretty much serviceable now, and was designed to work with the control interface you've used on your project.

    I was planning on getting an Ipod breakout board and attempting to apply your project to that, while using the buttons from my jacket.

    I'd be grateful of some support or any updates on subsiquent projects you might have undertaken with a breakout and other buttons?

    Regardless, great work! james

    0
    None
    kylekosan23

    7 years ago on Introduction

    where does everybody get thoes little game pads i c them everyehere iinstructabless where can i get oone

    0
    None
    Beduk

    7 years ago on Introduction

    can i use it for my itouch(2nd gen)?Can i use my ps1 controller instead of the nes?please give me details.

    1 reply
    0
    None
    redneckuprisingBeduk

    Reply 7 years ago on Introduction

    No, you can't do this with your Ipod Touch. The author says that only the 3rd and 4th generation ipods have the oval port next to the headphone jack. I'm pretty sure this mod can be done with a PS1 controller instead of an NES controller however

    0
    None
    gabrielG2

    8 years ago on Introduction

    Could anyone convert the C code to a PIC16F628? I guess its UART can also be used to conform to the specs of the Apple Acessory Protocol. Running it on 5v would probably need a resistor network on iPod's RX pin. Thanks in advance. Greetings from Brazil.

    0
    None
    Mr. Squishy

    9 years ago on Introduction

    I have a newer iPod Nano 4g and it doesent have that connector on the top. But I have an iPod radio remote instead. If I put the chip inside that, will it work?

    2 replies
    0
    None
    ignitionMr. Squishy

    Reply 9 years ago on Introduction

    i think you could do that if you ripped apart the radio remote, and basically reran the wiring from those buttons to the buttons of the NES controller... it wouldn't involve any programming of ic's or anything like that... it'd actually be a pretty cool project...

    0
    None

    my theory is that (don't quote me on this) the psp remote has one pin with current going out, and five waiting for current (there are only five buttons on the remote). when one gets current, it tells the psp what to do. so in other words, just wire power into the controller and make the different buttons do different things. I just thought of something! what if you had two psps, one with pikey installed, and one with irshell, you would be able to control one with the other (just use the keyboard to be used with pikey and teach irshell the keystrokes used for the different buttons, then use that one the other psp).

    0
    None
    butterflycookies

    9 years ago on Step 3

    i dident have a sodering gun so i used a lighter. big no no :[

    0
    None
    cboy2us

    9 years ago on Step 4

    I hope you used the stranded core cat5 cable. It would be hard to use the remote with a stiff cable. Good Instructable

    0
    None
    lopagof

    10 years ago on Introduction

    I am doing a similar mod with the ipod nano (1st gen) and I was wondering if It uses the same protocol (only through the dock connector). Any help is well appreciated!

    1 reply
    0
    None
    Senator Penguinlopagof

    Reply 10 years ago on Introduction

    It does use the same protocol, a long as you connect to the right pins. If you can solder to the tiny pins in the dock connector (they sell some over at SparkFun) it's definitely possible. It would certainly be a better connection than my kludged together RAM-chunk connector.