Introduction: How to Build an Arduino Uno on a BreadBoard

Picture of How to Build an Arduino Uno on a BreadBoard

If you are like and me and enjoy building electronic projects then you might have worked with the Arduino Uno. The Arduino uno is the most popular micro controller of the series and has a large collection of libraries which make working with it very easy. So there would be times where you may need more than one Uno for the project, I like to make my own micro controller rather than buying a new one, as this saves me some money which may be helpful for other such projects.

In this tutorial I'm going to show you how to, build your own Arduino Uno clone, so you can use it along side with circuits. This is a breadboard tutorial so no soldering skills are required.

You can check out my video tutorial above.

Step 1: Components Required

Picture of Components Required

The components required for this project are fairly simple and all the parts can be purchased at a local hardware store or on eBay.

USB to Serial module (you can also use an Arduino Uno if you have one)

  1. Atmega328 IC
  2. 16 Mhz Crystal
  3. 22pF Capacitor
  4. L7805 Voltage regulator
  5. 10uf Capacitor
  6. LED
  7. Breadboard
  8. Connecting Wires
  9. 6V or 9V or 12V Power supply
  10. Soldering Iron

Step 2: Atmega328

Picture of Atmega328

The Arduino is based on the Atmega328 IC and it is also the heart of the circuit. All the processing and everything else is done by the IC. The Atmega328 has to have a arduino boot loader flashed on to it to program it using the Arduino IDE.

The arduino uno is made of three parts

  • Atmega328 IC
  • Voltage Regulators
  • Serial Programmer

You can purchase an Atmega328 IC with the Arduino boot-loader pre-installed or you can also install it yourself but you will need an Arudino uno to install the boot-loader. So it is recommended to get a Atmega328 with a pre-installed boot-loader.

Step 3: Voltage Regulator

Picture of Voltage Regulator

The first step will involve building a voltage regulator, the atmega328 is a 5V micro controller so is the arduino Uno. So we need a regulated power supply to power the Atmega328 IC. For this we will be using a L7805 voltage regulator this is a popular voltage regulator and is cheap and serves the purpose of building an Arduino uno. This voltage regulator gives a voltage of 5V and a maximum load current of 1A.

You can also use a better efficiency regulator if you need more power output. You may also use a breadboard power supply as an alternative.

Step 4: Circuit

Picture of Circuit

The circuit is fairly simple and the connections from the Arduino to any external circuit may vary depending on the external circuits. It would be recommended to try it out on a breadboard first. Follow the circuit above and assemble it on the breadboard. You can also add a led on digital pin 13 if you want to replicate the on board led as on the Arduino uno.

I am assuming you got an arduino with a preinstalled boot-loader if you got one without the bootloader you can use an Arduino uno to flash the boatload on the IC.

Step 5: Serial Connection

Picture of Serial Connection

In the atmega328 IC the pins 2 and 3 act as a serial port and to program the board all you have to do is connect these pins to the USB to serial converter. You can also use an arduino as an programmer to program the board. But using a USB to serial converter is much simpler to work with.

After you are done with the connections plug the USB end of the converter to a computer, and install the necessary drivers if you are on windows.

Step 6: Uploading Code

Picture of Uploading Code

Before you can upload code to the board you need to download and install the Arduino IDE from the arduino official website. Then select the suitable serial port, board and you should now be ready to program your home made Arduino. To test the board you can try out the blink program you can find in the examples section of the Arduino IDE.

And you should now see the led connected to the digital pin 13 blink at an interval of every one second.

Comments

AshishSabharwal made it! (author)2017-06-16

This was fun and a new learning experience. I am a noob in arduino and electronics, and learned a lot from this exercise. Had to struggle a little in the beginning but google came to the rescue. Thank for this i'ble.

marsekal (author)2016-09-22

good job

jennise (author)2016-08-02

the boards are made from pcbway?

diy_bloke (author)2016-06-05

Great instructable. Building an 'Arduino' from the ground up so to speak is a good way of learning and I have done so many times
Nevertheless -and i usually get flamed for this- if you 'just want an arduino' self building is not economical with a UNO clone available for about 3 USD.
A bare Atmega328P-pu chip can be had for 1.30 USD, but then u still need to add crystal, 7805, capacitor, LED, breadboard and then you dont even have USB input yet
If you want to go small and low power and therefore want to ditch the FTDI part, take a pro mini for about 1.50 USD.

So to summarize, great instructable, great way to learn, but if you just want an arduino cheap, just buy one

rnshagam (author)diy_bloke2016-06-05

I fully agree--I was going to leave a similar comment before I saw yours. I'd add the cost of the mounting board (breadboard or perfboard) as well as just the plain reliability of a purchased Arduino nano, etc. just doesn't justify the expense or bother of a DIY. For just $2 you can get an amazing deal from one of the ubiquitous Chinese Ebay vendors (and usually with free shipping, to boot)!!!.

Shirleywong (author)rnshagam2016-07-12

Yes, you are right. Even from Amazon , it is always free shipping too.

thegrendel (author)rnshagam2016-06-06

True enough if saving money is the motivation. But, it's possible to customize a DIY Hackduino in all sorts of useful ways, such as adding sockets for displays, etc.

TimothyJ999 (author)diy_bloke2016-06-06

