We may earn an affiliate commission when you visit our partners.
Mahmoud Zidan

Model Based Design: to be MBD Engineer

We will dive into the world of Model Based Design and Embedded Systems, explore the entire software development life cycle.

Initiate the process by comprehending the requirements, transforming them into models, generate code from models, integrate codes and deploy on hardware.

Throughout this course, we will guide you systematically in the creation of embedded systems projects and leveraging the power of the model based approach with Simulink.

Read more

Model Based Design: to be MBD Engineer

We will dive into the world of Model Based Design and Embedded Systems, explore the entire software development life cycle.

Initiate the process by comprehending the requirements, transforming them into models, generate code from models, integrate codes and deploy on hardware.

Throughout this course, we will guide you systematically in the creation of embedded systems projects and leveraging the power of the model based approach with Simulink.

You’ll gain expertise in constructing models tailored for code generation, deploying this code seamlessly onto microcontrollers, and conducting real-world hardware testing.

Furthermore, we will provide you with a comprehensive introduction to the essential Simulink blocks that are frequently utilized in embedded software projects within industries such as automotive.

In addition, you will learn the common design concepts in industry such as implementation of counters, debouncing algorithm and other topics.

Learn how to interface different sensors, design models to use data from them and to control different actuators.

This course will build your knowledge step by step and prepare you to start your journey as model based design engineer in industries such automotive, aerospace and robotics by building real embedded systems projects starting from basic examples to more complex designs.

This course will teach you how to handle the following sensors and actuators using model based design techniques:

  • Modelling using multiple Simulink blocks such as:

    Math blocks, Logic blocks

    PID controller, Inputs and outputs blocks,

    If/else block, Switch Case blocks, Merge block

    Atomic subsystems, Enabled subsystem

    Truth Tables

    Stateflow chart

  • Implement commonly used algorithm in automotive and other industries such as Counters and Denouncing algorithm

  • Generate C Code and Deploy on Micro-Controller Target [Ex: Arduino, STM32 and ESP32]

  • Digital inputs and outputs (Buttons and LEDs)

  • Analog signals (Potentiometer)

  • Combine digital and analog signals in a control algorithm to control motor speed

  • LDR

  • Ultrasonic Sensor

  • Infrared Obstacle Avoidance Sensor

  • Rotary Encoder

  • Simulink Support Package for Arduino

In each lesson we will learn a new design technique and introduce you to multiple ways of building the same functionality to enhance your modeling skills and deploying .

Updates:

[Jan 2025]

  • New lesson on deploying generated code on STM32 uC

  • New lesson on deploying generated code on ESP32

Enroll now

What's inside

Learning objectives

  • Understand the concept of model based design
  • Navigate the simulink environment
  • Configure simulink model for code generation
  • Integrate hand-written code with generated code from simulink
  • Deploy code on microcontroller
  • Test code on real hardware
  • Requirements analysis
  • Interface sensors and actuators with microcontroller
  • Develop algorithms for different sensors using simulink
  • How to read and write digital signals
  • Read analog signals
  • Measure distance using ultrasonic sensor
  • Use ldr (photoresistor)
  • Develop algorithm for rotary encoder
  • Algorithm for infrared sensor
  • Dc motor control using digital and analog signals
  • Show more
  • Show less

Syllabus

The purpose of this quiz is to test your understanding of Simulink model configuration for code generation

Hardware Components List
Introduction
Read more

This lesson will introduce you to the concept of Model Based Design.

The purpose of this quiz is to test your understanding of the Model Based Design concept.

This lesson will get you familiar with Simulink interface by building a model of DC motor control.

In this lesson we continue the development of the closed control loop of the DC motor

The purpose of this quiz is to emphasize on the technical aspects of using SIMULINK

In this section you will learn about techniques and tools we will use in this course.
Introducing the Software Architecture

The purpose of this quiz is to measure your understanding of the impact of good software architecture on development of embedded systems

Tools installation Guide

In this lesson you will learn how to configure Simulink models for code generation.

In this section we will build embedded systems that interacts with digital inputs and outputs.
Digital Input and Output (Part 1 - Modeling)

In this lesson you will learn how to integrate the code you generated from your model using embedded coder with handwritten code that defines your digital pins, then you will deploy the code on the target hardware.

Deploy Code on STM32F103C8
Deploy Code on ESP32 Dev Module

The purpose of this quiz is to test your understanding of digital input and output modelling and code generation lesson.

This lesson will introduce you to a simple implementation of a directional lights system.

Analog Signals

This lessons is about reading and handling analog signals.

DC Motor Speed Control (Part 1)
DC Motor Speed Control (Part 2)
DC Motor Speed Control (Part 3)
Analog Signals - LDR
Miscellaneous Topics
Ultrasonic Sensor
Infrared Obstacle Avoidance Sensor
Rotary Encoder (Part 1)
Rotary Encoder (Part 2)
Rotary Encoder (Part 3)
Simulink Support Package for Arduino
Course Review
The purpose of this section is to extend your understanding of the topics covered in the course so far. Kindly, note that it is optional, and it is not mandatory to obtain the course certificate.
Directional Lights System Update
Motor Speed Control Update

