Introduction: Standalone Arduino / ATMega Chip on Breadboard
If you're like me, after I got my Arduino and performed a final programming on my first chip, I wanted to pull it off my Arduino Duemilanove and put it on my own circuit. This would also free up my Arduino for future projects.
The problem was that I'm such an electronics newbie that I didn't know where to start. After reading through many web pages and forums, I was able to put together this Instructable. I wanted to have the information I learned all in one place, and easy to follow.
Comments and suggestions are welcome and appreciated as I'm still trying to learn all this stuff.
Fellow Instructable member, Janw mentioned to me that it's always a good idea to add a capacitor or 2 near your power. He mentioned using a couple of 100nF capacitors should work. I'm very grateful he pointed this out to me, because my first production circuit that I'm building upon this circuit, was having a little bit of strange behavior. So I hooked up one 10uF capacitor near my power, and it started behaving correctly! I don't know why it didn't affect my 'blinking LED' test, but I do know that I'm grateful for Janw for pointing this out to me. Thanks Janw.
Building upon the previous edit, I wanted to mention that Instructable member, kz1o brought out some more information regarding the capacitors. Please see his comment below, dated February 14th, 2010 @ 10:52 am.
Update - This Instructable is on Hack a Day!
Step 1: Parts Needed
I bought my parts from Digikey and Sparkfun Electronics - they're 2 of my favorite places to buy components. Anyway, here's the list:
#1 - (Qty: 1) - ATMega328 chip with Arduino bootloader pre-installed ($5.50)
#2 - (Qty: 1) - 5VDC Switching power supply ($5.95)
(Note: If you don't use a switching power supply, you must add in a voltage regulator and a couple of capacitors...see below)
#3 - (Qty: 2) - 22 pF ceramic disc capacitors ($.24 / ea)
#4 - (Qty: 1) - 16MHz Crystal ($1.50)
#5 - (Qty: 1) - Power jack ($.38) (Optional)
#6 - (Qty: 1) - Breadboard (hopefully you have one laying around, but if not, here's one. ($8.73)
#7 - Small pieces of 22 awg solid wire. If you don't have any, you can probably pick some up at your favorite electronics store.
Total cost for above before tax/shipping: about $14 (not including breadboard).
Alternatives / options:
Option / Alternative #1:
If you want to use an existing power supply you have around the house, make sure it is between 5V - 16V. If you are not sure if it is a regulated switching power supply, then you must use the following components too:
#1 option - (Qty: 1) - 5V Voltage Regulator (or another similar 5V voltage regulator) ($.57)
#1 option - (Qty: 2) - 10 uF Aluminum Capacitor ($.15 / ea)
(See below reference links for how to hook them up)
Option / Alternative #2:
If you don't want to use standard items #3 and #4, you can replace those with:
#2 option - (Qty: 1) - 16 MHz Ceramic Resonator (w/cap) ($.54)
This part looks like a ceramic capacitor, and you hook the 2 outside pins up to where you would hook the crystal up (covered later in the Instructable), and the middle pin goes to ground. At least this is what I've read - I haven't tried it yet. But as you may note, it is a little cheaper to go this route. :)
Ok, let's start hooking stuff up!
Step 2: Hooking Up Power
Go ahead and connect your power jack as shown in the first photo if you are using a power jack. Next, hookup a couple of wires as shown in the photo connecting the respective power (+ and -) rails together.
Step 3: Chip (microcontroller) Placement
Now we want to put the microcontroller on your breadboard as shown in the photo. If this is a brand new chip, you have to bend both rows of pins in a little bit. What I do, is I hold the chip from both sides, and press the chip a little bit against a flat surface like a desk, and do this on both sides so that both sides are bent in equailly.
You most likely won't have to do this if you're pulling your chip from your Arduino - they're already bent from being in the socket.
Please note the orientation of the chip - in the photos and for this Instructable, please place the chip so that the little half-round 'notch' is on the left.
Step 4: Bringing Power to the Chip
First hook up 3 wires as shown in the photo. One is going to be ground/negative (the black wire shown), and 2 will be to the positive.
If you can't tell which pins are being connected on the chip, look at the 5th image in this step which is a pin mapping that I pulled from Arduino's website to reference. Going by that, you can see that our ground/negative (black) wire is going to pin 22, and the 2 positives (the red wires) are going to pins 20 and 21.
Next hook up 1 more positive (red) wire and 1 more negative (black) wire as shown in the 3rd/4th photos (they're the same thing...just one is zoomed in more).
Again, if you can't tell, look at the Arduino mapping, and you can see that we're connecting our ground/negative (black) wire to pin 8, and the positive (red) wire to pin 7.
Step 5: Hooking Up the Crystal to the Chip
Actually before we hook up the crystal, let's hook up those capacitors. Hook up those 2 22 pF ceramic disc capacitors to the chip as shown in the photo. They go right next to the negative/ground (black) wire. One leg (you don't need to worry about polarity) of the capacitor goes to the negative/ground rail, and the other to one of the pins on the chip. One capacitor hooks up to pin 9, and one to pin 10 on the chip.
Now for the crystal. Place one leg of the crystal at pin 9, and the other leg at pin 10...but make sure you place it between the capacitors and the chip/microcontroller. Refer to the photos.
That's it! You're actually done. The next 2 steps are optional. Now you can replicate what you had connected to your actual Arduino board to this standalone circuit. You'll want to reference the Arduino pin mapping from Step 4 to know what to hook up and where.
You can continue on to the next couple of steps for a little extra, and a test, or proof-of-concept for lack of better term.
Here's a quick video of the completed breadboard:
Step 6: (Optional) Power Indicating LED
This is a little 'trick' used by people, I understand, for troubleshooting purposes. You add an LED (and resistor of course) to the power part of the circuit, so that if your project isn't working, you can quickly identify if the circuit is getting power or not.
Just hook up your resistor (the one I used on mine, in the picture is a 510 OHM resistor) as shown in the photos. Remember with LEDs that they do have polarity - the short leg is the negative one, and the long one is the positive one. So make sure the short one is the one connected to the ground (black) rail.
One of the pictures shows the circuit plugged in, and the LED on.
There you go. Again, I'm not an expert, but it seems very logical that you would want to do this, and I'm going to do this step on the final version of my first Arduino project.
Read on to the next step if you want to see a real simple way of seeing if you've got everything on your breadboard right.
Step 7: (Optional) Quick and Easy Test
Ok, you've got everything wired up, you know you've got power, but the question is, did you wire everything up correctly? Let's check.
For this you'll need a resistor, and LED and some code.
Wire up a resistor and an LED as shown in the photos. For this one, I used a 330 OHM resistor, and a red LED. Take note of how you plug in the LED - they have polarity - the short leg goes into the negative/ground rail, and the longer, positive lead goes to the ATMega chip...pin 19. As before, if you're not sure what pin this is, refer to the Arduino mapping image in Step 4.
Now, you need to download the Arduino Sketch I've attached, open it in the Arduino software, and upload it to your chip. This will make Arduino pin 13 (but it's ATMega pin 19 as I mentioned in the previous paragraph) blink every second. It's from this great Getting Started with Arduino book I have.
Once you've hooked up your LED and resistor, programmed your chip, put it back on your breadboard, then you can connect up your power. You should get a blinking LED, which means you've hooked up everything correctly!
Below is a brief video of the circuit we just built with this blinking LED:
Step 8: Credits and Links
I hope you liked my Instructable and I hope it helps you. I know I wish I had something like this when I was first trying to figure this all out. I must say though I can't take all the credit - I must thank the Arduino product and website for making a great product. The Arduino website is a great source of information and is actually where I got a lot of information about the minimum required components to get a chip to work away from an Arduino board.
The other great source was at: ITP Physical Computing ... particularly the Arduino-specific web page.
And I can't forget the Getting Started with Arduino book that I mentioned in Step 7 - it was a great resource for getting me started with my Arduino.
And last but not least, if you've got this far, thank you for reading!
2 People Made This Project!
We have a be nice policy.
Please be positive and constructive.
Great tutorial! One Question is why do you need to connect Pin 21 on the chip to power? Im not sure what AREF/ analog reference mean but it doesnt say VCC on the diagram?
You know, I pretty much based this tutorial off of another tutorial I found so I just did what they did. Now that I know a little bit more about this chip though, I think you bring up a good point. You may be able to omit connecting 5V to pin 21 depending on what you're doing. I suppose you could try not connecting it and see if something doesn't work. If everything is OK, then don't worry about it.
If you're working with analog components and need a 5V (or other voltage) reference, then you would hook it up. I experimented with it a little bit a couple years ago. I would just do a Google search on Arduino (or ATMega329) AREF.
can i use many of these microcontrollers together so that i have more digital and pwm pins with nrf24l01?
I have no idea about using multiple microcontrollers together. However, you should do a Google search about Arduino and charlieplexing - charlieplexing allows you to control more things (like LEDs) than what you have pins available for. It may be a solution for you.