How I Created 100 Embedded Side Projects (With Examples)
The fastest way to 10x your embedded learning progress is by building tons of side projects. I'd say you should aim for at least 100 side projects.
Don't worry about quality, just build tons of crappy craps. Because your mission isn't to build world-class firmware, but to learn the basics, the nuance, the context of embedded development.
Now, you might ask "100 is a big number, how the hell I could produce that much? What should I build?"
Well, first of all. You are absolutely right. 100 projects isΒ plenty. But you don't actually build them in a week. I built them for years, in my spare time.
And regarding what you should build, here are 3 ways of doing it:
- Use Google and Pinterest (search "embedded project ideas", and see what you like to build)
- Use ChatGPT (prompt "I'm a junior/senior engineer with X years of experience looking for project ideas. My interest is low-power project, list 20 project ideas, be concise")
- Or, my personal way of doing it: Project Stacking Method
Use My Way: Project Stacking Method
Project Stacking Method is just some method I randomly invented. Basically you don't build random projects, but build a new project based on your previous projects.
Confused? Let me explain.
I will start by asking myself this question: what's the embedded-equivalent of "hello world"? The answer is obviously blinking LED.
Project #1: Blinking an LED
Okay, that's my first side project, just blinking an LED.
By building this project, I learned how to create a simple sketch using Arduino, how to pick the right current-limiting resistor for the LED, lastly I learned that delay() will determine the blinking frequency of my LED. Good and simple enough.
"Oh come on Ross, blinking LED is toooo easy. I need more advanced topics."
If you think that's too simple (which is true btw). Let's create another project.
I will ask myself: If I can build an LED to blink, how can I build a "breathing" LED?
Project #2: A Fading LED
Yes, breathing LED is called fading LED. By building this project, I learned that fading LED can't use simple GPIO toggle which is digital. I needΒ analog signal.
How do I generate analog signal using Arduino? I found out that PWM is the answer.
I just stacked my fading LED project on top my blinking LED. This is interesting because I now can adjust the brightness of my LED.
More complexity please!Β
I will then ask: wait, my LED is just a single color. How can I fade an RGB LED?
Project #3: A fading RGB LED. Wait, RGB is fascinating. I want moreeee.
Project #4: 3 fading RGB LEDs. Haha this is fun. I want 8 RGB LEDs.
Project #5: 8 fading RGB LEDs. Well, this is getting complex. Not enough PWM pins, so I need to use shift-registers to control all 24 signal pins. I learned much about bit serialization, register concepts. I guess I'm ready for more complex project.
Project #6: 8x8 fading RGB LEDs. Oh my goddd, this is getting out of hand. Now I need to be careful with the timing, and memory management. I need to pump out the serialized bits fast enough to make it good. I had enough LED project.
Project #7: Connecting microcontroller to network via WiFi. Okay, this is interesting. I will probably use ESP32. You know what, I think I want to control those 8x8 fading RGB LEDs using my smartphone.
Project #8: Controlling 8x8 RGB LEDs via WiFi. I learned how to use MQTT to exchange data.
Keep doing projects until Project #100.
You see, I build a project based on my previous project. Sometimes I had enough and decided to explore another interest (WiFi), and suddenly I can stack the existing projects (#6 and #7). Making it far more challenging than a simple blinking LED.
To use Project Stacking Method, you will need to hone your curiosity. Let your curiosity define your path and see what you can do with it.
Project Stacking Method isn't just for beginners trying to learn basic embedded concepts, it's also applicable to any level, including senior engineers. Though the topics will be very very different.
For example, seniors can do project like "self-healing mesh network using Zigbee". Or "100% heapless C++ firmware development". Or maybe "AI-enabled smart home system where the AI can suggest electric bills optimization by observing usage pattern" (okay I'm getting crazy here, but you got the idea).
I've been doing it for years, and my limitation now is actually time, not ideas. I'm married with one toddler son, so you probably understand how tricky it is to split time to work on side projects.
But if you have plenty of free time, you should really exploit it before you're getting married haha. π
PS: Send me a DM if you build a project. Probably I can give you my perspectives.
Β
Whenever you're ready, there are 2 ways I can help you:
1. FREE Firmware Development Email Course. A free 7-Day Email Course to teach you the foundational concepts you should know to start firmware development. Full of practical tips and industrial insights.
2. FREE Embedded Freelancing Email Course. Another free Email Course to help you grasp the basics of embedded freelancing and make more money as an embedded engineer.