Sistemi e Reti - M3 L02 Sensori: misurare il mondo fisico | Prof. Giagnotti
Sistemi e Reti · Anno 3 · Modulo 3 · Lezione 02
Autore: profgiagnotti Sistemi e Reti

Sensori: misurare il mondo fisico

Dai 5 sensi biologici ai sensori artificiali: trasduzione, classificazione, panoramica dei sensori più usati (temperatura, luce, movimento, MEMS, GPS) e conversione analogico-digitale con teorema di Nyquist.

🎯 Obiettivi di apprendimento
✓Definire un sensore e spiegare il processo di trasduzione da grandezza fisica a segnale elettrico
✓Classificare i sensori per tipo di segnale (analogico/digitale) e per modalità di alimentazione (attivo/passivo)
✓Descrivere il funzionamento e i campi d'uso dei principali sensori: temperatura, luce, movimento, umidità, suono, GPS
✓Spiegare il processo di conversione analogico-digitale (ADC) e il Teorema di Nyquist con esempi pratici
✓Analizzare criteri di scelta di un sensore (range, risoluzione, accuratezza, tempo risposta, MEMS) in un progetto Physical Computing / IoT

1. I sensi della macchina

Gli esseri umani percepiscono il mondo attraverso cinque sensi: vista, udito, tatto, olfatto, gusto. Ogni senso è un sistema di trasduzione — trasforma uno stimolo fisico (fotoni, onde sonore, pressione, molecole chimiche) in segnali nervosi che il cervello interpreta. I sensori fanno esattamente la stessa cosa per le macchine: trasformano grandezze fisiche in segnali elettrici che un microcontrollore può elaborare.

La differenza è che i sensori artificiali percepiscono grandezze fuori dalla portata biologica: radiazioni ionizzanti, campi magnetici, accelerazioni su 3 assi, pressioni atmosferiche, frequenze ultrasoniche, posizioni GPS con precisione metrica. In questo senso, i sensori estendono la percezione oltre i limiti umani e sono la porta di ingresso di ogni sistema di Physical Computing.

🎯 Esempio in classe

Pensa allo smartphone in tasca: quando ruoti lo schermo, un accelerometro MEMS capisce l'orientamento; quando sei al buio, il BH1750 abbassa la luminosità; quando dici “Hey Siri”, un microfono MEMS ha già campionato la tua voce. Tutto parte da sensori.

2. Definizione e trasduzione

📌 Definizione da ricordare

Un sensore è un trasduttore: rileva una grandezza fisica (misurando) e la converte in un segnale elettrico proporzionale, interpretabile da un sistema di elaborazione. Il processo si chiama trasduzione.

La catena di trasduzione segue sempre la stessa logica: grandezza fisica → elemento sensibile → segnale elettrico → microcontrollore.

🌡️ Grandezza fisica es. temperatura misurando → 🔌 Elemento sensibile NTC / LDR / MEMS trasduttore → ⚡ Segnale elettrico tensione variabile 0-5V / I²C → 💻 Elaborazione Arduino / ESP32 ADC + codice
💬 Tip del docente

All’interrogazione parti sempre dalla catena: cos’è il misurando? Che elemento sensibile uso? Che segnale produce? Come lo leggo con Arduino? Se ricostruisci la catena non ti incarti mai.

3. Classificazione dei sensori e parametri chiave

I sensori si classificano secondo due criteri fondamentali: tipo di segnale prodotto e necessità di alimentazione esterna.

Per tipo di segnale — Analogici vs Digitali

01 · CONTINUO

〰️ Sensori Analogici

Segnale continuo proporzionale. Richiedono ADC esterno. Esempi: termistore NTC, LDR, microfono a condensatore. Range infinito di valori 0-5V.

02 · DISCRETO

▊▊ Sensori Digitali

ADC integrato, comunicano via I²C/SPI/UART. Microcontrollore riceve già numeri. Esempi: DHT22, BH1750, MPU-6050, NEO-6M GPS.

03 · IBRIDO

🔀 Esempio HC-SR04

Ultrasuoni attivi: emette impulso a 40 kHz e misura tempo di volo. Output digitale temporizzato, ma principio fisico analogico. Distanza = (t × 340)/2.