Save this course

Save Model Based Design: Build Embedded Systems with Simulink to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Model Based Design: Build Embedded Systems with Simulink with these activities:
Review Embedded Systems Fundamentals
Reinforce your understanding of embedded systems concepts to better grasp the course material.
Browse courses on Embedded Systems
Show steps
  • Review basic microcontroller architecture.
  • Study digital logic principles.
  • Familiarize yourself with common embedded system peripherals.
Read 'Embedded Systems Architecture' by Tammy Noergaard
Gain a deeper understanding of embedded systems architecture to enhance your model-based design skills.
Show steps
  • Read the chapters on microcontroller architecture and memory management.
  • Study the sections on real-time operating systems (RTOS).
  • Take notes on key concepts and examples.
Simulink Modeling Exercises
Practice building Simulink models for basic control systems to improve your proficiency.
Show steps
  • Build a Simulink model for a PID controller.
  • Simulate the model with different input signals.
  • Analyze the system's response and tune the controller parameters.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Document Simulink Modeling Process
Create a document that explains the Simulink modeling process for a specific embedded system application.
Show steps
  • Choose a simple embedded system application (e.g., temperature control).
  • Develop a Simulink model for the application.
  • Write a document explaining the model's structure and functionality.
Implement a Simple Motor Control System
Build a motor control system using Simulink and deploy it on a microcontroller to solidify your understanding.
Show steps
  • Design a Simulink model for motor speed control.
  • Generate code from the model and integrate it with hardware drivers.
  • Deploy the code on a microcontroller and test the system.
Create a Presentation on Model-Based Design
Prepare a presentation summarizing the key concepts of model-based design and its benefits for embedded systems development.
Show steps
  • Research the principles of model-based design.
  • Create slides outlining the key concepts and benefits.
  • Practice delivering the presentation.
Contribute to a Simulink Library
Contribute to an open-source Simulink library to gain experience with collaborative development and advanced modeling techniques.
Show steps
  • Find an open-source Simulink library project.
  • Identify a feature or bug fix to contribute.
  • Implement the feature or fix and submit a pull request.

Career center

