I want to start doing things like building a rep-rap, making an RFID cloner, maybe even some robotics. What's a good book to teach me the basics of electronics, e.g., why do circuits need resistors, when do I use a capacitor, etc?
I don't know whats happened recently but I grew up with Forest M Mim's books. They were written on engineers/graph paper and handwritten but overall very informative. I bought them at RadioShack back in the day, but you can probably find them online for very cheap.
Also, I was big into Parallax, Inc's BASIC Stamps, and a magazine called "Nuts and Volts".. not sure if it's still around. There was also a great, great electronics store near me called Electronics Parts Outlet (Houston) that had ridiculous electronics stuff. I suggest searching to see if there are any niche electronics stores in your area. I ended up learning from the wise old EEs that worked there and they let me thinker with peltiers, oscilliscopes and the like. I ended up doing a _ton_ of soldering kits. I think companies were by the name of Ramsey electronics and Velleman to name a few.
Art of Electronics is a very good book, but if you want to learn from a fun / programming point of view I highly recommend "Making Things Talk", by Tom Igoe.
It might be worthwhile to note that third edition of the book is in the works (supposedly). Given that the current (2nd) edition was published almost 20 years ago, I'm waiting to get the 3rd one. This page claims it's scheduled to be published in February 2009: http://isbn.nu/0521809266
I would recommend considering being more ambitious and learning how to design and prototype digital circuits on an FPGA development board. Pong Chu's book "FPGA Prototyping by VHDL Examples--Xilinx Spartan-3 Version" is really excellent, with lots of well-explained projects.
You can get really nice Xilinx starter kits compatible with this book for cheap. To be absolutely compatible, you can get the old Spartan-3 starter board from digilentinc.com for $99, but be aware that you need a PC with a parallel port. If you prefer like me to connect your FPGA board to your computer using USB, I recommend either the Nexys-2 board for $99 or the Spartan-3E starter board for $149, available at digilentinc.com, or the more up-to-date Spartan-3A starter board for $189, which you can buy at nuhorizons.com or avnet.com. These boards are mostly compatible with the book, and you can get lots of peripheral modules like seven-segment LED's for them from Digilent.
The software necessary to program these starter boards is available for free from Xilinx. The only slight problem is that you need to use Windows or Linux--no Mac OS X.
Anyone wanting to know about electronics shouldn't start with FPGAs. I do FPGA design for a living. I wouldn't really consider it "electronics." It is closer to embedded programming than circuit design. To an outsider, they are almost exactly the same. Many companies lump FPGA design with firmware.
With FPGA design, you start with a board with an FPGA on it and then write some code in Verilog (Verilog is much easier to learn than VHDL). Once the design is complete, you hit the synthesize and place and route buttons and download the reulting file into the FPGA.
With embedded programming, you start with a board with a microcontroller on it and then write some code in assembly (you could also use C or something else). Once the design is complete, you hit the compile button and download the resulting file into the microcontroller.
Yes, FPGA design is more like programming than it is like analog electronic circuit design. No need for soldering, or for thinking about analog equations. I think a lot of the audience of Hacker News would find it an interesting way to learn more about hardware, even though it doesn't answer the original poster's question about electronics a la resistors and capacitors.
If one prefers Verilog, Pong Chu also has an edition of his book using that language. VHDL is more verbose than Verilog, and more strict about typing, which many consider to be a good thing for hardware designs. But at the level of Chu's books, they're almost equivalent--he uses a bunch of re-usable code templates which are easily translated between Verilog and VHDL. It's not worth agonizing about the difference; I chose VHDL mostly because more reference designs for the Xilinx starter kits are written in VHDL.
Electronics is pretty broad. There are books for each area, depending on what you want to do:
- Building kits?
- Building circuits someone else designed?
- Designing printed circuit boards?
- Designing digital circuits?
- Designing analog circuits?
- Designing power electronics?
- Designing RF and microwave electronics?
- System design and assembly?
It's a great hobby. You can spend decades learning all this, and more. I have.. And don't get just one book. Get a few different ones. Google for stuff. Search Isohunt for ebooks. Get application notes from component manufacturers. There are tons of free useful info in those.
While I do agree that electronics is learned by experimentation, IMHO the Arduino board is a bad starting point.
I think that the best way to learn electronics is to start with the very basics (resistors, capacitors, coils, voltage dividers, simple RC and RL circuits, etc), then learn something about op-amps, then move on to nonlinear devices such as diodes and transistors. No math is needed, and simple circuits are easy to build. Building an analog amplifier is not hard, and it's quite rewarding to design and build something that actually works. If one is really devoted to the art of electronics, building a tube amplifier is even more rewarding ;-)
After the basics of analog electronics, one can move to digital circuits, learn about interfacing, what the difference between RTL and TTL is, etc, etc. Playing with logic gates on a breadboard is fun and instructive. The basics of DAC's and ADC's are fundamental too.
Finally, one is ready to move to microprocessors and stuff like the Arduino. Knowing the basics, one can actually build cool stuff with microprocessors, simple actuators and sensors. One knows how to build and connect sensors to microcontrollers, one knows what's happening in the ADC, one understands what makes it all work.
I believe that starting with the Arduino board right away is like choosing Visual Basic as a first programming language: it hides the interesting details, and it prevents one from seeing the big picture. Just a personal opinion, of course.
Totally disagree but respect your position. Trying to learn the analog side of electronics can take a very long time and requires vast amounts of information.
If you go the digital route, most (software) hackers can be creating fairly elaborate systems in an afternoon. They do the bulk of the work in the software, rather than futzing with resistors and capacitors.
Imagine the difference between creating a LED array to mimic the KITT car's LED light scanner in analog and in digital. Analog would be a nightmare, digital would be a great afternoon of fun on very limited hardware.
Yes, eventually the person will run into the limitations of not understanding the analog well enough, but since they weren't bogged down in details, they may be excited enough to keep with the hobby.
I think everything you have said is true, but it does not address the original question:
"What's a good book to teach me the basics of electronics, e.g., why do circuits need resistors, when do I use a capacitor, etc?"
I.e. he wants to learn how analog electronics work, amongst other things.
I own The Art of Electronics, but find it a bit theoretical. If you just starting out you might even wants something aimed at high-school kids (no offense intended)
If you like to learn by being taught (vs. self-taught) then sign up for class at a local school, or if you don't have the time/money then try sneaking into some lectures at your local university (I don't know how illegal / difficult that is in the US, so beware). If you do want to be self-taught then see if you can borrow the lecture notes from someone who has taken electronic engineering.
Or try this http://www.varsitynotes.com/electrical_engineering/electroni...
I would highly recommend buying a kit (lots have been mentioned) and if necessary supplementing it with components from your local electronic components store. And take things apart,
I'd also recommend building something that has an interest to you outside of electronics, e.g. if you're into cars then build a radio controlled car.
I started with Visual Basic and ended up with Assembler and VHDL. It's a route that worked for me. If I had to start with Assembler, follow with C, then C++ and so before reaching VB, I may have lost interest along the way. In any case, it would have been a lot less fun.
Some people prefer the details first, some prefer to staart easy, make a bunch of mistakes and learn more and more details as one goes along. I'm one of those people, and that's why my advise fits that mould.
I started with VB too ;-) I got some bad habits, but later I learned C and it was ok.
The advantage of starting with VB is that it's very easy. However, these days there are other languages that are easy to learn and that are more powerful than VB, i.e., Python.
The Arduino may help getting you up and running with a microcontroller, but that is programming, so trial and error works well.
When dealing with analog circuits or digital signal timing issues, the trial and error method breaks down pretty quickly.
And you're dealing with physical components that can easily be destroyed when hooked up improperly. I've destroyed my fair share of components, and worse, equipment. It's also very easy to do things the "wrong way", while still appearing to work correctly. A simple example: overpowering an LED might not burn it out instantly, but it will shorten the life.
These types of situations can lead to crazy "bugs" which can be far more difficult to debug than their software counterparts, especially if you don't understand the underlying principles, and without the right equipment.
You definitely need a solid understanding of the basics if you want to get very far. Then you can experiment.
I've wondered about this myself and have found that the most common responses usually reference, "The Art of Electonics". Great book, sure, and very heavy on theory.
There are a few books out now that touch on the Arduino platform - the Make/O'Reilly site has a few. Additionally, there are a couple of folks using a Sanguino/Arduino for building a rep rap, so it might be a good start.
I've found "Electronics - Self Teaching Guide" by Harry Kybett to be a decent introduction to electronics in general. I also picked up "Embedded C Programming and the Atmel AVR" which is regularly recommended for the AVR platform.
The Boys' First Book of Radio and Electronics. Author: Morgan, Alfred Powell, Publisher: New York, Scribner Date: [1954]
The Boys' Second Book of Radio and Electronics. Author: Morgan, Alfred Powell, Publisher: New York, Scribner Date: [1957]
The Boy's Third Book of Radio and Electronics. Author: Morgan, Alfred Powell, Publisher: New York, Scribner Date: [1962]
The Boys' Fourth Book of Radio and Electronics; an introduction to solid state physics, semiconductors, and transistors, Author: Morgan, Alfred Powell. Publisher: New York, Scribner Date: [1969]
i usually suggest folks get a kit - arduino, or an open source hardware kit from http://www.adafruit.com -- they're all fully documented and you'll learn by doing and move along harder projects as you become more proficient.
would you happen to know if the arduino starter kit make sells now comes with the new arduino duemilanove? in fact, I can't find that on the make:arduino store at all, only the older diecimila...
http://en.wikipedia.org/wiki/Forrest_Mims