A commercially-made Arduino consists of nothing more than a power supply,
an ATMega328 chip, a crystal and a few support components, and sets of
female headers connected to the signal lines of the chip. And, oh yes, the
nice professionally-made printed circuit board. But, all the the heavy lifting
is done by the 328. So, in theory at least, it's possible to duplicate
the complete functionality of an Arduino Uno on a hand-wired board.

I did it. I painstakingly built my "Hackduino Zero" one section at a time
on a Radio Shack general purpose PC board, part number 276-168.


First, I built a power supply on one corner of the board: a standard 2.1 mm
DC power jack, a 7805 5-volt regulator, a 2N4001 rectifier diode, and two
100 uF capactors.

The ATMega 328 chip needs a 28-pin (narrow) socket,* the power supply
connections, a 16 MHz crystal, and two 22 pf capacitors. That's all it takes
to make a barebones hackduino!

*For example, http://www.protostack.com/connectors/ic-sockets/ic-socket-28-pin-7.62mm-0.3.

A few add-ons and frills might be nice. A reset button is almost essential.
And, the standard 6-pin programming header that connects to an FTDI cable
or breakout board is very nearly indispensable. Add a power-on LED and
an LED connected to SCK/PB5/Digital-13. All right, now we're talking
about a reasonably well-equipped hackduino.

What's missing? The female headers, of course. With those installed,
we'll be able to plug in standard Arduino shields. Unfortunately, the
headers are difficult to install. The spacing is a bit weird, and it means lots
and lots of wiring to connect with the ATMega chip. All told, maybe 48
wired connection. Whew!

This is essentially a Proof of Concept project. I built it just to prove
that it can be done with point-to-point wiring, that anyone fool enough
to try to haywire a full-function hackduino can do it . . . if she's
stubborn enough . . . and lucky.

I give no detailed instructions for this Instructable because it is not
a feasible project for the average builder. The level of complexity is
high and there are too many chances for error. And if you don't already
have at least some of the parts on hand, then you're not even saving
money over a commercially-made Arduino.

