What's a good place to start to get into electronics?
Someone asked me this on Mastodon and I ended up writing a blog post's worth of replies, because turns out I have a lot to say about it. My background: I have a degree in Electrical Engineering and Computer Science. I do software dev for my dayjob, but have a bunch of hardware hacking side projects in my free time, and I've been doing microcontroller stuff for a decade now.
So, if you want to start getting into electronics, welcome! It's a fun hobby, and you can do a ton of neat things with it.
To help guide where you want to go from “I want to make a thing”, I've got a couple choices to make – there's no right or wrong answers here, pick whatever seems like your zone!
Choice One: Language
Firstly, what programming language do you want to work in?
There are a two main on-ramps to coding on microcontrollers these days: – Arduino, which is a friendly-ish wrapper around C++ – CircuitPython/MicroPython (they're...Python, more on the difference later)
Both are widely supported across a bunch of devices, and add libraries to the language that make it easy to twiddle with things on the hardware. Arduino has been around longer, but MicroPython is also well-established at this point, so pick the language that makes more sense to you!
See also below the bits about Circuit Playgrounds, some of which have their own languages and programming setups, some of which are very beginner-friendly and even visua,programming languages like Scratch!
Detour on other options: Raspberry Pi and ESP32
There are some other options that I didn't include above for various reasons:
This is not really a microcontroller, it's literally a tiny computer that runs Linux. Which is great, and opens a lot of options! It's adjacent to the “electronics” space because it has a programming header, so you do get general-purpose input/output pins (GPIO) that you can twiddle to turn lights on and off and things. On the Pi you can program them with basically anything you can run on Linux, but the ecosystem isn't as focused on hardware.
Other tradeoffs are the Pi has much higher power demands, is physically larger, and is less close to the actual hardware. The Pi Zero positions itself somewhere between a full Pi and one of the above microcontrollers.
ESP32 and friends
These are chips that are built around a WiFi controller, and used widely for internet of things – there are ESP32 chips that can be programmed with Arduino, or CircuitPython, or both. They probably wouldn't be my first venture into things, but are a good expansion option.
Second choice: Hardware Platform/Vendor
Okay, so there are lots of kits, and lots of places to get them. There are two main tiers of getting-stuff places: “I want very specific and/or small components, just let me order them piecemeal” (DigiKey/Mouser/Arrow/etc), and “I want a kit or things to play with or stuff I can combine to make a thing” (Sparkfun/Adafruit/etc). You can get kits from DigiKey and parts from Sparkfun, but that's not their focus.
Where to get stuff
You probably want to look in the second category to start, the main folks in my book are:
Great selection, they do a lot of great kits and dev boards, so many choices. A few lines of “systems” that all connect to each other (more in a minute)
Very similar, a little more focus on single-purpose boards/breakout boards and general-purpose stuff, but still lots of kits/etc too.
How to choose
I would probably start with Adafruit, especially if you're interested in Python – CircuitPython is their version of MicroPython, and they support it in a wide variety of their kits/devboards.
Sparkfun has some great kits too – the MicroView is a very neat little all-in-one starter, but at the cost of, well, costing more than it otherwise would. Their Inventor's Kits are a great way to get a bunch of useful bits and bobs to play with.
And for the most part, you don't have to choose, you can mix and match – it's all just components that communicate via voltage, so you can use an Inventor's Kit with an Adafruit Feather, for example. Which leads us to platform choice, but first a detour on other shops/vendors!
Another segment to be aware of are the marketplaces: places like Seeed Studio and Tindie are have a huge variety of neat gadgets and kits from makers all over the world – less focused than the above, of course, because anyone can put their gizmo up for sale, but there's some really rad stuff to be found!
There are also a bunch of small shops that put out some really neat focused kits – a few I've come across in no particular order: – https://www.oakdev.tech/ – https://learntosolderkits.com/ – https://shop.cybercitycircuits.com – https://boldport.com/shop – http://start.shrimping.it//index.html
All these folks have different focuses, some little self-contained DIY projects, some microcontroller kits, some components. There's a whole world out there!
A detour on Teensy: an endorsement of my personal fave
The microcontroller board I actually use the most personally is the PJRC Teensy – it's a focused, Arudino-compatible microcontroller that hits a frankly impressive combination of build quality, usability, affordability, and power.
It's a small two-person shop that is a passion project laser-focused on building a solid dev board that does everything you need it to, and they're good at it – their quality control and design skills are top-notch, and their overhead is low so they're a very good value for what you get. There are several options depending on your needs, and they've also got a lot of good documentation. Paul also contributes a lot of work upstream to make Arduino better for everyone. It's a win-win-win.
I recommend picking up a Teensy or two to just have around – they're inevitably what I reach for if I want to do a quick project. The 4.0 (powerful) or LC (cheap/basic/solid) are good starters.
Choice Two point five: Putting stuff together
Option one: breadboards
Okay, phew, back to the main thread: putting stuff together!
So, there are two main ways you can start out actually building stuff, which affects what kind of stuff you should buy. I recommend starting with some non-permanent things so you can play around. I'll get to soldering later.
For non-permanent stuff, there are two main routes, this is the first one: get a breadboard and a jumper wire kit, grab a microcontroller or two and some bits that look interesting, and start stringing things together. This is a great option, especially if you want to dig into the details of electronics and how they go together. Again, everything goes with everything at this level, so grab some component assortments and kits that seem neat and go for it!
Option two: component-based systems
Option 2a: connection systems
The other main option is pick a system of things that all work together, and combine larger, higher-level components to build a project.
These fall into two main categories. The first is connection systems – Adafruit's STEMMA, SparkFun's Qwiic, and Seeed's Grove are the ones I know of.
You start with a central controller that has one or more connector ports, and then add component boards (LCD screen, button panel, GPS unit, accelerometer, temperature sensor, etc) that each have a small controller and connector port. Each connected component gets assigned an id number, and when you're writing the code, the main board can talk to the connected components by id – you ask the temperature sensor what it's got, and then tell the LCD panel to display that number.
The systems all use I2C to communicate and are somewhat interchangeable, but there are gotchas, so it's best to pick one and stick with it especially to start.
Option 2b: stacking systems
The other option for the “combine high-level components” option is stacking systems: you get a base microcontroller with a standard arrangement of pin sockets, and then get various components that plug into those sockets, stacking on top of the board. Depending on their demands, you can stack multiple components together, kinda like a Game Genie.
These systems include Adafruit's Feather, HATs and Bonnets for the Pi and Pi Zero, and Backpacks for Arduinos.
These are generally not intercompatible with each other because they're built around a specific form factor. But unlike the connector systems, they are all compatible with a breadboard – you're still using directly-connected GPIO pins to communicate, rather than going over a protocol, so you can just plug the base board into a breadboard and built out from there if you like.
This is a great way to do things like integrate a display into a breadboard project.
Another option: Wearable tech/e-textiles
Another area worth noting that doesn't fit nicely into the categories I made is wearable tech – e.g. Sparkfun's Lilypad line, or Adafruit's FLORA/GEMMA line. It's a really neat area of electronics hacking!
Again you start with a central microcontroller, but instead of pins, it has plated holes – you get conductive thread and literally tie your components together with string and clips!
Like the previous options, you have isolated, purpose-built boards, but they are typically simpler/cheaper and have basic components: a tiny board with an LED on it, or a resistor, or some switches, or a plug to connect a battery or some EL wire.
The concepts are the exact same as breadboarding: connecting low-level components using GPIO signals – you're just connecting them with thread instead of wires, and mounting them on fabric instead of in a breadboard.
If something you want doesn't come in a pre-made board, you can also add anything you want with a protoboard and a little soldering.
Fewer Decisions Option: Circuit Playgrounds
Another option that involves fewer decisions, but is a great place to start and expand from are what Adafruit calls Circuit Playgrounds. These are self-contained boards that have a selection of components – generally some buttons, switches, and LEDs, maybe a speaker or mic or some sensors, and so on.
They let you just order one thing and then dive in and start poking around, making things blink and beep and such, to get a feel for how a microcontroller works, without having to pick components or decide on a project. They may use Arudino or CircuitPython, or might use their own programming interface, or offer the option of both. Sometimes they're just the board, sometimes they come with a small kit of things to connect to them.
There are lots of options here – Adafruit has several options under the Circuit Playground line.
Another great option that the BBC puts out is the Micro:Bit, a little board with a grid of LEDs to start and lots of programming options including Python and Arduino, as well as some visual, block-based programming languages like Scratch, Make:Code, and their own dedicated Micro:Bit apps.
Conclusion(ish): What do you want to build?
Okay, so to sum up: either grab a circuit playground and start poking around, or pick the language you want to build in and from there decide how you want to start building: putting basic components together in a breadboard, wearables, or a higher-level component system?
That will narrow down where you want to start, but for any of the approaches you'll want to order a central controller, and a handful of components that seem interesting.
That might be a Feather and some Wings, a Teensy with a breadboard and an Inventor's Kit, a Qwiic controller and some sensors, or a starter pack with a controller and some components – whatever piques your interest! Most things should support Arduino, and there should be options in each category for CircuitPython/MicroPython as well.
From there, pick something to build and build it! There are lots of good resources for the various options out there, once you've picked something, and books if that's your thing, too!
I ended up kind of infodumping here, which might make it seem like a lot, but it's really not – just pick the route that sounds interesting to you, grab a couple things, and start venturing out from there :)
And welcome, hardware is really fun, I love writing code and actually having it do something in the real world!
It also comes with its frustrations – if you break something, sometimes you have to order a new one and wait for it (the downside of working in the real world!) – but most of the options I've listed are pretty forgiving on that point.
One other thing that's optional but helpful is a basic multimeter – you can get them at most places I mentioned – which lets you poke around in your circuit and see what it's actually doing.
Adafruit and Sparkfun both also have a lot of great blogposts and videos for inspiration and education – do poke around and check them out!
I mentioned at the beginning I recommend starting with non-permanent things – but soldering and permanence aren't bad or even that difficult!
Some of the smaller places I linked have great little soldering kits which are a great way to learn, and there are lots of good resources on learning how to solder out there. A basic iron is all you need to get the job done, but a soldering station is a nice upgrade.
Soldering lets you branch out into perfboards, which are a fun next step from breadboards into semi-permanent builds that are still easy to assemble and design.
And from there you can branch out into board design and PCBs, which is a whole other rabbithole that I really enjoy – KiCad is my weapon of choice there, and OSHPark is my go-to for getting small batches of boards printed. JLPCB is another I've heard good things about.
Fritzing is a neat tool to plan and share breadboard projects, and even get them turned into PCBs automatically if you want!
It's also worth searching around to see if there are hackerspaces near you – they'll often have open hours when non-members can just drop in and ask questions, get help with projects, use the equipment, and generally learn about playing around with electronics.
Hackerspaces are a great place to work on a thing with knowledgeable folks around, and a great resource – and if you really enjoy it, joining one is a great way to get access to all kinds of tools to see what you like working with.