Creating your own Arduino PCB


I've been prototyping w/ an Arduino Fio for a while and after printing an extra circuit board and soldering those pins onto the Fio, I've decided the best way to make a finished project is to download the schematic, modify it to add the parts I need, and then have the new board printed and assembled. I'm doing this instead of building a board from scratch because I'm a new to Eagle CAD and designing boards and I need the XBEE to keep working and it's harder to break stuff that's already working than build from scratch.

My questions are: 1) has anyone done this before and posted their stripped-down version? 2) after i receive the board, how do I put a bootloader on, or do I need to (i.e. is there another way using the FTDI cable?) 3) What parts can be eliminated? For example, do I need the 6-pin ICSP pins that's I've never used till now? Ideally, I'd just like the battery connector, voltage regulator, XBEE module, ATMega, and some way to load sketches onto the board.

Thanks! Don

Yes, I've done just that, if you search for "1284 eval", click the first link that opens, and then wade thru a few pages, you can see my design that started as duemilanove - and then went the other direction, getting a bigger processor and more parts added.

Minimally you need a 16 MHz crystal, two 22 pf caps, 4 100nF caps, 10K resister. All can be picked up really inexpensively from You can run from 3 AAA/AA/C/D batteries or 3.7V LiPo battery and skip the regulator, fuse, diode, reset switch, all the LEDs. etc. Look around, you can find triple battery holders at many places, such as or with switch! Don't forget to add the free Elektor magazine too (coupon code ELEKTOR0611 - try other months too - ELEKTOR0111, 0211, etc., if they have them the only cost is shipping)

The ICSP pins all go to regular shield pins, if you provide access to those pins somehow (MOSI, MISO, SCK, Reset, +5, GND) then a bootloader card can be attached for burning a bootloader (or sketches). I use the $14 AVR ISP bootloader from, just had to download its windows drivers (link is on the page) and add two lines to programmers.txt for it to work.

Here's a link to the mega thread Bob mentioned,61126.0.html

Get a cup of coffee first though, at 24 pages you'll be reading for a while :)


Yes, but its very interesting reading XD

If you use the DIP packaged 328 or 168 (use an IC socket!) then you can program it on a normal Arduino - if using the TQFP package then provide the ICSP headers so you can program it in-situ using another Arduino.

To reduce the parts list you can replace crystal and 22pF caps by a 3-pin ceramic resonator if quartz accuracy not needed.

that's exactly what I needed - you guys rock

Ok- I thought I had it but I'm actually a little confused and that 24 page doc is a bit scattered.

I'm specifically looking at moding the Arduino FIO since I need a compact, xbee-compatible board. Sketches are uploaded to the board by connecting a USB FTDI cable to the GND, AREF, 3V3, RXI, TX0 and DTR pins, not the ICSP (MISO, etc) pins. SO... do I still need to keep the ICSP pin connections (MISO SCK RST MOSI etc) around? And if so... out of curiosity, is that just so I can initially load the bootloader onto the ATMega chip- afterwhich I'll resume loading sketches via FTDI as before?

Ideally, I'd like to strip the FIO down to... battery connector, vreg (I'm using 3 LiPos since I'm also wiring it 12V LEDs... maybe I need a better vreg too haha), and ATMeg chip.

Thanks for helping finish this up... it's been pretty fun learning Eagle... especially when you're at least starting w/ a board that already works.

is that just so I can initially load the bootloader onto the ATMega chip-

Looks like it. If you also plan to use the AU version of the chip you would have to do the same. The FIO has an ISP header although it's just not normally loaded by the look of it.

Somehow you have to get a bootloader into the processor, so unless you can get them pre-programmed before you solder them on (you can with the DIP version) you have to provide some way of programming it yourself.

It doesn't have to be a full 6-pin ISP header, just a few pads on the edge of the board can work.

I'd say with the FIO they connect to the 6 ISP pads with pogo pins, just hold the board on the pins and program.


If you have an arduino that has a bootloader on it, you can use that to burn the one on the PCB. (Note: I think there is an issue using the 328 to burn to the mega. But 328 to 328 should work fine)

Using this method, instead of using a second Arduino as the target, you would use your custom board and simply provide the connections from terminals on your custom board (Target) to your working Arduino (Used as Programmer)