Embedded Systems
A.Y. 2026/2027
Learning objectives
Provide the knowledge to design and implement an embedded prototype system.
After an overview of the existing platforms on the market the bases of electricity/electronics will be provided, to master interfacing with the physical world. Next, embedded platforms software development approaches will be discussed.
After an overview of the existing platforms on the market the bases of electricity/electronics will be provided, to master interfacing with the physical world. Next, embedded platforms software development approaches will be discussed.
Expected learning outcomes
Grasp the knowledge on: how to choose the embedded platform suitable for a purpose/project; how to design and implement the software to upload to MCU; limits and possibilities of interfacing with the external world; how to choose sensors and actuators for a specific purpose; how to read an electrical diagram; how to choose between communication protocols (sensors and actuators, network); how to manage embedded platforms with/without an operating system
Lesson period: Second semester
Assessment methods: Esame
Assessment result: voto verbalizzato in trentesimi
Single course
This course cannot be attended as a single course. Please check our list of single courses to find the ones available for enrolment.
Course syllabus and organization
Single session
Responsible
Lesson period
Second semester
Course syllabus
## Theoretical Part
1. Introduction to Embedded Systems
- Definition, applications, and challenges (e.g., limited resources, power consumption, harsh environments).
- Overview of commercial platforms (ESP32, Arduino, Raspberry Pi).
2. Electricity/Electronics Review
- Voltage, current, Ohm's and Kirchhoff's laws.
- Passive components (resistors, capacitors, etc.) and their applications.
- Use of measurement tools (multimeter, oscilloscope) and personal safety considerations.
3. Programming Styles for Embedded Systems
- Programming without MMU: cooperative multitasking, interrupt management.
- Race conditions, watchdog timers, finite state machines (FSA).
- Events and tasks: control flow management.
4. Timing and Resource Management
- Timing techniques (e.g., hardware timers, software delays).
- Memory management (EEPROM, flash memory) and resource optimization.
5. Communication Protocols
- Low-level: RS232, I2C, SPI, 1-Wire, CAN.
- High-level: MQTT, OSC.
- Bit banging.
- Pulse Width Modulation (PWM).
- Analog-to-Digital (AD) and Digital-to-Analog (DA) conversion.
- Multiplexing.
6. Interfacing with the External World
- Sensors (e.g., temperature, humidity, motion) and actuators (e.g., DC motors, stepper motors, relays).
- Networks: Ethernet, cellular, WiFi, Bluetooth.
7. Main Platforms
- Comparison of ESP32, Arduino, and Raspberry Pi: architecture, advantages, disadvantages, and use cases.
8. Automatic controls, feedback
## Laboratory
1. Embedded Software Development Cycle:
Code writing, cross-compilation, upload, execution.
2. Basic Programming with Arduino Wiring
- Program structure: `setup()` and `loop()`
- Variables, expressions, data types, and operators (`+`, `-`, `*`, etc.)
3. Input/Output and Interfacing
- Reading data from sensors (e.g., buttons, potentiometers, digital/analog sensors).
- Controlling actuators (e.g., LEDs, motors, relays) via I/O ports.
4. Control Flow and Functions
- Control structures (if, for, while).
- Definition and use of functions for code modularity.
5. Libraries and Peripheral Management
- Inclusion and use of libraries for sensors/actuators (e.g., libraries for I2C, SPI).
- Platform comparison (e.g., Arduino vs. ESP32).
6. Soldering and prototyping
1. Introduction to Embedded Systems
- Definition, applications, and challenges (e.g., limited resources, power consumption, harsh environments).
- Overview of commercial platforms (ESP32, Arduino, Raspberry Pi).
2. Electricity/Electronics Review
- Voltage, current, Ohm's and Kirchhoff's laws.
- Passive components (resistors, capacitors, etc.) and their applications.
- Use of measurement tools (multimeter, oscilloscope) and personal safety considerations.
3. Programming Styles for Embedded Systems
- Programming without MMU: cooperative multitasking, interrupt management.
- Race conditions, watchdog timers, finite state machines (FSA).
- Events and tasks: control flow management.
4. Timing and Resource Management
- Timing techniques (e.g., hardware timers, software delays).
- Memory management (EEPROM, flash memory) and resource optimization.
5. Communication Protocols
- Low-level: RS232, I2C, SPI, 1-Wire, CAN.
- High-level: MQTT, OSC.
- Bit banging.
- Pulse Width Modulation (PWM).
- Analog-to-Digital (AD) and Digital-to-Analog (DA) conversion.
- Multiplexing.
6. Interfacing with the External World
- Sensors (e.g., temperature, humidity, motion) and actuators (e.g., DC motors, stepper motors, relays).
- Networks: Ethernet, cellular, WiFi, Bluetooth.
7. Main Platforms
- Comparison of ESP32, Arduino, and Raspberry Pi: architecture, advantages, disadvantages, and use cases.
8. Automatic controls, feedback
## Laboratory
1. Embedded Software Development Cycle:
Code writing, cross-compilation, upload, execution.
2. Basic Programming with Arduino Wiring
- Program structure: `setup()` and `loop()`
- Variables, expressions, data types, and operators (`+`, `-`, `*`, etc.)
3. Input/Output and Interfacing
- Reading data from sensors (e.g., buttons, potentiometers, digital/analog sensors).
- Controlling actuators (e.g., LEDs, motors, relays) via I/O ports.
4. Control Flow and Functions
- Control structures (if, for, while).
- Definition and use of functions for code modularity.
5. Libraries and Peripheral Management
- Inclusion and use of libraries for sensors/actuators (e.g., libraries for I2C, SPI).
- Platform comparison (e.g., Arduino vs. ESP32).
6. Soldering and prototyping
Prerequisites for admission
Basic knowledge of:
- Programming (e.g., C/C++ languages, data structures, algorithms);
- Physics (Ohm's and Kirchhoff's laws, concepts of voltage, current, and power);
- Electronics (passive components, use of measurement tools).
- Programming (e.g., C/C++ languages, data structures, algorithms);
- Physics (Ohm's and Kirchhoff's laws, concepts of voltage, current, and power);
- Electronics (passive components, use of measurement tools).
Teaching methods
Frontal lectures in the classroom for the theoretical part (e.g., introduction to embedded systems, communication protocols, timing).
Practical demonstrations in the lab to illustrate key concepts (e.g., use of testers, soldering, MCU configuration).
Hands-on exercises in the lab to apply theoretical knowledge (e.g., firmware development, sensor interfacing).
Group discussions on real-world case studies (e.g., analysis of electrical schematics, design choices for embedded applications).
Support via Telegram chat for questions, in-depth discussions, and resource sharing.
Practical demonstrations in the lab to illustrate key concepts (e.g., use of testers, soldering, MCU configuration).
Hands-on exercises in the lab to apply theoretical knowledge (e.g., firmware development, sensor interfacing).
Group discussions on real-world case studies (e.g., analysis of electrical schematics, design choices for embedded applications).
Support via Telegram chat for questions, in-depth discussions, and resource sharing.
Teaching Resources
Sistemi Embedded: teoria e pratica
(in italian, Creative Commons license)
Alexjan Carraturo, Andrea Trentini
Second Edition (2019)
ISBN: 9788867059430
http://sistemiembedded.cc
(in italian, Creative Commons license)
Alexjan Carraturo, Andrea Trentini
Second Edition (2019)
ISBN: 9788867059430
http://sistemiembedded.cc
Assessment methods and Criteria
Hardware+Software Project Presentation and Demonstration (duration: 20-30 minutes): each student (or group of max 2 students) will develop a project on a topic agreed upon with the instructor. The project must include:
- A hardware component (e.g., interfacing with sensors/actuators);
- A software component (e.g., firmware development for MCU);
- Technical documentation (e.g., electrical schematics, commented code, report).
Oral Exam (duration: 30-45 minutes): questions on the topics covered in the course, both theoretical (e.g., communication protocols, interrupt management) and practical (e.g., analysis of electrical schematics, design choices).
Evaluation criteria:
- Project (approx. 30% of the final grade): Evaluation of technical correctness, originality, problem-solving ability, and clarity of presentation.
- Oral Exam (approx. 70% of the final grade): Evaluation of theoretical understanding, analytical skills, and clarity of exposition.
- A hardware component (e.g., interfacing with sensors/actuators);
- A software component (e.g., firmware development for MCU);
- Technical documentation (e.g., electrical schematics, commented code, report).
Oral Exam (duration: 30-45 minutes): questions on the topics covered in the course, both theoretical (e.g., communication protocols, interrupt management) and practical (e.g., analysis of electrical schematics, design choices).
Evaluation criteria:
- Project (approx. 30% of the final grade): Evaluation of technical correctness, originality, problem-solving ability, and clarity of presentation.
- Oral Exam (approx. 70% of the final grade): Evaluation of theoretical understanding, analytical skills, and clarity of exposition.
Professor(s)
Reception:
to schedule a meeting please send an email
room 4007, via Celoria 18, MI