Graduation Program in Embedded Systems
Immerse yourself in the dynamic realm of Embedded Systems, where our course empowers you to unravel the complexities of merging hardware and software. From FPGA development to programming Microcontrollers, acquire the expertise needed to engineer intelligent and efficient embedded solutions for a connected world.
2 year program for pre-final year students Internships Industrial Tool Project based learning

Embark on a transformative journey at our institution, where we seamlessly bridge the realms of industry and academia in our cutting-edge undergraduate programs in VLSI and Embedded Systems. Immerse yourself in a curriculum meticulously designed to equip you with hands-on experience using industry-standard tools, delving into the intricacies of ASIC design flow, FPGA technologies, and Microcontrollers. Our commitment extends beyond the classroom, guiding you through placements, fostering dynamic student projects, and providing coveted internship opportunities. Elevate your training with us, where theory meets practice for a comprehensive and industry-aligned learning experience. Experience a course that is uniquely project/task-based, ensuring you not only grasp the concepts but also apply them in real-world scenarios.


Explore foundational concepts such as Arduino programming, sensor integration, and bare-metal coding, advancing to intricate topics like communication protocols and PIC microcontroller implementation. Navigate the dynamic landscape of IoT with ESP32, culminating in a profound understanding of Real-Time Operating Systems using FreeRTOS. Acquire hands-on proficiency in task management, synchronization, and interrupt handling, shaping your expertise for a dynamic career in the ever-evolving field of Embedded Systems.


Module 1

Basics of Embedded Systems

  • Definition and characteristics of embedded systems
  • Distinction between general-purpose computers and embedded systems

Embedded System Architecture

  • Microcontrollers vs. Microprocessors
  • Overview of common microcontroller architectures
  • Memory types in embedded systems

Classification of Embedded Systems

  • Real-time vs. Non-real-time systems
  • Hard vs. Soft real-time systems
  • Embedded systems in consumer electronics, automotive, medical devices, etc.

Embedded System Design Considerations

  • Power consumption and management
  • Reliability and fault tolerance
  • Cost and size constraints in embedded systems
Module 2 - Foundations of Arduino Programming

Introduction to Arduino

  • Overview of Arduino platform
  • Setting up the Arduino IDE
  • Understanding the basic components (LEDs, resistors, etc.)

Programming Basics

  • Introduction to C/C++ basics
  • Variables, data types, and operators
  • Control structures (if statements, loops)

Functions and Libraries

  • Writing and using functions
  • Introduction to standard Arduino libraries
  • Creating and using custom libraries
Module 3 - Sensor Integration & Project Development

Introduction to Sensors

  • Understanding the role of sensors in electronic systems
  • Types of sensors (analog, digital, etc.)
  • Importance of sensors in real-world applications

Basic Sensor Principles

  • Understanding sensor transduction mechanisms (e.g., resistive, capacitive, optical)
  • Analog and digital sensors
  • Calibration and accuracy considerations

Infrared (IR) Sensors

  • Principles of IR sensors
  • Building IR sensor projects (e.g., obstacle detection, proximity sensing)

Environmental Sensors

  • Soil moisture sensor: Principles and applications
  • Rain sensor: How it works and practical applications
  • Temperature and humidity sensors: DHT series, BMP180, etc.

Ultrasonic and Touch Sensors

  • Working principles of ultrasonic sensors
  • Designing distance measurement projects
  • Understanding touch sensors and capacitive touch technology

Specialized Sensors

  • Light Dependent Resistor (LDR): Principles and applications
  • Gas sensors: Understanding and implementing air quality monitoring
  • Fire detection sensor: Principles and fire alarm projects
Module 4 - Bare Metal Coding

Introduction to Bare Metal Programming

  • Understanding bare metal programming
  • Overview of microcontroller architecture
  • Advantages and challenges of register-level coding

GPIO Programming

  • Basics of General-Purpose Input/Output (GPIO)
  • Writing GPIO drivers for digital sensors
  • Implementing GPIO-based projects

Interrupts and Timers

  • Register-level programming for interrupts
  • Configuring and using timers
  • Real-world applications of interrupts and timers in sensor integration

Analog-to-Digital Conversion (ADC)

  • Understanding ADC principles
  • Developing ADC drivers for analog sensors
  • Integrating analog sensors into projects
Module 5 - Communication Protocols & Driver Development

Introduction to Communication Protocols

  • Overview of UART, SPI, and I2C
  • Understanding the need for communication protocols
  • Advantages and limitations of each protocol

