Introduction: YABBAS - Yet Another Bare Bones Arduino (on Stripboard)

This Instructable will demonstrate the building of a bare bones (and really inexpensive... less than $5) Arduino compatible module that can be put together on a small piece of stripboard and can be used either on a breadboard or independently.

The following links / similar projects were used as inspiration:

The schematic is based off of the Arduino Pro Mini ( and only differs in a few minor (optional) ways:
  1. This design uses a more powerful voltage regulator
  2. This design uses a more precise crystal (instead of ceramic resonator)
  3. This design ditches the reset button (do you really need it?)
  4. This design uses a 1k (instead of 10k) resistor for the power indicator LED

Prerequisites / Tools Required:
  * Soldering Iron with fine tip
  * Solder (fine) & Flux
  * Utility Knife
  * Mini needle-nose pliers (optional, but useful)
  * Multimeter (or volt meter)
  * An existing Arduino, or any other AVR programmer (needed to upload the bootloader)
  * A USB-to-Serial TTL adapter (used to upload programs after the bootloader is in place)

Parts List (with an inexpensive source recommendation):
  * $0.22 - 19 row x 8 column stripboard (less than 1/3 of a 94x53mm stripboard)
  * $1.00 - 3.50 - Atmega328P (or the ATMega168 or ATmega8 if they are enough for your needs)
      TIP: You can get the older ATmega8 chips on eBay for around $1 (in a 10 pack) these days,
              or the latest and greatest ATmega328P chips on eBay for around $2.20 (in a 5 pack)
  * $0.11 - 28 pin DIP IC socket
      TIP: You can substitute 2x 14-pin lengths of SIP/DIP socket adapter for a higher quality socket
  * $0.23 - LM7805 5V voltage regulator
  * $0.10 - 16 MHz crystal
  * $0.02 - (2) 22pF ceramic disc capacitors
  * $0.03 - (3) 100nF / 0.1uF ceramic disk capacitors
  * $0.03 - 100uF 10V electrolytic capacitor
  * $0.03 - 100uF 25V electrolytic capacitor
  * $0.02 - Red LED 3mm
  * $0.02 - Green LED 3mm
  * $0.012 - 330 ohm 1/4 watt metal film resistor 1%
  * $0.012 - 1K ohm 1/4 watt metal film resistor 1%
  * $0.012 - 10K ohm 1/4 watt metal film resistor 1%
  * Header Options:
       * $0.39 - DIP/SIP socket adapter (great for wires or for building a high quality socket)
       * $0.24 - Female PIN header
       * $0.15 - Male PIN header
  * Shipping (from taydaelectronics): ~$1.20
  * TOTAL (without shipping): ~$2 - $4.75

Step 1: The Stripboard Design

Note: DIY Layout Creator was used to produce this design

Step 2: Prepare the Stripboard for Soldering

Using a utility knife cut the copper traces as indicated.

Keep in mind the board will be a mirror image when you flip it over.

I find it easiest to first score the board trying to just barely cut through the copper.  Then, I angle the knife a bit (to cut a v-groove) and proceed to make the cut deeper from both sides.

Be careful so that you leave enough copper to solder the holes on either side of any cut, while ensuring that enough copper is removed to ensure the copper is truly separated from either side and won't bridge when soldered.

Step 3: Solder the Ground and Positive Voltage Wires

1. Cut the ground and positive voltage wires to length and strip the ends.

I use the wire from an old RJ45 network cable.  Make sure the wire is solid and not stranded.

2. Place the wires into the stripboard as indicated.

You may find it difficult to get two wires into one hole.  I find that taking a mini needle-nose pliers and mashing on the ends of both wires a bit helps.

3. Double check that the wire placement matches the design and that the metal in the wires are not touching each other.

4. Finally, flip the board over and solder the wires in place.

Step 4: Solder the DIP IC Socket

Place the DIP IC socket (or 2x 14-pin DIP/SIP socket adapters) and solder them in place.

Step 5: Solder the Resistors and Ceramic Capacitors

1. Bend the leads of each component based on the distance it will need to span.

Note:  A easy to build bender jig made from a spare piece of protoboard can come in handy here (see picture).

2. Place each component into the stripboard in the appropriate location.  Pay careful attention to the components that share a hole.

3. Double check that each component is properly placed according to the diagram.

4. Proceed to solder each component and clip the leads to a reasonable length.

Step 6: Solder the LEDs and Capacitors

1. Place the LEDs and electrolytic capacitors according to the diagram.

Note: LEDs and electrolytic capacitors are directional and must be placed in the proper orientation.

  * For LEDs, place the Cathode towards ground.
    Looking inside an LED, the Cathode is usually the larger pad, but the smaller lead.
    (see picture, source:

  * Electrolytic capacitors should have a marking on the label ('-')
     which indicates which lead should be placed towards ground.

2. Double check that the LEDs and capacitors are placed properly.

3. Proceed to solder them in place and cut their leads to a reasonable length.

Step 7: Solder the PIN Headers

1. Cut the PIN headers of your choice in sections of 3-pins, 5-pins, 12-pins, and 14-pins.

You can use various types of PIN headers here (or none at all) depending on how you want to use the board.

Choices include:
  * Standard female headers: Good for plugging in sub-boards that use standard male headers.
  * Standard male headers:  Good for plugging into breadboard.
  * SIP/DIP socket adapters: Good for plugging in solder-less jumper wires.
  * No headers:  Good for direct soldering of wires/sub-boards for a more permanent installation.

I wanted to use mine on a breadboard, so I used standard male headers sticking all the way out the bottom.

TIP:  I made a special PIN header to allow easy plugging in of my USB to Serial TTL adapter.  To make this, I took a standard male 12-pin header, removed 6 of the pins and substituted longer pins in their place (see picture).

2. Place the PIN headers in their appropriate locations according to the diagram.

3. Proceed to solder the PIN headers in place.

TIP: I have found that PIN headers are MUCH more easily soldered if you use a little bit of flux. I have also found that this helps hold the PIN headers in place until you can get them soldered.

Step 8: Solder the Crystal and Voltage Regulator

Finally, place and solder the crystal and voltage regulator according to the diagram.

The soldering portion is now done!

It is a good idea to clean up the back of the board at this point.  I use an old toothbrush dipped in rubbing alcohol and vigorously scrub the remaining flux and solder residue.

Now is also a good time to add solder to any joints that may need more.

Step 9: Test the Board

Before inserting the 'relatively' expensive ATmega chip into the board it is a good idea to verify that a few things work as expected first.

Plug in an appropriate voltage source (~7-20 volts) and connect it (appropriately) to the GND and VIN pins.

Use a multimeter to verify that the voltage between the GND and VCC pins is around 5 volts.

Also, verify that the red power indicator LED is illuminated.

Step 10: Upload the Bootloader (optional)

Note:  This step can be skipped if the ATmega chip you are using already has an appropriate bootloader uploaded to it.

1. Connect the AVR programmer of your choice.

Connect the GND, VCC, /RESET, MOSI, MISO, SCK pins.

Note: Which programmer to use is outside the scope of this Instructable.

I happen to be using a custom built programmer based off of the popular USBasp device.

TIP: If you already have a working Arduino, you can use it to program the bootloader into this ATmega chip.  Take a look around the internet at one of the many tutorials for how to do this.

2. Open the Arduino IDE.

3. Verify that the proper programmer is selected (under Tools > Programmer)

4. Verify that the proper board is selected (under Tools > Board)

  * For an ATmega8, use the 'Arduino NG or older w/ ATmega8'
  * For an ATmega168 use the 'Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega168'
  * For an ATmega328 use the 'Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega328'

5. Upload the bootloader (using Tools > Burn Bootloader)

At this point the Arduino IDE will take a minute or two to connect to your device through the programmer, verify the chip, and upload the bootloader.  You should see the green activity LED flash a bunch of times.


I found that the Optiboot bootloader is much nicer to use than the one that comes pre-packaged with the Arduino IDE.

Some of the improvements include:
  * It uses only 512 bytes of flash instead of the 1 KB or 2 KB that the Arduino bootloader uses
  * It is faster to upload sketches by using a much faster baud rate (115200 instead of 19200 in my case)
  * After an upload or reset, it runs your sketches much faster

In order to use this:

1. Download and extract the .zip file into the hardware directory in your Arduino sketches directory.  Create the hardware directory if it doesn't exist.

2. Restart the Arduino IDE

3. Choose one of the new board that show up under Tools > Board

  * For an ATmega8, use the '[Optiboot] Arduino NG or older w/ ATmega8'
  * For an ATmega168 use the '[Optiboot] Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega168'
  * For an ATmega328 use the '[Optiboot] Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega328' 

4. Verify that the proper programmer is selected (under Tools > Programmer)

5. Upload the bootloader (using Tools > Burn Bootloader)

Step 11: Upload a Test Program

Finally, we should now be able to connect to and use the device like a normal Arduino.

Let's connect a USB to Serial TTL adapter and upload a test program using the Arduion IDE.

1. Connect the USB to Serial TTL adapter.

Connect the GND, VCC, DTR, RX, TX pins.

Note: Which USB-to-Serial adapter to use is outside the scope of this Instructable.  Just ensure the adapter exposes the DTR line as it is needed for the auto-reset process.

I happen to be using a CP2102 adapter from eBay ~$2.35 (

2. Open the Arduino IDE.

3. Open the 'Blink' example (File > Examples > 01.Basics > Blink)

4. Verify that the proper board is selected (under Tools > Board)

  * For an ATmega8, use the 'Arduino NG or older w/ ATmega8'
  * For an ATmega168 use the 'Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega168'
  * For an ATmega328 use the 'Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega328'

5. Verify that the proper Serial Port is selected (under Tools > Serial Port)

6. Upload the program (using File > Upload)

At this point, the Arduino IDE will take a minute or two to compile the program, reset your device and then connect to your device's bootloader through the USB-to-Serial adapter, verify the chip, upload the program, and finally reset your device to run the new program.

If everything is successful, you should (eventually) see the green LED start blinking on and off at about a one second interval.

CONGRATULATIONS!  You now have a $2-5 breadboard friendly bare-bones Arduino ready to add to your toolbox or use for your next project.

Step 12: Variations

It is possible to reduce the parts list even further depending on which features one finds important.

Here are some examples:

1. Don't populate the voltage regulator or 25V 100uF capacitor between GND and VIN if you are always going to supply this board with a stable 5V source (through the GND and VCC pins).

2. Don't populate the 1k resistor or red LED if you don't want a power indicator.

3. Don't populate the 330 ohm resistor or green LED if you don't want the activity indicator.

4. Don't populate the 16 MHz crystal or 2x 22pF capacitors if you can make due with the internal RC oscillator.

Note: This is an advanced usage scenario that would also require a custom fuse selection, bootloader, and modifications to the Arduino source files.

Alternative: Replace the 16 MHz crystal and 2x 22pF capacitors with a 16 MHz ceramic resonator if you don't need the precision that a crystal provides.

5. Don't populate the 100nF capacitor between the AREF and GND pins if you aren't using the ADC.

6. Don't populate the 100nF capacitor between the /RESET and DTR pins if your USB-to-Serial adapter doesn't need it (or already provides it)

You might be able to do away with the 100uF 10V capacitor between GND and VCC if your power source is located close enough and is stable enough.

So, bare minimum (for a stable system), would be the ATmega chip (obviously), the 100nF capacitor between the GND and VCC pins, and the 10k resistor between the /RESET and VCC pins.


Gooz74 made it!(author)2015-11-08

This was my first electronics project and I think I did it quite well except I can't anything uploaded to the arduino.

First, there was the problem of getting the bootloader onto the chip, so I managed that by putting the chip on a breadboard and using my arduino uno. After that, it still was not possible to put anything on the arduino.

It doesn't work using the usb to serial adapter and it doesn't work using the arduino uno.

I still get the following error messages:

avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x45

avrdude: stk500_recv(): programmer is not responding

The settings in Arduino are correct and the usb to serial adapter is visible in Windows 10. The blink program works if I put in on the chip by putting the chip in my arduino uno.

Gooz74 made it!(author)2017-06-26

It's been a while but after allmost (or more than) 2 years I was watching some youtube movies and found a guy that was programming the bootloader via the arduino.

I thought that I had to try this and took my yabbas back out of the box it was waiting in so long.

At first, nothing changed and so I tried a couple of times but still the same error messages until I reconnected everything, powered it on, removed and reconnected the reset cable when the power was on.

The bootloader burned without a problem and from that moment everything worked.

My Yabbas is working now..

zammykoo made it!(author)2016-09-17

This was very helpful and so far my fave bare bones Arduino. I made a breakout board for my FTDI programmer - no more jumper wires!

borosferencz made it!(author)2016-02-29

It's nice and easy to make it.

Thank you man!

serisman made it!(author)2016-02-18

Did you even read this instructable?

The very first page mentions that the schematic is based off of the Arduino Pro Mini and only differs in a few minor ways. There is a link to the Arduino Pro Mini page that has its schematic in both EAGLE and .PDF form. You should be able to adjust it to your own needs.

You might want to try helping yourself before expecting others to do your school work for you.

STom68 made it!(author)2015-12-28


I need the A6 and A7 pins. How is it possible?

Thank you, Thomas

serisman made it!(author)2015-12-29

The PDIP version of the ATmega only has 28 pins and does not break out the extra analog pins. According to the datasheet to get the extra analog pins you need to use the 32-pin TQFP or QFN/MLF packages. It would probably be easier/cheaper to just get an Arduino Pro Mini if you need the extra analog pins.

STom68 made it!(author)2016-01-06

Thanks for the reply! True, I did not think through. I'm sorry because I wanted to use a plan of your work.

amir+farjamm made it!(author)2015-12-12

thank you for your wonderful instruction. it was he best arduino I have ever seen.

STom68 made it!(author)2015-12-03

Thank You!

Teljes képernyő rögzítése 2015.12.03. 173943.jpg
serisman made it!(author)2015-11-17

Try reversing your tx/rx pins and double check the baud rate that you are using compared to the baud rate in the firmware. If you are using the optiboot firmware, make sure you properly loaded the optiboot boards package into the Arduino IDE.

FdxI made it!(author)2015-11-18

Thanks for Y reply Serisman!, i try everything and i have always the same error, i send my pictures of the project.

ATMEGA328PPU.jpgide error.jpgSB CP2102.jpgarduino.jpg
FdxI made it!(author)2015-11-30

Hi again! i found the bug!!! the 2x 22pf capacitors were defective, i changed they and everything worked ok !!! thanks a lot for U time !!!

Gooz74 made it!(author)2015-11-29

serisman, I reversed the tx/rx pins like you said but I still can't upload a sketch to the Arduino.

When uploading, the green led blinks (I think it's the reset pin DTR that does that) but the upload fails every time.

How can I check the baud rates I'm using and of the firmware?

ShubhamJ2 made it!(author)2015-10-20

grate one

GorhamN5 made it!(author)2015-07-20

Wonderful instructable! I've used an adaptation of this in countless projects. Check out one of my latest projects here:

printrbot932 made it!(author)2015-04-23

thanks for the great ible I was looking for the smallest arduino I could make for a project and this one is just perfect! also thanks for recommending that site to buy electronics finally a electronics website with cheap prices and cheap shipping! THANKS!!

taufiq_kharis made it!(author)2015-01-05

i made it!!!. . thanks for your ible. i add 1 diode in the vin for protection :)

Dr_L made it!(author)2014-11-28

Great 'ible! I don't think you could possibly make it more compact using trough-hole technology. I am contemplating a surface mount version...

Nanok made it!(author)2014-09-09

Chipmunk03 made it!(author)2014-08-29


I recently made it. Blew up the voltage regulator (7805). Put a diod (1n4007) in front of the Vin. It's more save now. Got some programming issues. I am using a PL-2303 based usb2serial connector. Got to experiment with it. Message I get is already explained.

I modified the board a little and I want to share it. It's based on DIY Layout Creator and based on your idea.

I extended the board so it also can be used as a programmer for an ATtiny and pin headers to ISP the ATmega.

I am also working on a USB version of this board. Not the adafruit one. Not using an USB2 Serial chip. Coming up soon.


brettostrom made it!(author)2014-04-21

This is NOT complete, there is no pic of the underside of the board, and how it is soldered. Could you add a pic, thanks in advance.

serisman made it!(author)2014-04-21

This is a 12-step/page Instructable. Your comment seems to indicate that you only looked at the first step/page.

ezar made it!(author)2014-04-14

I want to use atmega88. I need to know how to upload bootloader to it... will you plz guide me??

MrMulligan made it!(author)2014-04-02

Great Instructable. I built one and it looks and works great thanks to your detailed instructions. Thank you!

mitiliray made it!(author)2013-11-15

May i ask if there is a way to convert the stripboard layout to pcb?

ksheer made it!(author)2013-10-31

Does the Optiboot bootloader has the required fuse settings ?

XxsonicxX made it!(author)2013-09-26

Was i supposed to solder it?

antisubae made it!(author)2013-09-22

Ran across this Instructable a while ago, but finally dug out all my components and actually put one together today. I'm very, very impressed by how compact it actually is - definitely less than twice the size of a "proper" Pro Mini, and those things are pretty freakin' little. Although I'm well versed in various electronics things (fancy tech terms there, eh?) and could have easily built this from your diagrams alone, I'm also very impressed at how well you put your 'ible together. So many things look so promising from the thumbnails and descriptions, only to find that the actual instructions are woefully inadequate. Kudos for putting together a complete and well-rounded Instructable. :-)

tonesofheresy made it!(author)2013-09-15

Hey! I love this instructable and how detailed you are with everything. I'm trying to replicate it as an intro to building circuits (degree in biochem but wish I'd done engineering instead) but I'm having a crazy hard time getting two wires into the same hole. I've mashed them endlessly but simply can't do it. I'm using 22 AWG wire, which I understand is recommended for stripboard, but I now see that an RJ45 cable generally uses 24 AWG. Would that small decrease in diameter make such a great difference, or do I need to try harder to mash the ends? Also, I know that the width of the DIP IC socket is prohibitive and that's why you shared holes, but is there any way around it? I know basic circuit analysis from the physics class required for my degree and some extracurricular reading, but this one's a little too complicated for me to "redesign." If you have any advice, I'd greatly appreciate it!

serisman made it!(author)2013-09-17

Well, you could get a small drill bit and increase the size of the hole. Just don't make it so big that you lose the copper on the edges.

If you don't have appropriate drill bits, look here:

They have kits from 0.3 mm up to 3.0 mm which should cover pretty much any size hole for a PCB. They also carry a 'Pin Vise' which will allow you to use the drill bit by hand.

cnludwig made it!(author)2013-09-06

Holy details, Batman! awesome 'ible!!

thegrendel made it!(author)2013-09-02

Use a slightly longer piece of stripboard (maybe 5 mm more) to provide
room for a 6-pin programming header. That will save having to program
the 328 on a separate Arduino board.

Otherwise, a very nice project and a neat alternative to using the Adafruit
Boarduino PC board.

dabbith made it!(author)2013-08-29

To make a 3.3v version, what would I have to change besides the regulator and the crystal?

serisman made it!(author)2013-08-29

You might also want to change the drop resistors on the LEDs. If not, they will probably be pretty dim.

Also, make sure you select the correct board in the Arduino IDE to make sure the right fuse settings and bootloader get flashed.

btrudgett made it!(author)2013-08-28

I got same error?
I have to ask. is there any form of reset on this??

serisman made it!(author)2013-08-28

See my response to electro18 for help on the error message.

To get reset working while programming from the Arduino IDE, you need to make sure you connect your USB-to-serial's DTR pin through a 100nF capacitor to the ATmega's reset pin. Alternatively, you can install a button/switch between the ATmega's reset pin and ground.

btrudgett made it!(author)2013-08-29

If i go with the switch method. I will need the circuit to be powered true?

serisman made it!(author)2013-08-29

I'm not totally sure what you are asking.

The circuit always needs to be powered. Installing a switch on the reset line doesn't change how this is powered in any way. You can power it with an unregulated voltage on the VIN pin, or a regulated 5V (i.e. from usb adapter) directly on the VCC (5V) pin.

electro18 made it!(author)2013-08-09

Shows error with atmega8 : stk500_getsync() : not in sync : resp=0x00 :(

serisman made it!(author)2013-08-28

The error message you are getting is a pretty generic one that basically just means that it can't talk to the bootloader. This can be caused by an issue with the physical connections, the software configuration, or a missing bootloader.

Double check all the connections from the usb-to-serial adapter to the arduino board. Try reversing the the rx/tx connections.

Make sure you have the correct COM port selected in the IDE.

If it still isn't working, try re-flashing the bootloader. When you have your programmer connected, make sure you use the tools > burn bootloader menu option and NOT the file > upload using programmer option.

jukarr made it!(author)2013-08-04

Great work. Thanks friend!!!!

TheNickmaster21 made it!(author)2013-07-28

I've been looking for something like this for a while! And I'm glad you recommended Tayda instead of another expansive supplier :P

thebodzio made it!(author)2013-07-24

This tut actually brought me from the “theory of arduino” to the “practical arduino” :} – that's the thing one have to be grateful for (I know, I am :}). This is me saying: thank you serisman! You rock!

As a sidenote, I want to add – since it wasn't so obvious to me and took me some time to find the answer – if you want to power up this kind of 'duino from the external source without serial interface connected, you may find that bootloader have strangely long timeout before it starts recently uploaded sketch. The solution is to connect RX to TX pins on this board (arduino's digital pins 0 and 1) or to connect RX pin to the GND through the 10 kΩ pull-down resistor. Take a look here for the original note:

Ploopy made it!(author)2013-07-23


odalcet made it!(author)2013-07-13

I think there's an error regarding LED polarity: the longer lead is positive (anode)

serisman made it!(author)2013-07-13

Technically there wasn't an error, as the original text was referring to the metal pad inside the LED and not the lead outside the LED. If you are re-using an LED from another project the leads might be the same length so you would not be able to tell which was the anode or cathode. By looking inside the LED you can always tell.

But, I realize that this could be confusing, so I changed the text and added an image to hopefully be less confusing.

odalcet made it!(author)2013-07-13

Great serisman!. Your's is a very good tutorial. I'm looking for some cheap ATMegas (like the ATMega8-16) to build your project. The part about burning the bootloader is a little bit confusing but I found 2 nice tutorials about that, using an Arduino Uno as an ISP (In-System Programmer): and

mikesoniat made it!(author)2013-07-13

Great build! Your board layout is very clean. Looks awesome!

BrittLiv made it!(author)2013-07-12

Awesome writeup! It looks really neat!