81683 - INTERNET OF THINGS

Anno Accademico 2026/2027

  • Docente: Marco Di Felice
  • Crediti formativi: 6
  • SSD: INFO-01/A
  • Lingua di insegnamento: Inglese

Conoscenze e abilità da conseguire

Al termine del corso, lo studente conosce le principali architetture e metodologie alla base dell’Internet of Things (IoT), con particolare riferimento alle tecnologie wireless di comunicazione Machine-to-Machine (M2M), ai protocolli di rete dell’IoT, alle soluzioni a supporto dell’interoperabilità software basate su approccio Web of Things, ed alle tecniche ed alla piattaforme per la gestione ed analisi dei dati di sensori. Inoltre, lo studente è in grado di progettare e implementare pipeline IoT composte da dispositivi edge in grado di fare sensing dell’ambiente, da piattaforme cloud/fog per la gestione scalabile dei dati IoT, e da software per l’analisi ed il forecasting dei dati IoT mediante tecniche statistiche e di machine learning. Saranno illustrate soluzioni per favorire l’integrazione di dati, dispositivi e piattaforme eterogenei sulla base di approcci Web of Things, e modelli emergenti di computazione (edge/distributed/cloud/…) legati all’analisi dei dati IoT. Saranno infine discussi casi d’uso emergenti ed applicazioni dell’IoT in vari domini.

Contenuti

Il corso introduce le tecnologie abilitanti, i linguaggi, i protocolli, le architetture software e le applicazioni legate al paradigma emergente dell’Internet of Things (IoT). Dopo una breve introduzione alle tematiche del pervasive computing ed ai suoi campi di utilizzo emergenti (Industry 4.0, domotica, intelligent transportation systems, dispositivi wearable, etc), il corso fornisce una panoramica esaustiva degli elementi abilitanti di un sistema IoT dal punto di vista delle tecnologie per la comunicazione wireless tra dispositivi, della programmazione embedded (architetture e linguaggi), delle tecniche di processamento dati. In particolare, le componenti di un tipico sistema IoT vengono illustrate seguendo un percorso data-oriented: dalla generazione e processamento dei dati  su sistema embedded/microcontrollore, alla loro trasmissione all’interno di una rete WSAN/WLAN/WPAN, all'acquisizione su sistema remoto e storage, fino all'estrazione di conoscenza mediante tecniche di AI ed integrazione all’interno di un sistema edge (approcci edge AI e tinyML).

Segue un elenco sommario dei contenuti del corso:

Introduzione ai sistemi IoT: definizioni, applicazioni, tecnologie abilitanti

Componenti IoT: Comunicazione e Networking

  • Sensori e attuatori, elementi di progettazione di circuiti elettronici (cenni), politiche di sensing e acquisizione dati
  • Tecnologie di comunicazione senza fili e codifiche per IoT
  • Comunicazione Machine-to-machine (M2M) tra dispositivi: tecnologie wireless abilitanti per reti WPAN (BLE, IEEE 802.15.4, Z-Wave, etc.), WLAN e LP-WAN (LoRA, LoRaWAN)
  • Architetture di rete e routing (6LoWPAN, RPL)

Componenti IoT: Sistemi embedded

  • Sistemi embedded: introduzione e pattern architetturali
  • Approcci bare-metal e framework-oriented (es., Arduino)
  • Approcci basati su Real Time Operating Systems (es. FREERTOS e ESP-IDF)
  • Approcci basati su micro-interpreti (Micropython, Web Assembly)
  • Interfacciamento del microcontrollore con sensori/attuatori  mediante protocolli seriali

Componenti IoT: Acquisizione dati

  • Protocolli di acquisizione dati: COAP, MQTT, HTTP
  • Web of Things ed interoperabilità

Componenti IoT: Gestione e prossamento/analisi dati 

  • Storage e processamento di dati di sensori, Time-series e time-series database: INFLUX-DB
  • Visualizzazione di serie temporali: esempi con tool GRAFANA
  • Forecasting di serie-temporali con metodi statistici
  • Forecasting di serie-temporali con techniche di AI/ML
  • Edge AI e TinyML