The end result of the project is a near equivalent of a Sparkfun PTH
kit (http://www.sparkfun.com/products/10523), but lacking the elegant
layout and beautifully-designed red PCB. There's even a PPTC resettable
in-line fuse, just like the Sparkfun kit. My own "innovation" is adding
a miniature 3-position paddle switch at the power supply, to select the
power source (USB, external, off). I used a Cutler Hammer #T8206,
All Electronics catalog number MTS-71 ($1 ea.).

The Hackduino pretty much follows the schematic of the above-mentioned
Sparkfun PTH kit:

First, build the power supply section . Mount a standard 2.1 mm barrel
jack on one edge of the board. Then, a diode to protect against reverse
polarity input. A PPTC resettable in-line fuse (for circuit protection) is nice,
but not absolutely necessary. A 7805 5-volt regulator and two electrolytic
filter caps round out the parts. Now, connect them together.

It's quite a challenge to position and then solder the female header strips
which accept plug-in shields. The trick is to take an already assembled
shield and press the loose female headers onto the male header pins of
the shield. Then place the hackduino board atop the upside down shield,
so the solder pins come through in the correct spacing. Note that the
PC board might buckle slightly after soldering the headers, but this is okay.

Add a strip of 6 right-angle headers on the edge of the board, and connect
the appropriate pins to Rx, Tx, DTR, Gnd, and +5, per the schematic. The FTDI
cable or breakout board will connect here for programming the hackduino.

Now to connect all the wires. Lots and lots of wires. Follow the schematic
and check for solder bridges to adjacent pins. Then, double check.
Use an ohmmeter to check the resistance between the ground and power
busses (it should be greater than zero).

Done? Don't insert the ATMega 328 just yet. We'll do a "smoke test" first
by applying power and seeing if the power-on LED lights up.

All right so far? Insert the 328 and power it up! Connect to your computer's USB
port with an FTDI cable and load the blinking LED sketch
(http://arduino.cc/en/Tutorial/blink). Does it work? Yes?

<p>I don't believe that is many wires being a hacked version. I have hacked other types of hardware before and you should see the wires. You are correct. You can make a few of these cheap to keep on some of your projects so you don't have to take the Arduino off and do a different sketch everytime.</p><p>I once built a lot of 10 LED Chaser boards using a projects kit for the schematics before the schematics were put out on the web. They took about 15 minutes each to make and at last count I had 1500 leds chasing but that was a few years back.</p><p>So, all in all, what I am saying is if you have the schematic and lots of parts laying around like I do, it would be easy to make this board and I am glad you showed it to the public. When I get a chance, I will make a few. Thank you thegrendel.</p>
how did you managed to upload sketch to the atmega328? my arduino ide only allows me to upload on an atmega 328p
I had flashed a Duemilenova bootloader on the 328.<br>Selected Duemilenova from the Tools/Board menu,<br>connected to the programming header with a CP2012<br>breakout board (cheap!), and it worked fine.
This is neat! Though did you this to save money, or was it really just make a point?
sparkfun does sell the parts bundle so you can build your own. has everything but the board i believe.
Correct, and Sparkfun also sells the bare board. Their board<br>is beautifully done, and in a striking crimson color, too. But,<br>the problem with the Sparkfun kit and others like it is that it<br>makes it too easy for the builder, and likely you don't learn<br>as much as when you're building a hackduino from scratch.<br>And it's just so much more satisfying if you're building something<br>from the ground up -- just ask some of the other people who have<br>posted projects here.
oh no i understand it. i just dont fit in that category. i have a computer engineering degree and all my electronics professors got told i wanna code not build circuits. i want to code them. but i know what you mean about the satisfying end. just thought people who, like me, dont feel the love when building the actual circuits but love it when the code gets written and something happens.
Yes, people just don't want to get their hands dirty any more.<br>But that's the only way to really learn. And I mean gut-level<br>learning, learning in your fingertips, and not book learning.<br>As for your profs . . . well, you know the saying to the effect that --<br>Those who can, do.<br>Those who can't, teach.
This is exactly what I will be doing with my arduino-based projects now. <br> <br>I purchased the Mintduino kit from RadioShack about a month ago to learn how to put together an Arduino from the ground up, especially since it had all of the parts already. After i built it, I did the smart thing: Ordered an FTDI to Mini-USB adapter board so I wouldn't have to pop the ATMega off of my Uno every time i wanted to program the self-made one(s). <br> <br>I also have the ATMega328 pinout diagram printed out and hanging on my fridge so i know what pins do what, just in case i forget. <br> <br>Current project i am working on is building a arduino that helps automate and sense things for the motel I own and operate. I am using Photo-interrupters to register when the doors to the office open and close, which triggers Arduino A (hard wired, doesn't move anywhere) to both set off a chime unit as well as send a signal via an RF transmitter to Arduino B, which about a second later will also chime. Arduino B is connected to a LiPo battery pack with a recharger/booster circuit. <br> <br>Arduino A will also be hooked up to a couple of servos and a photo-sensor. With the PSensor, the Arduino will know the ambient light level outside, and based on that trigger the Servos to (via a Servo Switch mechanism, search YouTube for it) flip the light switches to the main motel signage and car port lights outside. There will also be knobs on the project box for Arduino 1 so I can manually adjust the level of light that triggers the servos for ON and OFF positions. <br> <br>Fun project so far
Not to save money, just to show that it could be done.<br>Pre-build Arduinos are cheap enough that it saves you<br>money to build one from scratch only if:<br><br>1) You already have many of the parts on hand.<br><br>or<br><br>2) You're building a dedicated controller, and don't<br>want to tie up an Arduino board.
That is a lot of wires. I managed to make a clone on stripboard with just a few cuts of the track and some quite straight wire bridges. Even has a 5 and a 3.3V line.<br>I admit, no USB but a serial entrance<br>
Most of the wires are to the female header strips, but this gives<br>my Hackduino &quot;Zero&quot; the capability of using all the plug-in<br>shields for standard Arduinos. Versatility has its price.<br>You're correct, though, that a barebones hackduino can<br>be done with just a few connections.
I am with thegrendel so much more fun and rewarding building the circuits - that's what I did for my recently submitted Arduino Chicken Coop Controller. I use proto- type boards and the old wire wrap system. Except I solder the wires to the tracks rather than using the expensive wire wrap pins and sockets see below
http://www.mouser.com:80/ProjectManager/ProjectDetail.aspx?AccessID=a903b2c53a<br><br>I priced one of my clones which I print on a pcb. assuming that you have a laser printer and etching solution + the price of a pcb (about $4.00 at radioshack) you can make a reliable board for $11.00 and save all the jumper wiring which is so daunting.<br><br>A great Arduino clone eagle cadsoft file from the book Arduino Robotics can be found at: sites.google.com/site/arduinorobotics

About This Instructable




Bio: hobbyist, tinkerer, old curmudgeon
More by thegrendel:The HacqueBoard The Arduino / TFT LCD Connection Using an In-System Programmer 
Add instructable to: