77780 - SISTEMI EMBEDDED E INTERNET-OF-THINGS

Scheda insegnamento

Anno Accademico 2017/2018

Conoscenze e abilità da conseguire

Al termine del corso lo studente conosce gli elementi introduttivi circa i metodi e le tecnologie per la progettazione e sviluppo di sistemi embedded e di sistemi basati M2M/Internet of Things, ed in grado di svolgere progetti su tecnologie basate su microcontrollori e su sistemi operativi embedded/realtime. Più nel dettaglio lo studente possiede: la conoscenza dello spettro applicativo relativo ai sistemi embedded, includendo evoluzioni recenti quali Cyber-Physical Systems, M2M e Internet-of-Things (IoT); una conoscenza di base dell'harware dei sistemi embedded, dagli aspetti relativi all'elettronica di base alle schede basate su micro-controllori e SoC (System-on-a Chip); la conoscenza delle tecniche di programmazione di sistemi embedded, dei protocolli e tecniche di interfacciamento con sensori e attuatori, dei protocolli e dei modelli di comunicazione a supporto della visione IoT; la conoscenza delle principali problematiche relative alla costruzione di sistemi software embedded - in merito ad aspetti di concorrenza, reattività, real-time, gestione dell'I/O, distribuzione - e quindi dei metodi e meta-modelli di riferimento per la modellazione e progettazione di tali sistemi (macchine a stati finiti sincrone/asincrone, modelli a task, modelli ad attori); la conoscenza dell¡¯organizzazione e funzionamento di sistemi operativi embedded e real-time, degli aspetti di base relativi alla programmazione real-time, e dei middleware e piattaforme per lo sviluppo ad alto livello di sistemi embedded e articolati; la capacità di sviluppare progetti di base di sistemi embedded basati su microcontrollori e SoC utilizzando come tecnologie di riferimento per il settore.

Programma/Contenuti

- 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 loop di controllo
-- 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

- Dalle Reti di sistemi embedded/M2M a IoT
-- modelli, architetture, protocolli di comunicazione per reti di dispositivi
-- modelli a scambio di messaggi asincrono ed attori
-- integrazione con sistemi mobile
-- Framework IoT e piattaforme/middleware di supporto

- Cenni su temi avanzati
-- dal Mobile Computing al Wearable Computing
-- Pervasive computing e sistemi di realtà aumentata

In laboratorio:
- Arduino UNO come piattaforma a micro-controllore
-- introduzione al linguaggio C++, utilizzato per implementare i programmi su Arduino
- RaspberryPi come piattaforma SoC
-- Linux Kernel come sistema operativo di riferimento
-- Java come linguaggio di programmazione di alto livello
- Android come piattaforma mobile mobile e wearable per sistemi IoT

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
- 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 (3 crediti) e lo sviluppo concreto di esempi e sistemi in laboratorio (3 crediti). Per quest'ultima si promuove il lavoro di gruppo, con la possibilità di svolgere consegne svolte man mano durante il corso. 


Modalità di verifica 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 Raspberry Pi.

Link ad altre eventuali informazioni

https://elearning-cds.unibo.it/course/view.php?id=12065

Orario di ricevimento

Consulta il sito web di Alessandro Ricci