77780 - SISTEMI EMBEDDED E INTERNET-OF-THINGS

Anno Accademico 2018/2019

  • Docente: Alessandro Ricci
  • Crediti formativi: 6
  • SSD: ING-INF/05
  • Lingua di insegnamento: Italiano
  • Modalità didattica: Convenzionale - Lezioni in presenza
  • Campus: Cesena
  • Corso: Laurea in Ingegneria e scienze informatiche (cod. 8615)

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.

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 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 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