Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Arduino, sensori e attuatori: il Physical Computing

Interfacciare il nostro microcontrollore con il mondo reale
Interfacciare il nostro microcontrollore con il mondo reale
Link copiato negli appunti

Uno dei campi di maggiore applicazione di Arduino può essere assolutamente considerato il Physical Computing, che per definizione rappresenta la possibilità di realizzare dei sistemi, attraverso l'uso di hardware e di software, che possano interagire con il mondo esterno. Tale interazione avviene in entrambi i versi, nel senso che il sistema può acquisire e misurare grandezze reali attraverso l'utilizzo dei sensori e può intervenire verso l'esterno mediante l'uso di attuatori.

Physical Computing : interazione con il mondo reale

Physical Computing : interazione con il mondo reale

Sensori

Esistono numerosi sensori che possono essere utilizzati per acquisire grandezze fisiche come:

  • temperatura;
  • umidità;
  • pressione;
  • luminosità;
  • concentrazione di gas nell'aria;
  • velocità del vento

Ad essi possiamo aggiungere i sensori per:

  • ultrasuoni (Ultrasonic), attraverso i quali è possibile misurare la distanza da un oggetto;
  • infrarossi (PIR, Passive InfraRed), che permettono di rilevare i raggi infrarossi emessi da un corpo (es. il corpo umano) e quindi utili per realizzare sistemi per la rilevazione del movimento (es. sistema di allarme);
  • forza/pressione, mediante i quali è possibile rilevare appunto la forza (e quindi la pressione) esercitata da un corpo su di esso.

Un altro sensore molto noto, che ritroviamo a bordo dei nostri smartphone, è l'accelerometro attraverso il quale è possibile misurare l'accelerazione dell'oggetto a cui esso è collegato ed è molto spesso utilizzato per valutarne l'inclinazione (es. nel caso degli smartphone viene usato per rilevare la rotazione del display in modo che l'applicazione in esecuzione adatti la propria interfaccia grafica).

Il mondo dei sensori è vastissimo e, tipicamente, pensando ad una qualsiasi grandezza fisica (e non) che si voglia misurare, esiste quasi certamente il corrispondente sensore che ci permette di acquisirla.

Sensore temperatura digitale TMP102

Sensore temperatura digitale TMP102

Sensore di luminosità analogico (fotoresistore)

Sensore di luminosità analogico (fotoresistore)

Attuatori

Grazie agli attuatori è possibile agire concretamente sull'ambiente modificandone eventualmente lo stato. In un certo senso anche far "blinkare" un led (come abbiamo fatto nella lezione precedente) può essere considerato come l'attivazione di un attuatore che altera la luminosità esterna.

Un motore è un altro esempio di attuatore, che mette in movimento un oggetto nello spazio (es. una ventola di raffreddamento) così come un relay che viene utilizzato come interruttore laddove c'è necessità di passaggio di corrente ad elevato voltaggio (es. per accendere una lampadina), da pilotare con le basse tensioni gestite da Arduino.

Acquisire, elaborare e operare

Tipicamente, il Physical Computing prevede l'utilizzo di entrambe le categorie di oggetti, in quanto un sistema:

  • acquisisce i dati dal mondo reale (grazie ai sensori);
  • esegue delle valutazioni su di essi;
  • agisce di conseguenza applicando delle azioni sull'ambiente (grazie agli attuatori).

Le valutazioni sono caratterizzate da un'elaborazione sui dati acquisiti per poter prendere opportune decisioni; tale operazione di "processing" può essere:

  • eseguita direttamente dal microcontrollore;
  • remotizzata (es. nel Cloud).

Nel secondo caso, il nostro sistema embedded trasmette i dati ad un server che li elabora per poter inviare successivamente un comando sulla base della "decisione" presa; questo tipo di approccio rientra nel mondo dell'Internet of Things e della M2M (Machine To Machine) Communication.

Sensori analogici e digitali

Focalizzando l'attenzione sui sensori, questi ultimi si possono distinguere in due categorie : analogici e digitali. Tipicamente, il sensore analogico restituisce un valore continuo nel tempo, al contrario di quello digitale che fornisce un valore numerico discreto. Come sappiamo, tutte le grandezza fisiche sono assolutamente analogiche nel senso che hanno una variazione del proprio valore continua nel tempo (e non discreta). I calcolatori elettronici lavorano in modalità discreta (come sappiamo comprendono l'unità minima che è il bit, con i suoi soli due possibili valori 0 ed 1) per cui riescono a gestire solo ed esclusivamente valori numerici in un intervallo discreto e ben definito.

In base a quanto detto, sembrerebbe che l'Arduino possa essere collegato solo ed esclusivamente a sensori digitali, in grado di fornire un valore numerico corrispondente alla grandezza fisica misurata.

In realtà non è così, perché tipicamente i sensori digitali eseguono un'operazione che siamo in grado di eseguire anche direttamente con Arduino : la conversione da analogico a digitale attraverso il campionamento.

I sensori digitali sono tipicamente costituiti anch'essi da un microcontrollore (e quindi sono anche più costosi) che esegue questa operazione di conversione. Come abbiamo visto nei capitoli precedenti, la "Arduino Uno" ad esempio è dotata di 6 canali analogici e dei corrispondenti AD (Analog to Digital) converter che permettono di ottenere un valore numerico compreso tra 0 e 1023 eseguendo il campionamento con 10 bit di risoluzione.

Lo svantaggio rispetto ad un sensore digitale è che, a valle della conversione, siamo costretti ad utilizzare una formula che trasformi il valore compreso tra 0 e 1023 in un numero significativo per la grandezza fisica acquisita. Per esempio, se consideriamo un sensore di temperatura, un valore pari a 546 non può essere considerata una temperatura in °C ma necessita di una conversione in un valore "reale" (es. 27 °C).

I sensori digitali, oltre alla conversione da analogico a digitale, eseguono questa operazione di corrispondenza dei valori reali per conto nostro e ci restituiscono direttamente il valore numerico della temperatura.

Ti consigliamo anche