How to Make Your Own Arduino Clone Board

DIY Arduino Board

Want to save money by making your own Arduino clone boards? Or want to make a custom board specifically for your needs, then this project is for you! Make Arduino board from cheap electronic components available at your local store. Just follow these simple step by step instructions. Have fun with this DIY hacking tutorial!

Required Materials


  1. An Arduino bootloader ATmega328/168 or any compatible Atmel IC. Or a blank ATmega328, ATmega168, ATmega 8 IC, or any other compatible Atmel chips.
  2. LM7805 IC.
  3. 16 Mhz crystal.
  4. Tactile button.
  5. LED’s.
  6. Capacitors – 22pF (2 Nos), 10uF (2 Nos), 0.1uF (2 Nos).
  7. Resistors – 220Ohm (2 Nos), 1k (2 Nos).
  8. Pin headers (Male).
  9. 28 pin IC socket.
  10. Avr pocket programmer (Optional, only if uploading bootloader).


  1. Arduino IDE
  2. Terminal for Linux users and Command prompt for windows.
  3. Avrdude.


  1. Soldering iron.
  2. Solder lead.
  3. Prototyping solder dot board/breadboard or materials to etch your own board.

Connecting the Components Together to Make an Arduino Board


Make arduino board and bootload

Arduino on breadboard


You can either etch a PCB to make your custom board, or use a prototyping dot board to solder the components on it, or arrange them on a breadboard. Connect the components with each other just like in the diagram below. There are only a few components required to make your custom Arduino board. A voltage regulator to supply 5V to the Arduino, its supporting circuitry to filter the voltage, then a 16Mhz crystal along with its parallelly connected 22pF capacitors that act as the clock to the Arduino. An LED is connected to pin no 19 of the ATmega for testing purposes. Use the schematic if you want to etch your own PCB. Modify the schematic to make your Arduino board suited for your projects. Use this eagle schematic file if you want to make a custom PCB: DIY Arduino Clone PCB


Custom Arduino Schematic

Uploading the Bootloader to the Blank ATmega Chip (Optional)

This step is for those who have a blank ATmega chip and want to upload the Arduino bootloader to it. Others who already have an Arduino boot loaded chip can ignore this step and merely insert their chip based on the schematic in the above step. You can either use another Arduino to bootload the blank chip or use an AVR pocket programmer. I will explain both the methods below.

Using an AVR pocket programmer

Make Arduino board and bootload

Arduino and AVR programmer connections


I personally prefer uploading the bootloader using this method as it works most of the time. You just need to buy an AVR pocket programmer. Once you have that, you will be able to burn the bootloader to various types of ATmega chips. Insert the blank chip to the socket of an Arduino board. Connect the programmer to the Arduino like in the diagram above.

Go to your installed Arduino folder -> hardware -> Arduino -> boards.txt . Then check the document for your chip’s name and the bootloader (Duemilanove/Uno) (this step can be ignored if you’re using blank ATmega328P chips). Check the values of the following parameters on it: efuse, hfuse, and lfuse. Now we will set the fuse bits for the blank chip. Open the command prompt (windows users) or terminal (Linux users) and paste the following commands:

NOTE: Substitute the value for efuse, hfuse, and lfuse parameters after checking the boards.txt file and edit “m328p” in the below command to your chips name only if it is not an ATmega328 IC.

avrdude -b 19200 -c usbtiny -p m328p -v -e -U efuse:w:0x05:m -U hfuse:w:0xD6:m -U lfuse:w:0xFF:m  

Next, use the command below to upload the bootloader or your hex program file. Go to the path of your program file or bootloader (/hardware/arduino/bootloaders/atmega) from the command prompt or terminal and instead of “hexfilename.hex” substitute the name of your file.

avrdude -b19200 -c usbtiny -p m328p -v -e -U flash:w:hexfilename.hex -U lock:w:0x0F:m

Now the file will be successfully uploaded to the ATmega chip.

Using Another Arduino as an ISP

Make arduino board and bootload

Arduino as ISP


If you’re using another Arduino to bootload the chip, then make connections as per the diagram above. You will also need two Arduino boards for this: one will be a working Arduino board and in the other one the blank ATmega chip needs to be inserted. We will be using the ICSP (In Circuit Serial Programmer) pins on the Arduino for this. After making the connections shown, connect the working Arduino to your PC. Next, open the Arduino IDE and go to the tools menu; select burn bootloader and from its options click on with Arduino as ISP.  Now, the chip will be boot loaded with Arduino. This method only works if you have the correct chip specified in the boards.txt file and works only rarely. That’s why I always prefer the first method.

Uploading the Code and Using the Board

Now you have an Arduino board with an Arduino bootloader ATmega chip. Now, use the Rx, Tx, and Gnd pins to connect to a USB-UART TTL converter which can be used to connect to your PC. Or just insert a chip that has been uploaded with the program (from an Arduino board) into this board’s socket.

Recommended Posts
Showing 51 comments
  • dineshkumar

    hi, here i like to share my Project home made avr programmer, it is a usbasp programmer, if you need any support regrading loading burning bootloader feel free to ask

    But check for fuse bits while loading a bootloader for any programmer. be carefull with the fuse bits. study necessary articles before starting working on fuse bits

    Click Here:

  • dineshkumar

    i made my home made arduino with home made printed circuit board

  • dunsin

    pls can you do me a favour by sending an arduino beginner kit.
    +234817760053, from nigeria please am less priviledged

  • Dmitry

    general question: is this ‘clone’ a full-blown one (granted, fewer pins/connectors) or is it lacking something vs original board (like UNO)?

  • Programmer

    how can i program this board if there’s no female usb port? don’t expect me to buy more stuffs.

    • You're an idiot

      Read the whole article again. It’s explained at the end.

  • Bryan

    For any other newbies. Most of the components listed/linked here are surface mount so you cant use them on a breadboard.
    Great project.

  • r

    its not working with l2938 and hc05

  • rohit

    can u plz send pcb layout for this…

  • Zaid Hussain

    What is meant by Nos? 😛

  • Redwan

    Hey i am a beginner… i dnt hv that much ideas about robots and arduino.. i m not used to the term Servo motors..or what they say..can i use a geared motor instead?? or both are the same??

  • moin

    how to identify the MISO SCK RST (the six pins on the arduino u made on the breadboard

  • bob


  • Yay!!

    Is it possible to use ATmega 8051 instead the micro-controllers mentioned above?

  • Abraham NY

    First of all thanks for sharing wonderful ideas :D
    i made it and its working well , I tried the blink LED and works fine
    but when i try to make a bluetooth porject its not working , I made an android app which ON/OFF a led through a smartphone , it works well on arduino uno board
    but when i programmed the atmega8 with that code it is not working can you suggest me any solutions for the problem

    I am using atmega8 ,and HC05 bluetooth module

    thanks in advance :)

  • ved

    Can I use 14mhz crystal in my arduino

    • Arvind Sanjeev

      No, 16Mhz is the recommended one.

  • Akash

    hello arvind,
    which chip are you used in step 3,
    tell me as soon as possible.

    • Arvind Sanjeev

      Its a ATmega328p.

  • Dibyo Das

    It all works out ! Thanks a million ! You saved me a lot of money .
    God bless you.
    Till later….
    Khuda Hafiz !

  • Dibyo Das

    Link to the .pdf is as :

    I just need to use the arduino IDE and digital pins – 8,9,10,11,13,vcc,gnd of an ARDUINO DUMILANOVE.

    Can it be done using the above board with uc replaced with an an arduino bootloaded chip ?

  • Dibyo Das

    Apparently , their website is offline , so ,I am copying the pdf manual that they gave as I could not find a way to send the pdf file to you !
    THE .pdf Reads :
    PRODUCT NAME : Atmega8 mini Robotics Development Board V4.0
    MODEL : RM0006
    PRICE : Rs 1,190.00
    SKU : RM0006
    WEIGHT : 100
    STOCK : In Stock
    MANUFACTURER : Robosapiens India
    DIMENSIONS(LxWxH) : 89 x 89 x 10
    Atmega8 mini Robotics Development Board V4.0 is a complete starter kit and development system for the AVR Atmega8
    microcontrollers from ATMEL ® Corporation. It is designed to give designers a quick start to develop code on the AVR.
    The Atmega8 mini Robotics Development Board V4.0 is based on our 28 pin development board which is compatible with many of
    the Atmel AVR microcontrollers. In some ways the kit is similar to an Arduino but with loads more flexibly. This kit is an easy and
    low cost way to get started with microcontrollers. Included on board is an Atmega8 microcontroller, external crystal with supporting
    capacitors, AVCC filter parts, a USB B type Connector , Power supply parts and more. The Controller used is an 8-bit
    microcontroller with 8KB of flash, 1KB of RAM and 512 bytes of EEPROM. It has 23 I/O lines, 3 PWM channels and a 6 channel
    10-bit AD Converter. It sports dual 8-bit Timers each having separate prescalers and compare modes. Additionally it has a single
    16-bit timer with a separate prescaler, compare and capture mode. The Atmega8A is a feature packed and very versatile
    microcontroller. The controller comes with Inbuilt Robosapiens BootLoader that makes it easily programmable and we do not need
    any prerequisite drivers for the board. The board takes Input which can be either Analog or Digital in nature.
    On board we have PIN extensions of all the parallel I/O line available with the micro controller to make the peripherals plug n play.
    On board Piezo Buzzer connceted for audio interface. The board comes with inbuilt DTMF decoder IC module add-on Shield.
    When it comes to the sensors interfacing, the board is compatible with all the Digital / Analog sensor modules. For better
    interaction with the user the board comes with prefabricated 4 Bit LED for quick monitoring of I/O Port Outputs.
    With all these features this board can be used to realize more than 25 working robotic projrects.
    I2C Protocol
    SPI protocol
    Analog to Digital conversion
    PWM generations ( for Servos)
    Programmable Watchdog Timer
    Line following Robot
    Obstacle Avoiding Robot
    Light Searching Robot
    Edge Avoiding Robot
    Cell phone Controlled robot (DTMF Based)
    1 / 4
    and many more……..
    General Characteristics
    Type Robotic Development Board
    Product ID RM0006
    Dimension (89 x 89) mm
    Weight 60 Gms
    Control Circuit
    Controller ATmega 8 / 8L
    Clock Frequency Upto12MHz
    Data Communication Parallel
    Motor Driver On Board L293D Dual H Bridge Motor Driver Circuit
    Sensor Interface Analog / Digital Sensors
    Display On Board 4 Bit LED
    Parallel Interface 23 Programmable Parallel I / O Pins
    Serial Interface N / A
    Programming Mode USB using BootLoader
    Programming Interface USB Female Connector B type
    Supported Programmers USB Cable using Robosapiens BootLoader
    Softwares Required Win AVR , AVR Studio , Robosapiens HID BOOTFlash
    Input Devices Analog / Digital Sensor
    Cell Phone Controlled On Board DTMF Decoder IC Add on Shield
    External Interrupt
    N / A
    Power Supply
    Type DC
    Operating Voltage 7V – 24V
    Operating Current Upto 800mA
    Socket DC Jack and PBT Connector
    ADD ONS (Other Peripheral Modules can be interfaced as per need)
    IR based Proximity
    IR Based Digital 5
    Sensor Array
    Sound Sensor Add on shield for Sound sensor
    Light Searching Sensor Add on shield for Sound sensor
    DTMF Decoder Module Add On Shield for DTMF Decoder IC Module
    8 Bit Digital Keypad YES
    LM 35 Temperature
    YES ( Using three single Pin Jumper Wire)
    Ultrasonic Sensor YES
    Gas Sensor Module YES
    ADXL 355
    7 Segment LED display YES
    2 / 4

    If this board works, I dont want to buy another board. But still ,could you please send me links to your mentioned arduino clones (the cheaper, the better) ?

    Also , can the same program made on the ardunio IDE be used for several arduino boards (like uno, dumelinove etc…) ?

    Thank you for your time.

    • Arvind Sanjeev

      This is just one of the several: Try searching online you will get cool deals. Also, I am unable to make out whether the board you have is compatible for arduino since I cant see the schematic or design files.

      • Dibyo Das

        how can i send the .pdf file to you ?

        • Arvind Sanjeev

          You can upload it in google drive/dropbox and paste the link here :)

  • Dibyo Das

    Hi, I have a Robosapiens_IBOT_mini_V3 board with an atmega 8. But it does not goes with arduino. It works with AVR studio , and its crystal is 12Mhz . If I buy an atmega8 with arduino bootloader chip (Rs. ~230), and replace with the default chip , will it work with arduino ? Please help as I desperately need the arduino IDE for my project and don’t have much money. Appreciate your efforts for people like us. Thanks in advance…

    • Arvind Sanjeev

      Hi Dibyo, can you send me the design files or links to this board? I will check and let you know. Also, you can get cloned arduino boards for Rs.700 or make your own arduino board on breadboard.

  • suhail

    If ican use this way
    1- firstly put a new chip with bootloader to an aurdino board
    2- then programm it using cable
    3- take it out from arduino and put it diy arduino clone board
    It will work buddy

    • Arvind Sanjeev

      Yes, that is the easiest way to do it. It will work.

  • suhail

    Aravind,where is the usb port for programming

    • Arvind Sanjeev

      You have to use a USB to TTL serial converter for this. Connect the Rx and Tx pins of the board to the USB converter.

pingbacks / trackbacks

Leave a Comment

92 − = 87

Start typing and press Enter to search