Poor Man’s Breadboard Arduino

I’ve burnt out a few Arduinos recently, and have found it expedient to just build my own on a breadboard rather than pay $34.95 and buy an Arduino Duemilanove online. It’s cheaper ($7.40, without FTDI or breadboard, SparkFun), and easy to fix if something goes wrong. Note that this tutorial does NOT include a voltage regulator, power will come from the FTDI board.

Parts List (minimum, of course):

  • 170 tie point breadboard ($3.95)
  • ATMega328P w/ Arduino Bootloader ($5.50)
  • 16mhz resonator ($0.95)
  • 10 kOhm resistor ($0.25)
  • 100uF Capacitor ($0.35)
  • SparkFun 5v FTDI Breakout ($14.95)
  • Assorted wires ($0.00, you can pull them from anything)
  • [optional] LED, for pin 13. ($0.35)

All prices are from SparkFun, which is NOT the cheapest. Note that the capacitor and the SparkFun FTDI can be reused across many boards, and thus the costs is divided among all the boards you build.

Step One

Put the ATMega328 in the breadboard, with the little semicircular cutout facing one end of the breadboard.

Step Two

Put the resonator in the breadboard in the remaining three pins under the ATMega328, direction doesn’t matter.

Step Three

Wire up the power as shown. The green wire is +5v, the blue one is GND. They are supposed to cross, yes.

Step Four

Wire the resonator to the two XTAL pins, the GND pin of the resonator should go the GND. See picture.

Step Five

Put the 10kOhm resistor between +5v and the upper-left pin on the ATMega328 (reset). This will pull it high, and keep it from resetting itself.

Step Six

Add the LED between GND and the pin two spaces after GND, see picture. The shorter lead of the LED (-) goes to GND. You will be able to activate this LED by pulling Arduino Pin 13 HIGH.

Step Seven

Connect the FTDI serial board. The capacitor is electrolytic, put the negative lead toward the FTDI and the positive lead toward the RESET pin. RxD on the FTDI goes to Tx on the Arduino, and TxD on the FTDI goes to Rx on the arduino (flipped). +5v and GND go where expected.

Read this:


Program your board.


26 Responses to “Poor Man’s Breadboard Arduino”

  1. Casey O'Donnell

    thanks very helpful. i find that the picture on step six was the most useful to me because it is very clear on the wiring.

  2. is it possible to use a crystal in this set up? maybe with a couple caps? plus isnt it possible to use an arduino as an ftdi board by uploading a blank sketch?

    • If you use a crystal ya you just need more pats. The regular Arduino can be used as an FTDI Because it has a usb -> serial converter on the board. This one just has TTL coming out of the atmega if you don’t hook up the FTDI.

      • If I do not use a 16Mhz cristal…. why and what other parts do i need?, thank you, nice photos also

        • With just the atmega chip instead of the full commercial basic arduino board you will need another chip to do the ttl to usb that the ftdi does.

  3. Charlie R Chisholm

    Have you run into that pesky “stk500_getsync() not in sync resp=0x00”? I have tried everything and tried every 328 board in the Arduino software, checked the comm port, and evey tried a few different 328 chips with no success. Driving me crazy.

    • Robert Ying

      Yes, I’ve run into it before–usually the first thing to check is the capacitor between DTR and reset. This error means that avrdude couldn’t communicate with the bootloader, so manually resetting should work even without auto-reset.

  4. thanks for the useful info.

    I was wondering if the +5V to pin 21 (AREF), should actually be connected to pin20 AVcc? The circuit may work as shown, until you need to use the analogue ports, when power needs to be supplied to AVcc, although I think there is a recommendaton to power AVcc even if not using the analogue ports!

    • Robert Ying

      AREF should be connected to +5v if you plan to use the analog ports, yes, otherwise your readings will be off. You can also configure the ATMega328P to use its internal voltage reference, if you’d like.

  5. Dru Jensen

    Very simple setup!

    I agree with spanner888, you should connect the +5V to pin20 not pin21. pin21 AREF is only used for a reference voltage on the analog ports. It’s also recommended to add a filter to the AVcc if you want to avoid noise from the digital Vcc side.

  6. Norman Elliott

    Great tutorial, thanks.
    I pulled the 328 from my Uno and plugged a zif socket into the onboard socket. I can then buy a chip with bootloader on it, program it in place with all I need for my project on breadboard. When it works as I want I can build my circuit on vero board or whatever I want without needing the FTDI board.

  7. Johnathan

    This circuit isn’t wired correctly. The green wire should go to pin 20, not pin 21, and pin 21 can be left unconnected because by default the chip does not use the external AREF.

  8. Hey guys many thanks. That 10uF Electrolytic Cap made all the difference to get ATMEGA 328p with UNO bootloader working. The uploading of the sketches worked successfully.
    Here is blink program working. Also tried with other programs.

  9. I can`t get the led to blink, even the sketch has been uploaded successfully (multiple times).
    Exactly same setup as described and pictured here.
    If the atmega was defective, i wouldn`t be able to upload the schetch, right?

    • Don Romeo

      The led wiring is incorrect in the photo, it is connected to pin 12 instead of pin 13.
      Note that digital pin 13 is leg 19 of the atmega, i.e. the 5th pin from right.

      Alternativelly, you can change the blink sketch to pin 12.

  10. Mike Blake

    Also it would be wise to have a current limiting resistor for the LED.

  11. Mayank

    Hey, great tutorial.
    I’m trying to make an arduino on breadboard setup, except I am more or less following:

    I’ve burnt the bootloader successfully but I can’t upload sketches and I end up getting “avrdude: stk500_getsync(): not in sync: resp=0x00”

    I’m uploading the code through my Arduino board using its onboard FTDI chip, the breadboard-duino is a Duemilanove 328P, the board one is an Uno, ( I do disconnect the Atmega chip on the arduino board before trying to upload sketches), any help??

  12. ashutosh

    any substitution for 5v FTDI Breakout? if no where else can I buy it from?

    • Robert Ying

      You can use any TTL serial port. A standard RS232 port will need level translation to work, and if the flow control pins are not broken out, you will need to manually reset the microcontroller on programming to run the bootloader.


Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>