Cos’è il bus seriale UART
UART è l’acronimo di Universal Asynchronous Receiver/Transmitter, cioè trasmettitore/ricevitore asincrono universale.
È uno dei modi più semplici e diffusi per far comunicare tra loro due dispositivi elettronici, ad esempio:
- un microcontrollore e un computer,
- due microcontrollori,
- o un modulo esterno (GPS, Bluetooth, sensore, ecc.) con una scheda di controllo.

La UART è un protocollo seriale asincrono, cioè:
- Seriale → i bit vengono inviati uno dopo l’altro, su una sola linea dati.
- Asincrono → non c’è un segnale di clock condiviso tra i dispositivi; la temporizzazione è stabilita dal fatto che entrambi conoscono la stessa velocità di trasmissione (baud rate).
Quindi è importante che entrambi i dispositivi conoscano a quale velocità i dati sono trasmessi/ricevuti.
Come funziona una tipica comunicazione UART
Una comunicazione UART utilizza normalmente due fili:
- TX (Transmit) → il filo su cui il dispositivo trasmette i dati;
- RX (Receive) → il filo su cui il dispositivo riceve i dati.
Quindi per comunicare:
- Il TX di un dispositivo va collegato all’RX dell’altro.
- E viceversa.
Non serve altro, tranne una massa comune (GND).
Questo è il tipico collegamento UART tra due dispositivi. In alcuni casi, molto particolari, è possibile che ci siano delle linee aggiuntive per il controllo di flusso dei dati (CTS, RTS), tipiche dello standard RS232.
Formato dei dati
Quando un dispositivo equipaggiato con UART invia un byte, lo fa bit per bit secondo una struttura precisa chiamata frame.
Un frame UART tipico è composto da:
Start bit → 8 Data bit → (Parity bit) → Stop bit

Sequenza dei bit di una trasmissione UART nel tempo
Vediamo nel dettaglio cosa significano i bit:
- Start bit: è sempre a livello logico basso (0) e serve a segnalare che sta iniziando un nuovo byte.
- Data bit: di solito 8, ma possono essere anche 7 o 9. Sono il contenuto effettivo del byte.
- Parity bit (facoltativo): può essere usato per verificare se ci sono stati errori di trasmissione.
- Stop bit: è a livello logico alto (1) e può durare 1 o 2 bit; serve per “chiudere” la trasmissione.
Facciamo un esempio: se trasmettiamo sulla UART il byte 0x41 (la lettera “A”, ovvero ‘01000001’ in binario), la porta invierà sulla linea:
Livello basso (start) → 1,0,0,0,0,0,1,0 → livello alto (stop)
Il bit meno significativo (LSB) viene trasmesso per primo, mentre l’ultimo è il bit più significativo (MSB).

Sequenza dei bit in un frame di un byte di dati
Perchè il bit di START è a livello logico basso?
Perchè la linea TX, in condizioni di riposo è sempre a livello logico alto. Quando si avvia la trasmissione con il bit di START, il dispositivo ricevente si predispone a ricevere la sequenza dei bit che compongono l’informazione da trasmettere (in questo caso 8 bit).
Baud Rate: la velocità di trasmissione
Il baud rate è il numero di simboli (bit) trasmessi al secondo.
Valori comuni sono:
- 9600
- 19200
- 38400
- 57600
- 115200 baud.. e oltre..
Come già detto, entrambi i dispositivi devono usare lo stesso baud rate; altrimenti la comunicazione risulterà errata.
Caratteristiche elettriche dei livelli logici
Ma UNO o ZERO, che vuol dire in termini elettrici?
Vediamo di seguito quali sono le differenze tra le varie applicazioni:
Logica TTL → Ad esempio la UART di Arduino, STM32 o Microcontrollori in generale:
- 0 (Zero) → 0 (Zero) Volt
- 1 (Uno) → 3.3V o 5V (a seconda dei casi)
Livelli RS-232 (Standard PC) → Ad esempio la porta seriale del computer o di dispositivi compatibili con lo standard RS-232.
- 0 (Zero) → +12 Volt
- 1 (Uno) → -12 Volt
Posso collegare una porta RS232 standard ad un microcontrollore? Si, ma solo attraverso un convertitore di livelli logici, come ad esempio un MAX232 https://www.analog.com/en/products/max232.html
Come si può collegare un bus UART di un microcontrollore al PC tramite una porta USB? Ci sono molte soluzioni a tal riguardo, le più comuni sono quelle di utilizzare un convertitore USB-Seriale come ad esempio FT232, CP2104 o CH340. Questi dispositivi sono anche disponibili già in board pre-saldate, pronte per essere utilizzate in circuiti “breadboard” o prototipi.
Un esempio pratico: Far comunicare Arduino con il PC
In una qualsiasi board Arduino UNO o Arduino Nano, è già integrata l’interfaccia tra UART e porta USB. Nell’ IDE di Arduino, è già disponibile l’interfaccia grafica/testo per visualizzare ed inviare caratteri da/per la porta UART di Arduino.
- Apriamo l’IDE di Arduino, creiamo un nuovo Sketch e digitiamo questo semplice codice:
void setup() {
Serial.begin(9600); // imposta il baud rate
}
void loop() {
Serial.println("Ciao da Arduino!");
delay(1000);
}
2. Apriamo il monitor seriale dell’IDE e vediamo che Arduino invia, ogni secondo sulla porta UART, la sequenza di caratteri definita in “Serial.println”, con la velocità di 9600 BAUD, definita nella funzione Serial.begin.

