Sistemi embedded

A.A. 2024/2025
6
Crediti massimi
48
Ore totali
SSD
INF/01
Lingua
Italiano
Obiettivi formativi
Fornire al discente le conoscenze per progettare e realizzare un sistema embedded prototipale. Dopo una panoramica delle piattaforme 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.
Risultati apprendimento attesi
Saper scegliere la piattaforma embedded adatta ad uno scopo/progetto. Saper progettare e implementare il software da caricare su MCU. Conoscere i limiti e le possibilità di interfacciamento col mondo esterno. Saper scegliere sensori e attuatori corretti per un determinato scopo. Saper leggere uno schema elettrico. Saper scegliere tra protocolli di comunicazione adeguati (sensori e attuatori, rete). Saper gestire una piattaforma embedded con/senza sistema operativo
Corso singolo

Questo insegnamento può essere seguito come corso singolo.

Programma e organizzazione didattica

Edizione unica

Responsabile
Periodo
Secondo semestre

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
- Controlli automatici (richiami)
- "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 e ESP8266/32)
- 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
Prerequisiti
basi di programmazione, conoscenze di fisica
Metodi didattici
lezioni frontali e laboratorio "hands on"

frequenza fortemente consigliata
Materiale di riferimento
Sistemi Embedded: teoria e pratica

Alexjan Carraturo, Andrea Trentini

Seconda Edizione

Anno di pubblicazione: 2019

ISBN: 9788867059430

http://sistemiembedded.cc
Modalità di verifica dell’apprendimento e criteri di valutazione
Esame orale con presentazione di un progetto.
L'esame consiste in una discussione orale obbligatoria che verte sugli argomenti trattati o citati nel corso (la lista delle domande è pubblica e disponibile online), inoltre ogni studente dovrà realizzare (e quindi presentare) un progetto hardware+software su un tema concordato preventivamente col docente.
La presentazione/dimostrazione del progetto sarà parte integrante della valutazione.
Per la valutazione saranno considerati i seguenti parametri:
- completezza nella presentazione del progetto
- capacità di ragionamento critico sui temi del corso
- capacità di generalizzazione e applicazione al mondo reale
- uso corretto della terminologia
- qualità nella realizzazione hardware+software
Valutazione: voto in trentesimi
INF/01 - INFORMATICA - CFU: 6
Lezioni: 48 ore
Turni:
Turno
Docente: Trentini Andrea Mario
Docente/i
Ricevimento:
su appuntamento, chiedere via mail -- non quella unimi (molte vanno perse!!!) -- o su telegram @atrent
stanza 4007, via Celoria 18, MI