To Learn is to Know: Getting Started with Embedded Sytems

Samuel Adesola
6 min readAug 1, 2023

Among various fields in tech, embedded systems have always been a bone of contention, especially for beginners that are just getting started. One might think embedded systems are not just a thing for beginners but I beg to differ if that’s your thought. Just like any other tech field, embedded systems is just another field that with proper planning and information, getting started will be as seamless as possible.

Photo by Ian Schneider on Unsplash

Knowing what embedded systems are and the various component involved will help an aspiring engineer in getting started. In this article, I will focus on the various components involved and what you need to learn as a beginner just to get started.

What then is Embedded Systems?

I am sure that you being here, you already have a shallow idea if not comprehensive of what embedded systems are. We can’t really say embedded systems are relatively new technologies for they have been around for quite a while if we are to define them in a broad sense. According to an Indeed article, embedded systems are defined as computer hardware devices that have software included in them. They are simply the fusion of hardware and software. One way I usually look at it is that the software gives the hardware life. Embedded Systems are simply ways we give life to our hardware.

“Embedded systems are defined as computer hardware devices that have software included in them”

Starting out in ES: Breaking the fear

Looking again at the picture above that reads “Passion led us here”, One thing I do tell people is that it will take the passion that brought you into embedded systems alongside hard work to keep you in it. Often you see people who are afraid of starting out in embedded systems due to the perceived complexity of Hardware design and programming. In order to master embedded systems, one needs to see hardware design and programming as beginner friendly. The required components to learn are broadly divided into two, starting out with these two will help in mastering the art of embedded systems. These two are:

  1. Hardware Component
  2. Software Component

Hardware Component

Unlike learning how to program web applications or mobile applications embedded systems involve building physical hardware. This involves putting together electronic devices and components and in most cases some mechanical components too. Knowledge of hardware is as important as knowing how to program the hardware.

Photo by Robin Glauser on Unsplash

The following points should be a guide to learning Hardware

  1. Start with raw Electronics: One mistake beginners often make is to start their embedded journey by learning about microcontrollers, this might not be wrong in itself, especially for enthusiasts or people that just want to see and get excited by the world of embedded systems but I will advise anyone with a long term goal of doing embedded systems to learn the core principles of discrete electronics before stepping into Microcontrollers and microprocessors. You will be able to go far in your journey of embedded systems if you know how basic electronics component works and how ICs are configured even without programming.
  2. Mathematics is important: The role of mathematics can’t be neglected in the field of programming as a whole, same thing applicable to embedded systems, if you will be able to properly program your robotic system trajectory or set up your resistors to behave in a certain way or write an efficient algorithm for your embedded application then you will need those mathematics. It should be noted also that the level of mathematics needed is not those complicated or high-end mathamatics, just few basics and you will be good to go.
  3. Microcontrollers and Microprocessors: After getting a hold of how basic electronics work, one can start looking into microcontrolling and microprocessing. This is when programming also comes in. Quite a number of things can be achieved without programming in electronics but programming simplifies things. There are various embedded suystems development board that makes this stage easy to navigate. One can start by learning Arduino and Raspberry Pi. One thing I do recommend is that this learnings can be taken simultaneously, you can both be learning Arduino and also learning a programming language at the same time.
  4. Add Some mechanical and fabrication touches: This knowledge is often not usually spoken of in the embedded systems space and you hardly see an embedded systems application without some form of casing or mechanical frame. Much learning might not be required to master this but embedded systems engineers especially students should know that this knowledge will surely come handy.

Software Component

The embedded systems solution is not complete without the software, the life of the system. I will not only focus on programming language alone but everything order than the physical hardware that might be featured in an embedded systems solution.

Photo by Carlos Gonzalez on Unsplash

The following should be a guide to learning the software component

  1. Programming Language: The first step is to learn a programming language for embedded systems applications. Embedded systems can be programmed with both low level and high level programming language or the combination of both for a robust application. The most common programming language for embedded systems is C and C++ and they are easy to learn. Arduino programming is mor of C/C++ while Raspberry Pi programming is more of Python. Therefore, having some knowledge in C++ and Python programming will be very useful in embedded systems. As I stated earlier, you can both do these learnings simultaneously that is both the hardware and the software learning.
  2. Simulation Software: Simulating and prototyping software will always come handy in embedded systems. In most cases, you may have to simulate your design even before building the physical hardware. This is really helpful as most beginners might not have the boards or electronics components to practice therefore having a computer software that can simulate the exact hardware behaviour will be of advantage. Few ones you can check out are Proteus, KiCAD, Multism.
  3. Cloud Computing: As you advance in embedded systems towards Internet of Things (IoT), the knowledge of cloud computing will be needed, you have to be able to carry your data from the edge to the cloud. Various cloud computing platform are very easy to get started with. Platforms like Arduino Cloud, Microsoft Azure IoT Central, Thingspeak, Thingsboard, Qubitro are very easy to learn.
  4. IoT Communication Protocols: Internet of Things makes embedded systems more fun. It is simply taking your data from the edge to the cloud. Various protocols makes this possible including https, mqtt, zigbee etc. I have a twitter thread on this: https://twitter.com/AdesolaSamuel18/status/1556394156309749763?s=20. Having knowledeg on these protocols will help in determining which protocol is best for taking your data to the cloud.
  5. ML/AI: Machine Learning and Artificial Intelligence also finds application in embedded systems. You often try to do some complicated AI/ML work on microprocessors like Raspberry Pi, NVIDIA boards. You might need to program an embedded systems involving camera and some image processing task and this is where ML comes in. I can say that this can be approached in two different ways: The ML models can be programmed and deployed on the embedded system device that you are building, this is called edge computing or you can interface a cloud service that does the Machine Learning task on the cloud and deploy the answer back to the device. The world is moving more into edge computing due to data privacy and security and therefore you might need to learn to build and deploy AI models on your embedded device.
  6. Linux/RTOS/ROS: In going advance, knowing the concept of Linux Operating systems will come very handy. RTOS means Real-Time Opearting System while ROS means Robotic Operating System, these are more advance concepts but they are very much needed in embedded systems and robotics. You can check out yocto project to get more about this.

Conclusion

Learning embedded systems might come a little bit challenging but with proper planning and well structured learning, things will come easy. One major challenge is financial implications in getting neccessary boards and components but some simulation software can help address this for the mean time. Know that all the technologies highlighted above can be learnt simultaneouslly, the advice is always to focus on project base learning. Think of any idea and start thinking about possible electronics needed to achieve it.

You can reach out to experts around to be a mentor. I am open to provide guidance to anyone just getting started. You can reach out to me on any question or mentorship via samuel.adesola@studentambassadors.com

I WISH YOU SUCCESS IN YOUR LEARNING

--

--

Samuel Adesola

I am an embedded system engineer. Most of my works focus on IoT, AI and Machine Learning. With years of experience in programming and electronics