Obiettivi formativi
Gli obiettivi del corso, in termini di conoscenza e comprensione, sono i seguenti:
- fornire allo studente una conoscenza di base dei principali principi di funzionamento di sistemi IoT, con particolare attenzione ai protocolli di comunicazione;
- fornire allo studente una conoscenza applicata basata sull'utilizzo di un testbed IoT in laboratorio.
Prerequisiti
Aver seguito corsi di base e/o avanzati di reti di telecomunicazione è utile.
Contenuti dell'insegnamento
Il corso è suddiviso in due parti. La prima parte (teoria) è dedicata all'introduzione all'Internet delle Cose (Internet of Things, IoT), con descrizione dei principali protocolli di comunicazione utilizzati (da livello fisico a livello applicativo). La seconda parte (pratica) è dedicata al laboratorio di IoT: gli studenti sono introdotti ai principali sistemi operativi per IoT e a tool di sviluppo di livello applicativo. La parte di laboratorio termina con l'assegnazione di un progetto, che consiste nel progetto e sviluppo di un'applicazione IoT (usando opportuni nodi IoT che verranno forniti agli studenti) e nella successiva redazione di un breve rapporto. Il voto del progetto va poi mediato con il voto di un esame scritto (tipicamente quattro domande) che verte sui contenuti della prima parte del corso.
Programma esteso
TEORIA
LEZIONE 1: Introduzione ad IoT; definizioni, storia, gli oggetti smart di oggi, le sfide per oggetti smart (a livello di nodo/rete), standardizzazione, trend tecnologici e crescita di mercato.
LEZIONE 2: Introduzione all'IoT: hardware, software, testbed al WASN Lab.
Protocolli di livello di trasporto: UDP e TCP: principi di progettazione, dettagli di UDP e TCP, UDP e TCP per oggetti smart.
LEZIONE 3: Ipv6: l'evoluzione dell'Internet, stack protocollare IP, caratteristiche dell'IPv6 (headers, addressing, etc.).
LEZIONE 4: Meccanismi di comunicazione: pattern di comunicazione, protocolli di comunicazione (IEEE 802.15.4, IEEE 802.11, PLC).
LEZIONE 5: Protocolli MAC energeticamente efficienti: consumo di potenza, problemi in reti wireless (terminale esposto/nascosto, near-far), accesso centralizzato, protocolli a contesa tradizionali, protocolli energeticamente efficienti senza scheduling (MACA, PAMAS, STEM, B-MAC, WiseMAC, X-MAC) e con scheduling (S-MAC,ContikiMAC).
LEZIONE 6: 6LoWPAN: una LoWPAN,
il livello di adattamento, la struttura dell'header, compression dell'header.
LEZIONE 7: Routing in LLNs & RPL: dalle WSNs a RPL; modello di link in LLNs, richieste routing, approccio di RPL; metriche, vincoli, funzione obiettivo; idee di base di RPL, operazioni e DODAG multipli; messaggi DIO e DAO; un esempio di costruzione e mantenimento di DAG.
LEZIONE 8: Paradigmi di comunicazione per l'IoT: architettura REST, Web of Things, Publish/Subscribe.
LEZIONE 9: Sistemi operativi e hardware per l'IoT: overview dell'hardware; classi di dispositivi vincolati; board IoT principali; sensori e attuatori; tipi di media per Sensor Markup Language (SENML);
interfacce CoRE; sistemi operativi per IoT.
LEZIONE 10: Constrained Application Protocol (CoAP); estensioni CoAP (Observing resources, Block-wise
transfers, Resource directory & CoRE interfaces, HTTP/CoAP proxying).
LEZIONE 11: Sicurezza per IoT: pericoli e contromisure; sicurezza a livello IP (IPSec, HIP); sicurezza a livello di trasporto (TLS, DTLS); sicurezza a livello applicativo (S/MIME, SRTP); condivisione di chiave e distribuzione; algoritmi crittografici.
LEZIONE 12: Scoperta di servizi; scoperat di servizi con CoAP; scoperta di risorse; ZeroConf; jMDNS; "Lightweight
multicast forwarding for service discovery in low-power IoT networks"; un'architettura scalabile ed auto-configurante per la scoperta di servizi in IoT.
PRATICA
LEZIONE 13: sistemi operativi real-time: confronto fra freeRTOS e RIoT.
LEZIONE 14: FreeRTOS (1/2): principi e caratteristiche.
LEZIONE 15: Introduzione a JAVA; programmazione orientata agli oggetti (Object-Oriented Programming, OOP); nozioni di base di Java, classi e oggetti; metodi; interfacce; principi di OOP; JAVA in pratica; pattern di progettazione.
Californium (Cf) Framework-CoAP (1/2): Californium (Cf) Framework; architettura Client/Server CoAP Server API; CoAP Client API.
LEZIONE 16: Californium (Cf) Framework-CoAP (1/2): completamento del tutorial.
LEZIONE 17: Californium (Cf) Framework-CoAP (2/2): pratica da parte degli studenti.
LEZIONE 18: FreeRTOS (2/2): Pratica con codice C per FreeRTOS e comunicazione fra e 2 nodi OpenMote.
LEZIONE 19: Assegnazione del progetto.
LEZIONE 20: Sviluppo del progetto.
LEZIONE 21: Sviluppo del progetto.
LEZIONE 22: Sviluppo del progetto.
Bibliografia
Il libro di riferimento principale è J. P. Vasseur and A. Dunkels, `Interconnecting Smart Objects with IP,` Morgan Kaufmann,
2010. [Capitoli: 1,2,4,6,11,12,15,16,17].
Vengono forniti numerosi altri articoli di letteratura e altri testi di riferimento.
Metodi didattici
Le lezioni del corso (sia della prima parte che della fase iniziale della seconda parte) verteranno sull'uso di slide (fornite regolarmente agli studenti), con riferimenti precisi al libro di testo e ad altri articoli/materiale didattico.
Modalità verifica apprendimento
Esame scritto (tipicamente 4 domande) sulla prima parte del corso e progetto (condiviso con il docente) su un argomento della seconda parte del corso (laboratorio) con relazione e discussione della stessa. Il voto finale è un valore medio (pesato) dei voti nella prima prova e nel progetto.
Altre informazioni
Il materiale didattico e di supporto alle lezioni verrà fornito in parte dal docente.