Hardware vs. software serial – The Arduino choices

Arduino software serial

In questo articolo approfondiremo il discorso relativo alla software serial su Arduino, e vedremo quali differenze pone rispetto al sistema hardware.

Negli articoli passati abbiamo imparato a riconoscere ed utilizzare un collegamento seriale su Arduino attraverso UART, collegando i PIN 0 ed 1, RX e TX in modo incrociato tra due schede Arduino (o simili).In tal modo, e aggiungendo un terzo collegamento che ponesse in comune il riferimento di massa sulle due schede, è possibile consentire il trasfermimento delle informazioni attraverso la rispettiva connessione seriale. Il protocollo risulta abbastanza semplice ed intuitivo.

Ma come possiamo fare se, per una qualsiasi ragione, i pin 0 ed 1  risultassero già occupati da altri commegamenti?

La libreria SoftwareSerial

Come è evidente dall’immagine introduttiva, dal punto di vista del circuito è stato sufficiente spostare i collegamenti RX-TX dai pin 0-1 ai pin 10-11. Ma la modifica hardware non è sufficiente: è infatti necessario un driver software che reindirizzi le trasmissioni seriali sui nuovi pin. Fortunatamente, Arduino dispone di una libreria apposita, chiamata per l’appunto SoftwareSerial, che funziona proprio in questo modo. Vediamo il codice necessario per implementarla.

Il programma è una variazione di quello presentato la scorsa settimana, ed il suo funzionamento è identico, tranne che per l’uso di un oggetto softUART al posto della seriale hardware.

Quante seriali possiamo pilotare?

Il seguente programma riceve da due porte seriali software e reindirizza l’input verso la porta seriale hardware. Per mettersi in ascolto su una porta seriale software occorre chiamare il metodo port.listen(). Quando si utulizzano due porte seriali software, occorre passare dall’una all’altra ascoltando (listen()ing) a turno, e scegliere un momento particolare per passare ad una porta all’altra, tipicamente al termine di una trasmissione attesa, o quando il buffer è vuoto.

Nell’esempio, lo switch  avviene quando su una porta non c’è nulla più da leggere.

Il circuito: due devices che comunicano atraverso la seriale. Nella prima serialeil TX è collegato al PIN digitale 10 (RX), RX al PIN 11(TX). Il secondo device seriale ha il TX collegato con il PIN  digitale pin 8(RX), RX al PIN 9(TX).

Considerazioni finali

Abbiamo imparato come utilizzare la libreria SoftwareSerial, che ci consente di lavorare su PIN diversi dai classici 0 ed 1, e addirittura di gestire più connessioni seriali software. In questo modo Arduino diventa automaticamente un sistema di gestione e controllo di apparati di trasmissione basati su seriale, in grado di collegare più devices e monitorarne il corretto funzionamento.

Ma le connessioni PIN to PIN su Arduino sono estremamente delicate, soggette ad interferenza e a brevissimo raggio. Nel prossimo articolo vedremo come rinforzare il livello elettrico di comunicazione utilizzando uno schema più robusto o attraverso connessioni USB.

Appuntamento alla prossima settimana!

 

Le puntate precedenti:

Join our groups on Telegram…

… and don’t forget our social channels!

Definire ciò che si è non risulta mai semplice o intuitivo, in specie quando nella vita si cerca costantemente di migliorarsi, di crescere tanto professionalmente quanto emotivamente. Lavoro per contribuire al mutamento dei settori cardine della computer science e per offrire sintesi ragionate e consulenza ad aziende e pubblicazioni ICT, ma anche perche’ ciò che riesco a portare a termine mi dà soddisfazione, piacere. Così come mi piace suonare (sax, tastiere, chitarra), cantare, scrivere (ho pubblicato 350 articoli scientfici e 3 libri sinora, ma non ho concluso ciò che ho da dire), leggere, Adoro la matematica, la logica, la filosofia, la scienza e la tecnologia, ed inseguo quel concetto di homo novus rinascimentale, cercando di completare quelle sezioni della mia vita che ancora appaiono poco ricche.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.