Step 6: Connections for Arduino development

Step 7: Some part sources

Note that I didn't use the specific capacitors & headers listed below in this instructable, so their appearance may vary slightly from the directions ...

Arduino boards are great for prototyping. However they get rather expensive when you have multiple concurrent projects or need lots of controller boards for a larger project. There are some great, cheaper alternatives (Boarduino, Freeduino) but the costs still add up when you need many of them.

This is a way, after about $25-$30 initial investment, to build sub-$10 Arduino-compatible boards with very little extra time investment on each.

Note that the basic idea here (Arduino on a breadboard) has been done for quite some time (e.g ITP Arduino Breadboard instructions); however the cable adapter build & usage instructions here help absolutely minimize the parts count for each core.

This project requires knowledge of soldering and basic electronics, and you should have at least some experience already with Arduino development. I don't suggest this as a first electronics project.

note: I pronounce uDuino "moo DWEE noh"

Added 02-05-08: (for pretty advanced folks) One of the tools I built with this is a logic capture tool -- kind of a basic logic analyzer. I developed this to troubleshoot communications links. Needs a gui interface, but doubt I'll get around to it any time soon. Still dang useful in the right hands.

Added 06-23-09: I'd like to point out the RBBB's from Modern Device for anyone who wants something with solder, but also super inexpensive -- especially if you get the bare boards and buy parts in bulk. Also their USB-BUB is a cheaper alternative to the FT232 cable.

If you already have an arduino and wish to use an ATMEGA 328 or 168 on a breadboard by itself, go to http://arduino.cc/en/Tutorial/ArduinoToBreadboard. You can use an arduino to not only load the bootloader, but also program the chip. If you already have an arduino this would be cheaper than buying or making an FTDI to usb device.

If you're concerned about your oscillator tolerances, you should be using crystal instead of ceramic. 0.5% tolerance is much better than the internal oscillator, but crystal has 0.001% tolerance, and the cost is about the same (70c'ish). Plus, the crystal kind are only two pins, which are way, way easier to install on solderless breadboard. You can run 20mhz as well if you want, the ATmega can handle it (that's it's peak rated speed). Your timing functions will need to be adjusted to compensate if you do run it that fast, though.

Main reason I picked a 3-pin ceramic resonator is because it won't need extra capacitors (in a breadboard there will probably be enough capacitance for it to work anyhow -- though if moved to prototyping board the circuit may well stop working). Ceramic resonators give less accuracy, it's true... though for solid serial communications they're absolutely fine across standard temperature ranges, which the internal oscillator isn't guaranteed to be. And they actually are a bit cheaper, though it's true the difference isn't a big deal for 1-offs. But totally agree if higher precision is needed that a crystal is a better choice.

You certainly can use an FTDI basic breakout -- from my understanding though, the DTR will work under Windows but not under OSX... in which case you'd have to just add a switch on the reset line (to ground) and manually reset when loading code, just like in the old days. It has been a while since I've tested DTR vs. RTS on Windows vs. OSX though. (And never played much with Arduino under Linux, so if that's your development platform... not sure).

thank you for the response. I am trying to build a Lilypad with theATMega 168.I am drawn to make one because it involves a minimum number ofparts and can be quite small. I make toys, so the smaller theelectronics the better. I was wondering if you could give me some clueson wire it and also how to bootload it. Since all the surface mountATMega 168 do not seam to come bootloaded already.

(note that you can find schematics & eagle pcb files for thestandard arduino boards on the arduino site).

For bootloading you'll need a programmer -- e.g. the USBtinyISP (fromAdaFruit) or the AVRISPmk II which you can get from e.g. mouser.com) --I prefer the mk II just because i've had reliability issues with thetinyUSB in certain situations. with current arduino software,loading the bootloader is easy, pretty much just hooking the programmerto the ICSP connector, powering the board and clicking the "burnbootloader" selection from the arduino software (under"Tools"). You'll have to select the board type beforeyou do so to make sure it gets the right bootloader.

I already have an arduino duemilanove, and i know you can pull the chip from the board and use it as is, so are the parts in step 4 the barebones stuff to simply run the board? I plan on programming my chips in my arduino and then placing them into a circuit.

Yep; that's the very basics. If you're doing pro-level stuff (art installations, etc) it's a good idea to do some more decoupling (.1 uf capacitors between RESET & GND, AVCC & GND and the second VCC line and GND) but for this kind of a minimal setup things will generally run fine without.

Try FCR16.0M6 for cheap & easy... Actually "resonator" is the more precise name for these guys; i'm a bit loose with the terms (and apologize for that) but "oscillator" is more specifically used for the parts that have a circuit for creating an output wave in addition to the crystal/resonator/etc... so you hook up power and they directly spit out clock pulses (or sine waves, etc). the AVR processors have most of this circuitry built in so you only need a crystal or a resonator (and in some cases -- though not with the part mentioned above, since it has them built in -- a few capacitors), rather than a whole external oscillator for your CPU clock.

Which bootloader did you put on the chip? (with 16mhz osc you need the diecimila or similar, not lilypad)... did you make sure to set the fuses correctly when you programmed the bootloader (making sure to use an external oscillator)? generally for 16mhz arduino hfuse should be 0xdd, lfuse 0xff, efuse 0x00. if you hook up an LED between pin 19 and ground (long lead to pin 19, short lead to ground) does it flash when you apply power / hook up the cable?

i got the chip from sparkfun already bootloaded for the external OSC. yes, i do get the blinking when i hook up the cable...and when i remove the jumper i dont ... so it seems as if things are working at least that far.

Can you verify that you've got the Diecimila selected in the "boards" selection under "tools"? Under windows, also see the next comment -- that apparently the auto-reset doesn't work by default -- you shouldn't have this problem under OSX though.

Duemilanove is selected as my board.....and since i have other arduino chips that i use... my "Set RTS On Close" is enabled. i have tested on a mac..no luck there either... i really appreciate your assistance!

got it working.... tried again after ordering another pre bootloaded chip and it worked great!!!! turns out there was an issue with the bootloader that was burned to the original chip i was testing.....

my uDuino works, but i missed the AUTO-RESET feature. when i will upload sketches: first time it works fine - later nothing is happen. the arduino IDE give me some error messages. i think the solution is: the FT232RL USB-TTL cable not provides the DTR-line (used by standard arduino for autoreset) but provides the RTS-line (green wire). for use the FT232RL USB-TTL programmingadapter with the uDuino set on the Device-Manager (for example WinXP) the following modification: / USB Serial Port (COM...) / Port Settings / Advanced Settings / ENABLE: Set RTS On Close that makes a short low impulse on the RESET-pin by starting upload sketches. AUTO-RESET works!!! uploading sketches works anytime!!! YAAAH Johannes

i just noticed a bit where u say to connect the resistor between pins 1 and 10 wen it should be 1 and 7? a typo methinks? ;) altho it does still work if ure not using an external osc or crystal., but its prolly not good :P

cool -- btw i would really like to get feedback from anyone who's built one to make sure that it all makes sense. and if anyone runs into any difficulty, i'd be happy to try to explain any hard parts and help get it working.