In questo articolo, andremo a descrivere le interfacce di comunicazione presenti sulla scheda Arduino.
Nel precedente articolo ci siamo soffermati sui led di notifica integrati sull’Arduino e il pulsante di RESET.
Un ulteriore aspetto da tenere in considerazione quando si impara o comunque utilizza la scheda Arduino sono le interfacce di comunicazione. Infatti, è grazie ad esse se possiamo trasmettere o ricevere dati da un sensore al microcontrollore, o dal micro ad un attuatore, o caricare un nuovo programma in memoria, rendendo possibili i nostri progetti.
Come già discusso in questo articolo, un primo mezzo di comunicazione utile per la gestione di vari moduli e dispositivi sono i pin analogici e i pin digitali. Grazie ad essi è possibile pilotare display, motori, luci e molto altro in modo estremamente dinamico. Tramite le stesse interfacce, è possibile ricevere dati da diversi sensori come quello di luminosità, presenza o calore.
La possibilità di ricevere informazioni e inoltrarne all’esterno è un concetto fondamentale nella realizzazione di qualsiasi sistema o progetto.
Sulla scheda però esistono ulteriori pin dediti alla comunicazione, il pin digitale 0 e il pin digitale 1, rispettivamente il pin RX e il pin TX per la comunicazione seriale. Come già detto, nell’Arduino UNO questi pin sono collegati direttamente alla seriale dell’USB, consentendo di utilizzare solo uno dei due alla volta. Se si stanno quindi utilizzando i pin, non è possibile utilizzare l’USB e viceversa.
Diverso il caso per il modello MEGA, che ha disponibili ben 4 porte seriali, consentendoci di avere più comunicazioni multiple.
Altri due pin, fino ad ora non discussi, sono dedicati alla comunicazione. Essi sono predisposti per il protocollo di comunicazione I2C e sono il pin SDA (Serial DAta)e il pin SCL (Serial CLock). Senza entrare troppo nei dettagli tecnici del protocollo, esso permette di far comunicare diversi dispositivi che utilizzano tale tecnologia, ad esempio due Arduino o un Arduino e diversi sensori/attuatori, tramite un’unica linea di comunicazione formata, appunto, dai due soli collegamenti SDA e SCL. Un esempio è rappresentato nella figura sottostante. Tramite questo protocollo sono raggiungibili fino a 128 dispositivi, davvero tanti rispetto a quanti ne utilizzeremo normalmente.
Sul collegamento SDA avviene la trasmissione dei dati veri e propri, mentre il collegamento SCL è utilizzato per mantenere sincronizzati i diversi dispositivi tramite un segnale di clock.
Questi due pin sono situati ad uno degli estremi dei pin header digitali oppure sui pin A4 e A5, sull’Arduino UNO.
Altro protocollo di comunicazione molto usato è l’SPI (Serial Peripheral Interface), che si instaura tra un master e uno o più slave (letteralmente padrone e schiavo). Il master controlla il bus, emette il segnale di clock e decide quando iniziare e terminare la comunicazione. Per fare ciò si avvale di diversi collegamenti, di seguito riportati:
- SCLK – SCK: Serial Clock (emesso dal master);
- SDI – MISO: Serial Data Input, Master Input Slave Output (ingresso per il master ed uscita per lo slave);
- SDO – MOSI : Serial Data Output, Master Output Slave Input (uscita dal master);
- CS – SS : Chip Select, Slave Select, emesso dal master per scegliere con quale dispositivo slave vuole comunicare (dalla figura, il segnale SS negato, si comprende che per comunicare con il dispositivo slave deve venire messo a livello logico basso).
Come è possibile notare, questo protocollo necessita di molte più linee per poter funzionare, rispetto ai protocolli visto fino ad ora. Generalmente è usato in tutti quei sistemi di dispositivi a bassa capacità computazionale. Un esempio implementativo è visibile nella seguente figura.
Sull’Arduino UNO, questi pin sono:
- SS = Pin 10;
- MOSI = Pin 11;
- MISO = Pin 12;
- SCK = Pin 13.
Per questo articolo è tutto.
Nei prossimi articoli andremo a vedere l’editor di sviluppo IDE di Arduino in tutte le sue parti, configurandolo per le nostre esigenze.
Ottima spiegazione: Chiara e concisa. Complimenti