In questo e nei prossimi articoli si andrà a introdurre e trattare la scheda di sviluppo più diffusa attualmente tra hobbisti e maker, Arduino.
Obiettivo di questi articoli sarà dare un’infarinatura generale sul mondo Arduino: cos’è questa scheda, cosa si è in grado di fare e perchè si utilizza. Ciò si propone come input al lettore per iniziare a sviluppare autonomamente i progetti, fornendo quindi quelle che sono le nozioni base in ambito elettrotecnico e informatico.
Questa serie di articoli sarà dunque rivolta a chi vuole avvicinarsi a tale mondo, senza alcuna conoscenza o con pochissima esperienza. Per qualsiasi chiarimento o domanda, è possibile contattarci attraverso i nostri svariati canali.
Ma veniamo a noi…
Cos’è Arduino?
Quando ci si riferisce ad Arduino a volte si intende indicare erroneamente il microcontrollore. Arduino in realtà è l’intera scheda di sviluppo, che permette un’utilizzo del microcontrollore più semplice e immediato. Quindi l’Arduino è formato da un microcontrollore, e altre componenti che andremo pian piano a sviscerare.
Arduino è una single-board open-source ideata nel 2003 in Italia. Essa è dotata di microcontrollore ed è pensata e utilizzata per la prototipazione rapida in ambito hobbistico, didattico e professionale.
Qual’è la differenza tra microprocessore e microcontrollore?
Nonostante abbiano alcune cose in comune, come il tipo di dato con cui lavorano, ovvero il dato digitale (bit), si distinguono per alcune particolari caratteristiche.
Il microprocessore fornisce la sola potenza di calcolo ed elaborazione mentre, richiedendo componenti esterni come memorie, oscillatore di clock, periferiche di ingresso e uscita per poter avere un dispositivo utilizzabile.
Il microcontrollore è invece un sistema completo all in one, riunendo in uno stesso chip il processore, la memoria, il clock e le periferiche di ingresso e uscita.
Le capacità di calcolo di un microcontrollore sono estremamente ridotte, soprattutto confrontate con quelle di un microprocessore. Il microcontrollore però richiede molta meno potenza per lavorare. Soffermandosi su queste caratteristiche principali (ce ne sono di molte altre), è facile capire i casi d’uso dei due dispositivi. Il microcontrollore può essere usato per la gestione di sensori e attuatori e semplici elaborazioni di dati, con fonti di energia limitate a batterie. Difficile da pensare che con un microprocessore, potente quanto sia, si possa realizzare ciò. Come sarebbe difficile pensare di effettuare pesanti calcoli computazionali su un microcontrollore.
Esistono diversi modelli di Arduino, con più o meno risorse e periferiche, in funzione dell’utilizzo che se ne voglia fare. Modelli estremamente piccoli come il mini pro, indossabili come il Lilypad oppure con molte periferiche come il Mega.
Da cosa è formato Arduino?
Ovviamente, dal microcontrollore!
La scheda Arduino ha la funzione principale di permettere un accesso sicuro e semplice tra il microcontrollore e l’esterno. Le periferiche che consentono ciò sono i pin header GPIO (General Purpose Input Output), presenti su due delle estremità della scheda.
Essi si differenziano per tipologia e funzione, e sono tutti indicati in maniera chiara sulla scheda.
La serie di pin GPIO più numerosa sull’Arduino UNO è rappresentata dai pin digitali, o Digital I/O Pins. Il segnale con cui riescono a lavorare è di tipo digitale. Tale segnale potrà assumere solo due valori (binari) o meglio stati logici: alto (high) o basso (low).
Grazie ad essi possiamo pensare di realizzare semplici progetti basati su questa logica binaria, acceso o spento.
Lo stato low corrisponde a 0 Volt, ovvero al riferimento GND. Lo stato high corrisponde a 5 Volt, valore di riferimento massimo a cui lavora la logica di Arduino UNO. Bisogna dunque tenere a mente questa informazione, quando andremo a collegare i vari dispositivi al nostro Arduino, come ampiamente discusso anche in questo vecchio articolo.
Il numero di pin digitali disponibili varia a seconda del modello di Arduino, ad esempio:
- Arduino UNO: 14 pin;
- Arduino MEGA: 54 pin;
- Arduino LILYPAD: 9 PIN.
Generalmente, i primi due pin digitali, 0 e 1, non vengono contati e utilizzati normalmente. Essi sono utilizzati per la comunicazione seriale con il pc e sono internamente connessi alla seriale dell’USB. Infatti, oltre alla cifra 0 e 1, è segnato anche la loro funzione, Serial INput (RX) e Serial OUTput (TX).
In alcune circostanze si rende necessario lavorare a valori intermedi tra high e low. Alcuni pin digitali sono predisposti a questa funzionalità e sono contrassegnati da una tilde (~). La tecnica grazie alla quale è possibile ottenere valori intermedi tra 0 Volt e 5 Volt si chiama PWM (Pulse Width Modulation) e sarà oggetto di un articolo a se stante.
Ad esempio, sull’Arduino UNO il PWM si trova sui pin 3, 5, 6, 9, 10, e 11. Sull’Arduino MEGA, funziona sui pin dal 2 al 13 e dal 44 al 46.
In questa sede, basti sapere che è possibile ottenere valori intermedi in una scala da 0 (0 Volt) a 255 (5 Volt) semplicemente scrivendo una riga di codice. Forte no? Se ad esempio volessimo una tensione di 3,3 Volt, basterà indicare il valore corrispondente pari a circa 168.
Il valore di questa scala è dato dal valore predefinito dei pin PWM, ovvero 8 bit (28 = 256).
Sull’Arduino sono presenti altri pin header, questa volta di tipo analogico. La loro caratteristica, quindi ciò che li contraddistingue dai pin digitali, è quella di poter lavorare con segnali di tipo analogico, cioè tutti quei segnali capaci di assumere valori non discreti. La seguente figura può chiarire questo concetto.
Dalle caratteristiche elettriche di Arduino UNO, sappiamo che esso lavora in un range di tensioni compreso tra 0 Volt e 5 Volt: i pin analogici avranno la possibilità di lavorare esattamente in questo range assumendone, rispetto ai pin digitali, anche i valori compresi.
Ma come fa Arduino a lavorare con segnali analogici?
Come detto precedentemente, i microcontrollori lavorano con segnali digitali. La creazione di segnali analogici come output o la lettura come input non può avvenire in maniera diretta, in quanto il microcontrollore non è in grado di interpretare quelle informazioni. Esattamente come due persone che parlano lingue diverse tentano di comunicare tra di loro, ma non si capiscono. Come fare? Si utilizza un traduttore!
La funzione di “traduzione” del segnale digitale in analogico e viceversa viene assegnata al DAC (Digital (to) Analog Converter) e al ADC (Analog (to) Digital Converter).
Senza entrare nei tecnicismi, oggetto di un futuro articolo, basti sapere per ora che grazie a questa funzione di traduzione, il microcontrollore può gestire tranquillamente segnali analogici. Ogni convertitore DAC o ADC ha come caratteristica principale la risoluzione, ovvero il numero di bit utilizzati per campionare il segnale analogico. Maggiore è questo valore, più risoluto, preciso e fedele risulta il segnale analogico tradotto, come visibile nella figura seguente.
La risoluzione della maggior parte dei convertitori analogici degli Arduino è pari a 10 bit, ottenendo così 210 = 1024 possibili valori, tra 0 e 5 Volt.
Per questo articolo introduttivo è tutto.
Nei prossimi articoli andremo ad analizzare gli altri elementi che compongono la scheda e come utilizzarli. Andremo poi a vedere l’editor di sviluppo IDE di Arduino in tutte le sue parti, configurandolo per le nostre esigenze.
Per dubbi, errori o semplicemente ringraziamenti, puoi contattarci attraverso i nostri contatti social.
ciao Andrea, complimenti ho iniziato a leggere i primi articoli sull’ambiente Arduino e devo dire che sono spiegati veramente bene.
Ciao, grazie mille per i complimenti! Continua a seguirci, continueremo a pubblicare altri articoli a riguardo!