Connessione seriale-USB e protocolli su Arduino #4

Arduino Seriale RS232

Continuano gli articoli sulla gestione della connessione seriale su Arduino. Oggi vediamo gli adattatori RS232 e USB TTL.

Chi ci ha seguito sin qui, provando i nostri programmi, avrà sicuramente notato che collegare due schede Arduino attraverso tre semplici cavetti elettrici non garantisce il massimo risultato, sia per una pura questione meccanica (i  cavetti tendono a sfilarsi o a fare contatto o ad agganciarsi ovunque) sia per una questione squisitamente elettrica (non esiste schermatura dalle interferenze elettomaghetiche, il segnale si degrada con l’aumentare della lunghezza dei connettori).

Fortunatamente il protocollo seriale può venire implementato in modi più robusti e sicuri, ed anche più comodi, utilizzando un cavo null-modem con standard RS-232.

Lo standard RS-232 definisce un protocollo della linea di trasmissione: in particolare, viene specificato che er incrementare l’immunità ai disturbi elettrici l’interfaccia elettrica ha una soglia di commutazione di ±3 V, cioè per passare da uno stato ad un altro non è sufficiente arrivare allo zero, ma dovrà essere superata la soglia dei 3 V di segno opposto. Lo standard EIA RS-232 prevede nei circuiti dati (p.e. TD e RD) che il segnale di tensione positivo rappresenta lo 0 logico (space) mentre quello negativo un 1 (mark). È quindi una codifica a logica negativa, ossia rovesciata rispetto al comune pensare.

Grazie a questo standard, il livello LOW è caraterizzato da tensioni che vanno da +3V a +25V, mentgre il livello HIGH è garantito per tensioni che vanno dai -3V ai -25V. I valori più utilizati sono quelli intorno ai ±12/15V. Ma come possiamo raggiungere tali tensioni con il nostro piccolo Arduino?

Il collegamento null-modem

Il circuito di adattamento utilizza un circuito chiamato “pompa di carica“, realizzato attraverso condensatori che garantiscoo gli opportuni livelli di tensione all’integrato MAX232, il quale si occupa di inviare e ricevere i deboli segnali di Arduino potenziandoli e rendendoli meno soggetti ad interferenza.

RS-232 null modem

Nell’immagine abbiamo rappresentato i collegamenti necessari per consentire il colloquio seriale tra due schede Arduino attraverso un cavo Null-Modem connesso ad un adattatore basato su circuito integrato MAX232. Si tratta sostanzialmente di ripetere i collegamenti invertendo i PIN TX ed RX, condividendo il segnale di GND.

Ma come colleghiamo il nostro adattatore?

L’adattatore seriale MAX232

RS-232 MAX232

Il collegamento è estremamente semplice: è sufficiente collegare i pin Vcc ai 5V, GND alla massa ed i connettori RXD e TXD ai pin 0 ed 1 come abbiamo già visto negli articoli precedenti. È altresì possibile utilizzare una connessione attraverso la SoftwareSerial, lasciano i pin 0 ed 1 liberi per altre attività di monitoraggio e controllo.

Ovviamente occorrono due elementi adattatori, uno per ciascuna scheda Arduino. Il pin di trassmissione TX di ciascun arduino va collegato al pin di ricezione della scheda RS-232, mentre il pin di ricezione RX di Arduino va collegato al pin di trasmissione TX dell’adattatore. I due adattatori andranno poi collegati attraverso un cavo null-modem.

Il collegamento così ottenuto garantisce, da specifica, una portata massima di 15 metri. Un gran passo avanti rispetto ai pochi centimetri del collegamento su fili volanti. Resta però una ulteriore limitazione: la pulizia del segnale è influenzata dalla sua velocità di trasmissione, che in questa configurazione è limitata a 115.200 bps.

Possiamo fare di meglio?

L’adattatore seriale FT232RL USB

FT232RL, RS-232 ArduinoIl modulo convertitore da USB a TTL è un dispositivo utilizzato in varie applicazioni. Dà la possibilità di utilizzare la porta USB e stabilire il tipo di comunicazione UART (Universal Asynchronous Receiver/Transmitter) con altri dispositivi con questa capacità. Il modulo è utile anche per la comunicazione tra PC e microcontrollori, e si basa sul chip CP2102 che consente la comunicazione da USB a TTL (UART).
Il controller della funzione Universal Serial Bus nel CP2102 è un dispositivo a piena velocità conforme a USB 2.0 con ricetrasmettitore integrato. Il controller USB gestisce tutti i trasferimenti di dati tra l’USB e l’UART, nonché le richieste di comando generate dal controller host USB e i comandi per il controllo della funzione dell’UART.

RS-232 USB TTL adapter
Il pinout per la configurazione del nostro adattatore è praticamente identico a quello del MAX232

Questo convertitore seriale da USB a TTL è ideale per molti usi, tra cui:

  • Programmazione ARM, microprocessori AVR e altri
  • Lavorare con hardware informatico come router e switch
  • Comunicazione seriale con molti dispositivi come i dispositivi GPS
  • Terminali seriali su dispositivi come il Raspberry Pi

Esempi di applicazioni

  • Aggiornamento di dispositivi legacy RS-232 a USB
  • Cavo interfaccia USB PDA
  • Adattatore seriale da USB a RS-232

Con questo sistema sarà possibile superrae le limitazioni della comunicazione a 115.200 bps. Compliant con le specifiche USB 2.0, che consentono 12Mbps, questa schedina garantisce “solo” 1Mbps, comunque 10 volte più della versione su MAX232.

Considerazioni finali

In questo articolo abbiamo analizzato le caratteristiche elettriche legate alla trasmissione dati con protocollo RS-232, attraverso diversi tool di rinforzo del segnale, per garantire ad Arduino strumenti di gestione delle informazioni tramite un sistema oramai noto e ben collaudato. Ma spesso 15 metri di cavo non sono la via migliore per trasferire dati, e talvolta esistono barriere architettoniche che impediscono di posare lunghi cavi tra più devices.

In quei casi, il protocollo seriale potrà sfruttare una ulteriore escalation tecnologica, attraverso un framework legato al Bluetooth.

Se l’argomento vi interessa, non perdetevi l’articolo del prossimo venerdì!

 

Link utili

 

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.