====== SpiffChorder hardware ======
The image below shows the schematics for the SpiffChorder hardware. The interface to the USB connection is handled with a few passive components. Since the USB communication is handled by bit-banging in the software, an accurate clock source is needed. A 12.000 MHz crystal provides this. Since the beginning of the SpiffChorder project, the AVR USB stack has been expanded to also work at 16 MHz and 16.5 MHz, but this has not been tested with the SpiffChorder.
{{spiffchorder:chorder.png?500|SpiffChorder hardware schematics (click for larger version)}}
===== Bill of Materials (Digikey) =====
Below is a list of the components needed to build the SpiffChorder.
^reference^description^digikey part number^
|C1, C2|22pF ceramic capacitor.|490-3709-ND|
|C3, C5|100nF ceramic capacitor (decoupling).|399-4328-ND|
|C4|10uF electrolytic capacitor, min. 10V.|493-1767-ND|
|CON1|2x3 pin header, e.g. shrouded header from Harting.|
|CON2|USB connector, alternatively cable with type-A plug.|
|CON3|Connection to switches. Can be wired directly.|
|CON4|Connection to LEDs. Optional.|
|D1, D2|3.6V zener-diode.|1N5227BDICT-ND|
|IC1|Atmel ATmega168.|ATMEGA168-20PU-ND((With a slight change in the makefile you can still use the atmega8 digikey part number ATMEGA8-16PU-ND. There are two Makefile changes that need to be made when you compile the code. These changes as well as a working hex file for the ATmega8 are at: [[.:using_the_atmega8]]. Both chips are also available from the nice folks at tuxgraphics, they are at http://shop.tuxgraphics.org/electronic/eth.html?id=1e4a62))|
| |28 pin socket for IC1|ED90054-ND|
|R1|2.2 kOhm resistor.|OD222JE-ND|
|R2|4.7 kOhm resistor.|OD472JE-ND|
|R3, R4|82 Ohm resistor.|OD820JE-ND|
|R5-R7|LED current limiting resistors. About 1 kOhm, depending on selected LEDs.|
|R8-R18|Optional pull-up resistors. 10 kOhm or 4.7 kOhm.|4610X-1-103LF-ND|
|X1|12.000 MHz crystal.|XC1380-ND|
| |key switches|CH196-ND or CH198-ND((I have used the Cherry MX series for years, see http://www.cherrycorp.com/english/switches/key/pdf/keyswitch_cat.pdf))|
| |key caps at [[http://www.wasdkeyboards.com/index.php/products/blank-keycap-singles.html|WASD Keyboards]]((Thanks to Kevin Wang for telling me about WASD))|Not available from digikey |
===== Bill of Materials (Conrad) =====
For residents in Europe, European based Conrad may be a better choice than the US based Digikey. This will save, in most countries (?) quite some shipping costs (and the environmental damage that goes with shipping over long distances). Some important remarks:
* The following list is based on an order placed with the **Dutch site** of Conrad, but after a short (and thus inconclusive) experiment it seems that it is the same for any Conrad site after you **omit the '- 89' suffix**.
* WARNING: the Atmel ATmega168 controller is only available in the tiny TQFP (and not DIP) format from Conrad, this requires a steady hand during soldering, and an adapter if you want to mount it on a universal PCB ((on youtube there are some fine instruction video's of how to do it)).
^reference^description^Conrad part number^
|C1, C2|18pF ceramic capacitor.|457159 - 89|
|C3, C5|100nF ceramic capacitor (decoupling).|453099 - 89|
|C4|10uF electrolytic capacitor, min. 11V.|468231 - 89|
|CON1|2x3 pin header, e.g. shrouded header from Harting.|
|CON2|USB connector, alternatively cable with type-A plug.|
|CON3|Connection to switches. Can be wired directly.|
|CON4|Connection to LEDs. Optional.|
|D1, D2|3.6V zener-diode.|180050 - 89|
|IC1|Atmel ATmega168 (Warning: TQFP).|154885 - 89|
| |28 pin socket for IC1((useless with TQFP package))|189515 - 89|
|R1|2.2 kOhm resistor.|405299 - 89|
|R2|4.7 kOhm resistor.|405337 - 89|
|R3, R4|82 Ohm resistor.|405124 - 89|
|R5-R7|LED current limiting resistors. About 1 kOhm, depending on selected LEDs.|
|R8-R18|Optional pull-up resistors. 10 kOhm or 4.7 kOhm.|to be added|
|X1|12.000 MHz crystal.|155256 - 89|
| |key switches|706892 - 89|
| |key caps|707023-89|
===== Notes =====
* C1 and C2 should ideally match the load capacitance Cl of the crystal X1. If Cl is not known, 22pF for C1 and C2 seems to work.
* CON1 is for in-system programming. If a socket is used for the ATmega168, this is not needed. Work is being done to test the boot-loader on ATmega168. The boot loader needs to be installed in the ATmega8 before it is soldered in place (unless the CON1 connector is mounted).
* CON2 is a USB connector. Use either a type-B receptacle, in combination with a USB type-A to type-B cable. Or find a USB cable with a type-A plug in one end, and cut off the other end. The schematics show the standard colors for the USB connections.
* CON3 is for connecting the switches. A connector is not needed, as the switches can be wired directly. Each switch should connect one of the inputs to ground when pressed. In other words a normally open (NO) type switch should be used.
* CON4 provides the connection to 3 status LEDs. These show the current mode of the SpiffChorder, and are therefore optional. Again the LEDs can be wired directly, no connector is needed. If the LEDs are not mounted, the current limiting resistors R5-R7 can be omitted as well.
* IC1 is the ATmega168. The schematics show the pin-numbering for the P version (DIL package). If using the SMD version, use the pin-names instead. The ATmega168V should not be used, as it does not support running at 12MHz. I have used ATmega168-20PI, but the older non-ROHS compatible ATmega168-20PU will also work.
* R5-R7 are current limiting resistors for the (optional) LEDs. The value of these depend on how bright the LEDs should be, and the voltage drop across the LED. For newer LEDs, a value of 1 kOhm seems to give plenty of light, but you can go as low as 220 Ohm, resulting in about 20 mA current through each LED. Note that this is a considerable amount of current compared to the rest of the SpiffChorder.
* R8-R18 are optional pull-up resistors. These should only be needed if the wires between the microcontroller and the switches are excessively long. A value of 10 kOhm or 4.7 kOhm should work, but remember that the lower the value, the greater the current consumption when the switch is pressed. Also, if not all switches are connected, some of the resistors can be left out in any case.
===== Sample Layouts =====
There are a wide number of ways to layout the circuit. A few samples are available on our [[sample_layout]] page.