HACKER Q&A
📣 bush-bby

Looking for difficult/intermediate projects involving microcontrollers?


I am trying to learn more about embedded systems and low level programming. I have been looking for projects, but simple concepts and tasks such as connecting small peripherals, sensors, etc. or learning the basics of various data transfer protocols is not cutting it. I want a project or a concept to explore that will leave me saying wow that was fucking hard at the end. Not tedious...Hard. Everything I find seems to either be geared towards absolute novices or longterm experts yet I'm quite intermediate.


  👤 throwaway81523 Accepted Answer ✓
If you're interested in embedded there must be things you want to build with it. So build something you want to build.

What kind of project do you mean, anyway? Embedded is partly about software and partly about hardware. I'm a programmer who dabbles in hardware. For many of the embedded ideas I think about, the software challenges are not too bad, but the hardware issues are above my pay grade. Do you want to build interesting hardware, or only write code? Do you want to only develop programming chops, or also domain skills that will require a fair amount of study, such as DSP algorithms? Do you only want to program microprocessors, or also FPGA's?

It would be nice if you could say more about your interests and goals. That would make it easier to suggest projects.

I'm not that big on the concept of trying to learn a topic by doing a project anyway. Better to have the low level pieces together first, and put them together into a project afterwards.


👤 elliekelly
I'm not sure if this is what you're looking for (and it might be bit too advanced but you seem to be up for a challenge) but I remember seeing this post[1] on r/arduino and thinking it looking pretty fucking hard. OP also posted a pretty detailed write-up.[2]

[1]https://www.reddit.com/r/arduino/comments/g9293k/for_the_pas...

[2]https://imgur.com/gallery/6JIvoRq


👤 the__alchemist
Think of a device that doesn't yet exist, but should. This might mean that something similar exists, but has deficiencies, or is too expensive.

Build it. You may find that learning with concrete goals in a real problem is more effective that with something you're disinterested in.

The trick with this skillset is it's a combination of many related skills. The specifics will depend on the project. Some examples:

  Soldering
  Low-level language proficiency; generally C, C++, or Rust. Also includes interrupts, concurrency, DMA, atomics etc
  Embedded tooling (Pick your poison!)
  Part selection and BOM/cost management
  EDA software, including PCB layout, designing footprints, schematics etc
  Communications protocols
  Reading datasheets and manuals
  Familiarity with your MCUs peripherals of interest for the specific proj
  How you get the PCB ordered etc
  Mechanical skills, eg designing and building enclosures
  CAD software like Solidworks, Inventor, Fusion etc
You'll probably need some combo of all of these, unless you're in/starting a company that has a division of duties. Good luck!

👤 loxias
Have you implemented your own USB devices yet? How about your own BLE based protocol? All with your own code (not using some off the shelf library which imposes its own abstractions on you)?

I've done a moderate amount of firmware programming, and while some of it seems "easy" or "obvious" in retrospect, taking a new chip, implementing a crude task sharing "operating system", writing drivers for peripherals, then writing a host facing interface (like USB, or bluetooth) and then writing the host driver for it, and making it all happy... Eh, actually that might be more tedious than hard.

The last thing I worked on that evoked "wow that was fucking hard", required minimizing the power draw without sacrificing features, so you have to deal with creating state machines to track all the various standby and power states of your peripherals and radios and mcu, and transitioning between them in the right way (and with the right timing!)

Doing cool sound/music stuff used to be hard, but it's eas(ier) now that your microcontroller is frequently 32bit.

Make a live update mechanism for your project that is provably un-brickable. That was difficult 10 years ago. Might still be difficult.


👤 theossuary
Ben eater on YT has a lot of cool projects: https://eater.net

I'm currently working on a project to do soil analysis in realtime via a LoraWan network (kinda like https://youtu.be/iN6j1AbUbYo). Also looking at doing hydroponics, but that isn't very microcontroller heavy.


👤 f0e4c2f7
I ran across this guy recently:

https://m.youtube.com/c/LucasVRTech/

If you have access to a vr headset I think this would be a difficult but possible project that would result in a really cool device.

The project is also currently small enough that there is plenty of room / need for contribution.


👤 detaro
If you have musical interest, a synthesizer is something that can start easy and scale quite far in complexity.

👤 Normal_gaussian
low power and power resiliency.

Take a system and try and eliminate as much power draw as possible, and then make it resilient to power failure (both program state and safe result).

A lot of modern wifi projects can be completely turned on their heads under these conditions. Turn a 1 mo. battery into 10years.


👤 rolph
ADC DAC conversion.

fourier transform/synthesis

LCD television set

software programmable oscilloscope; logic analyser/injector

JTAG hardware

microcontroller programming hardware


👤 mrg2k8
Extract data from the 10 sensors available on the Texas Instruments CC2650STK SensorTag and then optimize power usage on its firmware. If you want more of a challenge, rewrite the firmware completely.

👤 joezydeco
Get LWIP working properly on STM32.

ST sure as hell won't do it. You'd be a hero.


👤 rramadass
RF Energy Harvesting systems which run perpetually!

The very idea seems like Sci-Fi to me and i am quite mystified why this is not more widespread.

Would love to know the Experts take on this !


👤 joezydeco
Get LWIP working properly on STM32.

ST sure as hell won't do it.