Getting Started with Electronics

So you’re thinking of getting into electronics design? I think that’s a great idea. I have to warn you though, It’s going to take some work. While I’m no hardcore grizzled veteran, I’ve been at this long enough now to be able to reflect a little bit about the journey and offer a little advice for anyone starting out in the field. Electronics can be a very intimidating subject to the outsider with layers and layers of difficult subject material loaded with jargon. It doesn’t help that people commonly in possession of the knowledge often aren’t all that keen on sharing what they view as their job security. So what’s the best path for a newbie? I get asked this question often enough that I thought I’d write up a stock response.

Where to Start

You’ve got to start somewhere. I spent years on the periphery, reading magazine articles and obsessing about recording equipment before I had the realization that I wanted to learn how to design it myself. I’d been to school a couple times before, so I went with what I knew.

School?

Call it old school, but I went to school (it was old; Thomas Jefferson started it) to study electrical engineering. To me, there is no complete substitute for serious education when it comes to a difficult technical subject, like electronics. While there are many exceptions, people I’ve worked with in the field, without a rigorous academic degree, often have gaps in their knowledge stemming from the fact that they haven’t been exposed to the underlying theoretical bases. For example, it’s one thing to understand that adjusting a capacitor’s value will adjust a filter’s frequency and another to anticipate the effect of coupling between parallel traces on a PCB caused by unwanted capacitance. Applied Electromagnetics is not an easy subject. There’s just no way I would’ve learned it on my own. Most people who don’t go the school route will probably never learn it either and they’ll lack a fundamental building block of electronics knowledge. What they’ll be lacking is a piece of the problem solving repertoire required to work quickly and effectively. There are many other similar subjects. That said, I have met truly exceptional engineers who have never attended a day of formal engineering education. What these people seem to have possessed was both an undying commitment to learning the art and the benefit of a strong mentor.

Many people just don’t have the opportunity to attend a traditional engineering school, and for them, we are at the dawn of a new day. Massive Open Online Courses (MOOCs) are just getting started. You can take an MIT introductory electronics class for free. You can also take a large number of programming classes from a number of MOOC providers. However, to get the most out of it, you’ve really got to apply yourself. You don’t get the benefit of being motivated by an interested professor or by the need to get the most out of your education dollar. If you’re going to go this route, you’ll need to be your own taskmaster to make sure that you truly learn the subject.

Books?

Even if you were able to get a formal engineering education, you’ll always need books to learn new things. I’m working, albeit slowly, to make some of the things that I learn available for free. But, the serious engineering masters seem to broadly require a fee for their knowledge, the price of their book. You can’t blame them for monetizing their knowledge, but it confines the best engineering writing to textbooks. You can scour the web and find tidbits, like mine with examples that show you how to build something, but some of it isn’t written very well (sorry) and a lot of it is just copying an implementation. With the latter, you’ll never understand how it really works, only how to build this example. You can copy it, but what happens when you incorporate it into a larger system and the behavior changes? The best method is to start from the basics and build on them. Old-fashioned books are still the best source of complete information on electronics design from the ground up. By far, my favorite book of all time on the subject of fundamentals of electronics is The Art of Electronics. It’s got all the basics covered and it’s written in a more prosaic, less jargon and math focused way that is rewarding for the rookie reader. It’s pretty old though and won’t help you with embedded systems development. For embedded programming, I got some miles out of Michael Barr’s book Programming Embedded Systems. There are many books about embedded hardware development, but most of what I know on this subject, I learned by doing.

Hands-On

I was able to build solid knowledge foundations in school, but I feel like most of what I really deeply learned came from working, building, and doing. The good news is that the maker movement has produced a wide array of hands-on starter kits and tools. If you don’t know Arduino, you should. It is by far the easiest way to get started with embedded electronics and with the wide availability of shields, hardware extensions, it’s a great way to learn. It’s also a convenient medium for quick development, even used by “serious” professionals to make prototypes. Last year, the Raspberry Pi came out featuring some serious embedded hardware.  If you’re more interested in higher-level embedded software development, particularly with Linux, it could be the way to go. There are quite a few of these pre-built embedded foundation systems available and more and more all the time. There seems to be an emerging hardware battle for systems built around ARM microcontrollers. It’s a good time to be a nerd.

On the hardware side, there are many vendors of quality introductory electronics kits. Most people know about Adafruit and Sparkfun, both of whom sell quality novice electronics kits. Find a kit that does something that interests you. Build it. Then, understand how it works. Modify it. Make it do something else. Make it work better. 

