Libreria software seriale in Arduino

Libreria Software Seriale In Arduino



La piattaforma Arduino consente alle persone di creare diversi progetti. Arduino è una piattaforma user-friendly con supporto per un'ampia gamma di librerie, incluso il Libreria SoftwareSerial . IL Libreria SoftwareSerial ti consente di creare una porta seriale su uno qualsiasi dei pin digitali sulla tua scheda Arduino.

In questo articolo, approfondiremo la libreria SoftwareSerial ed esploreremo come funziona.







Introduzione alla libreria SoftwareSerial

IL Libreria SoftwareSerial è una libreria Arduino standard che consente la comunicazione seriale su pin digitali diversi da TX e RX. La libreria consente la creazione di una porta seriale software, che può essere utilizzata per comunicare con altri dispositivi, come altri microcontrollori, computer o persino moduli Bluetooth. La libreria SoftwareSerial è inclusa nell'IDE di Arduino e può essere utilizzata con qualsiasi scheda Arduino.



Nota: Generalmente, TX E RX i pin vengono utilizzati per la comunicazione seriale ma utilizzando questa libreria possiamo abilitare la scheda Arduino a utilizzare uno qualsiasi dei pin digitali per sostituire i pin TX e RX.



Comprensione delle funzioni della libreria SoftwareSerial

IL Libreria SoftwareSerial dispone di diverse funzioni che consentono di impostare e controllare la porta seriale del software. Ecco alcune delle funzioni principali che dovresti conoscere:





SoftwareSerial()

Questa funzione crea una nuova istanza di SoftwareSerial classe. Questa funzione ha due argomenti, il pin RX e il pin TX. Ad esempio, se si desidera creare una porta seriale software sui pin 2 e 3, utilizzare il seguente codice:

SoftwareSerial mySerial ( 2 , 3 ) ; // RX, TX



IL SoftwareSerial() Il metodo viene utilizzato per creare una nuova istanza di a SoftwareSerial oggetto. Consente la creazione di più istanze, tuttavia alla volta solo una può essere attiva.

Sintassi

La sintassi per il SoftwareSerial() metodo è il seguente:

SoftwareSerial ( rxPin, txPin, logica_inversa )

Parametri

I parametri per il SoftwareSerial() Sono

rxPin: Questo parametro specifica il pin che verrà utilizzato per ricevere i dati seriali.

txPin: Questo parametro specifica il pin che verrà utilizzato per trasmettere i dati seriali.

logica_inversa: Questo parametro è opzionale e inverte il senso dei bit in ingresso. Il valore predefinito è false, il che significa che un BASSO sul pin RX viene interpretato come 0 bit e un ALTO come 1 bit. Se impostato su true, LOW sul pin RX assumerà ora 1 bit e HIGH 0 bit.

Ritorno

IL SoftwareSerial() non restituisce nulla.

Funzioni della libreria Arduino SoftwareSerial()

Arduino SoftwareSerial() ha un elenco di funzioni per la comunicazione seriale tra dispositivi. Alcune delle funzioni principali sono discusse qui:

inizio()

IL inizio() La funzione inizializza la porta seriale del software con un baud rate. Il baud rate è la velocità di trasmissione dei dati sulla porta seriale. Ad esempio, per impostare 9600 come baud rate per la comunicazione seriale, utilizzare il seguente codice:

mySerial.begin ( 9600 ) ;

disponibile()

IL disponibile() f unction restituisce i byte disponibili per la lettura sulla porta seriale del software. Ad esempio, per verificare se sono disponibili dati da leggere, utilizzare il seguente codice:

Se ( mySerial.disponibile ( ) > 0 ) {
// Leggere dati in ingresso
char incomingByte = mySerial.read ( ) ;
}

Leggere()

IL Leggere() La funzione legge il successivo byte di dati dalla porta seriale del software. Ad esempio, per leggere un byte di dati e stamparlo sul monitor seriale, utilizzare il seguente codice:

char incomingByte = mySerial.read ( ) ;
Serial.println ( byte in arrivo ) ;

scrivere()

IL scrivere() La funzione scrive un byte di dati sulla porta seriale del software. Ad esempio, per inviare la lettera 'UN' sulla porta seriale del software, useresti il ​​seguente codice:

mySerial.write ( 'UN' ) ;

Codice di esempio della libreria Arduino SoftwareSerial()

Ora comunicheremo tra due schede Arduino tramite comunicazione seriale utilizzando questa libreria. Prendi due schede Arduino e collegale come mostrato nell'immagine qui sotto.

Collegare D2 della scheda Master Arduino con D3 della scheda Slave Arduino, similmente connect D3 di Maestro Arduino con D2 dello Schiavo Arduino.

