Esperimenti con logiche programmabili
Programmazione, Tutorial Arduino

Arduino aggiungere porta seriale con Software Serial Library

Utilizzare Software Serial Library per aggiungere una porta seriale

La comunicazione seriale RS232 è un modo semplice per permettere alla nostra board Arduino di comunicare con il computer piuttosto che con sensori o altri dispositivi.
Principalmente Arduino UNO possiede una sola porta seriale, implementata in hardware sul chip Atmega328, e disponibile sui pin0 (Rx) e pin1 (Tx) della scheda.
Sebbene, il più delle volte, una porta seriale sia sufficiente, può essere necessario instaurare un’ulteriore comunicazione seriale, ad esempio, per motivi di debugging o monitoring con un altro dispositivo o computer.
In questo caso ci viene in aiuto la libreria SoftwareSerial (Software Serial Library) che permette di impiegare ulteriori pin disponibili sulla scheda per definire una porta seriale aggiuntiva.

Per utilizzarla è fondamentale inserire nello sketch il riferimento alla libreria tramite la parola chiave #include:

#include <SoftwareSerial.h>

successivamente si definisce una variabile utilizzando il costruttore SoftwareSerial:

SoftwareSerial PortaSeriale = SoftwareSerial(pin_RX, pin_TX);

 

dove PortaSeriale è il nome dell’oggetto, pin_RX definisce il pin per ricevere i dati e pin_TX definisce il pin per la trasmissione dati.

Ora nella funzione Setup(), tramite pinMode, definiamo il pin previsto per la ricezione come input, e il pin previsto per la trasmissione come output. Specifichiamo inoltre la velocità di trasmissione a 9600bps.

void setup()
{
pinMode(pin_RX, INPUT);
pinMode(pin_TX, OUTPUT);

PortaSeriale.begin(9600);
}

 

Per leggere e scrivere sulla seriale vengono utilizzati gli stessi metodi implementati per Serial().

Di seguito l’esempio completo che permette di testare questa funzionalità impiegando i pin7 per la ricezione ed il pin8 per la trasmissione

#include <SoftwareSerial.h>

//creo una nuova porta seriale via software
SoftwareSerial PortaSeriale =  SoftwareSerial(7, 8);

//variabile
char EchoChar = 0;

void setup()  {
//definisco il pin7(RX) come ingresso
pinMode(7, INPUT);
//definisco il pin8(TX) come uscita
pinMode(8, OUTPUT);
//setto la velocita della seriale software
PortaSeriale.begin(9600);
}

void loop() {
//leggo dalla seriale(pin7)
EchoChar = PortaSeriale.read();
//invio il dato letto
PortaSeriale.print(EchoChar);

delay(10);

}

 

il circuito di per il test è rappresentato nell’illustrazione seguente:

Avendo altri pin disponibili nulla ci vieta di definire un’ulteriore porta seriale o più.

Nonostante l’utilità di questa libreria, ci sono alcune limitazioni che bisogna conoscere, per evitare errori di programmazione e di progettazione:

Queste limitazioni potrebbero far ripensare l’utilizzo della libreria, ma credo che sia comunque importante conoscerne il funzionamento per valutare, a seconda dei circuiti, se impiegarla o meno.
Personalmente l’ho trovata molto utile per inviare dati ad altri dispositivi come funzione di monitoring, difatti potete utilizzare solamente la funzione print e tralasciare la read().

Related posts

Webduino scheda relè evitare blocco Arduino UNO

Marco Lai
11 anni ago

Pilotare striscia LED RGB

Marco Lai
12 anni ago

Come usare il ponte H integrato TLE5205-2

Marco Lai
8 anni ago
Exit mobile version