Un po' di storia2
Arduino è nato dall’idea di un gruppo di professori, assistenti e studenti dell'IDI (Interaction Design Institute) di Ivrea che, chiacchierando nel caffè Arduino3 di Ivrea, hanno ipotizzato una piattaforma hardware e software che avvicinasse gli studenti e le persone in generale alla programmazione ed in particolare alla prototipizzazione.
L’idea si è presto concretizzata e la scheda, geniale, economica e soprattutto open source, ha avuto una così grande diffusione da far nascere, in pochissimo tempo, una così enorme quantità di componenti compatibili, da rendere migliore, semplice ed economico il controllo e la gestione di giocattoli, dispositivi ed impianti sia industriali che di domotica.
Arduino è dunque nato come una piattaforma hardware che, sulla base di un programma, è in grado di interpretare i segnali provenienti da sensori (quali termometri, fotocellule, sensori di movimento, sensori di infrarossi, rilevatori di ultrasuoni), e decidere se e come comandare attuatori (quali ad esempio LED, generatori di raggi infrarossi, display a cristalli liquidi, illuminatori laser, cicalini attivi e passivi, motorini elettrici a corrente continua, servomotori e relè).
Arduino è dunque un'interfaccia tra il programma scritto dall’utilizzatore (software) ed i componenti collegati alla scheda (hardware).
Sono innumerevoli i software già pronti e disponibili nella rete!
Alcune peculiarita'
La famiglia degli Arduino è numerosa; le caratteristiche principali di Arduino UNO non si differenziano molto da quelle degli altri.
Alcune delle caratteristiche di Arduino UNO:
- è dotato di una piccola, ma sufficiente, memoria flash di 32 kB;
la memoria flash, costituita da semiconduttori, è non volatile e riscrivibile, viene usata come memoria per lettura-scrittura; cioè una memoria che ha le stesse caratteristiche di una RAM, ma un programma, una volta caricato, resta memorizzato e disponibile sino a quando non se ne carica un altro; proprio come una memoria di massa!
- è priva di sistema operativo,
- può gestire un solo programma per volta.
Elementi principali
Nella foto è rappresentata una scheda Arduino-compatibile; in essa sono immediatamente individuabili:
- un pulsante di reset color rosso, utile per riavviare il programma memorizzato;
- un microcontrollore (ATmega328)4;
- numerosi pin,
detti anche connettori o porte; sono disposti in due file parallele: una accanto al pulsante di reset, l'altra sul lato opposto della scheda;
- una porta USB mod B,
con la quale si può collegare l'Arduino ad un computer; in tal caso il dispositivo può essere alimentato tramite il computer
- una presa Jack di alimentazione esterna,
utile in assenza del collegamento con un computer mediante la porta USB
Alimentazione5
È possibile alimentare Arduino in quattro diversi modi:
- Porta USB
A questa porta devono essere forniti 5 V o da un computer o da un alimentatore dotato di porta USB.
La corrente,
• se ad alimentare è un computer, è di 250 o 500 mA a seconda della porta USB;
• se si è in presenza di un alimentatore esterno, viene limitata a 500 mA da un fusibile autoripristinante di protezione (PTC).
La connessione al PC non solo fornisce energia alla scheda, ma è indispensabile per
• ricevere il programma,
• inviare segnali al monitor di sistema, che vedremo essere residente sul PC,
• ricevere informazioni dalla tastiera del PC.
- Presa JACK
A questa presa si può collegare una alimentazione esterna, dai 6 ai 20 V, che poi viene portata a 5 V dal regolatore di tensione (NCP1117); si consigliano però valori fra i 7 ed i 12 V. Valori
• minori di 7 V potrebbero non garantire una corretta stabilizzazione per la caduta di tensione dovuta al collegamento, in serie, di un diodo di protezione della scheda da una errata polarità nell'alimentazione
• maggiore di 12 V: una differenza significativa fra ingresso ed uscita potrebbe provocare un surriscaldamento del regolatore.
Per lo più tale presa viene utilizzata per una alimentazione esterna da 9 V quando Arduino deve essere indipendente (stand-alone), cioè deve vivere di vita propria sganciato dal PC. In caso di basso consumo del dispositivo ed in assenza di un un alimentatore esterno, può essere sufficiente anche una comune batteria da 9 V.
- Pin Vin
Per alimentazione esterna; simile al metodo con il JACK, infatti anche da qui la tensione passa dal regolatore di tensione prima di arrivare ad Arduino, ma NON PROTETTA da inversione di polarità. Non bisogna alimentare contemporaneamente tramite la presa JACK: si potrebbero creare danni poiché tale ingresso è posto a valle della presa JACK.
In realtà tale porta ha una duplice modalità di uso, infatti oltre ad una funzione di input ne ha anche una di output per prelevare la tensione applicata alla presa JACK, depotenziata solo dalla caduta di tensione ai capi del diodo di protezione; utile per alimentare dispositivi che richiedono una tensione superiore ai 5 V.
- Porta 5 V
Si può fornire direttamente ad Arduino una tensione stabilizzata di 5 V; alimentazione NON PROTETTA, in quanto tale porta è a valle sia del diodo che del fusibile auto-ripristinante (PTC) di protezione, per cui questi non hanno nessuna influenza su di essa. Per non danneggiare la scheda, la tensione deve rigorosamente avere valori tra i 4,5 e i 5,5 V.
Se si dispone di pile ricaricabili AA, queste hanno una tensione nominale di 1,2 V, per cui se ne possono usare 4 in serie (in un apposito box) per una tensione totale di 4,8 V, perfetta per essere utilizzata direttamente sul pin 5 V.
Diverso è il caso in cui le pile non siano ricaricabili poiché esse sono da 1,5 V, per cui se ne usassimo 4 avremmo un totale di 6 V: uno 0,5 V di troppo! Un diodo, posto in serie al cavo positivo del box batterie, fornirebbe una caduta di tensione portando la tensione a circa 5,4 V, accettabile per alimentare Arduino dalla porta 5 V e nello stesso tempo ci si ritrova una protezione contro una accidentale inversione di polarità.
Le porte
Nella foto della scheda sono facilmente individuabili, a destra, alcuni pin di nostro interesse; dall’alto in basso troviamo
- la porta AREF (Analog Reference Pin);
- Ground GND (Digital Ground):
collegamento di terra cui collegare il polo negativo dei sensori o altri componenti;
- le porte digitali I/O: porte che possono assumere sia la funzione di ingresso (INPUT) che di uscita (OUTPUT) di segnali digitali: sono quelle numerate da 2 a 13 e sono gestite singolarmente dal microcontrollore.
In un programma è necessario chiarire per ogni singola porta se, una volta attivata, l’utilizzo sarà di input o di output.
Alla porta 13 è collegato un led (LED_BUILTIN), contrassegnato con la lettera L, che si illumina quando sulla porta 13 viene inviato un segnale digitale HIGH e si spegne quando arriva un segnale LOW.
A seconda che una porta sia stata definita di input o di output, Arduino “scriverà” o “leggerà” il valore 1 (HIGH) o 0 (LOW). Il valore 1 implica che alla porta venga applicata una tensione di 5 V, mentre il valore 0 implica che alla porta non vi sia tensione.
Le porte 3, 5, 6, 9, 10 e 11, contrassegnate da una tilde, trovano utilizzo anche in modalità PWM (Pulse Width Modulation) simulando uscite analogiche: di tale modalità parleremo al suo primo utilizzo.
- RX: porta di input seriale, utile per ricevere dati da una apparecchiatura esterna; può trovare applicazione anche come porta digitale, contrassegnata con 0; si sconsiglia tale uso poiché può essere soggetta ad interferenze legate alla sua duplice funzione.
- TX: porta di output seriale, utile per trasmettere dati ad una apparecchiatura esterna; può trovare applicazione anche come porta digitale, contrassegnata con 1; anche in questo caso, come per la porta RX, se ne sconsiglia tale uso.
Nella scheda vi sono anche due led che lampeggiano quando circolano informazioni attraverso la porta USB o nella comunicazione seriale attraverso le porte TX ed RX.
Sul lato opposto a quello in cui vi sono le porte digitali, richiamano la nostra attenzione due differenti gruppi di porte: in alto notiamo le porte contrassegnate come POWER e sul cui utilizzo non vi è niente da aggiungere a quel che si è già detto o è facilmente intuibile, mentre subito sotto troviamo 6 porte, numerate da 0 a 5 e precedute dalla lettera A, contrassegnate come ANALOG IN.
Quelle analogiche sono porte di input, alle quali possono essere collegati i sensori di tipo analogico, i quali inviano segnali che non possono essere rappresentati da un semplice 0 o 1; a seconda della tensione rilevata sul sensore tali porte generano un valore compreso fra 0 e 1023 (cioè 210-1), corrispondenti rispettivamente a 0 e 5 V: una risoluzione di 4,9 mV.
Di default queste porte sono predisposte come porte di ingresso, ma possono essere utilizzate anche come porte digitali di output ed in questo caso sono indirizzabili con i numeri da 14 (corrispondente alla A0) a 19 (corrispondente alla A5).
___________________________________________________________
3 - Arduino d'Ivrea (955 – 1015), è stato marchese d'Ivrea dal 990 al 999 e poi re d'Italia dal 1002 al 1014.
4 - È un minicomputer con un microprocessore da 16 MHz in cui, tra l’altro, vi è il bootloader (il software di inizializzazione del microprocessore) ed il programma di gestione della connessione USB.
5 - Per approfondimenti si consiglia la lettura dell'articolo di Michele Menniti L'alimentazione di Arduino, questa sconosciuta... https://docplayer.it/23410028-L-alimentazione-di-arduino-questa-sconosciuta.html
Si consiglia anche il video di Paolo Aliverti 4 modi per alimentare Arduino https://www.youtube.com/watch?v=SFiX_YtN9zQ