How to Make Your Own Arduino Clone 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!
- An Arduino bootloader ATmega328/168 or any compatible Atmel IC. Or a blank ATmega328, ATmega168, ATmega 8 IC, or any other compatible Atmel chips.
- LM7805 IC.
- 16 Mhz crystal.
- Tactile button.
- Capacitors – 22pF (2 Nos), 10uF (2 Nos), 0.1uF (2 Nos).
- Resistors – 220Ohm (2 Nos), 1k (2 Nos).
- Pin headers (Male).
- 28 pin IC socket.
- Avr pocket programmer (Optional, only if uploading bootloader).
- Arduino IDE
- Terminal for Linux users and Command prompt for windows.
- Soldering iron.
- Solder lead.
- Prototyping solder dot board/breadboard or materials to etch your own board.
Connecting the Components Together to Make an Arduino Board
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
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
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
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.