Biblioteca di software in Arduino

Biblioteca di software in Arduino

La piattaforma Arduino consente alle persone di creare progetti diversi. Arduino è una piattaforma intuitiva con supporto per una vasta gamma di librerie, tra cui il Biblioteca di software. IL Biblioteca di software Ti consente di creare una porta seriale su uno dei pin digitali sulla scheda Arduino.

In questo articolo, ci immergeremo più in profondità nella biblioteca del software ed esploreremo come funziona.

Introduzione alla libreria di software

IL Biblioteca di software è 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 di software è inclusa con l'IDE Arduino e può essere utilizzata con qualsiasi scheda Arduino.

Nota: Generalmente, TX E Rx I pin sono utilizzati per la comunicazione seriale ma usando questa libreria possiamo consentire alla scheda Arduino di utilizzare uno qualsiasi dei pin digitali per sostituire i pin TX e RX.

Comprensione delle funzioni della libreria di software

IL Biblioteca di software ha diverse funzioni che consentono di impostare e controllare la porta seriale del software. Ecco alcune delle funzioni principali che dovresti sapere:

Software ()

Questa funzione crea una nuova istanza di Software 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, utilizzeresti il ​​seguente codice:

Software myserial (2, 3); // rx, tx

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

Sintassi

La sintassi per il Software () Il metodo è il seguente:

SoftwareSerial (rxpin, txpin, inverse_logic)

Parametri

I parametri per il file Software () Sono

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

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

inverse_logic: Questo parametro è facoltativo e inverte i bit in arrivo. Il valore predefinito è falso, il che significa che un basso sul pin Rx viene interpretato come un bit e un alto come 1 bit. Se impostato su True, il basso sul pin Rx ora richiederà 1 bit e alto come 0 bit.

Ritorno

IL Software () non restituisce nulla.

Arduino SoftwareSerial () Funzioni di libreria

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

  • inizio()
  • disponibile()
  • Leggere()
  • scrivere()

inizio()

IL inizio() La funzione inizializza la porta seriale del software con una frequenza di baud. La velocità di baud è la velocità di trasmissione dei dati sulla porta seriale. Ad esempio, per impostare 9600 come tasso di baud per la comunicazione seriale, utilizzeresti il ​​seguente codice:

Myserial.Inizia (9600);

disponibile()

IL Disponibile () fUnction restituisce byte disponibili per la lettura nella porta seriale del software. Ad esempio, per verificare se sono disponibili dati da leggere, utilizzare il seguente codice:

Se (myserial.disponibile ()> 0)
// Leggi i dati di input
Char incomindbyte = myserial.Leggere();

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 stamparli sul monitor seriale, utilizzare il seguente codice:

Char incomindbyte = myserial.Leggere();
Seriale.println (incombete);

scrivere()

IL scrivere() La funzione scrive un byte di dati nella porta seriale del software. Ad esempio, per inviare la lettera "UN" Oltre alla porta seriale del software, utilizzeresti il ​​seguente codice:

Myserial.scrivere un');

Arduino SoftwareSerial () Codice di esempio libreria

Ora comunicheremo tra due schede di Arduino rispetto alla comunicazione seriale usando questa libreria. Prendi due schede Arduino e collegarle come mostrato nell'immagine qui sotto.

Collegare D2 del Master Arduino Board con D3 della scheda Arduino Slave, in modo simile D3 del Maestro Arduino con D2 dello schiavo Arduino.

Nota: Per la comunicazione seriale, il TX Il pin è sempre collegato al file Rx Pin del opposto Arduino e il Rx Il pin del maestro è sempre collegato al file TX Pin dell'altro Arduino.

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

Ecco un esempio di codice Arduino che dimostra come usare il Biblioteca di software Per stabilire la comunicazione tra due schede Arduino:

Codice della scheda del mittente

Il codice seguente è per il mittente Arduino che scriverà una stringa alla scheda Arduino del ricevitore.

#includere
// Imposta oggetto seriale software
Software myserial (2, 3);
void setup ()
// Avviare la comunicazione seriale
Seriale.Inizia (9600);
Mentre (!Seriale)
; // Attendere la connessione della porta seriale

// Avviare la comunicazione seriale del software
Myserial.Inizia (9600);

void loop ()
// Invia un messaggio tramite la connessione seriale del software
Myserial.println ("Hello, ricevitore!");
ritardo (1000);

Codice della scheda del ricevitore

Il codice seguente è per la scheda del ricevitore. L'uso di questo codice Arduino riceverà la stringa da un'altra scheda su una comunicazione seriale stabilita tra due schede Arduino.

#includere
// Imposta oggetto seriale software
Software myserial (2, 3);
void setup ()
// Avviare la comunicazione seriale
Seriale.Inizia (9600);
Mentre (!Seriale)
; // Attendere la connessione della porta seriale

// Avviare la comunicazione seriale del software
Myserial.Inizia (9600);

void loop ()
// Controlla se i dati sono disponibili sulla connessione seriale del software
Se (myserial.disponibile())
// Leggi i dati e stampali sul monitor seriale
Seriale.println (myserial.readString ());

In questo esempio, includiamo prima il Biblioteca di software All'inizio del codice. Quindi, creiamo un Software oggetto chiamato "Myserial"Con i pin 2 e 3 specificati come pin RX e TX, rispettivamente.

Nel impostare() Funzione, avviamo sia la comunicazione seriale hardware che il software con una velocità di baud di 9600. Nel ciclo continuo() Funzione della scheda mittente, inviamo un messaggio tramite la connessione seriale del software utilizzando MySerial.Metodo println () e attendere un secondo prima di inviare il messaggio successivo.

Nella funzione Loop () della scheda del ricevitore, il codice verificherà la disponibilità di dati seriali sulla connessione seriale del software utilizzando Myserial.disponibile() metodo. Se sono disponibili dati, leggiamo i dati utilizzando MySerial.Metodo readstring () e stampalo sul monitor seriale usando il seriale.Metodo println ().

Limitazioni della libreria di software ()

IL Biblioteca di software ha diversi vantaggi ma ha anche alcune limitazioni di cui gli utenti dovrebbero essere a conoscenza. Queste limitazioni includono

  • Incapacità di trasmettere e ricevere i dati contemporaneamente.
  • Quando si utilizza più porte seriali software, solo una porta può ricevere dati contemporaneamente.
  • Le porte seriali basate sul software create utilizzando questa libreria funzionano a tassi di baud più bassi e non sono affidabili come le porte seriali basate su hardware.
  • Alcuni pin sulle schede Mega e Mega 2560 non supportano gli interrupt di cambio per Rx, limitando quali pin possono essere utilizzati.
  • Allo stesso modo, su Leonardo e Micro Boards, solo alcuni pin possono essere utilizzati per RX a causa della mancanza di interruzioni del cambiamento.
  • La velocità massima Rx su Arduino o Genuino 101 è di 57600 bps.
  • Rx non funziona sul pin 13 digitale di Arduino o Genuino 101.
Asse Pin rx
Mega & 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 e Micro 8, 9, 10, 11, 14 (miso), 15 (SCK), 16 (MOSI).

Conclusione

IL Biblioteca di software In Arduino è uno strumento utile per comunicare con i dispositivi utilizzando i protocolli di comunicazione seriale. Consente agli sviluppatori di creare porte seriali basate sul software che possono essere utilizzate insieme alle porte seriali basate su hardware. Questa libreria ha alcune limitazioni in quanto non consente il trasferimento di dati simultanei. Per maggiori dettagli leggi l'articolo sopra.