Live data from Hacker News

Ask HN: How to get started with practical hardware?

news.ycombinator.com

1–10 of 26 posts

Ask HN: How to get started with practical hardware?

#1
Hi HN!

For a long time, I've wanted to learn how to build projects which "bridge" the gap between software and hardware. I've learned to solder decently well and operate 3d printers, but have found myself absolutely stumped with progressing to a real practical project.

Sample projects which get me excited: microcontroller to turn coffee machine on some basic SMS controlled minibot- really anything practical, so I can start to deeply understand the harware construction process / first principles of hardware.

Are there any seminal (and practical) guides, books, or projects which could get a software engineer well-acquainted with the basics of hardware?

Re: Ask HN: How to get started with practical hardware?

#3
Check out Ben Eater at eater.net, he has 2 kits, one where you build an 8-bit CPU, and another where you build a custom computer using a 6502 CPU, all on breadboards (no soldering). The newest third kit is a very primitive VGA card. His Youtube videos are a great resource and really help you understand without just painting by numbers.

Re: Ask HN: How to get started with practical hardware?

#4
Why not start with some lowkey Arduino or Raspberry Pi Pico projects?

I found the cost (five years ago) was what put me off, but it only took me a few hours to get up and running with a very simple led flashing project.

Then life got in the way, but simple temperature sensors, light sensors, etc. can make for some interesting quality-of-life projects.

Edit: For additional context, it was a self-driven project (no instructions). Incredibly easy to get into.

Getting a simpler CUDA program running took me longer; and I gave up altogether on OpenCL after spending a frustrating 12 hours.

Re: Ask HN: How to get started with practical hardware?

#5
Having spent 2023 doing exactly what you aspire to do, I have some casual friendly advice: go into this problem-first.

While everyone learns differently and finds motivation in unique ways, nothing pushes me through all of the layers of frustration and learning like having an end-goal that I'm passionate about realizing. On the contrary, just hitting a list of things to learn in an arbitrary order hoping that it will stick when I actually need to get something done is like driving high speed into a wall.

When you approach a problem, the correct answer to "what next" is usually pretty apparent. In my case, for example, I had no idea that transitioning from software development to "hardware" (which really is just software running on hardware) would involve detours into learning Solidworks CAD so that I could model enclosures as well as render out what things will look like before they exist.

Another major area that I drastically underestimated was connecting the dots between the parts/components I use and the logistics of sourcing and using those parts. For example, the parts that are easily available on demand at JLCPCB are not only vastly different than what you can get from Digikey and Mouser, but they often need to be ordered in quantities of 100+. It's also "fun" realizing that if you want KiCAD to have nice looking 3D renders of your future board, you often have to go off hunting for 3D step files of each part. You are about to learn how it's common to make an order at Digikey that is actually shipped to JLCPCB so that they can assemble your board. They will even hold on to your parts in between orders.

Get comfortable with Octopart!

One project that I recommend is to actually implement your own MCU board instead of relying on prefabricated Adafruit or Arduino boards. Not only will it give you more flexibility, but there is something really gratifying about fully understanding how and why everything is working. While there are many tutorials on how to do this, I personally really like working with RP2040 chips and I found this three part series excellent: https://www.youtube.com/watch?v=RNH-CL8GrF8

One bit of parting advice (feel free to ask more) is around the concept of switch debouncing and hardware interrupts. I've found that there's a sort of "stages of grief" where people go through a dozen increasingly complex ways to make 1 press = 1 event. The short version is that there's no perfect way to do it in software, and where software is involved, you want to move away from polling pin state in your loop to using interrupt handlers ASAFP because sleeping in your loop is the root of all evil.

IMO, the only correct way to do switch debouncing is to use resistors and capacitors; this is known as an RC debounce (Google it). You then send those signals into a hex inverter like the 74HC04, and then into a digital pin on your MCU (which is then captured by an ISR hardware interrupt).

Every other path will just lead to pain. This might seem like a digression, but you'll thank me later.

Finally, you will be pleasantly shocked by how amazing GPT is at talking through schematics. It knows the datasheets, can explain circuits and alert you to quirks and gotchas.

ps. if you find yourself without interesting problems to solve, I highly recommend buying some cheap Nerd Musician courses and building some MIDI controllers! https://www.musiconerd.com/

Re: Ask HN: How to get started with practical hardware?

#6
post #3

Check out Ben Eater at eater.net, he has 2 kits, one where you build an 8-bit CPU, and another where you build a custom computer using a 6502 CPU, all on breadboards (no soldering). The newest third kit is a very primitive VGA card. His Youtube videos are a great resource and really help you understand without just painting by numbers.

I would second this, if you really want to learn hardware then Arduino (etc) won’t help as much as jumping into something a bit lower level. Ben’s kits and videos are a fantastic resource, and you can progress to more in-depth stuff like rc2014.co.uk or rosco-m68k.com (yeah, shameless self-plug at the end there :D).

Re: Ask HN: How to get started with practical hardware?

#7
It depends, on what you want to do. - Electronics is now huge, and have few extremely different parts, which could be all in one project.

As example, you mentioned 3d printers, they have digital part, power electronic part and some could have optic (vision) part.

To be honest, in University typical person learn few years, and become master in one part, and learn others by books or now by videos.

What I see from my experience, nearly all programmers absolutely don't understand chemistry, and it is really important for electronics, because you could damage expensive components with wrong chemistry.

Second thing, physics, probably astronomy good fit.

Electronics itself is not hard, if you know enough chemistry and physics, but without them, will be constant impostor syndrome.

Re: Ask HN: How to get started with practical hardware?

#9
post #7

It depends, on what you want to do. - Electronics is now huge, and have few extremely different parts, which could be all in one project. As example, you mentioned 3d printers, they have digital part, power electronic part and some could have optic (vision) part. To be honest, in University typical person learn few years, and become master in one part, and learn others by books or now by videos. What I see from my ex…

For example, once my buddy worked with large batch of mobiles, and he bought new Flux, claimed "not need to rinse off".

So he made manipulations, and try to turn on - 1,2,..,5,..9.. Well, whole batch not worked. Imagine, his feelings!

He asked professional, answer was: "you don't need to use chemical additives to rinse off, but you must use just clear water, then sure dry board". And it really helped.

Post reply on HN