Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Ask HN: How to learn to be a self-taught hardware (EE?) engineer?
13 points by open on May 22, 2011 | hide | past | favorite | 13 comments
In terms of technical skills, I am pretty much pure software (rather web dev). There are MASSIVE resources out there for learning how to program, base on CS tracks, or base on self-taught web development advice from people who've done it.

Anything from recommendations from learning Python, Ruby, PHP, to the order in which you would normally learn how to program something... HTML, CSS, Javascript and some backend language, etc...

Perhaps I'm a bit naive in hardware development but just exactly what topics in what order would you normally study if you were going at it solo? Yes I do realize hardware development and electrical engineering as a whole is typical an extremely difficult major as it is in college but there's got to be a few hardware hackers out there who are primarily self taught? Advice for someone with no hardware knowledge and where to start?



Ha, I was exactly in the same boat you're in. First, since you specifically mentioned the word 'engineer', you'll want to think like one and train yourself like one. If you haven't done so already, build up your math skills to at least a solid understanding of undergraduate calculus. This will pay massive dividends, and may very well expand your programming horizons, but that is another matter. Also important is a good grasp of the first semester or two of college physics if you don't possess this already. Physics, like math, not only blows your mind but provides the intellectual foundation you'll need to press on into the depths of EE. Use the MIT OpenCourseWare curriculum for structure and perspective. The book for the 'Circuits and Electronics' course: 'Foundations of Analog and Digital Electronic Circuits' is one of the finest textbooks I have ever read in any topic. But in addition to all this theory you'll need hands-on activities. If you're just starting out in electronics, humble yourself and read 'Make:Electronics' by O'Reilly publishing. A great practical introduction to electronics. Good luck.


Your suggestion is great echobase, but engineering courses at university delay the sense of satisfaction that comes from building things and having them work. Ohms law and a handful of components is a good start. I was an electronics hobbyist in high school then went on to do EE at uni. If it hadn't been for my prior hands-on experience I would have dropped out from overwhelm at all the theoretical subjects and the lack of hands-on in the "proper" course.


I did some electronic hobbyist stuff back in the late eighties and early nineties, and have been wanting to get back into it. My first suggestion is to get a electric circuits text-the kind that is used in trade schools, not an EE text. Even if you don't really care that much about the fundamentals, at minimum you are eventually going to have to look up stuff when troubleshooting. This is one example of the kind of book I meant, http://www.amazon.com/Electric-Circuits-Principles-Applicati...

