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.
Step 1: Collect Parts for the Cable Adapter
I suggest getting parts from a mixture of Mouser, Radio Shack and Ada Fruit Industries; see the last step for parts sources. Feel free though to substitute parts from your junk box, and with the resistor/capacitors you can deviate a ways from the values and still have things work well (resistor I’d suggest between about 3.3k and 20k; capacitors I’d generally not go for smaller values but larger up to about .47uF should be fine).
For the cable adapter you will need:
– small bit of PC board (8 holes by 2 holes)
– a .1uf capacitor
– a 1×8 .1″ spacing header, straight
– a 1×8 .1″ spacing header, right angle
– some connecting wire
Step 2: Make the programming cable adapter
Mostly the programming cable adapter only needs to route signals from the FTDI USB cable to the right pins on the ATmega168 chips; however the capacitor is added on one set of pins to allow the Arduino software to reset the chips (the capacitor allows a short pulse to pass over to the chip’s reset when the Arduino software flips the RTS pin).
To start, cut a piece of PC board with 9 holes by 2 holes. Then break off a set of 8 pins from the straight pin header strip, and a set of 8 pins from the right angle header strip (assuming you purchased the longer strips). See the parts picture to see what these should end up looking like.
Through the following steps please see both the attached photographs and diagrams for connecting up pins. The diagrams show much better where the connections need to go, but the photographs help to clarify board orientation, etc. If you have questions please mail me and I’ll try to clarify anything that doesn’t make sense.
Flip the PC board upside down so you can see the copper around the holes, with one of the long sides towards you. If, like I did here, you used a piece of PC board from the edge of the original, I suggest placing the side with the extra board material towards you.
Poke the bottom (short side) of the straight header through the holes farthest from you, leaving one hole empty on your left and solder the pins in place (see picture). Then poke the bottom (side with the bend) of the right-angle header through the holes closest to you, again leaving the hole on the left empty, and solder the pins in place.
Poke the .1uf capacitor’s leads through the empty holes on the left and solder the capacitor in place. Trim the leads. Then solder each of the 2 leads to the header pin closest to it; one will connect to the leftmost pin of the straight header, the other to the leftmost pin of the right angle header. The easiest is probably to just create a solder bridge (melt enough solder to flow between the capacitor pin and the pin next to it, like in the picture). If you need to you can use a short length of wire and solder it to each of the contacts.
Create another solder bridge or connection between the 6th and 7th pins closest to you (third and fourth from the right). This is to connect the “CTS” pin of the cable to ground.
And create another solder bridge/connection between the two headers at the second pin to the right (connect the pin closest to you to the one farther away, just one pin over from the right). This connects what will be the VCC USB power jumper to the chip’s VCC pin. This power connection will only be active when a jumper is installed.
Use a short length of wire to connect the rightmost closest-to-you pin to the fifth closest-to-you pin (it’s fifth whether counting from the right or the left). This will connect +5 volts from the USB cable to the other pin of the jumper connector.
Now connect another short length of wire between the rightmost pin in the row farthest from you to the 3rd from the right pin in the row closest to you. This connects the cable’s ground to the chip’s ground.
Two more short wires to add: one from the second-from-the-left pin on the right angle header to the third-from-the-left pin on the straight header (note: since the leftmost holes have the capacitor installed in them, it will be the third-from-the-left hole closest to you to the fourth-from-the-left hole in the row farthest from you).
Second short wire will cross right over the first: from the third-from-the-left pin on the right angle header to the second-from-the-left pin on the straight header (fourth-from-the-left hole to third-from-the-left hole).
These wires connect the TX and RX pins of the cable to those of the chip. Unfortunately the ordering is opposite on the cable from the chip, which is why we need to have the crossed over wires.
Now you just need to plug the FTDI FT232RL cable in, with the green wire connected to the pin to the farthest left (the black wire will connect to the third pin from the right). The remaining two pins on the right are for a jumper; if the jumper is installed, the board will be powered from the USB cable, eliminating the need for batteries or a power supply. This jumper MUST NOT be connected when other power is connected to the board or damage to something (board, cable, computer) is possible.
That’s it! You’re ready to make some uDuino cores to program with the cable. (When using the programming adapter, the pin next to the capacitor connects to pin 1 of the chip)
Step 3: Decide whether to make absolutely minimal boards, or external-oscillator based boards
The decision of whether to build an oscillator based board is based around a few things. One, do you have access to an AVR programmer and the time to program a special bootloader onto your ATmega168 chips? two, can you do without accurate serial communication with the chip? three, is your application low enough impact that the board can run half as fast and everything will still work fine?
ATmega168 chips have an internal oscillator which can be enabled; it runs at about 8mHz, which is half the speed of most Arduino boards (with the exception of Lilypads). The internal oscillator is guaranteed to be calibrated to within 10% (which is not tight enough tolerance for guaranteed good serial communications). In my experience, the factory calibration at 5v has always been fine for uploading programs, but YMMV. I wouldn’t use the internal oscillator for Important Things Which Need To Speak Serial, however. For blinkylights it should be just fine though.
For more detail: uDuino: Very Low Cost Arduino Compatible Development Board