Protocollo di comunicazione Arduino

Protocollo Di Comunicazione Arduino



I protocolli di comunicazione sono l'insieme di regole che consentono ai dispositivi di comunicare e scambiare dati. Questi protocolli sono molto significativi nella comunicazione Arduino poiché Arduino invia e riceve costantemente dati. L'uso di questi protocolli aiuta Arduino a coprire il rilevamento degli errori e i possibili metodi di ripristino degli errori. Questi protocolli uniscono dispositivi analogici e digitali e consentono di progettare più progetti.

Protocolli di comunicazione Arduino

Utilizzando i protocolli di comunicazione, possiamo inviare e ricevere i dati di qualsiasi sensore in Arduino.

Alcuni sensori semplici come gli infrarossi (IR) possono comunicare direttamente con Arduino, ma alcuni sensori complessi come il modulo Wi-Fi, il modulo della scheda SD e il giroscopio non possono comunicare direttamente con Arduino senza alcun protocollo di comunicazione. Ecco perché questi protocolli sono parte integrante della comunicazione Arduino.







Arduino ha più periferiche collegate; tra di loro ci sono tre periferiche di comunicazione utilizzate nelle schede Arduino.



Protocolli di comunicazione Arduino

La comunicazione tra diversi dispositivi elettronici come Arduino è standardizzata tra questi tre protocolli; consente ai progettisti di comunicare facilmente tra dispositivi diversi senza problemi di compatibilità. Il funzionamento di questi tre protocolli è lo stesso in quanto servono allo stesso scopo di comunicazione, ma differiscono nell'implementazione all'interno di un circuito. Un'ulteriore descrizione di questi protocolli è discussa di seguito.







UART

UART è noto come il Trasmettitore ricevitore asincrono universale. UART è un protocollo di comunicazione seriale che significa che i bit di dati vengono trasferiti in forma sequenziale uno dopo l'altro. Per impostare la comunicazione UART abbiamo bisogno di due linee. Uno è il pin Tx (D1) della scheda Arduino e il secondo è il pin Rx(D0) della scheda Arduino. Il pin Tx serve per trasmettere i dati ai dispositivi e il pin Rx viene utilizzato per ricevere i dati. Diverse schede Arduino hanno più pin UART.

Pin digitale Arduino Pin UART
D1 Tx
D0 Rx

Per stabilire la comunicazione seriale utilizzando la porta UART, è necessario collegare due dispositivi nella configurazione mostrata di seguito:



Su Arduino Uno, una porta seriale è dedicata alla comunicazione che viene comunemente chiamata porta USB. Come suggerisce il nome Universal Serial Bus, quindi è una porta seriale. Utilizzando la porta USB Arduino può stabilire la comunicazione con i computer. La porta USB è collegata ai pin integrati Tx e Rx di Arduino. Usando questi pin, possiamo collegare qualsiasi hardware esterno diverso dal computer tramite USB. Arduino IDE fornisce la libreria SoftwareSerial (SoftwareSerial.h) che consente agli utenti di utilizzare i pin GPIO come pin Serial Tx e Rx.

  • UART è semplice da usare con Arduino
  • UART non ha bisogno di alcun segnale di clock
  • La velocità in baud deve essere impostata entro il limite del 10% dei dispositivi di comunicazione per evitare la perdita di dati
  • Più dispositivi con Arduino in configurazione Master Slave non sono possibili con UART
  • UART è half duplex, il che significa che i dispositivi non possono trasmettere e ricevere dati contemporaneamente
  • Solo due dispositivi alla volta possono comunicare con il protocollo UART

Interfaccia periferica seriale (SPI)

SPI è un acronimo di interfaccia periferica seriale appositamente progettata per consentire ai microcontrollori di comunicare con loro. SPI opera in modalità full-duplex, il che significa che SPI può inviare e ricevere dati contemporaneamente. Se confrontata con UART e I2C, è la periferica di comunicazione più veloce nelle schede Arduino. È comunemente usato dove è richiesta un'elevata velocità di trasmissione dati, come nei display LCD e nelle applicazioni per schede Micro SD.

I pin digitali SPI su Arduino sono predefiniti. Per Arduino Uno la configurazione dei pin SPI è la seguente:

Linea SPI GPIO Pin di intestazione ICSP
SCK 13 3
MISO 12 1
FUMO undici 4
SS 10
  • MOSI sta per Master Out Slave In , MOSI è la linea di trasmissione dati da Master a Slave.
  • SCK è un Linea dell'orologio che definisce la velocità di trasmissione e le caratteristiche di inizio e fine.
  • SS sta per Seleziona schiavo ; La linea SS consente al Master di selezionare un particolare dispositivo Slave quando opera in configurazione di più Slave.
  • MISO sta per Master in Slave Out ; MISO è la linea di trasmissione Slave to Master per i dati.

Uno dei punti salienti del protocollo SPI è la configurazione Master-Slave. Utilizzando SPI un dispositivo può essere definito Master per controllare più dispositivi Slave. Il Master ha il pieno controllo dei dispositivi Slave attraverso il protocollo SPI.

SPI è un protocollo sincrono, il che significa che la comunicazione è collegata a un segnale di clock comune tra Master e Slave. SPI può controllare più dispositivi come Slave su una singola linea di trasmissione e ricezione. Tutti gli Slave sono collegati al Master tramite il comune MISO ricevere la linea insieme a FUMO una linea di trasmissione comune. SCK è anche la linea di clock comune tra i dispositivi Master e Slave. L'unica differenza nei dispositivi slave è che ogni dispositivo slave è controllato separatamente SS seleziona la riga. Ciò significa che ogni Slave ha bisogno di un pin GPIO aggiuntivo dalla scheda Arduino che fungerà da linea di selezione per quel particolare dispositivo Slave.

Alcuni dei principali punti salienti del protocollo SPI sono elencati di seguito:

  • SPI è il protocollo più veloce di I2C e UART
  • Non sono richiesti bit di avvio e di arresto come in UART, il che significa che è possibile una trasmissione continua di dati
  • Slave può essere facilmente indirizzato grazie alla semplice configurazione Master Slave
  • Per ogni Slave viene occupato un pin in più sulla scheda Arduino. Praticamente 1 Master può controllare 4 dispositivi Slave
  • Manca il riconoscimento dei dati come utilizzato in UART
  • Non è possibile configurare più master

Protocollo di comunicazione I2C

Inter Integrated Circuit (I2C) è un altro protocollo di comunicazione utilizzato dalle schede Arduino. I2C è il protocollo più difficile e complicato da implementare con Arduino e altri dispositivi. Nonostante la sua complicazione, offre molteplici funzionalità che mancano in altri protocolli come configurazioni multiple Master e multiple Slave. I2C consente di collegare fino a 128 dispositivi alla scheda Arduino principale. Questo è possibile solo perché I2C condivide un unico filo tra tutti i dispositivi Slave. I2C in Arduino utilizza un sistema di indirizzi, il che significa che prima di inviare dati al dispositivo Slave Arduino deve prima selezionare il dispositivo Slave inviando un indirizzo univoco. I2C utilizza solo due fili riducendo il numero complessivo di pin di Arduino, ma il lato negativo è che I2C è più lento del protocollo SPI.

Pin analogico Arduino Pin I2C
A4 SDA
A5 SCL

A livello hardware I2C è limitato a due soli fili, uno per una linea dati nota come SDA (dati seriali) e il secondo per la linea Orologio SCL (orologio seriale). In stato di riposo sia SDA che SCL vengono portati in alto. Quando i dati devono essere trasmessi, queste linee vengono abbassate utilizzando i circuiti MOSFET. Utilizzando I2C nei progetti è obbligatorio utilizzare resistori pull up normalmente un valore di 4,7Kohm. Questi resistori di pull up assicurano che sia le linee SDA che SCL rimangano alte durante il loro avvio inattivo.

Alcuni dei principali punti salienti dei protocolli I2C sono:

  • Il numero di pin richiesti è molto basso
  • È possibile collegare più dispositivi Master Slave
  • Utilizza solo 2 fili
  • La velocità è più lenta rispetto a SPI a causa dei resistori pull up
  • I resistori necessitano di più spazio nel circuito
  • La complessità del progetto aumenta con l'aumento del numero di dispositivi

Confronto tra UART vs I2C vs SPI

Protocollo UART SPI 2C
Velocità Il più lento Il più veloce Più veloce di UART
Numero di dispositivi Fino a 2 4 dispositivi Fino a 128 dispositivi
Cavi richiesti 2(Tx,Rx) 4(SCK,FUMO,OCCHI,SS) 2(SDA, SCL)
Modalità duplex Modalità duplex completo Modalità duplex completo Mezzo duplex
Numero di Master-Slave possibili Singolo master-singolo slave Singolo Master-Slave multiple Più Master-Più Slave
Complessità Semplice Può controllare facilmente più dispositivi Complesso con aumento dei dispositivi
Bit di conferma No No

Conclusione

In questo articolo, abbiamo trattato un confronto completo di tutti e tre i protocolli UART, SPI e I2C utilizzati in Arduino. Conoscere tutti i protocolli è importante in quanto offre infinite opportunità per integrare più dispositivi. Comprendere tutte le periferiche di comunicazione farà risparmiare tempo e aiuterà a ottimizzare i progetti secondo il protocollo corretto.