Comunicazione seriale UART tra due schede Arduino

Comunicazione seriale UART tra due schede Arduino

UART è un acronimo di trasmettitore del ricevitore asincrono universale. UART è il protocollo di comunicazione seriale più utilizzato in cui il formato dei dati e la velocità di comunicazione sono configurabili. Arduino ha tre protocolli di comunicazione chiamati SPI, I2C e UART. Il protocollo UART consente a Arduino di comunicare tra diversi dispositivi e sensori. Ora discuteremo di come usare la comunicazione UART tra due schede Arduino.

Comunicazione UART seriale

UART seriale è il protocollo di comunicazione seriale utilizzato da Arduino per comunicare con microcontrollori e PC. Arduino ha una porta UART a D0 e D1. Un bus seriale con due terminali viene utilizzato nella comunicazione UART, uno per l'invio di dati denominati TX al pin d1 e un altro per ricevere dati che sono indicati come Rx al pin d0. Quindi, tutti i dispositivi che funzionano sul protocollo UART devono avere due perni seriali:

  • Rx per la ricezione di dati
  • TX per la trasmissione di dati

Durante l'utilizzo di questi due pin per UART, è importante notare che i pin UART sono specifici per un dispositivo stesso significa se si desidera stabilire una comunicazione seriale usando UART tra due schede Arduino, quindi il pin Rx della prima scheda sarà collegato al pin TX del secondo Scheda allo stesso modo TX Pin del primo con il pin rx del secondo.

Comunicazione seriale UART tra due schede Arduino

Ora collegheremo due schede Arduino che utilizzano pin TX e RX per stabilire una comunicazione seriale tra loro una scheda Arduino che trasmetterà i dati fungerà da un Maestro e la seconda scheda Arduino che riceverà istruzioni agirà come Schiavo. Imposteremo le nostre schede Arduino in configurazione master e slave. Prima di andare oltre, abbiamo bisogno della seguente attrezzatura per avviare la nostra comunicazione seriale UART.

Attrezzatura richiesta

  • 2x board Arduino
  • 2x cavo USB B
  • 6x fili jumper
  • Breadboard
  • Resistenza 220 ohm
  • GUIDATO

Per iniziare la comunicazione tra due schede Arduino, uno sarà configurato come mittente e altra scheda Arduino come ricevitore. Quindi, dobbiamo scrivere due programmi, uno per mittente e secondo per il ricevitore. Seguire i passaggi indicati di seguito per stabilire la comunicazione seriale.

Esempio 1: Passando una stringa da un Arduino all'altro attraverso la comunicazione UART

Definiremo una stringa nel nostro maestro Arduino e proveremo a passarla a Slave Arduino usando la comunicazione seriale UART. Segui di seguito i passaggi forniti per passare i dati tra due Ardinos.

Passaggio 1: Connetti Master Arduino

L'uso di un cavo USB B collega la scheda Arduino che funge da maestro al PC. Ricorda di selezionare la porta COM prima di caricare lo schizzo. Qui nel nostro caso l'Arduino è collegato alla porta COM6.


Ora carica il codice di seguito nella scheda del Master Arduino mittente.

// Sender Arduino Board Codice (Master)
char mystring [15] = "Linuxhint.com "; // String Data che deve essere inviato
void setup ()
Seriale.Inizia (9600); // Inizia il serial a 9600 baud rate

void loop ()
Seriale.Scrivi (MyString, 15); // Scrivi i dati seriali
ritardo (1000);



Il codice sopra invierà un semplice messaggio Linuxhint.com per l'altro Arduino. Innanzitutto, abbiamo definito un array “Linuxhint.com ". Il numero 15 all'interno delle staffe mostra che questo array può contenere 15 caratteri. 13 sono alfabeti mentre 2 sono impostati per lo spazio in modo da poter vedere un'uscita chiara nel monitor seriale. Dentro impostare() La comunicazione seriale è stabilita usando seriale.inizio () e 9600 è selezionato come tasso di baud.

IL ciclo continuo() la sezione dello schizzo contiene il Seriale.scrivere() funzione. Queste funzioni scriveranno un messaggio alla scheda Arduino Slave del ricevitore con un ritardo di 1000 millisecondi.

Passaggio 2: Connetti Slave Arduino

Collega la seconda scheda Arduino che è schiava nella nostra configurazione. Collegare questa scheda in qualsiasi porta PC diversa dalla porta utilizzata nel passaggio precedente dalla scheda Master Arduino. Prima di caricare il codice Arduino Seleziona la porta Arduino Com. La nostra scheda Arduino Slave è collegata a COM8.


Ora carica il codice dato di seguito nella scheda Slave Arduino.

// Codice della scheda Arduino del ricevitore
Char Mystring [20]; // variabile inizializzata per archiviare la ricezione
void setup ()
Seriale.Inizia (9600); // Inizia il seriale a 9600 baud

void loop ()
Seriale.ReadBytes (Mystring, 15); // Leggi i dati seriali
Seriale.println (mystring); // Stampa dati sul monitor seriale
Seriale.println ("ricevitore");
ritardo (1000);



Sopra il codice di schiavo arduino è simile come il maestro arduino solo la differenza è qui invece di Seriale.scrivere() Abbiamo usato Seriale.ReadBytes () che leggerà i dati in arrivo da Master Arduino. Dopo aver letto i dati verrò stampato sul monitor seriale utilizzando Seriale.println () funzione.

Passaggio 3: collegare entrambi Arduino usando i pin TX e RX

Una volta che il codice Arduino è stato caricato in entrambe le schede Arduino, ora connettono la scheda Arduino Master e Slave, come mostrato nella figura seguente. Collegare il pin tx del primo Arduino con il pin Rx del secondo Arduino allo stesso modo Rx Pin di First Arduino con pin tx del secondo Arduino.

Ricorda che durante il caricamento del codice in entrambi questi Arduino non collega i pin TX e RX altrimenti la comunicazione seriale non sarà possibile.


Output di Master Arduino

Il Maestro Arduino sta inviando una corda costantemente a Slave Arduino con un ritardo di 1000 millisecondi.


Output dello schiavo Arduino

Slave Arduino stamperà per la prima volta il ricevitore nel terminale seriale di uscita dopo che riceverà un array LinuxHint.com con un ritardo di 1000 millisecondi del Maestro Arduino. Quindi la comunicazione seriale viene eseguita tra due schede Arduino.

Esempio 2: Blink LED usando due schede Arduino attraverso la comunicazione UART

Passaggio 1: caricamento del codice su Master Arduino Board

Collegare la scheda Arduino che funge da maestro con il PC utilizzando il cavo USB B e seleziona la porta COM in cui Arduino è collegato. Nel nostro caso la scheda Master Arduino è collegata alla porta COM7.


Carica il codice indicato di seguito nella scheda del mittente Arduino.

// Codice del trasmettitore (TX) Arduino
void setup ()

Seriale.Inizia (9600);

void loop ()

Seriale.stampa (1);
ritardo (2000);
Seriale.stampa (0);
ritardo (2000);



In CODE MASTER ARDUINO SOPRE SOPRA IL MASTUINA INVIA ISTRUZIONI A SLAVE ARDUINO sotto forma di numeri 1 e 0. Il maestro invia il numero 1, quindi attende 2 secondi dopo che invia il numero 0, quindi di nuovo per un ritardo di 2 secondi. Dopodiché inizia a ripetere in un ciclo. Qui abbiamo usato il Seriale.stampa() Funzione che convertirà le istruzioni Master Arduino in caratteri ASCII, il che significa che il master trasmette i valori 49 per 1 e 48 per 0.

Passaggio 2: caricamento del codice nella scheda Arduino Slave

Ora collega la seconda scheda Arduino che funge da slave con qualsiasi altra porta di PC utilizzando il cavo USB B. Ricorda di selezionare la porta Com Board COM prima prima di caricare il codice mittente. La scheda Arduino Slave è collegata alla porta COM8 di PC.


Ora carica il codice seguente nella seconda scheda Arduino che funge da schiavo.

// ricevitore (RX) Codice della scheda Arduino
char seriaLinput = ";
LED byte = 2;
void setup ()

pinMode (LED, output);
Seriale.Inizia (9600);

void loop ()

Se (seriale.disponibile())

char seriaLinput = seriale.Leggere();
if (seriaLinput == '0') DigitalWrite (LED, basso);
if (seriaLinput == '1') DigitalWrite (LED, alto);
Seriale.println (seriaLinput);



Nel Codice sopra di Slave Arduino Char SeriaInput viene inizializzato che riceverà e memorizzerà le istruzioni provenienti da Master Arduino.

Successivamente nella sezione Loop del codice verrà effettuato un controllo utilizzando se condizione.

Se (seriale.disponibile())


Il comando sopra verificherà se ci sono dati in arrivo nel buffer o no.

Se ci sono dati in arrivo, viene letto e memorizzato un singolo carattere CHAR variabile serialinput.

Dal momento che siamo interessati solo a 0 e 1 valori. Se le dichiarazioni faranno il lavoro qui. Se le istruzioni verificheranno il valore di serialinput se è 1, invierà un segnale elevato al LED collegato al pin 2 della scheda slave. Se ha ricevuto seriaLinput 0, invierà un segnale basso al pin numero 2.

Nota: Collega sempre entrambe le schede Arduino in porte COM separate e prima di caricare il nuovo codice Seleziona prima la porta Arduino Com. Si consiglia di utilizzare due finestre separate di IDE per entrambe le schede Arduino.

Passaggio 2: caricamento del codice nella scheda Arduino Slave

Collegare le schede Arduino nella configurazione seguente come mostrato nell'immagine. Collega Tx del primo Arduino con Rx del secondo Arduino. Allo stesso modo collega il Rx del primo Arduino con il TX del secondo Arduino. Non collegare i pin TX e RX prima di caricare il codice Arduino poiché Arduino ha una sola porta di comunicazione seriale che collega queste due porte con qualsiasi altro dispositivo bloccerà la comunicazione seriale con PC tramite cavo USB.

Collegare il LED al pin digitale numero 2 e il pin GND di Arduino, tra questi due pin collega una resistenza da 220ohm per mantenere i limiti di corrente sicuri. Collega Arduino Gnd insieme.


Lampeggiante a LED di uscita

Dopo aver caricato il codice in entrambe le schede Arduino. Il maestro invierà e spegnerà le istruzioni con un ritardo di 2000ms. In output possiamo vedere una lampeggiante a LED in modo consecutivo in 1 sec e 1 sec Off Configuration.

Accensione LED


Spegni a LED

Conclusione

Il protocollo di comunicazione seriale UART è utilizzato da più dispositivi e moduli che consente ad Arduino di integrarlo in qualsiasi circuito o progetto. Qui abbiamo trattato come possiamo collegare due Arduinos e trasferire dati utilizzando la comunicazione seriale. Usando il protocollo UART possiamo migliorare la comunicazione tra dispositivi e schede Arduino.