Introduction: Small Footprint ATMega328P Board
For my Word Clock project, for which I built a custom 8 x 8 LED Matrix with controller, I needed a much smaller footprint DIY-Duino (board for an ATMega328P microprocessor), one that would have all of the main functionality of my previous DIY-Duino boards (such as the Arduino Uno I2C Master board). As I'm not going to include I2C in the Word Clock, I can get rid of that without compromising the board and secondly, I can add an ICSP sub-board without it taking up any space in the clock.
So, that's it, the design brief. A smaller custom Arduino that can be served by an add-on ICSP sub-board to make programming the microprocessor easy.
• 1 x ATMega328P
• 2 x 10 uF Electrolytic Capacitors
• 2 x 0.01 uF Ceramic Capacitors
• 1 x LM7805 Voltage Regulator
• 1 x 16 MHz Crystal
• 1 x Tactile Momentary SPST switch
• 1 x 1K ohm resistor
• 1 x 28 pin DIL socket
• 2 x 6 pin female headers
• 2 x 8 pin female headers
• 1 x 30 mm x 62 mm PCB (Single Sided)
• 4 x 3 pin male headers
• 1 x 6 pin male headers
• 1 x 27 mm x 48 mm PCB (Single Sided)
I had made the board with connection for my USB Serial Adapter, but that doesn't seem to work ... here are the parts if you are interested.
• 1 x 6 pin male headers
• 1 x 0.01 uF ceramic capacitor
Well, it turns out that the reason that the USB Serial Adapter connection didn't work is that my Freetronics USB Serial Adapter is fried. So, it wasn't my ICSP Sub-board that wasn't working.
Step 1: Barebones Arduino No FTDI
I started with the Barebones Arduino Breadboard - No FTDI that comes with Fritzing and did some tinkering as I noticed that, for one thing, the 10 uF capacitors were around the wrong way. Next, I moved parts around a little and made some changes to the layout and traces.
Normally, I don't bother with the reset button ... I decided to keep the button "in" for this project.
As there is very little space on the board for labels, I made up two small labels in MS-Word for the pins and glued them directly onto the female pin headers.
As usual, solder the lower parts first, resistors, crystal, ceramic capacitors and then the taller parts, electrolytic capacitors, DIL socket, female headers, power socket and then the LM7805.
Once these are in place, the two jumpers are connected between the switch and reset (pin 1) and between pins 8 and 22 (GND).
At this point, you should get out your multimeter and test trace continuity across the board and then, with the power connected (but without the ATMega328P chip installed) test the functionality of the voltage regulator. When you've tested the board and it is all OK ... put the ATMega328P chip into the socket.
Step 2: ICSP Sub-board
This is a very simple sub-board that is used to upload sketches onto your ATMega328P and is removable so that it doesn't take up valuable real-estate in your enclosure.
The sub-board simply connects the ICSP pins to the ATMega328P.
There are a couple of ways to arrange the connections of the ICSP pins to their corresponding Arduino pins, all of them require jumpers for a single sided board. On my design, there are two jumpers, 1 for MISO and one for SCK.
The header pins used for interconnecting the sub-board to the main board are done by pushing the plastic header block all the way up the pin so that they are at the top. Under the plastic header is a u-shaped channel that is usually flush to the board. The pins are then inserted into the holes in the board and soldered from the copper side. You want to make sure that you don't end up with solder going up the pin, otherwise you won't be able to insert the pin into the female socket. If you do end up with some solder going up the pin, use some copper braid to remove it and a small file.
Step 3: Putting It All Together
The boards fit very snugly together with the front edge of the sub-board hard up against the LM7805. If you aren't going to use the USB Serial Adapter, you can trim the board so that it fits a little easier (without touching).
The sub-board is connected with the two 3 pin blocks at the top left, the 1st pin connection on the board is RESET. The single 6 pin block should be at the bottom right.
With the chip in place, the sub-board should just make contact with the ATMega328P, don't worry, there isn't anything that can short there!
Connect your favorite ICSP programmer and you are away.
Apart from the lack of USB Serial Adapter connection, I am pretty happy with the small footprint board with it's ICSP sub-board.
Next ... it'll be connecting the control switches and the Real Time Clock module to the smaller 'Duino board and I'll be playing with my clock.