Learners who complete Model Based Design: Build Embedded Systems with Simulink will develop knowledge and skills that may be useful to these careers:
Embedded Systems Engineer
The role of an Embedded Systems Engineer involves designing, developing, and testing embedded systems, often for applications in automotive, aerospace, robotics, and other industries. This course directly aligns with the responsibilities of an Embedded Systems Engineer by providing hands-on experience in model based design using Simulink. You acquire skills in transforming requirements into models, generating code, integrating code, and deploying it on hardware. Furthermore, the course covers essential Simulink blocks and industry-standard design concepts, which helps aspiring Embedded Systems Engineers build a strong foundation. Handling sensors and actuators is a key part of this role, which the course addresses by teaching you to interface with various sensors and control actuators using model based design techniques.
Model Based Design Engineer
As a Model Based Design Engineer, you create and maintain models of complex systems to facilitate software development and testing. This course positions you to become a Model Based Design Engineer, diving into the world of Model Based Design and Embedded Systems covering the software development life cycle. The course guides you through the process of comprehending requirements, transforming them into models, generating code from models, and integrating and deploying code on hardware using Simulink. The course also covers how to interface various sensors and actuators, which is essential in designing robust and reliable systems. If you want to enter this field, this course is perfect as it prepares you step by step to become a model based design engineer building real embedded systems projects starting from basic examples to more complex designs.
Firmware Engineer
A Firmware Engineer develops the low-level software that controls hardware devices. This course is helpful to anyone pursuing a career as a Firmware Engineer because it teaches how to generate code from models using Simulink and deploy it on microcontrollers. The course covers how to interface sensors and actuators with microcontrollers, a fundamental skill for firmware development. Furthermore, learning to integrate handwritten code with generated code from Simulink prepares you to work on complex embedded systems projects. Understanding how to configure Simulink models for code generation is especially helpful for Firmware Engineers.
Mechatronics Engineer
Mechatronics Engineering blends mechanical, electrical, and computer engineering to design automated systems. This course is well-suited for Mechatronics Engineers as it bridges the gap between software and hardware through model based design using Simulink. The course teaches how to interface different sensors and actuators with microcontrollers and to develop algorithms for sensor data processing and control. Learning to generate C code and deploy it on microcontrollers provides practical experience that is directly applicable to mechatronics projects. The broad range of topics, from digital and analog signals to motor control, addresses many aspects of mechatronics system design.
Applications Engineer
An Applications Engineer provides technical support and develops applications for specific products. This course provides key information for an Applications Engineer working with embedded systems. The course teaches how to develop algorithms for different sensors using Simulink and how to interface sensors and actuators with microcontrollers. Furthermore, the hands-on experience in generating code and deploying it on microcontrollers prepares you to help customers implement and troubleshoot embedded systems. The Simulink blocks that are discussed also provide very specific and practical knowledge.
Systems Engineer
Systems Engineers focus on the overall design and integration of complex systems. This course may be useful for a Systems Engineer involved in embedded systems projects, as it provides a systematic approach to model based design, from requirements analysis to code deployment and testing. The course teaches how to transform requirements into models and to generate code from those models using Simulink. Understanding how to interface sensors and actuators with microcontrollers and developing algorithms for different sensors allows Systems Engineers better understand the components of the system.
Research and Development Engineer
The job of a Research and Development Engineer focus on creating new technologies and improving existing ones. This course may be useful for a Research and Development Engineer, as it provides a foundation in model based design, which is used to prototype and simulate new systems and algorithms. The course teaches how to interface sensors and actuators with microcontrollers, a core aspect of many research projects. By learning to develop algorithms for various sensors using Simulink, you gain a crucial skill for R&D applications. Given the research focus, those with advanced degrees may find this field particularly interesting (master's or phd for example).
Robotics Engineer
A Robotics Engineer designs, builds, and tests robots and robotic systems. This course may be useful for a Robotics Engineer because it provides a foundation in model based design, which is used to develop and simulate robotic systems before they are built physically. The course teaches how to interface sensors and actuators with microcontrollers, a core aspect of robotics. By learning to develop algorithms for various sensors using Simulink, you will gain a crucial skill utilized in robotics applications. The practical experience gained in generating and deploying code on microcontrollers will be very applicable in a robots engineering environment.
Automotive Engineer
An Automotive Engineer focuses on the design, development, and testing of vehicles and their systems. This course may be useful for an Automotive Engineer because it provides an understanding of model based design, which is commonly used in the automotive industry for developing embedded software for vehicles. By learning about Simulink blocks used in automotive projects and implementing algorithms such as counters and debouncing algorithms, you prepare yourself for the kinds of challenges faced in automotive engineering. The course helps to build a foundation in interfacing sensors and actuators, which is critical for developing advanced driver assistance systems and other automotive control systems.
Aerospace Engineer
The job of an Aerospace Engineer involves designing, developing, and testing aircraft and spacecraft. This course may be useful for Aerospace Engineers, particularly those working on embedded systems within aerospace applications. The course covers Model Based Design techniques using Simulink. It also teaches how to generate code from models and deploy it on microcontrollers, including using Simulink blocks and implementing algorithms relevant to aerospace systems. The course's focus on interfacing sensors and actuators helps in designing and testing control systems for aircraft and spacecraft.
Control Systems Engineer
As a Control Systems Engineer, you design and implement systems that control the behavior of dynamic systems. This course may be useful for a Control Systems Engineer, as it focuses on model based design using Simulink, a tool widely used in control systems engineering. The course's coverage of PID controllers, Simulink blocks, and stateflow charts helps in designing and simulating control algorithms. Furthermore, the hands-on experience gained in interfacing sensors and actuators with microcontrollers prepares you for real-world implementation of control systems. The training in generating C code and deploying it on microcontrollers also supports the practical aspects of control system design.
Hardware Engineer
Hardware Engineers design, develop, and test computer hardware components and systems. This course may be useful for a Hardware Engineer interested in understanding how software interacts with hardware in embedded systems. Learning to interface sensors and actuators with microcontrollers will broaden your understanding of hardware-software integration. The course also provides knowledge in deploying code on microcontrollers and testing code on real hardware. The specific Simulink Support Package for Arduino helps you to understand how software controls a physical device.
Product Engineer
A Product Engineer is involved in the design, development, and manufacturing of products. This course may be useful for a Product Engineer working with embedded systems because it provides a comprehensive understanding of model based design. The course teaches how to transform requirements into models, generate code, integrate code, and deploy it on hardware. This is a direct match for many responsibilities that a product engineer takes on. The skills acquired can help streamline the product development process and ensure the quality and reliability of embedded systems.
Test Engineer
The job of a Test Engineer is to design and implement tests to ensure the quality and reliability of products. This course may be useful for a Test Engineer, particularly if they are involved in testing embedded systems. The course teaches how to deploy code on microcontrollers and test it on real hardware. Furthermore, the course provides a foundation in model based design, which is useful for creating testing environments and simulating system behavior. This is important as test driven development in embedded systems increases. The course's coverage of different sensors and actuators also equips the test engineer with the knowledge to evaluate the functionality of embedded systems.
Software Developer
A Software Developer writes and maintains code for various applications and systems. This course may be useful for a Software Developer interested in embedded systems, as it teaches model based design principles and how to generate code from models using Simulink. Learning to integrate handwritten code with generated code provides experience in working with different types of software components. The knowledge of Simulink blocks and control algorithms builds a foundation for developing software for embedded applications. The course provides a very specific approach to Simulink and to embedded systems.

Reading list

We've selected one books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Model Based Design: Build Embedded Systems with Simulink.
Provides a comprehensive overview of embedded systems architecture, covering hardware and software aspects. It valuable resource for understanding the underlying principles of embedded systems design. It is particularly helpful for students who want to delve deeper into the architectural considerations of embedded systems. This book can be used as a reference text throughout the course.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser