For a while there was huge interest in building small microprocessor systems, but then along came the desktop PC revolution and this attracted a completely different crowd. A distinct separation developed between homebrew electronics and computer hacking.
The saying, "Beware computer programmers carrying a screwdriver" was only half in jest.
So today the Hacker movement is starting all over again, but they seem completely unaware that a generation or two of Hardware Hackers already exists.
Me, I'm retired now. I started out as a Ham radio enthusiast, later became an RF Engineer, then went on to Circuit design and PC layout, then DSP and Assembler language in Embedded systems. But towards the end of my career I found it harder and harder to find employment as manufacturing dried up. Eventually I just gave up and retired.
Bottom line is that Electronics is an interesting hobby, but I wouldn't recommend it for a career.
Just one further note: Lately I've been spending time in Asia: If you go into the smallest bookshop (eg in rural Thailand) you'll see local electronic magazines, complete with free kits and PCBs etc stapled on the cover. In Asia, Electronics is now a very trendy subject with schoolkids.
Here, kids are labelled as "nerds" if they show an interest in any science based hobby. Perhaps that is beginning to change. I do hope so.
There have been attempts to create higher level abstractions (like Arduino "shields", etc) but the cost (time and money) to produce reusable modules is huge relative to the cost of the components, whereas CPUs are so fast the overhead of higher level languages and function calls is usually insignificant.
I'm not sure what the solution is. Maybe better software, and methods of manufacturing small runs of boards?
This is never going to be true of hardware.
Having said that, the "shield" approach is clearly winning among the introductory and hobby market. You can buy loads of them for low cost: http://www.dx.com/p/arduno-37-in-1-sensor-module-kit-black-1...
Productisation is limited by regulatory effects, FCC/CE and so on.
Yes, but to make the analogy more realistic, it is an assembly language for a relatively simple and very slow and inefficient, power-consuming processor.
Nowadays, with discrete electronics components, one unfortunately cannot make fast and lean electronics like any of the big companies are making.
However they still have a very real application in the analog domain(along with a strong understanding of discrete ICs like Opamps and Transistors).
Xmos is offering low cost microcontroller family where you can program your digital peripherals in c. So are others.
Cypress is offering programmable analog chips. Very versatile.
There are extremely low cost fpgas.
To is offering an mcu with programmable wireless protocols, currently only by them but maybe there's hope.
For users interfaces, the phone offers a great users interface, if made accessible like simblee promises.
So basically there are lots of option available but what is missing is ease of use and maybe options to combine them together.
I've found that learning about FPGAs and DDR access timings/commands was really a crystallizing in understanding why there are pipelines, cache misses and how to wring out real performance from a system.
A side benefit of hobbyist electronics was the ability to repair broken electronics lying around the house (simple radios, alarms and what-not). With stuff increasingly becoming a single 'product' instead of an assembly of discrete pieced together parts - both in terms of their circuits and their mechanical construction, there is little incentive for that kind of exploratory learning.
To me the difference between electronics and programming is that with code I can do something that works very quickly. Whereas in electronics I would have to go through the whole 900 pages book before making something that works.
I might be wrong - maybe there is some path that I would take - I didn't look up very closely. And please don't say hardware is hard - General relativity theory is hard, but I manage to understand it because It is simply explained in many places over the internet.
And to get started with Arduino, you can simply buy a starter kit:
I actually think it's easier for most people to get started with electronics than with code. This is coming from someone with 13 years coding experience and who has only been working on hobby electronics for the past 2 years.
Electronics projects don't have the same amount of boilerplate you see with writing code today. Development tools, frameworks, dependency management, the commandline, polyglot projects etc hinder a lot of beginners at the start. I would say you need to read 900 pages before you can fully understand everything that goes into developing a trivial CRUD website. With electronics, you just plug in and start learning. Learn the functions of a lot of different components and then come up with something that uses them together. Ohm's law is most of what you /need/ to know to design a basic circuit. You can derive what you need with the help of V=IR e.g. voltage dividers, components in series, parallel. And you need to learn how to read schematics and datasheets.
The theory behind everything you do is deep if you want to venture into electromagnetism, which is IMO deeper than what you would expect from college level CS. But it's not necessary to have a deep understanding of it in practice. Though you could say the same about a lot of software engineering and its relation to CS. :)
Simlarly, nutonian/big-ml is great for machine learning, and gamemaker or ms-spark are great for games, and for websites there are many tools ,be it CMS's or others that help.
But i agree , general website design is far too complex.
The way to learn electronics is much like the way to learn programming. Come up with something you want to make, then work incrementally through whatever educational barriers stand in your way. You can put the "education" part first, but you may have trouble connecting the dots in real life. Better to just dive in.
But I love it, and I learned a ton when I was hacking away on my microwave .
Processors must implement logic that can be represented by software, yes. However, when you're trying to push multiple GHz on nanometer technology, that implementation becomes especially difficult. I recommend picking up an RF engineering book, as it will only begin to describe the noise and side-effects that must be accounted for in those circumstances. There's a reason that Intel has physicists on staff. If hardware was truly easier than software, then we'd probably be building our web and mobile apps in that.
> If hardware was truly easier than software, then we'd probably be building our web and mobile apps in that.
I think this is more a matter of cost and flexibility.
Now, turning back to software: a consensus algorithm, or a concurrent garbage collector, those are things that make my brain hurt :)
You also had to pretty much learn whatever setup a company's products had on the job, as typically this was proprietary information.
There are great boards/kits out today but yes, it's mostly a hobbyist thing unless you decide to go embedded, then boards such as the MSP-430 from Texas Instruments can be a good choice (especially in the Medical Devices field).
About 5 years ago a few startups figured out that if you played a large game of Tetris by combining the board designs of many hobbyists, you could submit the order as a single, giant PCB in a quantity of 10, or 5, or even 3. When the manufactured boards arrived, you break up the individual designs and mail them out individually to all of the hobbyists.
Dave Jones (the guy who shoots EEVBlog) also does a podcast with Chris Gammell (who teaches Contextual Electronics). For years, Dave has been giving Chris shit over his fantasy of one day having a chip printer. Dave is certain this will never happen and absolutely delights in making fun of Chris.
But all joking aside, those two guys have done great things in making electronics as a hobby accessible.
With things like the Raspberry Pi, Arduino etc. it's actually surprisingly easy to get back in to electronics after being away from it for so long. Sure I have to look up resistor colour code tables and stuff but it's fun.
Web sites meant BBS login screens.
So I went into a CS degree, which had shared lectures with the EE degree.
The projects are OK-ish, though. Still a good book.
Then, by accident, I found a "37 sensor kit" for Arduino on dx.com, and that was a game changer.
And I think that's the problem with getting hooked: pulsating LEDs are fun for a few seconds, robots are interesting but waaay too complex for starting out, but just having some sensors and simple tasks (measure the temperature, send it to another arduino hooked up to a PC, store the data, make a pretty web page and voila you have ambient info) is better.
But the standard bible, which is also a great source for beginners, is the Art of Electronics by Horowitz & Hill (just came out with 3rd edition). There's an associated Lab Manual which I also recommend.
AoE stems from a set of lecture notes the authors used in their Physics 123 class at Harvard, which is electronics for experimentalists. I took this class in 1999, AoE was the textbook, and it was amazing. You had people across the spectrum, like psychology and music students, who in about 13 weeks learned from scratch most concepts and components of both analog and digital electronics. The pinnacle of the analog half was one lab where we designed and built a system to take an input audio signal, PWM modulate it as pulses of IR light and flash it across the room to a circuit that received, demodulated, and amplified back to audio. The second half of the class was digital electronics where we started with glue logic and ended by building a breadboard 68000 computer. We programmed it in machine code (they had available external assemblers end EEPROM burners for those of us that wanted to go further). Some students went to amazing depths beyond. Eg, in the Lab Manual they showed some student projects where they took two computer-controlled DAC's and fed them into an oscilloscope in XY mode and made games like PacMan and Asteroids.
Not bad for a one-semester class of students who came in with minimal understanding of electronics.
As a counterpoint, I knew many hobbyists who were not in school for electronics use it to great effect.
Eg, in the Boston artist scene. One girl designed and built a whole bunch of home-brew analog synthesisers. Another guy made a performance art kinetic sculpture that would move and bang on drums and other percussives.
Like I mentioned in my comment, the book by Forrest Mims is a more gentle introduction that can get you started. But if you are hungry for more, AoE is the place to go.
AoE looks pretty good. Some of then intro material I've looked at before doesn't go into much technical detail, and I feel like I'm missing the fundamentals.
But if I want to actually start experimenting with my own circuits, what should I buy? Should I order components one-by-one off of Digi-key when I think I need them? Or is there a nice starter kit of components that would get me started?
I'd only make a few extra comments :
- besides components you'll want at least a breadboard, DC power supply, and multimeter. For tools you'll want needle-nose pliers, wire cutters and a wire stripper. Down the road you will want to consider an oscilloscope and soldering iron but can hold off on those for now. Though if you have access to a university lab or hacker space maybe you can work there instead.
- what's your goal, to learn electronics while making synths, or just to make synths yourself? If you really want to go through the "rabbit hole" as Kyzyl said, besides the AoE text you may really want the students lab manual as well. Even if you don't do the labs, it will show you the material in a logical order, without overwhelming you. Maybe this is the frustration Kyzyl was referring to (ie not using that manual)?
- breadboarding is great for hacking around quickly. But it's also like giving your circuit lots of tiny antennas. And you can pick up radio and other signals through accidental rectification + low-pass filtering almost anywhere. So don't despair if your initial attempts have some interference problems, as eventually you may need to consider good noise-reduction methods, and/or use shielded boxes, shielded coaxial cables, etc.
- for components, you could start with a standard assortments of resistors and capacitors. Get one of those sets of pre-stripped wires for breadboards. You'll probably want a few transistors and op-amps. You but can start off with cheaper components as you're learning and hacking, but will likely want to eventually get some quality audio-grade op-amps.
Check out PAIA Electronics
They make DIY audio kits. I built their Fatman synthesiser years ago after graduating university. It sounds great and may give you ideas both on audio generation and midi decoding. It uses an embedded CPU to decode the Midi, and output a voltage linear to the key's pitch. Then has the oscillators (two), filters, low-frequency oscillators, and envelope control. It's a kit you put together, so they give you all the parts. But also they give you schematics. And it could give you some ideas and also a starting place to mod it up yourself. (I had ideas to expound on but never got around to implementing).
Depending on the level of "off the shelf" you're looking to deal with, a MIDI controller can be as simple as a USB controlled MIDI chip hooked up to some switches, or as complicated as a manually implemented digital synthesizer that talks to a USB bridge (don't try to implement a USB controller as your first, or tenth project).
Regarding kit/components, the key is trying to strike a balance between knowing what you want before you buy anything, and not waiting too long to start experimenting with real components. You can save yourself a lot of time by simulating the basic circuits in your project using a software like LTSpice or TINATI. They're both free and easy to use. However, simulations are never good enough, and often you don't have a model to simulate some important piece of your circuit, so the picture isn't complete. A good approach is to sketch out the circuits you want, do a quick sim or two to see if the basics like your power supply or oscillator or digital logic are going to basically do what you think, then order all the components you need from digikey. Shipping under $200 costs $8 from digikey, so it pays not to make too many orders. The bonus is that they are extremely timely with their orders (in US and Canada anyhow). Sometimes unbelievably so.
A note when ordering things from Digikey: First, make sure all the parts a in stock (check "in stock" in the search params). Back ordered parts take a long time, and for almost any part you can imagine there is a comparable replacement in stock. Second, when you want low volume stuff you'll be wanting the "cut tape", "bulk", "tube", or "tray" packaging options. "Tape and reel" or "Digi-reel" are for big rolls of one component and this the minimum order is 1000+ units. Almost everything is available in one of the low-volume options.
Regarding kits, take a look at sparkfun for a wide range of boards, kits, etc. They have some good stuff and are targetted at hobbyists. A lot of their products come with not only a datasheet, but also a simplified "hookup diagram" that tells you how to wire everything up for a typical application. You can get some kits of basic components like resistors and caps, but they tend to get pricey and I always found that I would use one or two of the components up and never touch the rest, i.e. use all of the 10k resistors and the 1uF caps and nothing else. If there's a kit specifically for the project you want go for it though.
Each of those tasks can pretty well be accomplished by building standalone circuits, none of which are particularly complicated. In the process of building and debugging each one, you'll find you need to figure out how some of the more basic building blocks of electronics work, for example, capacitors, LEDs, opamps, transistors. There are a huge amount of resources out there to learn from. For anything related to arduinos or microcontrollers, just google it. I don't mean to sound condescending, it really is something that can be googled very easily with relatively high quality results (unlike some other areas of electronics, such as analog amplifier design). For some more theoretical stuff, I suggest you check out MIT OpenCourseware as well as video lectures from Standford on youtube. I blundered my way through a physics degree and an electrical engineering degree using those sites. For a more gentle introduction to some electronics concepts and applications, maybe check out this:
Now the bad news. You can do a lot of futzing around with arduinos and leds, and that's great, but you'll soon find out that it's interaction with sensors and actuators that makes electronics interesting. To do that you will find that you need to build/use external 'hard' circuits, and to do that you will eventually need an oscilloscope. You really can't get too far in the field without one, even if it's just a hacked sound card and audio cable. I say 'bad news' because a new benchtop scope is pretty expensive. A breadboard, some wires and a soldering iron don't hurt either ;-) For components and data sheets, digikey.com and octopart.com are your friends. For breakout boards and other hobbyist accessories, sparkfun.org and adafruit.com are your friends. There's also a arduino plugin for sublimetext, in case you're like me and can't stand using that atrocious java UI.