Build Your Own Arduino Board

Need more Arduino board? Do not spend more money for another one. Why not try to build your own DIY Arduino board? It is easy and simple.

DIY Arduino Step 1

Get an Atmega328–PU or Atmega328P-PU (with bootloader inside).



A brief introduction on the Atmega328 chip:

  • 8-bit MCU
  • 32kB Flash Memory
  • 1kB EEPROM
  • 2kB SRAM
  • 23 general purpose IO lines
  • 6-channel 10 bit ADC
  • SPI and I2C capabilities

Make Your Arduino Step 2

Connect the circuit as below:

arduino breadboard

Arduino Breadboard schematic


In this post, I will talk about uploading sketches using FTDI programming port. In the next post, I will talk more about uploading sketches and burning bootloader using the ICSP programming port. Get one FTDI programmer here.

Build Your Arduino Step 3

Using FTDI programmer:

Now I will address one of the issues of making your own Arduino. On the Uno boards, there’s an IC which is responsible as a USB to serial converter and it makes it possible to program the Arduino and also communicate with it from the computer.

The problem here is the IC is an SMD (Surface Mounted Device). The R3 uses an ATmega 16U2 while the older revisions uses the 8U2. So, we need an FTDI programmer for the purpose of uploading the code/sketch into the chip.

FTDI programmer

FTDI programmer

When you first plug in your FTDI programmer into your laptop, you have to install the driver file. Get the driver file here.

Once installed, just connect the FTDI programmer to the FTDI programming port of DIY Arduino accordingly.
Finally just click on upload to upload the code into the chip!

If you don’t have the extra 16 MHz crystal and 18-22 picofarad capacitors used in the above examples, you can configure the ATmega328 to use its internal 8 MHz RC oscillator as a clock source instead. You don’t really need the 10K pullup resistor on the reset pin either, so we remove it to get a truly minimal configuration.

You’ll need to install support for an additional hardware configuration:

  • Download this hardware configuration archive: breadboard.zip
  • Create a “hardware” sub-folder in your Arduino sketchbook folder (whose location you can find in the Arduino preferences dialog). If you’ve previously installed support for additional hardware configuration, you may already have a “hardware” folder in your sketchbook.
  • Move the “breadboard” folder from the zip archive to the “hardware” sub-folder of your Arduino sketchbook.
  • Restart the Arduino software.
  • You should see “ATmega328 on a breadboard (8 MHz internal clock)” in the Tools > Board menu.

Once you’ve done this, you can burn the bootloader and upload programs onto your ATmega328 as described above. Be sure to select “ATmega328 on a breadboard (8 MHz internal clock)” when burning the bootloader.

If you select the wrong item and configure the microcontroller to use an external clock, it won’t work unless you connect one.

Finally, you have success in making your own DIY Arduino, meaning that you can upload arduino coding into your chip!

VINduino on stripboard

VINduino on stripboard


Join the conversation!

Error! Please fill all fields.
Looking for the latest from TI?