Hello everyone, What if I would say something about my Own made Arduino UNO clone board. Yes, a fully compatible Arduino microcontroller board with a proper circuit and onboard programmer. So, this is a simple tutorial about Arduino and we will learn, how to design circuit, how to convert this into PCB. Finally order the PCB's from China's no.1 PCB manufacturer "JLCPCB" just in $2 for 5 high quality PCB's.


Some words about my Arduino journey:

It's been too long I am working on this and I have many things to share, which are coming soon. About programs and codes, I can't say anything. I can understand programs but can't write them properly; because most of them are available open-source on WEB. That's why I started with embedded and Now I am designing some compatible microcontrollers, sensors, modules and shields.

Arduino Microcontroller:

As we know the Arduino UNO's microcontroller(Atmega328p) are basically available in two packages: 28pin DIP and 32 pin SMD. This is powerful enough to get start your microcontroller journey. In this project we are using DIP version, but I will share the SMD version as soon as possible.



  • Microcontroller: ATmega328P
  • Operating Voltage: 5V
  • Input Voltage (recommended): 7-12V
  • In/out Voltage (limit): 6-20V
  • Digital I/O Pins: 14 (of which 6 provide PWM output)
  • PWM Digital I/O Pins: 6
  • Analog Input Pins: 6
  • DC Current per I/O Pin: 20 mA
  • DC current for 3.3V Pin: 50 mA
  • Flash Memory: 32 KB (ATmega328P) of which 0.5 KB used by bootloader
  • SRAM: 2 KB (ATmega328P)
  • EEPROM: 1 KB (ATmega328P)
  • Clock Speed: 16 MHz

Designing circuit:

There are some main parts of circuit, First the microcontroller itself. Then a programming chip, some resistors, coupling capacitors, USB port, voltage regulators and crystal oscillator. The schematics is available, Download from here.


List of components:

1) AtMega328p (DIP version)

2) CH340G Usb to TTL (For programming)

3) Micro USB socket

4) 100nF (104) capacitor

5) 22pf capacitor

6) 12Mhz crystal

7) 16Mhz crystal

8) 220-ohm resistor

9) 1k resistor

10) 10k resistor

11) 603 smd led white

12) Pin headers

13) Ams1117 3.3volt

14) Ams1117 5volt

Circuit description:


The most challenging thing is to keep the cost as low as possible, so we tried to go with ch340 programmer chip, which is directly connected to USB and known as USB to serial chip. RX and TX pin is connected to MCU with a 1k resistors and DTR pin to reset with 100nf capacitors. To give a proper clock signal to MCU a 16MHz Crystal oscillator is there with two 22pf ceramic capacitors. Ch340 also need a clock of 12Mhz so there is a separate 12MHz crystal. AMS1117 5v provides 5v to all circuit. Ch340g is used to provide 3.3v or we can use a separate regulator. Reset pin is connected to 5v with 10k resistor and pulled down whenever we have to reset the programmer. Some capacitors are used to reduce the noise in signals and There are 4 indicating led's for RX, TX, Power and D13.

Simplified circuit:

Circuit without programmer section:


PCB and Designs:

This is my design, I used the same form factor as the Original one. Using the White color and 1.6mm thickness with HASL finish. Download Gerber from here.


The PCB's is sponsored By JLCPCB and you will get coupons of worth $30 on first signup through my link.

In addition a $5 coupon for 1st PCB order. So register to JLCPCBusing this link from here.


Soldering and assembling:

First solder all the smd components, I don't have any special solder, hot plate or hot air gun. so I am using that my simple solder iron with hand soldering method.


Then place all the through hole components and solder them.


Place the headers and finally we are ready to go.


Download the CH340G drivers from here, the installing guided is provided in this article.

Then choose a simple code of blink and upload it.


// the setup function runs once when you press reset or power the board
void setup() {  // initialize digital pin LED_BUILTIN as an output.  pinMode(LED_BUILTIN, OUTPUT);

// the loop function runs over and over again forever
void loop() {  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)  delay(1000);                       // wait for a second  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW  delay(1000);                       // wait for a second


My Arduino is working well with this code. If you are facing any bootloader related problems then comment us, we will try to solve these too.


Flexibility and SALE:

All the files and circuits are available open source, If you want to try them Download from here. Also because we are new to platform, here my team is providing custom PCB designs and your name on PCB just in cost of $2. We will send your custom PCB Gerber files directly through mail.

Mail me for this limited time event: Captainamerica7294@gmail.com

What we offers: Custom design, Name/Branding and micro USB & type C options.

JLCPCB order:

JLCPCB offers a very good method to order PCB, You don't have to remember the size, just upload you Gerber file and software will automatically detect the size.


Then choose the color, thickness and other parameters like surface finish and gold fringes.



Then checkout just in $2 and you will receive a good quality branded boards just in 7 days.


Future updates:

I will release some new version of that board as open-source. I will try to use FTDI programmers, smd crystals, type c USB and Smd version of Main microcontroller chip. And some boards compatible to NANO, esp8266, rp2040 and esp32. nothing to reveal right now.

Follow me on Hackster, Instructables and Hackaday. Try our Limited custom PCB making service just in $2 and order them from JLCPCB.