Sistemi embedded
A.A. 2018/2019
Obiettivi formativi
Fornire al discente le conoscenze per progettare e realizzare un sistema embedded prototipale su piattaforme Arduino/ESP8266, Linux/OpenWRT, FreeRTOS.
Dopo una panoramica delle piattaforme F/L/OSS esistenti in commercio verranno fornite alcune basi di elettricità/elettronica per padroneggiare l'interfacciamento col mondo fisico, successivamente verranno affrontati i principali approcci di sviluppo software su piattaforme embedded. Il laboratorio verterà sull'ambiente Arduino.
Dopo una panoramica delle piattaforme F/L/OSS esistenti in commercio verranno fornite alcune basi di elettricità/elettronica per padroneggiare l'interfacciamento col mondo fisico, successivamente verranno affrontati i principali approcci di sviluppo software su piattaforme embedded. Il laboratorio verterà sull'ambiente Arduino.
Risultati apprendimento attesi
Non definiti
Periodo: Secondo semestre
Modalità di valutazione: Esame
Giudizio di valutazione: voto verbalizzato in trentesimi
Corso singolo
Questo insegnamento non può essere seguito come corso singolo. Puoi trovare gli insegnamenti disponibili consultando il catalogo corsi singoli.
Programma e organizzazione didattica
Linea Milano
Responsabile
Periodo
Secondo semestre
STUDENTI FREQUENTANTI
Programma
# Parte teorica
- Classificazione dei sistemi embedded
- Genesi e storia dei microcontrollori
- Problemi da affrontare: limited resources (CPU, RAM, etc.), power consumption, harsh environments, il real-time, costi, dimensioni, tecniche costruttive, I/O (livelli, protezione, tipi di sensori, attuatori, multiplexing)
- Stili di programmazione: no-MMU, cooperative multitasking, interrupts, race conditions, watchdogs, FSA, tasks&events
- "Sistemi operativi" nel contesto embedded (es. NodeMCU, OpenWrt, DD-WRT, FreeRTOS)
- Open hardware
- Richiami di elettricità/elettronica: tensioni, correnti, legge di Ohm, componenti passivi, uso degli
strumenti di misura, considerazioni sulla sicurezza personale
- Temporizzazione
- Gestione degli interrupt
- Tipologie di memoria (EEPROM, flash memory, etc.)
- Protocolli di comunicazione "low-level": RS232, I2C, 1-Wire, CAN, etc.
- Protocolli di comunicazione "hig-level": MQTT, OSC, etc.
- Bit banging
- Pulse Width Modulation
- Conversione AD e DA
- Leggere i datasheet
- Piattaforme sul mercato: Arduino, Texas MSP430, ESP8266, RaspberryPI, Beaglebone, Olimex, Alix, ARM, etc.
# Laboratorio
Caso di studio variabile di anno in anno, in funzione delle piattaforme maggiormente usate sul mercato: Arduino
- architettura di Arduino: caratteristiche delle varie versioni dell'hardware (da Arduino UNO fino a Arduino YUN/NUY)
- ciclo di sviluppo, fasi della programmazione: scrittura del codice, cross-compilazione, upload, esecuzione del programma
- il meccanismo base di funzionamento di Arduino: i metodi "setup" e "loop"
- variabili, espressioni, tipi di dato, operatori ("+", "-", "*", etc.)
- Input/Output attraverso le porte disponibili sulla scheda: come leggere informazioni da sensori e come attivare azioni sul mondo reale tramite attuatori
- controllo di flusso
- definizione di funzioni
- gli shield: schede già pronte per funzionalità ormai standardizzate (es. motori in corrente continua e passo/passo, relè, rete ethernet, rete cellulare, wifi, bluetooth, etc.)
- inclusione di librerie
- paragoni con altre piattaforme
- Classificazione dei sistemi embedded
- Genesi e storia dei microcontrollori
- Problemi da affrontare: limited resources (CPU, RAM, etc.), power consumption, harsh environments, il real-time, costi, dimensioni, tecniche costruttive, I/O (livelli, protezione, tipi di sensori, attuatori, multiplexing)
- Stili di programmazione: no-MMU, cooperative multitasking, interrupts, race conditions, watchdogs, FSA, tasks&events
- "Sistemi operativi" nel contesto embedded (es. NodeMCU, OpenWrt, DD-WRT, FreeRTOS)
- Open hardware
- Richiami di elettricità/elettronica: tensioni, correnti, legge di Ohm, componenti passivi, uso degli
strumenti di misura, considerazioni sulla sicurezza personale
- Temporizzazione
- Gestione degli interrupt
- Tipologie di memoria (EEPROM, flash memory, etc.)
- Protocolli di comunicazione "low-level": RS232, I2C, 1-Wire, CAN, etc.
- Protocolli di comunicazione "hig-level": MQTT, OSC, etc.
- Bit banging
- Pulse Width Modulation
- Conversione AD e DA
- Leggere i datasheet
- Piattaforme sul mercato: Arduino, Texas MSP430, ESP8266, RaspberryPI, Beaglebone, Olimex, Alix, ARM, etc.
# Laboratorio
Caso di studio variabile di anno in anno, in funzione delle piattaforme maggiormente usate sul mercato: Arduino
- architettura di Arduino: caratteristiche delle varie versioni dell'hardware (da Arduino UNO fino a Arduino YUN/NUY)
- ciclo di sviluppo, fasi della programmazione: scrittura del codice, cross-compilazione, upload, esecuzione del programma
- il meccanismo base di funzionamento di Arduino: i metodi "setup" e "loop"
- variabili, espressioni, tipi di dato, operatori ("+", "-", "*", etc.)
- Input/Output attraverso le porte disponibili sulla scheda: come leggere informazioni da sensori e come attivare azioni sul mondo reale tramite attuatori
- controllo di flusso
- definizione di funzioni
- gli shield: schede già pronte per funzionalità ormai standardizzate (es. motori in corrente continua e passo/passo, relè, rete ethernet, rete cellulare, wifi, bluetooth, etc.)
- inclusione di librerie
- paragoni con altre piattaforme
Informazioni sul programma
Fornire al discente le conoscenze per progettare e realizzare un sistema embedded prototipale su piattaforme Arduino/ESP8266, Linux/OpenWRT, FreeRTOS.
Dopo una panoramica delle piattaforme F/L/OSS esistenti in commercio verranno fornite alcune basi di elettricità/elettronica per padroneggiare l'interfacciamento col mondo fisico, successivamente verranno affrontati i principali approcci di sviluppo software su piattaforme embedded. Il laboratorio verterà sull'ambiente Arduino.
Dopo una panoramica delle piattaforme F/L/OSS esistenti in commercio verranno fornite alcune basi di elettricità/elettronica per padroneggiare l'interfacciamento col mondo fisico, successivamente verranno affrontati i principali approcci di sviluppo software su piattaforme embedded. Il laboratorio verterà sull'ambiente Arduino.
Prerequisiti
STUDENTI NON FREQUENTANTI
Esame orale con presentazione di un progetto.
L'esame consiste in una discussione orale obbligatoria che verte sugli argomenti trattati o citati nel corso, inoltre ogni studente (eventualmente a piccoli gruppi) dovrà realizzare un progetto
hardware+software su un tema concordato preventivamente col docente.
La presentazione/dimostrazione del progetto sarà parte integrante della valutazione.
L'esame consiste in una discussione orale obbligatoria che verte sugli argomenti trattati o citati nel corso, inoltre ogni studente (eventualmente a piccoli gruppi) dovrà realizzare un progetto
hardware+software su un tema concordato preventivamente col docente.
La presentazione/dimostrazione del progetto sarà parte integrante della valutazione.
Programma
Seguire libro di testo, livello di conoscenza/approfondimento richiesto per ogni capitolo:
Intro: ALTO
Richiami elettronica: ALTO
Architetture embedded: MEDIO
Memorie, I/O e comunicazione: ALTO
Il sistema operativo: OVERVIEW
Configurazione GNU/Linux: OVERVIEW
Arduino e Wiring: ALTO
Ambiente di test: NO
Esempi pratici: MEDIO
NOTA BENE: alcuni argomenti sono stati trattati/citati in aula, ma non sono presenti sul libro, vedere diario lezioni per sapere cosa approfondire (seguendo i link citati sul sito del corso)
Intro: ALTO
Richiami elettronica: ALTO
Architetture embedded: MEDIO
Memorie, I/O e comunicazione: ALTO
Il sistema operativo: OVERVIEW
Configurazione GNU/Linux: OVERVIEW
Arduino e Wiring: ALTO
Ambiente di test: NO
Esempi pratici: MEDIO
NOTA BENE: alcuni argomenti sono stati trattati/citati in aula, ma non sono presenti sul libro, vedere diario lezioni per sapere cosa approfondire (seguendo i link citati sul sito del corso)
Docente/i
Ricevimento:
su appuntamento, chiedere via mail (meglio quella @atrent)
stanza 4007, via Celoria 18, MI