UART Communication

  • Basics of UART (Universal Asynchronous Receiver/Transmitter)
  • Register-level programming for UART communication
  • Implementing UART communication in projects

SPI Communication

  • Principles of SPI (Serial Peripheral Interface)
  • Developing SPI drivers for Arduino
  • Interfacing with SPI devices and sensors

I2C Communication

  • Understanding I2C (Inter-Integrated Circuit)
  • Writing I2C drivers for Arduino
  • Integrating I2C sensors into projects

Advanced Communication Projects

  • Combining multiple communication protocols in projects
  • Real-world applications of communication protocols
  • Troubleshooting and debugging communication issues
Module 6 - Introduction to PIC Microcontrollers & MPLAB IDE

Overview of Microcontrollers

  • Introduction to PIC (Peripheral Interface Controller) microcontrollers
  • Comparison between Arduino and PIC microcontrollers
  • Applications of PIC microcontrollers

PIC Microcontroller Architecture

  • Understanding the architecture of PIC microcontrollers
  • Memory organisation: Program memory, data memory, and special function registers (SFRs)
  • CPU architecture and instruction set

Introduction to MPLAB IDE

  • Overview of MPLAB IDE (Integrated Development Environment)
  • Setting up a new project in MPLAB
  • Writing and compiling code in MPLAB

PICKIT 3 Debugger

    Introduction to the PICKIT 3 debugger Connecting PICKIT 3 to a PIC microcontroller Debugging and programming with PICKIT
Module 7 - Implementation & Programming of PIC Microcontroller Modules

ADC (Analog-to-Digital Converter) Implementation

  • Configuring and programming the ADC module on PIC
  • Reading analog signals and converting them to digital values
  • Applications of ADC in real-world projects

GPIO (General-Purpose Input/Output) Configuration and Programming

  • Configuring GPIO pins on PIC microcontrollers
  • Practical applications of GPIO in interfacing with peripherals
  • Developing projects involving GPIO manipulation

Timers and CCP (Capture/Compare/PWM) Modules

  • Configuring and programming timers on PIC
  • Utilising the CCP module for pulse-width modulation (PWM)
  • Applications of timers and CCP in project development
Module 8 - Introduction to IoT & ESP32 Microcontroller

Understanding IoT Concepts

  • Definition and characteristics of the Internet of Things (IoT)
  • Importance of IoT in various industries
  • IoT applications and use cases

Overview of ESP32 Microcontroller

  • Introduction to the ESP32 microcontroller
  • Comparison with other microcontrollers
  • Features and capabilities of the ESP32

Setting up the ESP32 Development Environment

  • Installing the Arduino IDE for ESP32 development
  • Configuring the ESP32 board in Arduino IDE
  • Overview of the ESP-IDF (ESP32 IoT Development Framework)

ESP32 GPIO Configuration and Programming

  • Configuring and programming GPIO pins on the ESP32
  • Interfacing with LEDs, switches, and other basic components
  • Developing projects involving GPIO manipulation on the ESP32

Sensor Integration and IoT Project

  • Interfacing sensors with the ESP32
  • Collecting sensor data for IoT applications
  • Building a simple IoT project using the ESP32
Module 9 - Implementation of RTOS in ESP32

Introduction to Real-Time Operating Systems (RTOS)

  • Understanding the need for RTOS in embedded systems
  • Basics of multitasking and scheduling
  • Key features of an RTOS

Overview of FreeRTOS

  • Introduction to FreeRTOS as an open-source RTOS
  • Features and capabilities of FreeRTOS
  • Setting up FreeRTOS on the ESP32

Task Management in FreeRTOS

  • Creating tasks and managing task priorities
  • Inter-task communication and synchronisation
  • Handling task delays and suspensions

Synchronisation and Communication Mechanisms

  • Semaphores, mutexes, and queues in FreeRTOS
  • Implementing synchronisation mechanisms in projects
  • Communication between tasks using queues

Timers and Software Timers

  • Utilising hardware timers on the ESP32 with FreeRTOS
  • Implementing software timers for periodic tasks
  • Applications of timers in real-time systems

Interrupt Service Routines (ISRs) with FreeRTOS

  • Managing interrupts in FreeRTOS
  • Integrating ISRs with FreeRTOS tasks
  • Practical examples of using ISRs in projects

Meet the course instructor

Firstname Lastname
Amet, aliquam id diam maecenas ultricies mi eget mauris pharetra et ultrices neque ornare aenean euismod elementum nisi, quis eleifend quam adipiscing vitae proin sagittis?

Interested to know more? Get in touch