loading
Picture of Build your own Arduino - Bare Bone System
I’ve read through a lot of tutorials online to make an Arduino Clone on a breadboard, and some of them are great, but none of them really seem to have it all, so I’m going to attempt to bring it all together here and provide a tutorial with schematics, breadboard photos, Bill of Materials, and descriptions of all the materials.

I’m going to provide the schematic for the system I am building here along with breadboard photos as it is constructed. You can also refer to the Standalone Arduino Tutorial on their website for breadboard photos and more explanations. (http://arduino.cc/en/Main/Standalone)

My Recommendation:

Before you attempt to make your own, buy one.  Its much easier to troubleshoot this when you know how it works and whats going on. If you buy one or even just borrow one and have a chance to play with it, load some programs, test it all out, it will be a lot easier to troubleshoot what is wrong when you start building it.
 
Remove these adsRemove these ads by Signing Up

Step 1: What's Needed

Picture of What's Needed
The following is a list of all materials needed for this tutorial.  The next step will go into more depth of each component, what’s necessary, and what can be changed. 

***NOTE*** : BOM stands for Bill Of Materials.  This is simply a detailed list of each item that is needed, the quantity, price, etc to catalog all the necessary information.

Components (included in BOM):

1. 1 x LM1117T-3.3/NOPB Voltage Regulator (3.3V)
2. 1 x LM7805CT Voltage Regulator (5V)
3. 1 x LED RED
4. 1 x LED GREEN
5. 2 x 220 Ohm resistor
6. 1 x 10k Ohm resistor
7. 4 x 10 uF capacitor
8. 2 x 22 pF capacitor
9. 1 x 16 MHz clock crystal
10. 1 x Atmel ATmega328P-PU AVR microcontroller WITH ARDUINO BOOTLOADER
11. 1 x 28 Contact DIP Socket
12. 1 x 9 Volt Battery Connector
13. 1 x 9 Volt Battery

Also needed (not included in BOM):

14. 22 AWG wire
15. 5 Pin Header
16. 1 x small momentary normally open ("off") button
17. 1 x FTDI FT232 USB Breakout board
18. Breadboard (prototyping board)

Step 2: The Components

Picture of The Components
Each component will be subject for some personal adjustments.  There are some basic parameters that you will need to meet for each one, but there are also things that can be changed depending on your liking or requirements.  I will now go into detail of each component and explain what is required for the system, what may not be required, and what parameters you need to watch for.  When adjusting any of the components watch the original specs for them and take a look at the data sheets to compare components.  The data sheets can easily be found on the Newark website.  Follow the link to the product page in the BOM and look for the "Technical Data Sheet" pdf.

LM1117T-3.3/NOPB Voltage Regulator (3.3V)
This component is a voltage regulator that converts 5 Volts into 3.3 Volts.  This voltage regulator is not required.  I’m placing it into my system for components that may require 3.3 Volts power later down the road.  You can choose if you need it or not based on your requirements.  If you are not using this you can also remove two of the 10 uF capacitors from the BOM.

LM7805CT Voltage Regulator (5V)
This component is a voltage regulator that will convert 10 Volts (or out 9 Volt power) to 5 Volts.  This will power any components that require 5 Volts power along with our entire board.  This Regulator is necessary for this tutorial.  The CT on the product id is not important, just that it is an LM7805 Voltage Regulator.

LED RED
This will be an indication LED for power.  You can choose any standard LED you would like, aim to have the forward operating voltage around 2.2 Volts, but it will really work as long as it is under 5 Volts.

LED GREEN
This will be another indication LED.  You can choose any standard LED you would like, aim to have the forward operating voltage around 2.2 Volts, but it will really work as long as it is under 5 Volts.

220 Ohm resistor
These will be used to limit the current to the LED’s.  Not much to explain.  Just get ¼ Watt 220 Ohm Resistors.

10k Ohm resistor
This resistor will be used for the reset button.  Not much to explain here either.  Just get a ¼ Watt 10 kOhm Resistor

10 uF capacitor
These capacitors are going to be used in the power section of our board.  They are used to condition the input and output power to each of the Voltage Regulators.  The system would probably still work without them, but it is highly recommended you used them.  Just need any 10 uF electrolytic capacitor that is rated for 10 Volts or higher.  If you are NOT using the 3.3 Voltage Regulator you only need to purchase 2 of these.  (2 for each Voltage Regulator)

22 pF capacitor
These are used for the timing system.  They are required for it to operate correctly.  You should get two ceramic 22 pF capacitors.

16 MHz clock crystal
This is the main component to the timing system.  It is required for the processor to operate correctly with the Arduino programmer.  You can purchase any standard 16 Mhz clock crystal with two pins.

Atmel ATmega328P-PU AVR microcontroller WITH ARDUINO BOOTLOADER
This is the main part to our system, the microcontroller.  The ATmega328 is the same chip used in the Arduino UNO.  In the BOM I have added the ATmega328P-PU with Arduino Bootloader Pre-loaded.  This means you will be able to wire it up and program it with the Arduino software without needing any extra special equipment.  If you would like, you can purchase a blank ATmega328P-PU, but you will then need to use an ISP programmer to load the Arduino Bootloader.  I will cover this more later.

28 Contact DIP Socket
This is simply a holder for the ATmega328 chip.  It is only really necessary if you plan on soldering the chip onto a board.  If you plan to use the chip on a breadboard only where soldering will not be done, then you do not need this part.

9 Volt Battery Connector
Any type of 9 Volt battery connector will work.  I have chosen a simple connector with wire leads in the BOM.

9 Volt Battery
Any 9 Volt battery will work.  I chose mine based off price at the purchase time.

22 AWG wire
This was excluded from the BOM because I had some already.  Any type of testing or prototyping wire should work.  You can either purchase it online with your order or at a local hobby shop if you don’t have any around

5 Pin Headers
This is needed to connect the FTDI breakout board.  We will be setting up our board so there will be 5 pins sticking out of the board where we can make the connection and quickly program.  Any form of header pins or wires that will make the connection will work.  Just pick something easy for you.

Small momentary normally open ("off") button
This was excluded from the BOM because I had a bunch lying around.  You can really choose any switch you would like as long as it is a MOMENTARY switch that is NORMALLY OPEN or OFF.  You can see the one I chose in the photos later.

FTDI FT232 USB Breakout board
You will need an FTDI Connector to program the Arduino.  I recommend just purchasing it from Sparkfun.com.  They have quality equipment for not so bad prices.  Search FTDI on their website and just make sure you purchase the 5 Volt version.

Breadboard (prototyping board)
Any standard breakout board or prototyping board you would like to use works.  Just something for us to test and troubleshoot on.


Again, you can choose to adjust or leave out any materials you’d like, but if you don’t know exactly what you are doing, I would recommend just purchasing the exact BOM.  When I made this purchase the total cost for all my parts was only $10, so it isn’t bad to just make the same purchase.

Step 3: Getting the Components

Here I am posting two files for purchasing the components.  The first item is a Bill Of Materials Excel sheet that contains each item, the quantity needed, the price of each, and a link to Newark.com’s product.  This is good to use when making your purchase.  You can review each part, the cost, how many you need, and quickly access the part online. 
The next item is a CSV file for Newark.com.  If you are happy with the list of items I chose, you can go to Newark.com and simply upload the CSV file to instantly have all the parts added to your cart. 

Remember you can make any adjustments to the components you would like, but for reference, these are the components I am using in my tutorial.

You can also purchase the parts from any manufacturer you’d like.  I like using Newark Element 14, and I was able to find all the components I needed on their site, but feel free to put together your own cart with any other manufacturer.  The items marked as 0 in the quantity column are items that you need but I already had, so I didn’t purchase it.

Also keep in mind the prices of the parts make change over time.  You can see in the Notes section which parts were on sale when I purchased them.  The prices should stay relatively the same, but don’t be alarmed if my prices on the BOM are different than the ones you are finding.

Step 4: Schematic

Picture of Schematic
pinmapping.png

This schematic contains all of the parts listed above. Some of them are abbreviated or symbolized differently, just look at the values and names on them to determine which part is which. If you are using a breadboard you can use this schematic as reference for each pin connection.

I would recommend opening the image in another tab of your browser so you can refer to it easily

Also, i have attached a pin mapping illustration for both the Atmega328 pins and their corresponding Arduino pins. Be careful while wiring to which pins are being referred to. Most of the time I will be referring to the Atmega328 Pin numbers.

EDIT: I've added the eagle schematic here

Step 5: Assembling the Board -€“ Part 1 -€“ Power

Picture of Assembling the Board -€“ Part 1 -€“ Power
powerledschematic.JPG
IMG_6734.JPG
IMG_6735.JPG
IMG_6737.JPG

The first part to assembling the board will be the power section.

Take your LM7805 Voltage Regulator and place it somewhere at the top of your bread board similar to how it’s shown in the photo. When the regulator is facing you, the left pin is the input, the right pin is the output, and the center pin is the ground. Connect your 9 Volt battery connector to the input and ground. Then place a 10 uF capacitor between the input and ground and another between the output and ground.

Next place a 220 Ohm resistor plus the Red LED between the output and ground of the regulator. This is our power indication LED. Make sure the pin where the resistor and LED are connected is separate from any other pins we’ve used so far. The Resistor LED should be one path from the 5 volt output to ground and the short pin of the LED should be going to ground. Next you can connect the 5 volt output and ground to the rails on your breadboard. This will allow us to tap into the power and ground from the entire length of the breadboard.

That’s it for the 5 Volt power. For the 3.3 Volt power (if you chose to use it) simply follow the same guidelines as for the 5 volt power except for the following: It isn't shown on the schematics, but follows the same format, so you should be able to replicate it easily. THE PINS ARE DIFFERENT. Please review the datasheet for the pinout. The input to the 3.3 Volt Regulator will be the output of the 5 Volt regulator, you do not need an indication LED unless you would like one, and do not attach the output of the 3.3 volt regulator to the same rails the 5 volt regulator is attached to. I would just leave it in a small section on the other side of the breadboard for tapping into when needed.

Step 6: Assembling the Board -€“ Part 2 -€“ The Chip

Picture of Assembling the Board -€“ Part 2 -€“ The Chip
IMG_6742.JPG

We will now be placing the main chip on the board.

Check out the photos.

Place the chip over one of the channels on the board so that the pins are not short-circuited with the other side’s pins.

Now set up the power to the chip. Please note these are the ATmega328 Pin numbers, they do not correspond directly to the Arduino Pins. Refer to the illustration for the Atmega328 Pin-out labeling. There are two places where you need to connect both power and ground, and if you set up the rails on both sides of your breadboard this will be very easy. You will need to connect power to pins 7 and 20 and ground to pins 8 and 22.

That’s it for powering the actual chip. Before turning on the power, make sure these connections are correct. If you switch them by accident you will burn the chip out and need to buy a new one.

Step 7: Assembling the Board -€“ Part 3 -€“ The Clock

Picture of Assembling the Board -€“ Part 3 -€“ The Clock
IMG_6741.JPG
IMG_6742.JPG
IMG_6745.JPG

We will now set up the Clock Crystal for the chip. This can look a little complicated, but it’s easier than it looks.

The pins for the crystal are pins 9 and 10.

First connect the crystal between these two pins.

Then take the 22 pF ceramic capacitors and connect one from each pin to ground. The easiest way to do this is to simply connect from the channel the pin is on, to the ground rail along the side. Take a look at the photos to see how I did this.

That’s it for the clock, if your timing seems to be off when running programs come back to this and make sure you connected it correctly and used the correct capacitors.

Step 8: Assembling the Board -€“ Part 4 -€“ The Reset Button

Picture of Assembling the Board -€“ Part 4 -€“ The Reset Button
IMG_6738.JPG
IMG_6739.JPG

This will be the reset button for resetting the program on your board.

Place the switch (mine has 4 pins) across the same channel your chip is over top of. Connect a resistor between the 5 volt power and the top left pin of your switch. Then connect the same top left pin of your switch to pin 1 of your chip (the reset pin). Then connect the bottom left pin of the switch to ground.

This setup will allow you to reset your program by momentarily pressing the button. If your program doesn’t seem to be starting up, this may be one spot to check.

Step 9: Assembling the Board -€“ Part 5 -€“ The FTDI Header

Picture of Assembling the Board -€“ Part 5 -€“ The FTDI Header
IMG_6743.JPG
IMG_6744.JPG
IMG_6745.JPG
IMG_6746.JPG
IMG_6747.JPG

This will be the place for us to connect the FTDI Breakout Board to program out board.

We will need to make 4 connections. Pick about 6 rows on your breadboard where you can place headers or wires to connect.

The first connection we will call row 1. This will be the top row. You can refer to the schematic or photos to get a better idea of this. Connect row 1 to ground. We will then skip the next two rows. Connect row 4 (TX) to the ATmega328’s pin 2. Connect row 5 (RX) to the ATmega328’s pin 3. Connect row 5 (DTR) through a 1 uF electrolytic capacitor to the ATmega328’s pin 1 (reset pin we dealt with earlier).

Two main things to know here. First, we are not connecting the power pin. We are not doing this because the board will be powered by the battery at all times and we don’t have a safety system set up to prevent short circuiting the battery and computer power. This means that you will always have your battery connected, even while programming it needs to be connected. If you would like to use the computer to power, simply remove the battery and connect the power (row 3) to the power rails on your board. Second, the DTR pin. This pin connection through the capacitor allows the program to automatically reset the chip while programming it. If you don’t have this connection made your chip will not program and you will get an error message. Alternatively you can press the reset button on your board when programming, but this connection is just easier.

And that’s it for setting up the board, we can now move on to programming the first program.

**NOTE1** - I apologize for not including a picture of the FTDI board connected to the header pins. you should be able to tell from the wiring which is ground, etc, and line them up correctly with the FTDI board, but for help i will explain that when viewing image #2, the first picture of the board here, the FTDI board's top face (with the chip and LEDs on) would be facing to the right.

**NOTE2** - I have corrected the mistake in the schematic and in the description with the FTDI RX and TX pins being swapped.

Step 10: Programming It

Picture of Programming It

We are going to use the free Arduino software to program our board (because we already have a chip with the Arduino bootloader on it).

Go to their website Arduino.cc and download the latest software.

When you open the software, select the Tools menu. Under the “Board” option, select “Arduino UNO”. You will also need to make sure the “Port” connection is correct. If you can’t tell what’s going on with it, try reading on the Arduino.cc website about troubleshooting.

For testing reasons let's use the sample program Blinking LED to test our board. We will need to take another resistor and LED and connect it from Arduino pin 13 to ground (put the short end of the diode to ground).

Load the program by going to File>>Examples>>1.Basics>>Blink, or by downloading it here and opening it. It should look identical to the first image.

Hook up the FTDI connection and hit upload and see what happens. Remember that either only your battery connection should be made and not the FTDI power connection, or vice versa. If you followed everything correctly and made the connections correctly, everything should work well. Some lights will flash and once the software has finished uploading the LED should start blinking on and off.

If you get an error message, double check all of your connections. If you don’t see any lights flashing check which port you have selected in the software and make sure the FTDI plug is connected correctly.

If all has gone well and you see the LED flashing on and off then this tutorial is complete.
If not, well sorry but this is where it gets tedious. You need to troubleshoot each connection. Check each one, check each component is correct, try searching your issues on Google to see if anyone else has had the same issue. I can give advice through messages and comments, but there is only so much I can do without the circuit in front of me for messing with.

Step 11: OPTIONAL – Programming Bootloader with ISP Programmer

Picture of OPTIONAL – Programming Bootloader with ISP Programmer

I've posted another instructable covering just the ISP programmer. Check it out HERE if you're interested in using this technique.

Pros: No bootloader, which means faster startup/reset times
More space on chip available to use (the space the bootloader used to use)

Cons: A little more work
More equipment needed

mithra50011 months ago

I had some problems getting a sketch to upload until I figured out
FTDI pin 4 goes to chip pin 2 and FTDI pin 5 goes to chip pin 3. This instructable has it reversed. Unfortunately I had just etched a PCB. :(

BooRan (author)  mithra50011 months ago

Wow, im really sorry about that mistake. I can't believe I haven't caught that yet. You are correct, RX should go to TX and TX to RX. I'll try to get an updated schematic loaded. Thanks for the catch!

mithra500 BooRan11 months ago

Hey no worries, I found your instructable to great information and I appreciate the time you put into it!

mjvaughn11 months ago
The 1uf electrolytic capacitor is not listed in step 1 or 2 or BOM or anything
BooRan (author)  mjvaughn11 months ago

Sorry about that, it looks like i forgot to explain it. Your circuit may not actually require this component but I like to include it. It's going to help the FTDI chip get the reset pin held when it needs to reset the micro before programming. I believe most of the Arduino boards don't include this component.

mjvaughn1 year ago
Great instructable!!! Maybe you could do one on how to build the FTDI breakout board, there's a schematic on sparkfun and it looks pretty easy
Hi. Thank you for the instructable. I followed the circuit but took out the power supply part (powering with the ftdi breakout) and also the reset button part as I don't think I need it in what I am trying to do. I bootloaded the atmega328p-pu and tried to run the Blink program. but. I am getting this error

avrdude: stk500_getsync(): not in sync: resp=0x00.

reading materials online for hours and I am not able to figure it out. I was wondering if you could point me in the direction so I could solve this issue. thank you.
IMAG0708.jpg
BooRan (author)  cool_ece_friend1 year ago

I apologize for such a late coming response.

If you havent found a solution yet....


You definitely need to have the reset circuit going. The programmer needs to reset the target immediately before programming it. I guess you could remove the button itself but make sure the pullups and programming connecting are still working properly.

inaydenov12 years ago
can i use this? http://www.ebay.com/itm/USB-To-RS232-TTL-PL2303HX-Auto-Converter-Module-Converter-Adapter-For-arduino-/180953299346?pt=LH_DefaultDomain_0&hash=item2a21a83992
BooRan (author)  inaydenov12 years ago
yea, this looks like it should work fine. Just be careful which power you use. You can only connect one to the circuit at a time. You should be able to you either 3.3 or 5 on the Atmega328 chip
hanlin_y BooRan2 years ago
It works but when you upload a program, you have press reset once the status says "Uploading..."
http://www.xappsoftware.com/wordpress/2012/04/16/how-to-upload-sketches-to-arduino-uno-chip-using-pl2303-usb-to-rs-232-converter/

I think the RX pin of the chip should be connected to the TX pin of the TTL converter and vice versa.

Should the capacitor at pin 1 be reversed?
diy_bloke2 years ago
Just want to let you know that the reset capacitor is not really that critical. I have used a 100nF and even a 50nF capacitor and that worked well. Many FTDI boards may already have a capacitor in the reset line and if so, you do not need one on the breadboard.... as long as you remember this when you are using another FTDIadapter that may not have this capacitor :-)
diy_bloke2 years ago
Interesting. Just a 'word of warning' to people using a breadbord for this: I have build bare bone arduino's on breadboard and had many problems connecting to them (getting sync errors). Mostly this was because of the crystal -that has very thin pins- not connecting well in the breadboard.

That is one of the reasons I always just build one on a PCB :-) cheaper as well. Nevertheless, great article, especially for the less electronically experienced amongst us
this is a F232RL TINY BREAKOUT
CAN I USE THIS
foca2.1_1.jpg
BooRan (author)  ferraririder1232 years ago
I can't guarantee from the picture, it looks like it should be fine as long as you wire it up correctly. Can you provide a link to the product somewhere so I can take a better look?

Thanks
http://iteadstudio.com/store/index.php?main_page=product_info&cPath=18&products_id=94

http://www.simplelabs.co.in/content/ft232rl-tiny-breakout-foca-v21

both are same
BooRan (author)  ferraririder1232 years ago
Yea, this looks like a good deal. Basically looking that its F232RL and UART protocol, which it is.
jeffeb33 years ago
Good work. Can you mention early that BOM means Bill of Materials? I was confused for awhile, because I'm not familiar with that term.
BooRan (author)  jeffeb33 years ago
Thanks for the tip, i added a note about it in the second step.
omnibot3 years ago
Well documented.
I find AVR-labels to be very helpful with this. Here's some links:
Bare Bones Breadboard Arduino Labels
Adafruit AVR Sticker for Breadboard Arduino-compatibles – 10 pcs
Arduino chip sticker label - I believe this is the original
BooRan (author)  omnibot3 years ago
AVR labels seem nice and convenient. Im used to looking back and forth at data sheets for pinout charts so i've never really used the labels myself.
very well documented, thanks for this!