Ultimate Bare Bones Budget Arduino

In this guide I’ll cover the bare bones Arduino board based on the ATMEGA328 I use for many of my projects that you can make for about $4 a board (including PCB). I’ve always been a fan of the ease of use with Arduino but it can get expensive when you start putting them in many projects. There are also often a lot of extra components on an Arduino board that are not always needed for a given project and minimizing them will keep the board small and low cost.


The board will consist of the ATMEGA328, basic support components and connections for power and I/O. To keep the size and board cost down we won’t include a USB interface, debugging micro and voltage regulators that are on the UNO and allow us to add peripherals to suit the project as needed.

To get a good price on ATMEGA328P’s we’ll buy them without the Arduino bootloader on it. The bootloader is extra bit of firmware in the flash that allows programming through the Arduino IDE without a traditional programmer. This effectively turns a stock ATMEGA328 from Atmel into an Arduino and allows us to use all those great libraries.

Without a USB interface, to get the bootloader and to program the bare bones board we’ll need to use an actual Arduino UNO. You’ll only need one. We’ll make a boot loader shield to load it on all your ATMEGA328s. Afterwards the UNO will simply be used to program your bare bones Arduino boards through the USB serial interface (you could use a USB to UART RS232 COM cable to program as well but you’ll need to mod a reset connection to it).

What you’ll need

1x Arduino UNO
Bare bones Arduino Board
Bootloader Shield
  • ZIF Socket DIP 28
  • Perfboard 
  • 100mil pitch headers
  • 2x LEDs and current limiting resistors
  • 10kΩ resistor
  • Optional: Crystal oscillator and 2x 22pF capacitors

PCB Design

By keeping the boards at 5cm x 5cm DFROBOT gives a great deal on 10 2 layer PCBs. The board design is pretty simple with the just the ATMEGA328, crystal, reset, D13 LED, option for TO-220 5V Regulator and/or micro USB connection (for 5V only, no data). I’ve also made sure to label the GPIO pinout per the Arduino UNO to avoid confusion between the ATMEGA328 pinout when using the Arduino IDE. The second outside row of headers are not tied to any GPIO

Bare Bones Arduino Board Schematic

I made the boards using schematic and PCB layout software, DipTrace. The gerbers can be downloaded below.


Bare Bones Arduino PCB

The board in the Gerber downloads and image above is actually my second revision of the design. In the image below you’ll see my first revision. This one lacked proper pin labeling for the Arduino UNO and extra headers for prototyping but is otherwise the same.

Arduino Bare Bones Board Assembled (old revision)

Bootloader Shield

Using the perf board, carefully align the 100mil headers to interface with the Arduino UNO and connect the following pins of the Arduino UNO to the ZIF socket with the slave ATMEGA328 to be loaded with the bootloader. The process of doing this is also covered on the Arduino site.

Arduino UNO to ATMEGA328 Pins

D10 → pin 1 (reset)

D11 → pin 17 (MOSI)

D12 → pin 18 (MISO)

D13 → pin 19 (SCK)

Optional: Add an LED with current limiting resistor on

D9 for heartbeat

D8 for error indicator

D7 for communication indicator

Arduino UNO Bootloader Shield


Now that we have everything assembled we can load the bootloader on to our ATMEGAs and then program them with the UNO.

Startup the Arduino IDE and open the ArduinoISP sketch in Examples. Load this program on to the Arduino UNO. Then under the Tools drop down select Programmer: Arduino as ISP and make sure Board: Arduino UNO. If you’re ATMEGA won’t be using the 16Mhz crystal and caps you’ll want to refer to here and download the appropriate hardware configuration for your IDE version and then select Board: ATmega328 on a breadboard (8 MHz internal clock). You can now select the Burn Bootloader and it will load it on to your ATMEGA328.


After successfully burning the bootloader to one ATMEGA328, do the same with the rest of your blank ones. It’s easiest to do this now as you’ll be using the UNO as a programmer afterwards. An ATMEGA328 with the bootloader on it can now be put into your bare bones board.

Bare Bones Arduino with bootloaded ATMEGA328

You’ll need to remove the ATMEGA328 from the UNO in order to use it as a programmer. Remove the shield and carefully remove the ATMEGA328 from your Arduino UNO being carefully not bend the pins. Be careful to always have at least one ATMEGA328 with the Arduino bootloader so you can use it load burn other micros with the bootloader.

Carefully removing the ATMEGA328 from the UNO

Now you can use your Arduino UNO to program your bare bones board. Simply, connected the RST, RX, TX. Connect 5V and GND or use a separate power supply for your board.

Connection for programming

There you have it, a simple low cost Arduino UNO for your projects!

Leave a Reply

Your email address will not be published. Required fields are marked *