Introduction
This project describes my efforts of enabling the auxiliary input (aux-in) of a SONY car radio (type: xrc750), based on the GNUnilink schematics. Unfortunately, the project is not longer being maintained, and as I've heard some people experiencing difficulties (including myself) with getting the aux-in to work, I decided to write a small page about this dongle. You can order the assembled dongle, the parts, or just download the layout and the code to try and make the dongle yourself! More...
The current status of the project is temporarily on-hold. The first prototype has been succeeded by the second prototype in May, 2006, and has the following specifications:
The GNUnilink dongle:
* based on the schematic of the gnunilink website
* CPU: PIC16f628 running at 22.1184 Mhz
* serial RS232 communication, rates up to 115200 baud
* built-in PIC programmer, only high voltage programming (HVP)
* eight 3 mm LEDs for general display of PIC signals
* four I/O pins available trough sub-d 25p connector
* size: 110 mm x 55 mm, single-sided PCB
* power supply: 12V/100mA for normal operation (13V-16V for programming)
* based on the schematic of the gnunilink website
* CPU: PIC16f628 running at 22.1184 Mhz
* serial RS232 communication, rates up to 115200 baud
* built-in PIC programmer, only high voltage programming (HVP)
* eight 3 mm LEDs for general display of PIC signals
* four I/O pins available trough sub-d 25p connector
* size: 110 mm x 55 mm, single-sided PCB
* power supply: 12V/100mA for normal operation (13V-16V for programming)
This article describes how the prototypes evolved.
A simple experiment
I started with building the schematic from the gnunilink website on a simple breadboard. Unfortunately, with the corresponding assembly code it wasn't possible to connect to my headunit (car-radio) of the type XRC-750. De headunit beeped when it was turned out, to turn itself off automatically. That's why I decided to figure out how the assembly code is actually working.
Because the schematic has a PIC processor and unfortunately to possibilities for in circuit programming, a breadboard wasn't that suitable after all. When debugging the assembly for the PIC you would have to insert and extract it regularly. The leads for the various components were too close, so I took the opportunity to solder the schematic on an single island experiment pcb.
It got quite clear that the timing of the code wasn't optimal at all, perhaps because the PIC from the GNUnilink operated at 20 Mhz, while this frequency is very custom in serial communications. Because of this I overclocked the PIC processor to 22.1184 Mhz, leading to an neat integer divider of 192 to at the desired 115k bitrate. However, by adjusting the chrystal some of the timing routings had to be changed as well. Door het aanpassen van de source kon ik het track nummer terugzetten op 0, wat niet mogelijk was met een standaard CD-wisselaar. I kon ook de track time op een willekeurige waarde zetten.
In addition, I changed the device-string of a CD-changer to a MD-changer. That means that for my headunit, more and longer track and discnames are possible. Changing to a MD-changer also gave a better acceptance by the headunit. Unfortunately the device still turned itself off after 30 seconds. In the picture below the headunit scrolls the text 'Tweakers!Unilink Dongle' from right to left.
A number of debug sessions later, the dongle seemed to work with the original GNUnilink source code. Of course I still had the modified timing because of the slightly faster crystal, but it was enough reason for me to change the experimental setup to a newer prototype, that I needed to etch myself.
The first prototype
The first step in making the prototype involved getting a layout for the circuit. As I added some extra components, like LED's, an existing layout would be useless so I decided to make a new layout. As the schematic was still quite small and I didn't bother trying programs like eagle, I used a small bitmap editor (e.g. paintshop pro) for the job, resulting in a 600 dpi bitmap.
The bitmap was printed on the native resolution of my LED-printer, a 600 DPI OKI OL410ex, with the toner usage set to extra intensive, to get the darkest traces. After that I used the 'Transparent 200' spray to make the paper UV transparent, which makes the UV lighting process less critical when using plain paper. The exposure time has been set to somewhere about 2.30 minutes. Developing was done using simple NaOH.
After exposing the pcb and developing it, it is ready for the etching process. This was done in Fe3Cl (Ferro-3-chlorid), in a slightly heated solution to about 40 degrees celsius, using an air-pump to generate the bubbles. The etching process isn't very critical and takes about 10-15 minutes, depending on the quality of the etch fluid (mine was already over three years old!)
Next the print kan be rinsed with cold water and a cleaned the surface with a SENO polybloc, which is quite hard to get nowadays. This makes soldering more easy. Normally I also used liquid tin to prevent oxidation of the pcb, but as it's just a prototype I ommitted this step.
The last step is soldering the components to the PCB. Unfortunately, I ran out of sub-d connectors in the pcb mounted version, so this isn't visible on the picture.
The second prototype
The second prototype just recently came out. As opposed to the first protoype, this was made using Press-'n'-Peel blue and ironing the layout directly to the board. Although the ironing temperature is now the most critical step, this allows for a little finer trace width, as I still troubles getting 8-mil traces using UV exposure. The rest of the process is still the same.
This prototype now comes with an integrated PIC programmer, so that it shouldn't be necessary to remove the PIC when the firmware has been updated. In fact it should be possible to even program a completely different PIC in it. Unfortunately, at the moment, the project is current on-hold but I hope to be working on it soon.










