Live data from Hacker News

Learning hardware programming as a software engineer

blog.athrunen.dev

31–40 of 50 posts

Re: Learning hardware programming as a software engineer

#32

Earlier quoted context omitted.

> The largest negative ROI over time Why do you have to obfuscate the language so much with technical jargon? Just say 'the costliest mistake'.

Because costliest mistake isn't equivalent, and it isn't nearly as funny like that. Just imagine a whole team of people working on a combination of hardware and software, some of the hardware prototype level floating point gear obtained directly from the manufacturer under NDA (that's non disclosure agreement) and then someone decides to drop a dime into the machine. The dime is the investment, the time it took to ca…

it's toxic but "(that's non disclosure agreement) " made me actually LOL

Re: Learning hardware programming as a software engineer

#33
post #19

Earlier quoted context omitted.

Just got around to reading it. Good stuff. Welcome to my world, although I seldom work on any kind of firmware, anymore. I'm mostly about driver-level stuff, and I try to leverage platform transport, as much as possible. I have blown up $40,000 (in 1987 dollars) devices with software errors. FUN!

My favorite part of hardware development is that you learn the true meaning of "bricking". People often use the term when something is recoverable, having never felt the pain of 1-2 engineer years worth of assets turning into paperweights in an instant. How on earth did you blow something up from software? I'm guessing you were touching power delivery from software for some reason?

Way back in the early 80s, if you programmed in the wrong settings to a video chip, you could drive a monitor out of spec and severely damage it (I seem to recall several computers of this era were susceptible to this).

Re: Learning hardware programming as a software engineer

#34

Also, might wanna learn some basic electronics. With very modular devices, it's easy to avoid that - since you're basically building stuff like as with lego bricks, and things are abstracted form you - but if you need / want to build your own sensors, or customized setups, you'll need to know a thing or two about electronics / circuit analysis and design.

Any suggestions for self study?

Re: Learning hardware programming as a software engineer

#35
I don't feel like creating a userid on his website just to tell him this, but one thing he seems to have missed that may have caused some of his problems is that the ESP32 I/O pins are 3V and NOT 5V tolerant. Elsewhere in the article he seems to assume 5V levels (when he's talking about using PWM to output 2.5V from a 5V pin). With an ESP32 or ESP8266 when you need to interface with 5V devices you should use a level shifter.

Re: Learning hardware programming as a software engineer

#36

Also, might wanna learn some basic electronics. With very modular devices, it's easy to avoid that - since you're basically building stuff like as with lego bricks, and things are abstracted form you - but if you need / want to build your own sensors, or customized setups, you'll need to know a thing or two about electronics / circuit analysis and design.

I’ve tried diving into this in my spare time. Where do you start if you have a web dev background?

Re: Learning hardware programming as a software engineer

#37
post #35

I don't feel like creating a userid on his website just to tell him this, but one thing he seems to have missed that may have caused some of his problems is that the ESP32 I/O pins are 3V and NOT 5V tolerant. Elsewhere in the article he seems to assume 5V levels (when he's talking about using PWM to output 2.5V from a 5V pin). With an ESP32 or ESP8266 when you need to interface with 5V devices you should use a level…

Thanks for that information, but I learned that the esp32 is not 5V tolerant the hard way. ^^

Will fix the bit about the PWM in a second

Re: Learning hardware programming as a software engineer

#38

For any high level software engineer, looking to get into embedded development: A lot of Arduino, ESP tutorials do not teach you fundamentals. I recommend spending sometime (if not to code along) watching this course: https://www.youtube.com/playlist?list=PLPW8O6W-1chwyTzI3BHwB...

Thank you for sharing this resource. Arduino guides are so opaque without a foundation. Watching this series as we speak.

Re: Learning hardware programming as a software engineer

#39
My advice is to read the board and MCU datasheet. Check MCU's peripherals, and how they can be used in your application. Some MCU's have a PPI (Programmable Peripheral Interconnect) it is clever to use it, as peripherals can operate independently together from the processor, especially combined with direct memory access. Learn bitwise operations as you'll need it to configure the peripheral's registers. Use a logic analyzer to confirm the bitstream to pinpoint errors.

Lately I started experimenting with radios. It is difficult. Let me know if someone has a good guide they read.

Re: Learning hardware programming as a software engineer

#40

I can wholeheartedly recommend designing your own PCBs as well. It's a lot of fun, and routing the tracks on the PCB is surprisingly calming.

I am currently designing PCBs for my next post using EasyEDA, anything to pay attention to?

I'm especially concerned about the track width and clearance and stuff. For 12V and I think a max of 8A I calculated 2mm width, 0.6mm clearance, 1.5mm via diameter and 0.75mm via drill diameter.

Post reply on HN