Next, get a couple of books of simple projects. I'm not up on the current ones, but even a lot of older ones, like Traister's 39 One-Evening Electronic Projects (http://www.amazon.com/One-Evening-Electronic-Projects-Robert...) or some of Delton Horn's books, will give you a few simple things to start with.

Next is the classic The Art of Electronics, which has a new edition coming out, finally. [EDIT: Sorry, looks like a rumor. The second edition from 1989 is still current and couldn't find any actual details for a third.]

After that, you should have a better idea which way you want to go and what you want to do. Anything you want to do will be easier with a decent grounding in simple projects though. A lot of electronics, unless you are just plugging together pre-built modules, requires practice.


I just saw that it's been predicted that a new edition would possibly come out since 2006. I don't suppose you have any updated information regarding this? Thanks for the recommendation BTW, sounds like the gem I've been looking for.


Saw this but don't know if the Author actually responded or not. Was posted earlier this month.

http://www.eevblog.com/forum/index.php?topic=3473.0


I'm a degreed EE, but before college I was a hardware hacker. I learned by reading everything I could find: electronics magazines, Forrest Mims Electronics Notebook, at the time Radio Shack had a few other good electronics books. Couldn't afford to buy parts, so I dumpster dived for radios and old electronics I could remove parts from.

The first important thing is to learn how to read simple schematics: that only takes a few hours. Then build something. It doesn't matter what you build, it all gives you experience. First thing I built at about age 12 was a "crystal" radio with a hand-wrapped coil and a diode and tuning capacitor removed from an old radio. Try your hand at simple kits like the ones on SparkFun or the Velleman kits.

The biggest mistake I see n00bs making is they bite off too much at first. helloWorld() != Facebook

Start small: build a headphone amplifier, get some high-power LEDs and make a little flashlight, then get a Teensy or an Arduino and start programming microcontrollers. The experience you gained from lighting LEDs and amplifying signals will pay off when you try to get a tiny micro to control things in the real world. Read the room temperature and have the micro display it by flashing Morse Code on an LED, easy stuff like that.

Above all, have fun!


EE, like programming, depends on effective modularization. With hardware whilst you can design top-down, the implementations, especially whilst you are learning, needs to be bottom-up. Like TDD, you implement and test each module before you integrate it into a larger module and test that, rinse and repeat ...

When designing hardware you need to keep in mind how the software will interact with it. And when designing software you might want to think about how the hardware could help you simplify the design. A general word of advice, keep the hardware as unspecialized as possible. Changing code is easier than rebuilding the board.

You may wish to consider starting with an Arduino kit and breadboard stuff incrementally. That way you'll get a feel for how SW and HW interact.


For general tinkering with basic principles, you could also keep your eyes open for kits (for example, I have an old 100-in-1 exploring electronics kit that helped me out and to which I intend to return one of these days as it had some good things for getting some familiarity with the basics). Such kits are often designed with educational purposes in mind, and as such include explanations of why the circuits work in addition to instructions for how to put them together.


Lots of good hardware tutorials: http://www.sparkfun.com/tutorials


Thanks, I was just checking them out after visiting them at Maker Faire yesterday.


What do you mean by hardware hacker? Microcontorller programming (and building the electronic support circuits, of course)? FPGAs? Something else?

I recently got into microcontroller programming (using both AT90USB162 Atmel microcontrollers and PIC24H PIC microcontrollers). I use them for building/hacking/tinkering with MIDI controllers.

I'll give you a brief overview of how I started and what I'm doing now and then if you want to know more, you can comment or email me or whatever and I'll be happy to help, if I can.

I started in February, when my brother and myself decided to mod the Midifighter[1] he has. The Midifighter is interesting because, not only does it have an awesome arcade feel to it (because of its arcade buttons), but also it has been designed to be very hacker friendly: DJ Tech Tools (the guys who make it) have released the schematics under the creative commons license and the source code under the GPL. The circuit board also contains solder points for power, ground, four digital extension pins and four analog extension pins - so it is easy to extend.

What we did is built an extension which connects to these extension pins, giving the midifighter an additional 17 LEDs, 14 buttons and 8 analogs (4 pots/knobs, 4 faders) - actually, technically, it gave us 32 analogs, which we use for 16 buttons, 16 knobs/faders - though 10 connections are left disconnected.

The rest is in the firmware: shift buttons, banks, changing MIDI channel on the fly, etc. Also, the difference between the button extensions and analog extensions is purely in the firmware (and of course what we connected to them).

Some details for our mod can be found here[2], the modded firmware source code is on my github[3], more details, pics, videos to be put online soon.

This basically taught me everything I know about hardware hacking.

What I am doing now is working on a configuration (tool used to configure a midifighter from your desktop) as well as some awesome new firmware mods for existing Midifighter owners (eg, I already released an early prototype version of a mod which allows you to record keypresses and have it automatically play back the MIDI notes in a loop). My brother and myself are also planning our next MIDI controller hardware, which will be even more ambitious than the first.

So, from my experience, I would say the best way to learn is to just dive right in! Be prepared to make a few mistakes along the way (which may end up costing a few $, but its worth it for the learning experience - eg, we ordered a few of the wrong parts at first) and just experiment. The midifighter was a great way to get started because it is an open platform and a cool toy. You could just as easily start with an Arduino (a lot of people do!) or something like the Chameleon[4] (actually, the xgamestation.com website has a few cool electronic devices which may be great ways to get started!).

[1] http://midifighter.com/

[2] http://www.djtechtools.com/forum/showthread.php?t=28014

[3] http://github.com/dublindan/Midifighter

[4] http://www.xgamestation.com/view_product.php?id=52


Thanks for the offer. I definitely agree that diving right in works best but obviously having working knowledge of where to start is important. I'll check out the links you listed and definitely ask any questions that may come up. Thanks again.


No problem. Just start with something that you find interesting or fun, learning how will be much much easier then.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: