Embedded System in simple terms is a combination of Computer Hardware and Software designed for a specific function.
Every Electronics gadget is an Embedded system made for a particular task
- A Camera is an Embedded system designed to take pictures
- A Bluetooth Headset is an Embedded system designed to play music
- A Laptop is an Embedded system designed for Multitasking
Embedded System Demystified :
As said Embedded system is combination of Hardware and Software
Hardware is what you see when you break open a device. To put in simple terms it is the combination of various Parts like Resistors, capacitors, ICs, Sensors and what not needed to make a the whole device work as expected.
Developers who work on developing Hardware the side are called Embedded Hardware Engineers
Software also Referred as Firmware is the set of instructions designed by the programmer to let the Hardware do a specific designed task.
Firmware is usually written to an Micro-controller or Micro-processor (we shall discuss up-next) which acts as a central processing unit and controls each and every part of Hardware like screen, lights, speakers, etc.
Developers who work on developing Hardware the side are called Embedded Software Engineers
Micro-Controllers and Micro processors
Micro-controllers and Micro-processors are the brains of any system. they will be programmed by the Embedded software engineers to control and output various peripherals on the Embedded device.
For example, in a camera a micro-Controller is programmed to control the camera shutter, take data from the image sensor, render it on the screen and save the image to the SD card.
Micro-Processors Vs Micro-Controllers
Most Embedded systems are designed around Micro-controllers. when there is more processing and multitasking needed, Micro-Processor is opted
Essential Skills to start Embedded Systems design:
- C or C++ (basics are fine, you can learn on the way)
- Basic Electronic circuit design
- Pretty good patience (😅 haha remember it never works on the first try here)
Start with Micro-Controllers
A micro-controller is a small computer on a single integrated circuit (IC) that contains a processor core, memory, and programmable input/output peripherals. In simpler terms, it’s a tiny, specialized computer that can be programmed to perform specific tasks.
- CPU :
- The CPU core in a micro-controller acts as the device’s brain, handling essential functions and decision-making. Unlike the versatile CPU in computers, the micro-controller’s CPU core is specialized and energy-efficient. It fetches instructions, decodes them, and executes tasks, enabling the micro-controller to operate and respond to its surroundings. For instance, in a thermostat, the CPU core continuously monitors the temperature, deciding to activate the cooling system if needed. Essentially, the CPU core is the command center, ensuring the micro-controller performs its designated tasks with precision and efficiency.
- Memory:
- The memory block in a micro-controller serves as the device’s storage system, holding both the program instructions and temporary data required for its operations. It typically consists of two main types of memory:
- Flash memory : Flash memory stores the program code, which is the set of instructions guiding the micro-controller’s behavior. This memory is non-volatile, meaning it retains data even when the power is off.
- RAM (Random Access Memory): RAM is volatile and is used for temporary data storage during program execution.
- Think of Flash memory as the micro-controller’s long-term memory, where it stores its essential functions, and RAM as its short-term memory, holding data that is actively being processed.
- The memory block in a micro-controller serves as the device’s storage system, holding both the program instructions and temporary data required for its operations. It typically consists of two main types of memory:
- System Clock:
- The system clock in a micro-controller is essentially its heartbeat, regulating the timing and synchronization of all operations within the device. Think of it as a metronome for the micro-controller, setting the pace for its functions. The system clock generates regular pulses, known as clock cycles, that orchestrate the execution of instructions, data transfers, and overall coordination of the micro-controller’s tasks. The speed at which these clock cycles occur is measured in Hertz (Hz) and is often referred to as the clock frequency.
- Peripherals:
- Peripherals in a micro-controller are like the senses and communication channels that enable the device to interact with the external world. These components extend the micro-controller’s capabilities beyond its core processing functions. Common peripherals include input/output pins, timers, communication ports, and various sensors.
Development Boards :
the best way to start learning Embedded systems is to get a Development board of any micro-controller.
my options for micro-controller development boards: (click on the images for Getting started references)
Arduino Uno
the most popular hobbyist board till now. it was built around ATMEL’s ATMEGA328P micro-controller. i highly recommend starting with this board if you are a complete beginner. owing to it’s rich libraries and developer support
Node MCU ESP8266
if you are bored with Arduino, NodeMCU esp8266 will be a next best option to add WiFi capability to the system. the development board was built around ESPRESSIF’s ESP8266 MCU.The Advantage of NodeMCU is it is compatible with Arduino Development framework and has plenty enough libraries to get started easily
STM32F103R Nucleo
STM32 Nucleo is a good start to step out from Arduino Environment into STM32 SDK. this was built around STM Electronics STM32F103R. This board too has a huge developer support and abundant libraries to get started
ESP32 Development Kit
My all-time favorite Mirco-controller series. best for deeper Embedded systems knowledge and Multitasking. ESP32 Series of chips have variants like dual core, RISC-V, BLE, ULP cores and many more
8051 development Board
8051, the King of 1980s Micro-controllers. i highly recommend try 8051 for very deeper level knowledge and register level addressing and to work with highly memory constraint device. Even though Old 8051 is still being used in many industrial products. so give it a try
Raspberry Pi Pico
First Micro-controller from Raspberry Pi foundation. good start for Micro-python and Circuit python with an awesome documentation and developer support. Also has WiFi and Bluetooth Variant for IOT use cases
There are quite a lot of options for Development boards out in the Market, i listed very few which i think were a must try ones(which i too did😅)
Try integrating basic peripherals like LCD, Buttons and PWMs with the Development boards and get started.
if you have decent Experience with the Above mentioned boards, i am pretty sure you can dive into the deep world of Embedded systems and will have enough knowledge to try various other Micro-controllers
we shall discuss many more Embedded systems stuff in upcoming blogs, stay tuned..