ArduinoISP Bootloader/Programmer Combination Shield
I started recently to get interested in building Arduino based robots. Since it is a traumatizing process to take any creation apart, I am opting to keep mine alive and kicking. To lower the cost of this strategy it seems obvious to switch from the arduino development board to selfbuilt arduinos – DIYduinos if you like – and keep the original arduino for what it is meant for… development. See for DIYduino examples the stripduino, the paperduino, the self-etched-arduino, the paperduino perfboard, the palm arduino, and the breadboarduino. There are more out there, I am sure. Just start looking. However, making the cheapest DIYduino requires buying ATMEGAs without bootloader. With those you need to load the bootloader and subsequently you can upload a sketch. This process can be done with a regular Arduino board and is described in a number of tutorials such as the ArduinoToBreadboard tutorial.
Here in this instructable, my first by the way, I am introducing you to a strip board arduino shield that allows you to load either (i) a bootloader or (ii) a sketch onto an ATMEGA using an Arduino board as the In-System Programmer (ISP) or as the USB to Serial interface, respectively. With this board all you need to do is set a few jumpers and temporarily remove the ATMEGAx28 from your original Arduino to switch from one to the other.
Step 1: What you need
The first picture shows all the parts that are needed for building the bootloader/programming shield:
1) Stripboard, 0.1″ hole distance
2) Quick connect IC socket
3) 10kOhm resistor
4 ) 5×2 & 1×3 Pin male/male connector with short/long legs, 0.1″ hole distance
5) 1×8 & 1×10 Pin male/male connector with long/long legs, 0.1″ hole distance (this may differ with the type of original arduino you are using)
6) 2 Cables with female/female connector
7) 2x 22pF Ceramic capacitor
8) 1x 16MHz oscillating quartz
9) 4x Jumper from for example an old motherboard
10) Jumper wires of various lengths
11) 1x ATMEGA328 or 168 to be programmed
The second picture shows the hardware that I used to put it all together.
1) Solder iron & solder
2) Carpet knife
3) Hand saw with skinny blade
4) File – not too coarse
5) Wire cutters
6) Fine tipped pliers
7) Sharpie Markers of different colors and pencil
8) Third Hand (made by following instructable by rstraugh …thanks)
9) Track Cutter (made by following instructable by scraptopower …much obliged)
10) Voltmeter with test leads
11) Paper printout of strip board pattern
12) Arduino with USB to serial chip (e.g. Arduino Uno) for uploading the bootloader or DIYduino and for subbing in as a USBtoSerial programmer for uploading a sketch
Step 2: Schematic
To create the strip board layout I first determined the schematic I wanted to create. You can essentially do a strip board design with any schematic no matter if you invented it, downloaded it, or re-engineered it. In my case I took the connection layout given in the ArduinoToBreadboard tutorial for both uploading the bootloader as well as uploading a sketch and combined them into one schematic adding a few switches. The result is shown in the figure. Note that the switches were realized using typical motherboard jumpers.
Bootloader configuration (as shown in figure):
S1 is closed (i.e. Pins 11, 12, and 13 are connected to the Atmega)
S2 is switched to Pin10
S3 is open (i.e. Rx and Tx are not connected to the ATMEGA).
Sketch upload configuration:
S1 is open(i.e. Pins 11, 12, and 13 are not connected)
S2 is switched to Reset
S3 is connecting Rx and Tx to the ATMEGA328
The schematic further shows the connections of +5V and ground (GND), the 16 MHz oscillating quartz (Q) and its 22pF ceramic capacitors (C1), the 10kOhm pull-up resistor (R), and of course the ATMEGA328.
For more detail: ArduinoISP Bootloader/Programmer Combination Shield