Per alimentazione — Attivi vs Passivi

TipologiaDefinizioneEsempi
⚡ AttiviRichiedono alimentazione esterna, emettono energia per misurareRadar, sonar, sensori IR attivi, umidità capacitivi
🔋 PassiviSfruttano energia della grandezza misurata, non emettonoTermocoppie (effetto Seebeck), LDR, PIR (riceve IR umano)
⚠️ Errore comune

PIR non emette infrarossi: è passivo, riceve solo l’IR emesso dal corpo umano. Se dici “emette” in verifica è errore. Attivo è HC-SR04 che emette ultrasuoni, PIR è l’opposto.

Parametri chiave per scegliere un sensore

ParametroDefinizioneEsempio pratico
RangeIntervallo min-max rilevabileDHT11: 0–50 °C · Termocoppia K: –200 a +1350 °C
RisoluzioneMinima variazione rilevabileDHT11 ±1 °C vs DHT22 ±0,1 °C — 10 volte più fine
AccuratezzaQuanto il misurato si avvicina al realeGPS consumer ±3-5 m · GPS RTK ±2 cm
SensibilitàΔ uscita / Δ ingresso10 mV/°C = +10 mV per ogni grado in più
Tempo di rispostaTempo per stabilizzarsiPIR 1–2 s · Accelerometro MEMS <1 ms

4. I principali sensori: temperatura, luce, movimento, umidità, GPS, MEMS

Temperatura — il sensore più diffuso

ANALOGICO · NTC

Termistore NTC

R diminuisce con T. Basso costo, buona sensibilità. Range –55/+150 °C. Uso: elettrodomestici, PCB. Serve ADC e formula Steinhart-Hart.

DIGITALE · DHT

DHT11 / DHT22

Temperatura + umidità, protocollo 1-filo proprietario. DHT22 ±0,5 °C più preciso. Uso classico IoT, stazioni meteo Arduino.

PASSIVO · SEEBECK

Termocoppia

Due metalli diversi generano tensione da ΔT. Sensore passivo, range enorme –200/+1350 °C. Forni, motori, industriale.

Luce — fotoresistenze e luxometri

LDR (Light Dependent Resistor): resistenza da MΩ al buio a centinaia di Ω alla luce diretta. Analogico, economicissimo, si legge con partitore di tensione su pin A0 Arduino. BH1750: luxometro digitale I²C, 1–65535 lux, niente ADC, valore già in lux. Ideale per regolazione automatica luminosità, serre, fotografia.

LDR · Analogico · Partitore Vout = 5V * R_LDR / (R_fissa + R_LDR) analogRead(A0) → 0-1023 → Tensione Buio: ~0V · Luce forte: ~4.5V Pro: 0,20€ · Contro: non lineare, lento BH1750 · Digitale · I²C SDA/SCL → Wire.read() → lux diretti Range 1–65535 lux, 16 bit Ufficio 500 lux · Sole diretto 50k lux Pro: preciso, già calibrato · Contro: 4-6€

Movimento e presenza — PIR e ultrasuoni

PIR · PASSIVO

Infrarossi Passivi

Variazione IR da corpi caldi. Output HIGH su movimento. Non emette nulla. Allarmi, luci automatiche, 5-7 m.

HC-SR04 · ATTIVO

Ultrasuoni 40 kHz

Emette impulso e misura echo. Distanza = (tempo × 340)/2. Range 2 cm – 4 m. Robot, parcheggi, livelli liquidi.

CONFRONTO

Quando usare quale?

PIR solo presenza umana (non distanza). HC-SR04 distanza precisa ma non distingue persona da muro. Spesso insieme.

Umidità, pressione, gas, suolo

SensoreMisuraNote laboratorio
BME280Temp / Umidità / Pressione3-in-1 I²C/SPI, stazioni meteo, altitudine da pressione, IoT standard
MQ-2 / MQ-135Fumo, CO, metano, LPGElettrochimico analogico, warm-up 20-30 s, poco selettivo ma utile per allarmi
Umidità suoloResistività terrenoAnalogico, 2 palette nel terreno, irrigazione automatica, orto smart, soffre corrosione

Accelerometro e giroscopio — i sensori dello smartphone

📌 MPU-6050 — 6 DOF in un chip

Accelerometro 3 assi (misura g, orientamento, vibrazione) + giroscopio 3 assi (gradi/s di rotazione) = 6 gradi di libertà. Comunica via I²C, presente in smartphone, smartwatch, droni, controller.

Accelerometro 3 assi Ax, Ay, Az in g Detect: orientamento, caduta, vibrazione, passi X Y Z + Giroscopio 3 assi Gx, Gy, Gz in °/s Stabilizza: droni, gimbal, VR, controller ω roll pitch yaw = 6 DOF MPU-6050 I²C 0x68 · 3.3V · MEMS Smartphone, drone, smartwatch lib: Adafruit_MPU6050

GPS — posizione assoluta

Il GPS riceve segnali radio da almeno 4 satelliti: con 3 ottieni lat/lon (2D), con il 4° correggi l’errore di clock e ottieni anche quota. Più satelliti = più precisione. Modulo didattico standard NEO-6M: output NMEA via UART, primo fix 30-60 s, frase tipo $GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,...

Sensori MEMS — la miniaturizzazione che ha cambiato tutto

MEMS (Micro Electro Mechanical Systems) = strutture meccaniche micrometriche costruite nel silicio insieme all’elettronica. Un microfono MEMS è un diaframma micro sospeso: il suono lo fa vibrare, cambia capacità, ADC integrato digitalizza. Risultato: 1 mm², milioni di cicli senza usura, dentro AirPods, smartphone, speaker smart.

🎯 Perché MEMS è decisivo per IoT?

Senza MEMS non avremmo smartphone né IoT consumer: accelerometri, barometri e microfoni costerebbero decine di euro e occuperebbero centimetri. MEMS li porta a centesimi, millimetri e consumo μA, abilitando wearables e dispositivi alimentati a batteria.

5. Dal mondo analogico al digitale — ADC e Teorema di Nyquist

Il mondo fisico è analogico, i microcontrollori sono digitali. Serve un traduttore: ADC (Analog-to-Digital Converter). Due fasi: campionamento (quante volte al secondo scatto foto del segnale) e quantizzazione (quanti livelli discreti uso).

FASE 1 · Campionamento Foto del segnale ogni Ts = 1/fs CD: 44.1k camp/s Arduino: ~9.6k camp/s Oscilloscopio: 1G camp/s FASE 2 · Quantizzazione Ogni campione → intero più vicino 8 bit → 256 livelli (0-255) 10 bit → 1024 livelli (0-1023) Arduino 16 bit → 65536 livelli audio Formula Arduino: V = (val × 5.0)/1023 512 → ~2.5V · Tensione proporzionale
📌 ADC Arduino UNO

10 bit, riferimento 5V → mappa 0-5V su 0-1023. analogRead(A0)=512 significa ~2,5V. Per aumentare precisione usa analogReference(INTERNAL) 1,1V o ADC esterno a 12-16 bit.

Il Teorema di Nyquist-Shannon — campionare abbastanza velocemente

📐 Teorema di Nyquist

f_campionamento ≥ 2 × f_max_segnale. Se non rispetti questa condizione, il segnale ricostruito è distorto: aliasing. Audio umano max 20 kHz → CD campiona a 44,1 kHz (doppio + margine). Temperatura varia di 1°C/ora → basta 1 campione/min.

Arduino · Lettura sensori analogici e digitali
// Analogico: LDR su A0 con partitore int raw = analogRead(A0); // 0-1023 float voltage = raw * 5.0 / 1023.0; float lux_stimata = map(raw, 0, 1023, 0, 1000); // calibrazione grezza // Analogico: NTC temperatura (formula semplificata) int adc = analogRead(A1); float R = 10000.0 * (1023.0/adc -1); // con R fissa 10k float tempC = 1/(0.001129148 + 0.000234125*log(R) + 0.0000000876741*pow(log(R),3)) - 273.15; // Digitale: DHT22 #include "DHT.h" DHT dht(2, DHT22); float t = dht.readTemperature(); float h = dht.readHumidity(); // Digitale: HC-SR04 distanza digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); long durata = pulseIn(echoPin, HIGH); float distanza_cm = durata * 0.034 / 2; // Digitale: BME280 I²C #include Adafruit_BME280 bme; float pressure = bme.readPressure()/100.0; // hPa
⚠️ Aliasing — l'errore che non perdona

Se campioni un suono a 1000 Hz solo 500 volte/s, la ricostruzione non è 1000 Hz ma una frequenza fantasma più bassa. Soluzione: filtro passa-basso anti-aliasing prima dell'ADC e rispetto di Nyquist. In laboratorio si vede con suoni acuti registrati a sample rate troppo bassa.

6. Verifica / Esercizio in classe

🔬 Attività di laboratorio

Tre mini-sfide per consolidare sensori + ADC. Lavora con Arduino/ESP32 e documenta range, risoluzione e tempo di risposta.

  1. Classifica ragionata: hai NTC analogico, DHT22, BME280, LDR, BH1750, PIR, HC-SR04, MPU-6050, NEO-6M. Mettili in tabella: tipo segnale (analogico/digitale), attivo/passivo, protocollo, grandezza, range tipico, uso ideale.
  2. Nyquist in pratica: devi monitorare una serra. Temperatura varia lentamente, ma vuoi rilevare corrente d'aria da finestra aperta (variazione rapida in 2s). Che f_camp scegli? Giustifica con Nyquist e confronta con campionamento audio 20kHz → 44,1kHz.
  3. Progetto serra smart: scegli 3 sensori (es. umidità suolo + BME280 + BH1750). Per ognuno indica range e risoluzione richiesta, sketch lettura seriale, soglia d'azione per irrigazione e ventilazione, e perché MEMS ti aiuta su consumo.
✅ Soluzione ragionata — traccia
  • 1) Analogici: NTC (ADC esterno), LDR. Digitali: DHT22 (1-wire proprietario), BME280/BH1750/MPU-6050 I²C, HC-SR04 impulso, NEO-6M UART NMEA. Attivi: HC-SR04, BME280 (alimentato). Passivi: NTC lato sensore, LDR, PIR, termocoppia.
  • 2) Finestra aperta → f_max ~0,5 Hz (2 s). Nyquist → f_camp ≥1 Hz, con margine scegli 2-5 Hz. Audio 20kHz → 44,1kHz. Temperatura lenta 1 campione/min basta.
  • 3) BME280 temp 0-50°C ±0,5°C, lux 100-1000 per serra, umidità suolo soglia 40%. Codice: analogRead + librerie Adafruit. Ventola se temp>28°C, pompa se suolo<40%, tenda se lux>800. MEMS riduce consumo μA vs mA.
✓Sensore = trasduttore: grandezza fisica (misurando) → elemento sensibile → segnale elettrico → elaborazione. Parametri scelta: range, risoluzione, accuratezza, sensibilità, tempo risposta
✓Analogico vs Digitale: analogico continuo (LDR, NTC) richiede ADC; digitale ha ADC integrato e parla I²C/SPI/UART (DHT22, BH1750, MPU-6050, BME280, NEO-6M)
✓Attivo vs Passivo: attivo emette energia (HC-SR04 ultrasuoni, radar); passivo riceve (PIR riceve IR corpo, termocoppia, LDR)
✓Panorama sensori: temperatura (NTC, DHT22, termocoppia), luce (LDR, BH1750), movimento (PIR presenza, HC-SR04 distanza), gas MQ, suolo resistivo, MEMS 6 DOF MPU-6050, GPS NEO-6M trilaterazione
✓MEMS: sensori meccanici micrometrici in silicio, consumo μA, costo centesimi, abilitano smartphone/wearables/IoT
✓ADC: campionamento (fs) + quantizzazione (bit). Arduino UNO 10 bit 0-1023 → V=(val×5)/1023. Nyquist: fs ≥ 2×fmax altrimenti aliasing. Più bit + più campioni = fedeltà

📚 Prossimo passo — Attuatori: agire sul mondo fisico

Hai imparato a misurare. Ora imparerai a far agire la macchina: relè, motori DC, servo, stepper e come Arduino li pilota. Senza attuatori, un sensore resta un osservatore muto.