Componenti IoT: Architetture IoT edge/cloud

  • Architetture di storage/processamento dati: approcci cloud/fog/edge computing
  • Piattaforme IoT: AWS IoT, ThingSpeak, etc.

Testi/Bibliografia

Slides del docente, link a capitoli di libro, articoli scientifici ed a risorse online indicate sul sito del corso. Testo consigliato: Riccardo Melen, Vittorio Trecordi, "IoT Networking", Pearson, ISBN 8891931934, ISBN13 978-8891931931, 336 pp. (cover price 34 EUR). Altri testi sono consigliati durante il corso in base all'argomento trattato.

Metodi didattici

Per seguire al meglio il corso, e tenendo conto della forte componente progettuale e sperimentale e le esercitazioni previste nel programma, è fortemente consigliato possedere le seguenti conoscenze preliminari: (i) familiarità con almeno un linguaggio di programmazione per ambienti embedded (ad esempio C/C++), oltre a un linguaggio utilizzato per la programmazione front-end o back-end (consigliato Python); (ii) conoscenze di basi di dati e del linguaggio SQL.

Il corso prevede lezioni frontali ed esercitazioni svolte in aula, mediante l'ausilio di PC e proiettore da parte del docente.

Le esercitazioni di coding in aula vengono svolte utilizzando dispositivi IoT messi a disposizione dai docenti. Gli studenti devono recarsi in aula muniti del proprio PC per poter partecipare alle esercitazioni.

In considerazione della tipologia di attività e dei metodi didattici adottati, la frequenza di questa attività formativa richiede la preventiva partecipazione di tutti gli studenti ai Moduli 1 e 2 di formazione sulla sicurezza nei luoghi di studio, [https://elearning-sicurezza.unibo.it/ ] in modalità e-learning.

Modalità di verifica e valutazione dell'apprendimento

Il corso prevede un seminario (facoltativo) ed un progetto (obbligatorio). Il seminario viene svolto durante l'ultima settimana del corso, e consiste in una presentazione di 20-30 minuti nella quale lo studente presenta un argomento di ricerca legato al programma di corso, prendendo spunto da un articolo scientifico o da un tool esistente. L'argomento del seminario può essere scelto da una lista messa a disposizione dai docenti oppure proposto dallo studente. Il seminario viene valutato su una scala di 4 valori (Insufficiente, Sufficiente, Buono, Ottimo).  

Il progetto consiste nello sviluppo di un sistema IoT che implementi tutta la pipeline presentata a lezione (acquisizione dati da sensori, sistema embedded basato su microcontrollore, acquisizione dati su nodo edge con protocolli HTTP/CoAP/MQTT, storage dei dati con database di serie temporali, dashboard, analisi dati/forecasting di serie temporali con approcci AI/ML e di statistical learning). Come per l'argomento del seminario, la traccia del progetto viene proposta dagli studenti ed approvata dal docente, o direttamente proposta dal docente. Il progetto produce un voto in 30-esimi.

Il voto finale viene calcolato tenendo in considerazione il voto del progetto ed il giudizio ottenuto durante il seminario, in base ai seguenti vincoli:

(1) Se il seminario non è stato svolto, il voto massimo finale ottenibile è 23.

(2) Se il seminario è stato svolto, con giudizio Sufficiente, il voto massimo finale ottenibile è 25.

(3) Se il seminario è stato svolto, con giudizio Buono, il voto massimo finale ottenibile è 28.

(4) Se il seminario è stato svolto, con giudizio Ottimo, il voto massimo finale ottenibile è 30 e lode.

 

 

Strumenti a supporto della didattica

Il materiale didattico (slides, codice) presentato a lezione viene messo a disposizione dello studente attraverso la pagina web del corso ufficiale su piattaforma Virtuale. La pagina contiene inoltre: link a strumenti software utilizzabili per lo svolgimento del progetto, e puntatori a sorgenti di informazioni (es. forum, articoli scientifici) correlate agli argomenti del corso. 

Orario di ricevimento

Consulta il sito web di Marco Di Felice

Consulta il sito web di Luciano Bononi