Smart People

Beginning in electronics can be scary, but there’s no better antidote to that than knowledge. I catch myself, when speaking to someone who wants me to work on something I haven’t yet and don’t understand, with a moment of internal panic. I have to reassure myself that, with enough effort, this too I can learn. There’s no shame in the answer, “I don’t know.” In fact, it’s often the best response because it presents a learning opportunity. Finding smart people with the answers is a great thing, particularly if they’re willing to share them. I often find that nerds are so happy to find someone interested in what they do, they’ll gladly spend some time to teach it to you.

Go Forth

Building and making is a profoundly human endeavor. It satisfies our desire to create. No matter which way you decide to go about it, it’s important just to start. Without taking that first step, you’ll never understand it. If you need encouragement, just let me know…

RTOS Quick Tour

freertos image Here’s the scenario: you’ve got a microcontroller-based synthesizer. The synthesizer has a lot to do. It needs to check inputs like potentiometers, sliders, and keys. It needs to indicate its state to the user with LEDs and displays. And most importantly, it needs to generate noise. The standard method of handling all these tasks is to order them in a loop and handle them one at a time ad infinitum. But, not all of these tasks are as important as the other tasks. How can they be sorted and how can the system ensure that the most important tasks are handled before tasks of lesser importance? Let’s dig in.Continue reading

K-DSC-1: Microcontroller Selection

STM32 ARM Processor

A wise grizzled old engineer once told me that the most important rule of embedded engineering is, “Always use quality tools.” Without quality tools that you can 100% trust, you’ll never be certain of the source of a problem. You’ll constantly be asking yourself, “Is it me or is it the tools?” I’ve validated this engineer’s axiom multiple times, staring for glacial epochs staring at code which should work but doesn’t. I once spent a solid month tweaking and tweaking simple code only to find in the end that a manufacturer’s compiler was incapable of executing logical shifts correctly. I’ve vowed in the past never to suffer again and I reinforced my opinion during this microcontroller selection process. That’s a later part of this story. First, let’s look at how I started this selection process.

Continue reading

Rockit Firmware 1.12

Rockit firmware 1.12 is available. The changes are mostly limited to MIDI. I’ve implemented a soft MIDI Thru. Messages not intended for Rockit, meaning on a different channel, are passed through to the MIDI Output. The MIDI channel can now be changed. To change the MIDI channel, hold down the Select button until the display starts flashing. Then, use the Save and Recall buttons to change the MIDI channel. Finally, hold down the select button until the display stops flashing and that’s it. Otherwise, I fixed a bug that caused the audio to stop when the arpeggiator was running and drone mode was entered. That’s about it. Some other transparent changes were made for an improvement in the number of clock cycles required to perform various tasks. Have some fun and let me know if you find any funny business going on. Download the hex file here.

Rockit Version 1.11

Some of you enterprising Rockit users came across some bugs in the the 1.1 code. I listened and have now fixed them. There was a bug in the pitch bend code that caused some screwy behaviour. I also made some more improvements to the filter envelope behavior. I think I’ve found the perfect filter envelope speeds. At the same time, I found a better value for a couple more resistors. R75 and R76 are going to be 18k from here on. This reduces the maximum filter resonance but it kind of had to come down a little since the level going into the filter from the VCA had been increased. It’s not 100% necessary, but I think it makes a worthwhile improvement. You can download the new code here.

AVR Studio 5: Where have I been?

I think I’ve been down in the design hole too long because I’m not sure how I missed that Atmel updated AVR Studio to version 5. I know what you open sourcerers are saying: “You should be using Linux or have built your own computer and your own OS by now. IDEs are for weak simpletons. The compiler is all you need.” (I’m looking at you Todd Bailey.) There are a couple of mitigating facts here. One, I’m lazy. An IDE like AVR Studio provides an organized environment where everything is easy to find. I don’t have to build makefiles and the sort. For the lazy and beginners, this is a boon, hiding away some of the less than obvious aspects of embedded programming. Two, I travelled from hardwareland to softwareland and not the other way around. I taught myself how to code after becoming an analog hardware engineer. I wasn’t raised on a steady diet of kit PCs as a kid. I run Windows on my Macbook to run all my engineering software and it works. Maybe one day I’ll get into Linux for fun and to improve my street cred. Anyways, what’s to like about AVR Studio 5?

Continue reading