La tecnologia Internet of Things sta rimodellando il mondo integrando sempre di più le nostre vite con componenti tecnologiche. Il corso si propone di fornire la comprensione generale ei concetti relativi alle tecnologie alla base dell'Internet of Things (IoT) ed in particolare alle applicazioni alla cosiddetta Industria 4.0. Il corso discuterà le considerazioni sulla progettazione dell'IoT, i vincoli e l'interfaccia tra il mondo fisico e i dispositivi IoT e come fare compromessi di progettazione tra hardware e software. Verranno trattati gli aspetti chiave della rete per capire come sono collegati i dispositivi.
Prerequisiti
I seguenti prerequisiti possono essere utili, ma data la natura introduttiva del corso, non sono obbligatori: - programmazione computer - architettura software dei computer - reti di computer
Metodi didattici
Il corso è organizzato in lezioni frontali che tratteranno tutti gli argomenti indicati nel programma. Le lezioni frontali ammontano a circa 2/3 del corso. Le restanti lezioni consisteranno in lezioni in laboratorio ed esercitazioni relative alla programmazione dei dispositivi IoT.
Verifica Apprendimento
L'esame consiste in un'unica prova scritta con domande ed esercizi relativi agli argomenti presentati durante il corso. Non sono previste prove intermedie durante il semestre. Una prova orale facoltativa può essere concordata su richiesta dello studente o del docente.
Testi
Tutto il materiale presentato durante le lezioni è disponibile nella pagina web del corso sotto forma di slide in formato PDF. Ulteriori risorse includono i seguenti libri:
David Hanes et al., “IoT Fundamentals: Networking Technologies, Protocols, and Use Cases for the Internet of Things”, Cisco Press, 2017. Andy King, “Programming the Internet of Things: An Introduction to Building Integrated, Device-to-Cloud IoT Solutions”, O’Reilly, 2021.
Contenuti
Le tecnologie coinvolte nello stack hardware/software IoT comprendono un ampio spettro, inclusi sistemi embedded, sensori, sistemi operativi, reti, protocolli di comunicazione, gestione e analisi dei dati. Il corso introdurrà i concetti principali di ciascun dominio, con particolare attenzione ad alcuni aspetti specifici selezionati. Il corso prevede lezioni pratiche sulle basi della programmazione per l'IoT utilizzando il linguaggio di programmazione Python.
Programma dettagliato
1. Definizione di "Internet of Things" e Industria 4.0 2. Tendenze tecnologiche che hanno portato all'IoT 3. Impatto dell'IoT sulla società ed esempi di applicazioni 4. Definizione e architettura dei sistemi embedded 5. Interfacciamento dei sistemi embedded con il mondo fisico (sensori e attuatori) 6. Sistemi operativi e pianificazione in tempo reale 7. Nozioni di base sulle macchine a stati finiti 8. Stack hardware e software di rete di base 9. Protocolli di rete (MQTT, CoAP) e formati di dati (JSON, XML) per l'IoT 10. Introduzione al linguaggio di programmazione Python 11. Competenze di programmazione Python relative a MQTT, JSON, HTTP 12. La libreria Python tkinter per interfacce grafiche 13. Il framework web flask e REST API