Un sensore è un dispositivo in grado di rilevare una grandezza interagendo con essa: l’energia ricevuta dal sensore modifica lo stato della grandezza variando una delle sue proprietà (lunghezza, resistenza elettrica e così via). Il termine sensore è spesso utilizzato in luogo di trasduttore, il quale è invece più precisamente un dispositivo che converte una grandezza in un’altra di natura diversa. Poiché all’interazione con una grandezza è associata in genere anche l’operazione di conversione, si può definire sensore un dispositivo che acquisisce in ingresso una certa grandezza e ne fornisce in uscita una di natura differente, ma legata alla prima da una legge nota.    (Enciclopedia Treccani) [3]
Intro
Arduino è una piattaforma elettronica open-source modulabile nell'hardware e programmabile attraverso un semplice software. Le schede Arduino (Arduino boards) sono capaci di leggere valori in input provenienti da diverse sorgenti (sensori di ogni tipo, bottoni, potenziometri, messaggi di Twitter, etc.) per trasformarli in valori di output che possono ad esempio attivare un motore, accendere e spegnere uno o più Led, pubblicare qualcosa online oppure essere inviati ad altri software come Max, SuperCollider o Processing per generare o manipolare suoni o immagini. Con una scheda Arduino collegata ad altre apparecchiature elettriche ed eventualmente a un computer possiamo realizzare installazioni interattive, nuovi strumenti musicali elettronici controllati da sensori, progetti di interaction design, progetti di domotica, etc.
Per compiere questo tipo di operazioni abbiamo bisogno di:
- Sensori che ascoltano il mondo fisico e convertono diversi tipi di energia (temperatura, luce, movimento, etc.) in segnali elettrici.
- Attuatori che agiscono nel mondo fisico ed eseguono il percorso inverso: convertono segnali elettrici in altre forme di enegia come luce, suono, movimento, calore, etc.
- Microcontrollori che ascoltano i sensori e parlano con gli attuatori decidendo cosa fare in base al modo in cui sono stati da noi programmati.
Modelli
In commercio ci sono diversi modelli di Arduino, ognuno ha caratteristiche proprie ed è ottimizzato per esigenze specifiche. A questo link possimo trovarne un elenco esaustivo comprensivo di tutte le descrizioni tecniche. Vediamo le principali tipologie:
- UNO. Quello più utilizzato e anche noi lo useremo negli esempi.
- DUE. Più potente del precedente e possiamo utilizzarlo per progetti complessi.
- ETHERNET. Dedicato all'internet delle cose e permette di connettere una scheda Arduino ad internet attraverso una connessione LAN.
- LILIPAD. Un piccolo Arduino circolare che può essere cucito su stoffe e vestiti per progetti di interaction desing.
- MICRO, NANO, MINI. Adatti a progetti di piccole dimensioni.
- GSM SHIELD V2. Una scheda che può essere inserita sopra un Arduino per collegarlo a internet senza cavi o Wifi.
- WIFI SHIELD V2. Una scheda che può essere inserita sopra un Arduino per collegarlo a internet tramite un router Wifi.
Componenti e schemi elettrici
Abbiamo visto come il "cuore" di tutti i progetti sia la scheda di Arduino ma per prototipare i nostri progetti avremo bisogno anche di altri componenti come pile, sensori, cavi e cavetti, led, motori, etc. che potremo facilmente collegare alla scheda di Arduino utilizzando un altro componente: la breadboard. Cominciamo osservando le componenti principali di Arduino UNO:
Scheda Arduino UNO
- ATmega: è il cuore della scheda ovvero il microcontrollore.
- Pulsante di Reset: fa ripartire il microcontrollore.
- LED Power: sulla scheda sono montati tre LED che assumono funzione di monitors visivi, ovvero che ci permettono di verificare visivamente lo stato di alcuni processi. Il LED power ad esempio ci dice se la scheda è alimentata da corrente (acceso) o meno (spento).
- LED 13: è un led che serve a verificare alcune cose riguardanti la comunicazione seriale tra la scheda e un computer, molto utile per il debugging.
- LED TX e RX: sono due led che lampeggiano quando carichiamo un programma (sketch) dal computer al microcontrollore oppure quando c'è una trasmissione di dati attraverso le porta seriale dalla scheda al computer o viceversa. Anch'essi sono molto utili per il debugging.
- Porta USB: Nel momento in cui inseriamo un cavo USB connesso ad un computer assume tre funzioni:
- alimentare la scheda.
- caricare i programmi (sketches) dal computer alla scheda.
- far comunicare la scheda con altri softwares come Max, SuperCollider, Processing, etc. presenti sul computer.
- Connettore di alimentazione: per alimentare la scheda quando non è connessa attraverso la porta USB (Voltaggi compresi tra 7 e 12V).
- Pins di alimentazione:
- 3.3V e 5V: servono per fornire un'alimentazione al circuito (+) che costruiamo (non alla scheda ma dalla scheda ai diversi componenti del circuito). Generalmente sono collegati a una breadboard.
- GND (ground): servono per collegare la massa del circuito (-). In genere l'utilizzo di uno o l'altro non cambia nulla.
- Vin: se alimentiamo la scheda con un alimentazione esterna senza utilizzare il connettore di alimentazione dobbiamo collegare il polo positivo (+) a questo piedino e quello negativo (-) a GND.
- Pins analogici: colleghiamo a questi pins i cavi che portano le variazioni di tensione in uscita dai diversi sensori analogici, ovvero i valori delle grandezze fisiche che stanno misurando trasdotti in energia elettrica. A differenza dei pins digitali possono solo ricevere tensione in ingresso. Il range di valori dipende dal tipo di sensore utilizzato.
- Pins digitali: come i Pins analogici ma con due differenze:
- possiamo sia leggere che scrivere tensione sul pin, ovvero sia recuperare valori da un sensore che inviare valori a un attuatore (led, servomotore, etc.).
- la tensione ha solo due stati: HIGH (1) o LOW (0).
Alcuni di questi Pins sono ontrassegnati con - (in alcuni vecchi modelli con PWM). Questi sono Pins sui quali è possibile realizzare la PWM (Pulse Width Modulation) che è una tecnica utile a simulare le variazioni di tensione che avvengono sui Pins analogici.
Nelle descrizioni dei componenti appena esposte ci sono moltissimi argomenti che affronteremo nel dettaglio passo dopo passo e dunque anche alcuni termini che probabilmente al momento possono risultare oscuri si chiariranno nel corso delle realizzazioni pratiche.
Alimentazione
Nel paragrafo precedente abbiamo visto che possiamo alimentare Arduino in diversi modi:
- Cavo USB.
Questa è la più tipica delle alimentazioni: Arduino prende una tensione di 5V dalla porta USB del computer e in genere la corrente (DC) che questa può fornire è di 500 mA. Se non è necessaria una comunicazione seriale tra Arduino e il computer possiamo connettere alla porta USB di Arduino anche un power bank, ovvero una batteria esterna con connettore USB. Se oltre al cavo USB connettiamo Arduino ad un'alimentazione esterna attraverso uno dei modi seguenti, l'alimentazione USB sarà bypassata e verrà utilizzata quella esterna.
- Connettore di alimentazione.
Se non abbiamo bisogno di trasmettere dati ad un computer attraverso la connessione seriale possiamo alimentare Arduino collegando il connettore di alimentazione a una pila o a una presa a muro. In entrambi i casi dobbiamo tener presente che il voltaggio in ingresso deve essere compreso tra 7 e 12V. Se ad esempio utilizziamo una pila a 9V rientriamo nel range, ma se lo colleghiamo a una presa a muro la tensione in uscita è di 220V e in questo caso dobbiamo utilizzare un trasformatore che porti la tensione all'interno del range evitando in questo modo spiacevoli incendi. In commercio ci sono numerosi alimentatori/trasformatori come quello illustrato nella figura qui sopra che in genere forniscono in uscita una tensione di 9V e una corrente di 1A. Siccome il cuore di Arduino (il microprocessore ATmega328) funziona con una tensione di 5V, la tensione in ingresso dal connettore passa per un diodo di protezione (nel caso si invertissero le polarità) e poi viene portata a 5V dal regolatore di tensione NCP1117. Questo regolatore ha una corrente massima in uscita di 800mA ed è preferibile stare più vicini possibile ai 7V perchè il resto della tensione non serve a nulla ma anzi può far aumentare la temperatura del regolatore.
- Collegamento diretto sui Pin Vin e GND.
Questo modo molto simile al precedente in quanto anche in questo caso la corrente passa per il regolatore di tensione, bisogna solo prestare attenzione alla polarità corretta dei collegamenti in quanto il pin Vin non è protetto con il diodo e per questo motivo possiamo collegare anche una tensione più bassa compresa tra 6 e 12V.
- Collegamento diretto sui Pin 5V e GND. (fortemente sconsigliato)
In questo caso dobbiamo collegare una tensione stabilizzata di 5V ad Arduino. La tensione deve assolutamente stare tra i 4.5 e i 5.5V in quanto questo pin non passa per il regolatore di tensione e la polarità deve essere corretta in quanto non passa neanche dal diodo di protezione. Se dovessimo incorrere in un errore legato a quanto appena detto bruciamo la scheda. Possiamo ad esempio utilizzare 4 batterie stilo da 1.2V ricaricabili in quanto mettendo le batterie in serie andiamo a sommare le tensioni: 1.2+1.2+1.2+1.2 = 4.8V che è la tensione perfetta per essere utilizzata direttamente sul pin 5V. Facciamo attenzione che le pile stilo non ricaricabili in commercio hanno una tensione nominale di 1.5V (come quelle nell'illustrazione) e usandone 4 arriviamo teoricamente a 6V bruciando la scheda.
Infine nell'immagine sottostante uno schema che illustra tutte le possibili alimentazioni con i relativi voltaggi.
Breadboard
Per prototipare un circuito che comprende diversi componenti come uno o più sensori, uno o più attuatori interconnessi con Arduino possiamo utilizzare una breadboard o basetta sperimentale dove è possibile inserire dei piccoli fili elettrici rigidi che connettono tra loro i diversi componenti del circuito.
Quando avremo finito e testato il nostro circuito dovremo però costruirne uno vero saldando i collegamenti tra i fili elettrici e i diversi componenti con le basette millefiori o con una proto shield dedicata di Arduino.
Osserviamo ora le caratteristiche di una breadboard.
Come possiamo osservare sopra e sotto ci sono due file di fori che si sviluppano orizzontalmente contrassegnate con i segni + e - (una di queste è marcata in verde nell'immagine). In queste file tutti i fori sono collegati insieme orizzontalmente e se ad esempio collego uno solo foro (+) con il pin 5V di Arduino in tutti gli altri fori della fila avrò la stessa tensione. Lo stesso vale per la seconda linea orizzontale (-) che se collegata al pin GND chiude il circuito. Questo serve ad esempio per poter alimentare contemporaneamente più sensori e/o attuatori. All'interno della breadboard invece i collegamenti avvengono nello stesso modo ma verticalmente, ovvero tra 5 fori (quelli marcati in azzurro nell'immagine). Nel nezzo c'è una linea che divide in due parti isolate la breadboard e se vogliamo passare corrente tra un foro di una parte a quello dell'altra dovremo per forza utilizzare un ponte o un filo elettrico che li connetta.
Schemi elettrici
Fino ad ora tutti i circuiti sono stati illustrati da immagini che riportano visivamente i componenti così come sono nella realtà. Possiamo però descrivere qualsiasi circuito attraverso schemi elettrici che astraggono la realtà e che utilizzano simboli precisi che descrivono le varie parti e i collegamenti di un circuito. Nello schema seguente è illustrato un circuito di alimentazione di Arduino con una pila da 9V che è rappresentata con il simbolo dell'alimentazione già incontrato all'inizio del capitolo. Altri simboli li incontreremo passo dopo passo nella realizzazione degli esempi pratici.
Esistono inoltre diverse risorse on line per la simulazione di progetti Arduino, una di questi è Tinkercad.