You're correct as far as it goes, but there are certain situations where having a DIY board would be advantageous. For example I was working on a project last year with several motors, a high-power LED, and a bunch of relays. I must have burned out 4 Arduino boards by the time I had the thing properly designed and electrically protected. With a breadboard design I could have swapped out the controller and only lost $1.50 instead of a $10 board each time.

diy_bloke (author)TimothyJ9992016-06-07

very true, not that I want to drive my point home.. but could also just swap a pro mini for $1.50 ;-)
If you still buy $10 Arduino's you are shopping at the wrong place :-)

Skorekaj made it! (author)2016-07-01

I made this, but i didn't want to use the external clock so this is how i did it and how i burn the bootloader it its not there as it usually isnt when you get the chips on ebay:

Wire up the Arduino Uno with the breadboard and the ATMega like the below pic 1, don’t forget to include the 16mhz oscillator.

Upload Sketches With Serial FTDI:

Remove the 16mhz oscillator.

Use the FTDi -> Atmega on BreadBoard, wire up as below:


Burn Bootloader, In Arduino IDE:

Select tools > board > "ATmega328 on a breadboard (8 MHz internal clock)” you will have to install the atmega lib, but that is pretty simple.

Choose the right serial port.

Upload the ArduinoISP sketch onto your Arduino board. (You'll need to select the board and serial port from the Tools menu that correspond to your board.)

Select "Arduino Duemilanove or Nano w/ ATmega328" from the Tools > Board menu. (Or "ATmega328 on a breadboard (8 MHz internal clock)" if using the minimal configuration like i did.

Run Tools > Burn Bootloader > w/ Arduino as ISP.

Setup the FTDI so you can upload code to the bare Atmege:

FTDI Tx to pin #2 (Tx to Rx)

FTDI Rx to pin #3 (Rx to Tx)

FTDI DTR to pin 1 (reset) (no need for capacitors)

FTDI Gnd to breadboard ground rail

FTDI 5V to breadboard Vcc rail

Programmer is set to Arduino as ISP, but i don’t think this is relevant ?

Note : if using the MAC like i do, to upload sketches add the capacitor (sown below)on the reset pin otherwise there is a error when trying to upload. PIC2

AlexAndAmigos (author)2016-06-11

I want to make one

AlexAndAmigos (author)2016-06-11

I want to make one

HuyV7 (author)2016-06-05

A way to use a more diverse range of microcontrollers and clocks:
https://github.com/sleemanj/optiboot/tree/master/d...

It's basically a configuration file that includes the correct fuse settings for each chip. This way you can omit the crystal if your application does not need the high/accurate clock of a crystal but the internal oscillator is good enough.

Also about the bootloader. It is also possible to use an ISP programmer to burn a bootloader onto a chip yourself without the need for an arduino board. Actually, if you have one it's probably more intelligent to do something else.

Some explanation first:

In simple terms think of the bootloader as the little piece of extra software on the chip that makes it possible to load your program onto the chip via the serial interface. It uses up a little extra space. And, what might be actually critical for some applications, it delays startup of your program since it first checks for a serial connection before launching your program. As far as I know there is a 3 second delay.

So if you have an ISP programmer like a usbtinyisp, which is pretty cheap too, you can load your program onto the chip directly without the need of a bootloader and without the Serial/USB Converter. This gets rid of the aforementioned downsides of a bootloader. Instead of wiring the two wires to the Serial pins you will now have to wire the ISP pins. (An ISP breakout might be useful: https://www.adafruit.com/product/1465)

Then (after making sure the drivers for the programmer are installed on your PC) in the arduino software you need to select your programmer under Tools->Programmer. Then upload your code with Sketch->Upload using Programmer (or Ctrl+Shift+U).

This way you are not reliant on any arduino hardware (arduino board or buying chips that have an arduino bootloader installed) and can basically program any chip with the universal ISP programmer.

Robertm454 (author)2016-06-05

Pin 2 and 3 are TTL serial. I believe a standard RS232-C cable you can get for USB will damage the inputs. You really need a Arduino Uno to program since it already does the USB to TTL conversion plus the Arduino IDE has all the functions to load the bootloader and program the chip.

diy_bloke (author)Robertm4542016-06-05

indeed can do it with an UNO, but it is much more convenient to get a USB <->FTDI converter. These cost about 1-1.50 USD at aliexpress, free shipping. Just search fir FTDI in their search bar, make sure you get one with the DTR broken out (6 pins version)

TheKirkwoods (author)2016-06-04

Thank you, sir! I'm in the process of building a complete project and needed the schematic on building an arduino from scratch.

Eric Brouwer (author)2016-06-04

Thanks for sharing. Indeed, it is the best way to develop stand-alone applications. Have a look at
https://www.instructables.com/id/Arduino-UNO-as-AtM...
to assist in programming the ATMega328p on the breadbord.

spanda12 (author)2016-06-03

u use atmega 328p or pu

webgeeks (author)spanda122016-06-04

Atmega328p and Atmega328-pu are practical the same, the p stands for picopower. So if you are going to build a battery powered device and want to save power you can go with Atmega328p or if saving a few milliamps is not a big deal you can go with the Atmega328.

tomatoskins (author)2016-06-03

Thanks for sharing! I've seen this done before but not with such clarity!

About This Instructable

27,772views

402favorites

License:

More by webgeeks:DIY Wireless Charging Power BankChocolate Cookies Dessert Kheer -  an Indian Dessert
Add instructable to: