96859 - EMBEDDED SYSTEMS AND INTERNET OF THINGS

Scheda insegnamento

Anno Accademico 2021/2022

Conoscenze e abilità da conseguire

The course introduces the concepts, methods and techniques concerning design and programming of embedded software, i.e. software for embedded systems, focusing in particular on an Internet of Things (IoT) perspective. More in detail, upon completing this course a student will have: - a general background about embedded systems, including Cyber-Physical Systems and Internet-of-Things (IoT); - basic knowledge about the hardware of embedded systems, from microcontrollers to SoC (System-on-a Chip), sensors, actuators, wired/wireless communication technologies and protocols; - basic knowledge about real-time operating systems, their organisation and scheduling techniques - solid knowledge about embedded software design and programming techniques, to deal with aspects related to real-time, reactivity, concurrency, and about main models adopted for that purpose (finite state machines - time triggered and event triggered, tasks and their scheduling); - knowledge about design and programming embedded software systems for mobile and wearable computing; - basic knowledge about main aspects and issues concerning Internet of Things and the organisation and architecture of IoT systems; - the capability of developing embedded system & IoT projects, involving the design and programming of embedded software for microcontrollers or SoC based architectures, and their integration/communication with applications running on mobile devices and with services/backends on the server side.

Contenuti

Il corso concerne la progettazione e sviluppo di sistemi software per sistemi embedded, ovvero sistemi informatici/elettronici che interagiscono con il mondo fisico mediante sensori e attuatori, estendendone o definendone le funzionalità. Tra questi, il corso considera - in modo introduttivo - anche la programmazione di sistemi IoT (Internet of Things), considerando l’integrazione mediante la rete Internet e reti wireless a corto raggio di sistemi embedded con sistemi informatici lato server (web service) e applicazioni in esecuzione su dispositivi mobili (smartphone, tablet). Al termine del corso lo studente è in grado di sviluppare embedded software su tecnologie embedded quali microcontrollori, sistemi SoC (system-on-a-chip), integrati in rete con sistemi/applicazioni web e applicazioni mobile.

Contenuti nel dettaglio

- Introduzione ai sistemi embedded e Internet of Things (IoT)
-- caratteristiche, tipologie, architetture e tecnologie hardware, applicazioni di riferimento
-- introduzione agli aspetti elettronici di base, alla sensoristica e ai sistemi di attuazione

- Tecniche di programmazione di sistemi embedded
-- modelli a super-loop
-- modelli a macchine a stati finiti sincrone e asincrone
-- modelli a task e ad eventi
-- supporti e tecniche basate su Sistemi Operativi Embedded e Real-Time

- Reti di sistemi embedded e sistemi IoT (introduzione)
-- modelli, architetture, protocolli di comunicazione per reti di dispositivi
-- modelli a scambio di messaggi asincrono
-- integrazione con sistemi mobile
-- Framework IoT e piattaforme/middleware di supporto

- Cenni su temi avanzati
-- dal mobile computing al wearable computing

In laboratorio:

- Arduino UNO come piattaforma a micro-controllore
-- introduzione al linguaggio C++ e framework Wiring, utilizzato per implementare i programmi su Arduino
- ESP come piattaforma SoC
- Android come piattaforma mobile

Testi/Bibliografia

- An Embedded Software Primer (David E. Simon) - Addison Wesley
- Programming Embedded Systems: An Introduction to Time-Oriented Programming (Vahid, Givargis, Miller)
- Patterns of Time Triggered Embedded Systems (M. Pont) - Addison Wesley
- Exploring Arduino: Tools and Techniques for Engineering Wizardry. J. Blum. Wiley
- Design Patterns for Embedded Systems in C (B.P. Douglas) - Elsevier
- The Internet of Things (S. Greengard) - MIT Press
- Learning Internet of Things (P. Waher) - Packt
- Building Internet of Things with The Arduino (C. Doukas)
- Designing the Internet of Things (McEwen & Cassimally) - Wiley


Metodi didattici

I vari argomenti del programma sono trattati integrando in modo continuo la presentazione e discussione in aula degli aspetti concettuali e teorici e lo sviluppo concreto di esempi e sistemi in laboratorio. Per quest'ultima si promuove il lavoro di gruppo, con la possibilità di svolgere consegne svolte man mano durante il corso.


Modalità di verifica e valutazione dell'apprendimento

La verifica dell'apprendimento avviene mediante un colloquio in cui si discutono le consegne svolte durante l'anno o, in alternativa, un progetto concordato con il docente e svolto prima del colloquio.

La discussione parte dalle soluzioni concrete adottate nei sistemi sviluppati per poi entrare nel merito delle parti più concettuali e teoriche viste nel corso.


Strumenti a supporto della didattica

Durante le lezioni verranno proiettati lucidi, disponibili sul sito ufficiale del corso. A supporto delle attività pratiche, verrà utilizzato il laboratorio di informatica ove gli studenti troveranno gli strumenti necessari per svolgere le esercitazioni - a partire da kit con Arduino e ESP.


Orario di ricevimento

Consulta il sito web di Alessandro Ricci