I've been wanting to get into hardware type projects (robots, gizmos, etc) for a while but I'm fairly ignorant of hardware. I'm a software developer by trade. I've seen books like "The Art of Electronics" and "Teach Yourself Electricity & Electronics". But what I really need is a book of project/tutorials, that upon completing them, I can honestly say I am very, very familiar with electronics.
I could probably list off $15,000 of Electrical Engineering course text books, but for getting into "hardware type projects" they really won't get you very far. You'll learn far more (and far more quickly) by finding more hacker oriented resources that will bootstrap you with absolutely necessary information and skip the rest.
# Introductions #
To begin with, Sparkfun has a bunch of tutorials, including a great introduction to embedded electronics. This encompasses much of what you'll need for basic hardware projects.
As someone with a software background, the Arduino is a great platform to start playing around with hardware. It acts as something of a bridge between software and hardware hacking by allowing you to program a micro-controller in a (relatively) high level language, and abstracting away a lot of the messy hardware details. This not only lets you start getting simple things done quickly, but also allows you to easily interface with virtually any other hardware modules you can come up with so you can push the boundaries of your knowledge. By making experimentation cheap, it strongly encourages the best types of exploratory learning.
# Projects #
Beyond the project tutorials listed on Sparkfun, OpenCircuits is a great resource for more project ideas.
Hack a Day is often a good resource for inspiration, and the venerable Make seems to always have something interesting.
# Sourcing Parts #
Sparkfun is a terrific online electronic components store. It is extremely hacker friendly, having been founded to serve preciecesly that group. For some items the prices may be slightly higher than at Digikey, but this is more than made up by the fact that they have sorted through the bewildering number of seemingly-identical components available.
If you know exactly what you need, and especially if you can't find it through Sparkfun, Digikey is your friend. They have everything. And its uncle. The site is aimed at commercial designers who know what they're doing, so navigating the site isn't easy. If you're browsing without a specific component in mind, Digikey isn't the right place, but Octopart might be. Its a search engine for electronic components that checks availability and compares prices of different retailers and also has some features to organize project shopping lists.
When buying electrical components, always buy plenty extra. You will burn things out. Five times in a row. Unit costs are cheap enough that its worth having lots of spares on hand.
As others have mentioned, this is a very broad topic. If you give us more details on what it is you're looking to learn, we'll probably be able to give more useful answers.
Digital and analog circuit design are art-like activities and doing them with grace requires knowledge of many other levels of abstraction all the way down to physics.
It is possible to lack these fundamentals and become a decent designer by doing design and filling in the gaps as you go but that is the exception and not the rule. And I have only ever seen this exception happen with the help of a real-life mentor and access to some fancy lab equipment.
It should be possible to formulate the teaching of EE into a more project-oriented manner but you need to realize this would be a nontraditional approach. When I studied for my EE degree we followed a program that has been roughly constant since the 1960s, starts close to the bottom and expands in both directions at the same time. They sprinkle design in the whole time but you do not get to do full designs until junior and senior year.
So finding this book might be tricky because EE is traditionally taught in a completely different way than you would like to approach it.
One thing worth looking into would be a class at a local college taught for either local motivated/gifted HS students or for physics majors which teaches you a bunch of practical EE stuff. The class would be lab oriented. Teach you the use of test equipment, building and debugging circuits, some theory. Objective is to get you into a place where you would have some hope of being able to come up with designs and make them work without having all that "foundation" knowledge. This would help you get to the point described above as you would have your mentor and access to the equipment (at least for the duration of the class-- make the most of it!)
If you are local to Boston the Harvard Extension School used to offer two such courses-- one for digital and one for analog. I believe the courses were designed by the author of "The Art of Electronics" and in fact used that text. (I did not take them but a friend of mine did.)
Learning electronics was much, much, harder for me than programming. Electronics seemed magical. I couldn't break complex circuits into the little components, circuits didn't seem to be built hierarchically. I felt like, if a circuit designer wrote code, you'd have one big function with no loops and minimal branching. First thing to keep in mind -- that's not true. It's just hard to see the components until you get familiar with them.
But, to answer your question. You _need_ The AoE. Read it over and over and over again. Look at Forrest Mims books. Your local technical library should have some.
The most important thing (not mentioned) is your lab. Mims books basically beg you to build his circuits. At minimum, a power supply and multimeter. Consider adding an oscilloscope* and function generator. I have a lab at home, basically everything purchased off of ebay, it's great. You'll need components. These are expensive, I have several bins of components at home. Handy to have when you think of an experiment to perform. If you live in the bay area, go to weirdstuff warehouse. You could film wargames 2 in that place.
If you really don't want to invest in a lab, an alternative (might) be the software package "multisim." Multi-sim lets you hook stuff up in software, and simulate the output. I've heard this tool helps students learn circuit design. But I've never used it.
* Just learning how an oscillscope works, and how to use it will teach you more than you can imagine :)
Someone else mentioned this but I want to give another boost for the lab manual for the horowitz and hill's art of electronics - it's a little dated but still a great resource. For example I remember doing the project where you build a simple analog to digital converter. I had read the theory behind these devices many times without comprehension, but building the project illuminated it.
I've also found the ARRL handbooks to be extremely helpful for getting RF and microwave projects to work without sinking huge amounts of cash on expensive equipment like vector network analyzers.
You may want to get started by jumping into the BasicStamp world. The advantage is that it is programmable, so it's be straightforward for you to make it "do stuff".
Get it with the development board and you can make LEDs blink, drive a LCD panel, etc. Grab a high-level book on robotics and bam! it'll quickly click how all this fits together.
It's high-level way to start, but a great way to dive into the hardware world without worrying too much about hardcore hardware stuff. (Which, as a fellow software hacker, is pretty boring! I want stuff I can code!)
I've seen the BoeBot and it is quite adorable. I was wanting to put my software skills to a real test, though and I don't know if there is enough space on a BasicStamp chip. But it does seem like a good place to start! Even, still, I need to be aware of how components come together if I want to do something fancy on the bread board (don't want to short stuff out,e tc).
Sorry if this is a bit off-topic, but I've had an idea for an online game that would secretly teach you circuit design. In the game, you would build a series of water pipes to preform a certain tasks for each level. The amount of water in a pipe would be voltage, and how fast the water flows would be current. The game would start off very simply, and after "beating" a level, you would get more devices available to complete the tasks.
That's a really neat idea.
I'm a programmer, and I wouldn't mind brainstorming with you if you wanted to try and put together a simple implementation. I'm just thinking that implementing components like resistors, diodes, and what-not sounds like a lot of fun.
Sounds good. I myself am a newbie programmer; just recently started to learn RoR. I'm busy with my startup, but I think it might be worthwhile to kick some ideas around. Drop me an email if you get a chance (my email is in my public profile).
I have to admit I'm not an EE by any stretch of the imagination, but if you look at the definition of amperage (the amount of current that flows past a given point in one second), I think it's most analogous to a water current.
What specifically are you looking to learn though?
Do you want to learn about digital hardware - how chips and components are constructed using AND, OR and NOT gates? This will give you a pretty good idea of how hardware works, but the projects will be limited to you, a breadboard and some switches - not terribly exciting stuff.
On the other hand, if you want to learn build simple robots and such, you'll have something neat to do, but at the end you likely still won't have an idea of how a CPU works or GPS chip works.
I would buy a circuit kit, like the one for 12 year olds, and you can knock out those projects pretty quickly, but they usually come with schematics and pieces for 100 projects or so. RadioShack sells them, but when you want to buy more parts, don't go there, go to Jamco or Digikey.
Learning Chip Level IC means learning how to reduce binary functions, there are many 'tricks' to this, and from my CS classes, they didn't really care much about reducing, and the EEs always did much better when it came to binary logic then the CS students. Also Figure out transistors, the circuits kit will have some transistor projects, and do a good overview, but learn the math and (some) of the physics here, it will help you understand.
After that, find some books on microcontrollers and or microcomputers. Figure out how RAM and ROM work (not necessiarly the internals) and program some.
I've heard great things about the Arudino, but I've never used it. I started off on the PIC series, and then to Motorola 8bits and Coldfire 32Bits, both of the last two, you can program in C, so no real assembly is required.
I agree with yangyang2, as far as a do it all approach, you probably aren't going to find it..
The Arudino looks neat. I will definitely keep it in mind. I have taken digital electronics while in college and do remember k-maps and so forth, so it should hopefully not be too far ahead of me. :) Thanks again!
It would be quite a huge book. The topic area is more broad than you'd think, although not at all impenetrable. I don't know if any such comprehensive text exists. All of the books I used, I found to be quite poor and limited in scope compared to books in other fields. I think it's easy to see why. Frequently I'd just read everything I could scattered around the internet. Maybe you have a more narrow goal for what you want to learn than "electronics"?
Even the narrowly scoped books I found to usually be quite a bit less effective than they should be. Then again, the books I'm referring to where school books.
I am worried about breadth vs depth issues. It's probably why people get degrees in this. :) I'm sorry if I made it sound like I thought it was trivial. I'm not in any hurry, though; The Hardware Hacking books from O'Reilly are ok but not .. I dunno, "enough". The "Teach Yourself .." book is pretty dense...
I hope this is certainly possible to answer. Theoretically, if someone reads the right books and practices in the right way, along with hefty discipline and focus, one could say they would be very, very familiar with software and systems.
You would get the most out of taking the freshman/sophomore level electric circuit analysis series from either your local community college or university. in the lab that goes with the course you can use the o-scopes, function generators, etc. if you like it then take the analog design classes where you really get into active filter and circuit design first at the op amp level then transistor.
If you're serious about getting into this, consider obtaining a scope - even a cheap used one. Reading about various waveforms is one thing, but seeing the output of your circuit at various nodes can help build intuition.
This book may help as a starting point assuming no prior knowledge, you could work from there to an O'Reilly hacks book.
A Peek at Computer Electronics: Things you Should Know