Nota: Per la comunicazione seriale, il TX pin è sempre collegato al RX pin dell'Arduino opposto e il RX pin del Master è sempre collegato al TX pin dell'altro Arduino.

Di seguito è riportato l'hardware di entrambe le schede Arduino.

Ecco un esempio di codice Arduino che dimostra come utilizzare il Libreria SoftwareSerial per stabilire la comunicazione tra due schede Arduino:

Codice scheda mittente

Il codice seguente è per il mittente Arduino che scriverà una stringa sulla scheda Arduino ricevente.

#include

// Impostare l'oggetto seriale del software
SoftwareSerial mySerial ( 2 , 3 ) ;

configurazione nulla ( ) {
// Avviare la comunicazione seriale
Inizio.seriale ( 9600 ) ;
Mentre ( ! Seriale ) {
; // Aspettare per porta seriale per la connessione
}

// Avviare la comunicazione seriale del software
mySerial.begin ( 9600 ) ;
}

anello vuoto ( ) {
// Invia un messaggio tramite la connessione seriale del software
mySerial.println ( 'Ciao, scheda ricevente!' ) ;
ritardo ( 1000 ) ;
}

Codice scheda ricevente

Il codice seguente è per la scheda Ricevitore. Utilizzando questo codice Arduino riceverà la stringa da un'altra scheda tramite la comunicazione seriale stabilita tra due schede Arduino.

#include

// Impostare l'oggetto seriale del software
SoftwareSerial mySerial ( 2 , 3 ) ;

configurazione nulla ( ) {
// Avviare la comunicazione seriale
Inizio.seriale ( 9600 ) ;
Mentre ( ! Seriale ) {
; // Aspettare per porta seriale per la connessione
}

// Avviare la comunicazione seriale del software
mySerial.begin ( 9600 ) ;
}

anello vuoto ( ) {
// Controllo Se i dati sono disponibili sulla connessione seriale del software
Se ( mySerial.disponibile ( ) ) {
// Leggere i dati e stamparli sul monitor seriale
Serial.println ( mySerial.readString ( ) ) ;
}
}

In questo esempio, includiamo prima il file Libreria SoftwareSerial all'inizio del codice. Quindi, creiamo un SoftwareSerial oggetto chiamato ' mySerial ” con i pin 2 e 3 specificati rispettivamente come pin RX e TX.

Nel impostare() funzione, avviamo sia la comunicazione seriale hardware che quella seriale software con un baud rate di 9600. Nella ciclo continuo() funzione della scheda mittente, inviamo un messaggio tramite la connessione seriale del software utilizzando il metodo mySerial.println() e attendiamo un secondo prima di inviare il messaggio successivo.

Nella funzione loop() della scheda ricevente, il codice verificherà la disponibilità dei dati seriali sulla connessione seriale del software utilizzando mioSerial.disponibile() metodo. Se sono disponibili dati, leggiamo i dati utilizzando il metodo mySerial.readString() e li stampiamo sul monitor seriale utilizzando il metodo Serial.println().

Limitazioni della libreria SoftwareSerial()

IL Libreria SoftwareSerial ha diversi vantaggi ma ha anche alcune limitazioni di cui gli utenti dovrebbero essere consapevoli. Queste limitazioni includono

  • Impossibilità di trasmettere e ricevere dati contemporaneamente.
  • Quando si utilizzano più porte seriali software, solo una porta alla volta può ricevere dati.
  • Le porte seriali basate su software create utilizzando questa libreria funzionano a velocità di trasmissione inferiori e non sono affidabili come le porte seriali basate su hardware.
  • Alcuni pin sulle schede Mega e Mega 2560 non supportano gli interrupt di modifica per RX, limitando quali pin possono essere utilizzati.
  • Allo stesso modo, sulle schede Leonardo e Micro, solo determinati pin possono essere utilizzati per RX a causa della mancanza di interruzioni di modifica.
  • La massima velocità RX su schede Arduino o Genuino 101 è di 57600 bps.
  • RX non funziona sul pin digitale 13 delle schede Arduino o Genuino 101.
Asse Pin RX
Mega e Mega 2560 10, 11, 12, 13, 14, 15, 50, 51, 52, 53, A8 (62), A9 (63), A10 (64), A11 (65), A12 (66), A13 (67), A14 (68), A15 (69).

Leonardo & Mic 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI).

Conclusione

IL Libreria SoftwareSerial in Arduino è uno strumento utile per comunicare con dispositivi che utilizzano protocolli di comunicazione seriale. Consente agli sviluppatori di creare porte seriali basate su software che possono essere utilizzate insieme a porte seriali basate su hardware. Questa libreria ha alcune limitazioni in quanto non consente il trasferimento simultaneo dei dati. Per maggiori dettagli leggi l'articolo qui sopra.