How to start embedded coding

Based on a Reddit post in /r/embedded. Every so often this question comes along. While I base this list on my own experience, I still think people would learn a lot if they follow it. Most people who know some C and C++ can do this and it has a lot variation. You get to see quite a lot of concepts. But your mileage can vary. This is not a tutorial more of a program. You will need to figure a lot of stuff out and follow tutorials. Let’s go.

Photo of Arduino circuit by (Vishnu Mohanan)
Breadboard with NodeMCU

If you just start out to learn embedded programming, you could go do the following route. If it gets boring go to the next stage or skip it. The parts do not cost too much for the time they keep you busy.

  • Arduino Uno with starting kit and Arduino UI. Has everything, easy UI, 5V logic levels. The Elegoo kit looks nice for this.
  • Arduino Uno using Platformio with Arduino framework and Git. Get some normal processes going. Learn abstractions via libraries, version control, automatic testing.
  • ESP32 NodeMCU with Platformio or Arduino interface. Hook up some sensors and access via Wifi.
  • ESP32 with platformio using Espressif SDK. More low level with peripherals and wifi/BLE.
  • STM32F411 Blackpill with CubeMX. Real low level bit banging but in a more automated fashion. Can also be used with Platformio and Arduino.
  • Use the STM32F11 with RIOT-OS to get a feel for a modern RTOS in C. Make it talk to something connected.
  • Do a Rust tutorial on the STM32F11 to get a feel for it.
  • Build an integrated product like a robot, wireless UI, plotter robot, etc.
A DFRobot FireBeetle development board hooked up to an accelerometer sensor, OLED display and an SD card module on a breadboard. By (Vishnu Mohanan)
Breadboard with NodeMCU

After that you should know what you want to do next.

The website has a lot of good stuff to get you going. A lot of the more advanced projects are on

I hope this helps.

Leave a Reply

Your email address will not be published. Required fields are marked *