How to Build an Arduino on a Breadboard

IMG_7286You might know that I am currently building a complete home automation system using open-source hardware. And one of the key part of this project is to build wireless sensors based on Arduino. Maybe you also have an idea and you want to build your own autonomous sensor or system based on Arduino. And for that, it is just unrealistic to use an official Arduino board like the Arduino Uno. Why ? Simply because there are many things you don’t need when building your own system: the USB port, LEDs, the reset button, the extension headers …

All these parts just take extra space and consume power for nothing when you want to build a system that does a specific task. So in this article, I will show you how to build a fully functional Arduino system on a breadboard, with the minimum amount of components. Of course, there are many tutorials on the topic around the web, but I had to put several of them together to end up with a functional Arduino system, so I wanted to write down my version. Here we go!

Hardware requirements

You need several components to build you own Arduino system on a breadboard. The main piece of this project is of course the microcontroller that will run your Arduino sketches. There are many microcontrollers that can run Arduino sketches, but we will keep it simple and use the chip from the Arduino Uno board: the Atmel ATmega328. You will need a chip with the Arduino bootloader. A bootloader on a microcontroller is some code that is written (“burned”) into the chip’s ROM. Nowadays it is easy to buy a chip with the Arduino bootloader, so buy it with it, it will make your life easier.

You will also need several components around the chip. You will need two 10uF capacitors, two 22pF capacitors, one 10K Ohm resistor, two 220 Ohm resistors, one red LED, one green LED, and one 16MHz crystal clock. You will also need a FTDI breakout board to program the Arduino chip directly on the breadboard. If you are using another Arduino board to program the microcontroller, you can just skip this part.

Finally, you will need a breadboard and some jumper wires.

Software requirements

The focus of this article is mainly on the hardware configuration, but you need some software as well. Of course, you need the usual Arduino IDE. But you also need something that is missing from many other tutorials on the web: the FTDI drivers for the FTDI breakout board. It might be already installed on your system, but it was missing from my computer. You can find them on this page, I personally chose the Virtual COM Port (VCP) drivers.

Hardware configuration

This project is quite complex to build, so be with me. You have to place the microcontroller in the upper part of the breadboard, so you still have some place for the FTDI board. You should end up with something like this:

IMG_7258

The next step is to take care of the power. You have to connect power lines together on the breadboard, for the ground and the positive power supply. Then, connect the Arduino Vcc, AREF and AVCC to the positive power supply line, and the two GND pins to the ground lines. I also added a 220 Ohm resistor in series with a red LED between the two power lines to see if the power is correctly connected. Finally, add a 10 uF capacitor between the two power lines to stabilize the voltage supplied to the microcontroller. This is the result:

IMG_7264

Now, we will focus more on the microcontroller. You have to connect a 10K Ohm resistor between the reset pin and the positive power supply line, so the chip doesn’t reset itself. Then, connect the crystal clock between the X1 and X2 pins. Finally, connect each of these pins to the ground line via 22pF capacitors.

You can also connect a green LED in series with a 220 Ohm resistor on Pin 13 of the microcontroller, because this is the pin connected to an LED on the Arduino Uno board, so it will allow you to easily see if your project is working:

IMG_7270

If you are programming your chip via another board, for example with the Arduino Uno board, you can just stop there. Just connect some power supply (even a set of batteries) to the power lines and your project will work. You can use a voltage range from 1.8 to 5.5V to power the microcontroller.

But if you want to program the chip in place, you need a final step. First, place the FTDI breakout board at the bottom of the breadboard. Then, connect VCC and GND of the breakout board (we’ll power the project with USB in this case) to the corresponding power lines. Then, connect the TX and RX pins from the breakout board to RX and TX on the microcontroller (pin 1 and 2). Finally, connect the DTR pin of the breakout board to the reset pin of the microcontroller via a 10uF capacitor. This should be the (really messy) result:

IMG_7280

Finally, to help you out, this is the complete schematics:

arduino_breadboard_schem

Testing your Arduino system

Now we are ready to test what you’ve just built. Let’s assume that you want to program your microcontroller on the breadboard, using the FTDI breakout board. You can now just plug your computer to the board via a USB cable. If you wired the power lines correctly, the red LED should turn on. You can now open the Arduino IDE as usual, and select the correct serial port (in my case it was something beginning with usbserial). For the board, I just selected Arduino Uno. To quickly see if the project is working, you can chose the “Blink” sketch which is included by default in the IDE. Upload the sketch, and if everything is ok, the green LED should now blink! Congratulations, you now know how to build your own Arduino system from scratch!

Finally, this is the list of the components that I used in this article:

Receive the latest news about home automation
Over 1000 home automation enthusiasts already joined our list !

Do you want to receive the latest news about open-source hardware and home automation? Then join our mailing list today by entering your name and email below. It is 100% free and you can unsubscribe at any time if you're not satisfied.

  • http://anwaarullah.wordpress.com Anwaarullah

    A nice and lucid explanation.

    However, you may want to change the value of the pull up resistor R1 wrongly shown as 1K in the schematic which should be 10K.

    Cheers!!!

    • http://www.marcoschwartz.com Marco Schwartz

      Thanks, this is now fixed!