Un secondo esempio pratico: Facciamo comunicare due Arduino UNO via UART:
Per fare questo esercizio, dovremmo utilizzare due schede Arduino UNO (io ho usato due Arduino UNO Rev3).
Le mettiamo in comunicazione tra loro, usando la porta UART presente sui pin digitali D0(Rx) e D1(Tx), incrociando le due linee Tx/Rx tra le due schede. Infine mettiamo in comune le linee GND con un terzo filo (I collegamenti vanno fatti dopo aver caricato gli Sketch in entrambe le schede).
Sulla prima scheda, che chiameremo “A”, carichiamo questo Sketch:
void setup() {
Serial.begin(9600);
}
void loop() {
Serial.println("Messaggio da A");
delay(1000);
}
Sulla seconda scheda, che chiameremo “B”, carichiamo questo Sketch:
void setup() {
Serial.begin(9600);
}
void loop() {
if (Serial.available()) {
String msg = Serial.readStringUntil('\n');
Serial.print("Ricevuto: ");
Serial.println(msg);
}
}
Quindi eseguiamo i collegamenti della porta UART tra le schede:

e apriamo i relativi Monitor Seriale sull’IDE di Arduino:
Scheda A

Scheda B

In questo esempio vediamo che la Scheda A invia, ogni secondo, la sequenza di caratteri “Messaggio da A”, che viene ricevuta dalla Scheda B attraverso la UART. La Scheda B, quando rileva la presenza di caratteri nel buffer seriale (Serial.available), lo legge e lo riporta sulla porta UART seriale del PC tramite le funzioni (Serial.print e Serial.println).
In questo articolo abbiamo visto:
- Cosa è la port UART e le sue caratteristiche
- Come funziona una tipica comunicazione UART
- Quali sono le velocità standard (BAUD)
- Come si utilizza la porta UART in Arduino
- Come si fa a far comunicare due Arduino tramite la porta UART
Contribuisci a far crescere questo sito
Se sei arrivato alla fine di questa pagina, ci auguriamo che l’argomento è stato di tuo interesse.
L’obiettivo di questo sito è divulgare tutorial e corsi sulle materie Elettronica e Programmazione, con la speranza di poter aiutare sempre più persone che desiderano aumentare le proprie conoscenze.
Tutti i tutorial e gli articoli sono scritti con cura e verificati. Per mantenere sempre alto il livello di qualità delle informazioni fornite, puoi aiutarci nei seguenti modi:
- ✅ Acquista un corso di formazione. I corsi sono di elevata qualità, curati nei dettagli e sempre aggiornati.
- ✅ Acquista un articolo consigliato nella pagina partner. Per te il prezzo sarà sempre uguale. Il nostro partner ci riserverà una piccola quota contributiva sul tuo acquisto.
Inoltre non dimenticare di rimanere in contatto con noi attraverso i Social Network. Se non lo fai adesso, probabilmente non ci rivedrai più: ⬇️
Grazie per il tuo contributo !!