

Ask HN: How to learn to be a self-taught hardware (EE?) engineer? - open

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.<p>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...<p>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?
======
dkersten
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>

~~~
open
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.

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

------
echobase
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.

~~~
CyberFonic
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.

------
billswift
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...](http://www.amazon.com/Electric-Circuits-Principles-Applications-
Computer/dp/0023081112/ref=sr_ob_19?ie=UTF8&qid=1306107858&sr=8-19)

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...](http://www.amazon.com/One-Evening-Electronic-Projects-Robert-
Traister/dp/0830614923/ref=sr_1_1?ie=UTF8&qid=1306108062&sr=1-1-spell)) 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.

~~~
open
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.

~~~
EECS
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>

------
HeyLaughingBoy
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!

------
CyberFonic
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.

------
Tcepsa
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.

------
swhopkins
Lots of good hardware tutorials: <http://www.sparkfun.com/tutorials>

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

