Categories

Archives

Elsewhere

     
       

Build your own Arduino for under £10

How to make a stripboard Arduino clone, AKA the veroduino.

Once a project is past the prototype stage there is no need to use a complete Arduino, even with the ever decreasing cost of Arduino compatibles and the availability of cut down versions such as the Arduino Nano and Mini it’s still overkill for a lot of uses.  Fortunately it is very easy to build your own Arduino compatible circuit around the ATmega microcontroller and it will only cost you a few pounds; with some good deals on bulk components and by flashing the Arduino bootloader yourself you could do this for as little as a fiver.

Here is how to build a basic Arduino on a small (5cm square) piece of stripboard, all you need is a handful of components and a little time.

Parts required

Piece of Stripboard/veroboard
Atmel ATmega328P-PU microcontroller
28 Pin DIL Socket
16MHz crystal
LM7805 voltage regulator
2 x 100uF 25V electrolytic capacitors
2 x 22pF ceramic disc capacitors
1N4001 diode
Momentary push to make button/tactile switch (optional)
10K 0.25W resistor (optional)
6 pin male header (optional)
100nF ceramic disc capacitor (optional)
Hookup wire

Here’s my stripboard layout:

Notes on components

You will need a piece of stripboard at least 20 holes across by 19 strips or 14 holes across if on board programming and reset button aren’t required.

If you don’t need the on board reset button you can leave that out and if you don’t need on board programming you can omit the 6 pin header and 100nF capacitor. If you aren’t using both the reset button and the FTDI connection then you can also omit the 10K resistor. The 1N4001 diode isn’t strictly necessary either, it’s just there for reverse polarity protection.

You can use the ATmega168 (half the Flash/EEPROM/SRAM of the ATmega328) if that is all you require, either way the Atmel AVR will require the Arduino bootloader flashed to it before you can upload a sketch to it, you can either buy one with it preloaded or use another Arduino to burn it yourself. If you want to buy one preloaded you can get the ATmega328 on eBay here together with the required crystal and the 22pF loading caps.

The build

Break the tracks on the copper side of the board where indicated with the red crosses and solder in the components, if you haven’t used stripboard before see this page for an explanation of how to use it. Make sure the socket for the ATmega chip is installed with the notch at the top and the LM7805 voltage regulator is installed with the metal strip at the right hand side. The 1N4001 diode needs to be installed with the side marked with a band at the top and the two electrolytic capacitors also need to be installed the right way round (note the + signs in the diagram above) the positive lead should be longer and there is usually a stripe on the canister marking the negative side. Install the tactile switch with the legs on the sides so that it joins the top and bottom strips when pressed. The other components can all go in either way round.

Power Connections

You can connect power to the VIN and ground on the right, 7 to 9VDC will be fine as is but I’d put a heatsink on the LM7805 voltage regulator if using 12V. You can also power it via USB from the FTDI connection but make sure that the external power (VIN) isn’t connected at the same time; if you want to have both connected you can disable the FTDI power completely by omitting the link shown in blue next to the 6 pin header.

I/O connections

I’ve marked the locations of the digital and analogue lines on the layout above (note they are in a different layout to the Arduino board) but have not included headers in the parts list as normally you would be connecting directly to the board once you are past the prototype stage.

Programming

Loading a sketch can be done by connecting a 5V FTDI board or cable to the 6 pin header or by temporarily transferring the ATmega chip into another Arduino for programming. A good USB FTDI cable is available on eBay here, make sure you get the 5V version.

42 comments to Build your own Arduino for under £10

  • Ken Boak (@monsonite on Twitter)

    Nathan,

    An excellent write up of a subject very close to my heart.

    Let’s chuck in a magjack breakout board from CoolComponents (£1.99)and an ENC28J60 (£1.99) and make Nanode’s cheapskate stripboard cousin. ;-)

  • Ray Madigan

    I just found your article and decided to build one of these for my next arduino project. The processor part works well, as would be expected. I however can’t upload a sketch to the atmega 328. I am using the Sparkfun FTDI breakout board and I made sure the pinout was correct. I had to swap Rx and Tx. I’m not sure what could be going on, any ideas would be appreciated.

    The message I am getting is: avrdude: stk500_getsync(): not in sync: resp=0×00

  • Ray Madigan

    I figured out what the problem is and am now able to upload sketches. I tied the cts line on the FTDI breakout board to gnd and it works like a charm. I found it by reading the Sparkfun writeup on the breakout board. Hope this helps someone in the future.

  • takbee

    Hi.I have built with some mods.The regulator capacitors are 10 uf ,also added resistor +led on pin 13(like the original arduino uno board).Uploaded the blink sketch using the usb2serial light adapter and everything worked fine!Uploaded some other example sketches and everything wend good.BUT when i try the lcd library uploading the “Hello world” example, the 13 pin led flashes continously (like continous resets) and nothing happens UNTIL i start the serial monitor and…everything works!! Stopping the serial monitor jams everything .Any ideas?
    Thanks anyway for the nice design!
    (I select the uno board from the arduino IDE running on XP windows machine)

  • Hi Takbee, Sorry, I missed this. Did you get to the bottom of it? I’ve never come across anything like that before, the fact that opening the serial monitor makes the problem disappear is really odd.

  • Ian McMill

    where would the obligatory LED go for power-on notice ? I am super new to electronics so please excuse me for this question :)

  • Pascal

    Please can anyone Update this fine layout with a resistor and led on pin 13??
    many thanks.

  • Does this help: http://nathan.chantrell.net/downloads/arduino/veroduino-led.png
    1K resistor from D13 (pin 19 of the ATmega) to the anode (long leg) of the LED and the cathode of the LED to ground.

  • Jazly

    Hi nathan…

    thank you so much for posting this arduino prototype.I have a small question.can u plz mention the FTDI header decription (which one is DTR,GND,VCC etc…)

    thnx alot….

  • Hi Jazly,

    From top to bottom in the diagram above:

    Ground
    CTS (not used)
    5V
    TX
    RX
    RTS

    Cheers,
    Nathan

  • Jazly

    Thnx for the reply bro..

    i hv a small question…

    i bought a USB module which contains following pins

    Ground
    3.3V
    5V
    TX
    RX
    DTR

    i cudnt find RTS and CTS pin :(

    can i use this usb module to ulpload sketch??
    thnx again

  • Ken (@monsonite on Twitter)

    Jazly,

    Your USB module should work. It sounds like it follows the usual “FTDI” standard connection.

    The DTR line is the signal used to reset the Arduino.

    You need to fit a 100nF capacitor between the DTR signal and the reset pin (Pin 1) of the ATmega

    RTS and CTS are not needed.

  • Yes, just connect the DTR to the one I called RTS, there’s already a 100nF cap on the board between it and reset so you won’t need an extra one.

    The CTS pin isn’t connected so you should just be able to plug your module straight in, it doesn’t matter that you have 3.3V on that pin.

  • Jazly

    thnx alot for both Nathan and Ken…
    cheers… :D

  • Kevin

    Hi Nathan

    I have built your veroduino exactly like the diagram and circuit. I only added a led to pin 13 and for power. My problem is that I have uploaded a pov scetch but the leds seem to be flash slower and dimmer than if it was on the UNO. Needless to say that the pov does not work as it should. Why do you think its doing this.

    Regards

    Kevin
    South Africa

  • Piero

    Hello Nathan, and very very thanks for your usefully tutorials.
    I have some ATMEL 168 and some 328, and soon I’m gonna do my first veroboard, thanks to your posts.

    ’cause I’m REALLY newbie in electronic stuff (but I’m learning, hopefully fast), I don’t understand why is there a need to make cuts on the rear of veroboard. Can I ask you why cut tracks? Are not already separated?
    Thanks in advance and really sorry for the newbie question :-)

  • @Kevin, That’s puzzling, it shouldn’t be any different, what are you powering it with?

    @Piero, The strips are separated but if you want to put components inline with a strip you need to break it otherwise there would be a short. For example if you look at where the 328 chip is if the tracks were not broken underneath it then all the pins on the left would be joined to those on the right – not what we want.

  • Piero

    Hello Nathan,
    many thanks for answer… Now I understood… the problem was that my are not stripboards but perfboard… :-)

    Thanks again ad thanks for all your work
    Piero

  • debasish das

    HI NATHAN,
    i did not understand by the name ‘cut track’.what is mean by it?do i have to solder or what?i am very knew to electronics so please help me??i love your project….

  • debasish das

    1n4001 is not avialable..so if i replace it with 1n4007,then will it work???

  • On stripboard (veroboard) there are copper strips on the bottom of the board that you need to cut in certain places where you don’t want components on the same strip to be connected together. You can get proper tools for this but an 1/8″ drill bit will do in a push. You put it in the hole on the copper side and twist to break the copper so it is no longer joined.

    See http://electronicsclub.info/stripboard.htm and http://youtu.be/DSk5DQhi1r0?t=4m25s for more info. There’s loads more examples out there I’m sure.

    1n4007 will be fine in place of the 1n4001

  • debasish das

    thank you nathan for such a quick reply to my questions..i have another doubt that should i have to check before i insert the atmega 328 chipset to the controller??if is then can u please tell me how to check it.i am very new to it so please dont mind..please help me!!!!

  • debasish das

    i have another question is that can i flash the program using usbasp avr programmer?? here is the website..
    http://www.hobbyking.com/hobbyking/store/__21321__USBasp_AVR_Programming_Device_for_ATMEL_proccessors.html
    another question is that can i flash it with arduino uno’s bootloader??and will it work similar to arduino uno??please help!!!i know it is a silly question but actually i am very new to it so want to clear all doubt…

  • Piero

    Hello Nathan, sorry if I reply for you, but also thanks to you now I have some Arduino skill :-D

    @debasish:
    yes, you can flash an Atmega with usbasp, and it will works exactly like an Arduino Uno (if you will flash with Arduino Uno bootloader)

    cheers

  • debasish das

    thank u piero but i cannot find tx and rx pin from the usbasp…please help me dude…

  • USBasp uses SPI rather than serial so you don’t connect to the TX/RX pins.

    You need to connect it as follows:

    SCK to D13
    MISO to D12
    MOSI to D11
    RST to reset on the Arduino (pin one on the ATmega).
    Power
    Ground

    PS. Thanks Piero, all input is appreciated :)

  • debasish das

    thank u nathan and peiro for the help!!!but now i need help again…today i had completed the circuit but now when i connect to the laptop via usbasp nothing is working and the led is not glowing…..but when i connect it to the 7-9v supply the microprocessor gets hot…..what shall i do????what is the problem??did i done any mistake??please help me nathan and peiro!!!!!!!!!!!!

  • Piero

    uhm… I’m surely not an expert, but I have made ??a mistake like this in the past…
    are you sure that the LM7805 and the power from the FTDI are connected well?

  • debasish das

    actually lm7805 is not available here….so i am using 7805ct and ka7805 in place of lm7805…is it ok??

  • debasish das

    one question is that do i have to connect to the 7-9v power supply when i connecting the controller to the laptop via usbasp??

  • debasish das

    nathan i have connected the usbasp as follows
    SCK to pin13 on atmega
    MISO to pin12 on atmega
    MOSI to pin11 on atmega
    RST to reset on the Arduino (pin one on the ATmega).
    Power pin2 on atmega
    Ground pin3 on atmega….i find the led dosnt glow…but while kept it connected the microprocessor gets hot as i plug 7-9v power suppy to it…

  • debasish das

    please hepl!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

  • No, you shouldn’t connect the 7-9v input if you are powering it from the USBasp.

    When you say you have connected “SCK to pin13 on atmega” do you mean the physical pin 13 on the chip? When I said D13 I meant the Arduino digital pin 13 which is not the same thing.

    If you look on the stripboard layout in this post I’ve labelled the Arduino pin numbers D13 etc. and there is also a diagram here that shows how all the Arduino pins translate to the physical pins on the chip: http://nathan.chantrell.net/downloads/arduino/Arduino-To-Atmega8-Pins.png

    So for the PHYSICAL ATmega pins it would be:

    SCK to pin19 on atmega
    MISO to pin18 on atmega
    MOSI to pin17 on atmega

    Connecting those the wrong way won’t have caused any damage but if you have connected the power across pin 2 and pin 3 you have probably killed the chip :(

    The power pins are pin 7 for positive and 8 for ground.

  • Kevin

    Hi guys

    Just let me know if anyone has any luck burning a bootloader to the Armega 328p-pu specificaly the one that comes out with the 8mhz crystal. Im using a usbasp. Been strugling for months now.

  • Nico

    Hi Kevin,
    I found this, but have not tried it (lower down the webpage is the info)

    http://robotics.org.za/index.php?route=product/product&keyword=atmega328&category_id=0&product_id=66

    Hope it helps or/and is applicable to your problem (and works!)
    NT

  • Mitch

    THANK YOU SO MUCH

  • Nico

    Hi,
    I notice that the link given by me has changed since I published it.
    Go to website and query the webmaster if possible for information about the article that used to be at that link.
    Sorry for the hiccup!

  • Mitch

    Hi,

    I keep getting this error when I use my FTDI Basic breakout board :
    avrdude: stk500_getsync(): not in sync: resp=0×30

    Before I get this error the FTDI Basic flashes 3 times at the TX and RX lights.

    Thanks

  • Mitch

    (I’m trying to burn a bootloader to the chip using the FTDI Basic)

  • You can’t use FTDI to burn the bootloader, you need to use an ISP programmer (eg. USBtinyISP or USBASP) or you can use an Arduino with the ArduinoISP sketch: http://arduino.cc/en/Tutorial/ArduinoISP

  • Mitch

    Oooh I see !
    I have some more questions.

    1. If I use the link you gave with the added resistor and LED , when you ad a 9V battery and press the button will the LED light or does a bootloader have to be present for it to light up?

    2. Can I just not use a bootloader and upload a sketch directly with the FTDI basic board?

    Thanks

Leave a Reply


 


 


 

You can use these HTML tags
(links will be automatically marked with rel="nofollow")

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Notify me of followup comments via e-mail. You can also subscribe without commenting.

By submitting a comment you agree that it can be reproduced under the same licensing terms as the rest of the content on this site.