UART

In fase di sviluppo Stesura preliminare In fase di sviluppo

In questa pagina è analizzato il segnale seriale asincrono, utile per trasmettere dati tra dispositivi con modesta potenza di calcolo.

Come piattaforma di sviluppo verrà usato Arduino.

Segnale seriale asincrono con UART

Arduino dispone al proprio interno di un modulo UART (Universal Asynchronous Receiver Transmitter) cioè un dispositivo hardware che permette di trasmette e ricevere segnali seriali asincroni con codifica NRZ. Tale modulo è permanentemente connesso all'interfaccia USB del PC attraverso l'integrato FT232 (oppure CH340) e quindi non è pienamente utilizzabile.

Il diagramma temporale di in segnale seriale asincrono è costituito da:

Tutti i bit hanno la stessa durata.

Il segnale è disponibile sul pin 1 (Tx) di Arduino.

Qui una trattazione estesa, anche se datata.

L'esempio seguente è relativo ad un segnale a 9 600 bit/s (9 600 baud) trasmesso da Arduino; ciascun bit ha durata 104 µs. Il byte trasmesso è 0x0F (0000 1111) a partire dal bit meno significativo, cioè "al contrario":

Segnale seriale asincrono

Il segnale è generato dal seguente codice:

void setup()
{ Serial.begin(9600);
}

void loop()
{ Serial.write(0x0F);
  delay(4);
}

Attività 1

SoftwareSerial Library

Se si desidera utilizzare più di un'interfaccia seriale è possibile usare la libreria SoftwareSerial che permette la trasmissione e la ricezione di segnali seriali asincroni senza usare hardware dedicato. Questa libreria ha diversi limiti (velocità ridotta, uso pesante della CPU, interrupt disattivate...), ma è una buona risorsa se si vuole usare un'interfaccia seriale per ricevere da dispositivi diversi dal PC oppure serve una seconda interfaccia seriale.

La figura di apertura mostra i segnali relativi a due interfacce seriali gestiti contemporaneamente da Arduino:

Attività 2

Lo scopo è usare Arduino per ricevere e trasmettere in contemporanea due flussi di bit, usando due interfacce seriali. Le fasi seguenti devono essere verificate in sequenza:

  1. Utilizzare un primo Arduino per generare una sequenza di byte usando le SoftwareSerial e visualizzare il segnale trasmesso con l'oscilloscopio. L'esempio di apertura utilizza una velocità di 30 800 bit/s
  2. Collegare un secondo Arduino per ricevere quanto trasmesso dal primo Arduino. Anche se non strettamente necessario, è consigliabile usare un secondo PC per programmare Arduino ed usare il modulo UART per trasmettere al PC quanto ricevuto. Quale è la velocità usata nell'esempio di apertura?

Nel caso non si disponga di un oscilloscopio, in questo file è disponibile un esempio utilizzabile con il software di Picoscope in modalità demo.

RS485

RS485 permette una comunicazione half-duplex tra più dispositivi, anche su distanze relativamente lunghe distanze. Qui una descrizione approfondita.

Attività 3 [avanzata]

Realizzare il collegamento tra due o più nodi in cui il doppino è pilotato da un integrato MAX485 o simile.

VirtualWire

Spostato in questa pagina.


Pagina creata nel dicembre 2021
Ultima modifica: 28 dicembre 2021


Licenza "Creative Commons" - Attribuzione-Condividi allo stesso modo 3.0 Unported


Pagina principaleAccessibilitàNote legaliPosta elettronicaXHTML 1.0 StrictCSS 3

Vai in cima