Pin SERIAL

 

Questi sono i pin collegati alle UART (Universal Asynchronous Receiver/Transmitter), cioè le interfacce seriali. Te li spiego uno per uno.

1. Concetti base

  • L’ESP32-S3 ha più UART (tipicamente 3: UART0, UART1, UART2), tutte mappabili su vari pin GPIO.

  • Ogni UART ha di solito:

    • TXD → trasmissione dati

    • RXD → ricezione dati

    • RTS → Request To Send (controllo hardware del flusso)

    • CTS → Clear To Send (controllo hardware del flusso)

  • Le UART possono essere usate per:

    • Comunicazione con PC (monitor seriale)

    • Comunicazione con altri microcontrollori

    • Moduli esterni (GPS, sensori, Nextion, moduli Bluetooth, ecc.)

2. Mappatura pin che riporti

 

Pin GPIO Funzione UART Descrizione
GPIO15 V0RTS UART0 Controllo hardware RTS
GPIO16 V0CTS UART0 Controllo hardware CTS
GPIO17 V1TXD UART1 Trasmette dati
GPIO18 V1RXD UART1 Riceve dati
GPIO19 V1RTS UART1 RTS hardware
GPIO20 V1CTS UART1 CTS hardware
GPIO43 V0TXD UART0 Trasmette dati
GPIO44 V0RXD UART0 Riceve dati

 

3. Come si usano.

  • TXD → RXD dell’altro dispositivo e RXD → TXD dell’altro dispositivo.

  • RTS/CTS servono solo se vuoi usare hardware flow control; se no puoi lasciarli scollegati.

  • In Arduino IDE puoi inizializzare una UART così:
// Esempio per UART1
HardwareSerial Serial1(1); // 1 = UART1

void setup() {
  Serial.begin(115200);       // UART0 per debug su USB
  Serial1.begin(9600, SERIAL_8N1, 18, 17); // RX=18, TX=17
}

void loop() {
  if (Serial1.available()) {
    int val = Serial1.read();
    Serial.println(val); // manda dati su USB
  }
}

 

Nota: su ESP32-S3 puoi mappare quasi tutte le UART su qualsiasi GPIO compatibile, grazie alla funzione di “GPIO matrix”.

 

4. Regole pratiche

  1. V0 → UART0 (tipicamente usata per USB/Seriale per debug)

  2. V1 → UART1 (puoi collegarla a moduli esterni)

  3. TXD/RXD bastano se non usi hardware flow control.

  4. Se usi Nextion o moduli GPS, di solito basta TX/RX senza RTS/CTS.

UART2 sull’ESP32-S3 (ideale per collegare il Nextion).

1. UART disponibili sull’ESP32-S3

 

UART Pin tipici (può variare) Uso comune
UART0 GPIO43 (TXD), GPIO44 (RXD) Debug/USB seriale
UART1 GPIO17 (TXD), GPIO18 (RXD) Moduli esterni, sensori, comunicazioni generiche
UART2 variabile (es. GPIO?), qui puoi mappare TX/RX Moduli esterni come Nextion

 

Nota: sull’ESP32-S3 quasi tutti i GPIO compatibili possono essere assegnati a qualsiasi UART tramite la GPIO matrix, quindi puoi scegliere quasi liberamente i pin per la UART2.

 

2. Come scegliere i pin per la UART2

 

Supponiamo tu voglia usare UART2 per il Nextion. Serve:

  • TX2 → RX del Nextion

  • RX2 → TX del Nextion

  • GND comune

  • (Opzionale) VCC se alimenti il display dall’ESP32

1️⃣ UART0 – TX = GPIO43, RX = GPIO44 (V0TXD/V0RXD)

  • A cosa serve: di default è la UART di sistema collegata all’USB per caricare gli sketch e per il monitor seriale.

  • Cavo USB → UART0: esattamente, quando colleghi l’ESP32-S3 al PC via USB, il chip usa internamente la UART0 per dialogare con l’IDE.

  • Cosa succede se colleghi altre cose ai pin TX/RX di UART0:

    • Può creare conflitti durante il caricamento dello sketch o la stampa su Serial Monitor.

    • Meglio non usare i pin di UART0 per altri dispositivi, almeno durante lo sviluppo/debug via USB.

2️⃣ UART1 – TX = GPIO17, RX = GPIO18 (V1TXD/V1RXD)

  • Uso tipico: collegare moduli esterni (Nextion, sensori seriali, GPS, ecc.)

  • Ha pin dedicati, ma puoi anche mappare questa UART su altri pin se vuoi (grazie alla GPIO matrix).

  • Non ha conflitti con la USB, quindi puoi usarla liberamente.

3️⃣ UART2 – nessun pin fisso

  • Sì, puoi assegnare i pin che vuoi, purché siano compatibili con la funzione UART (GPIO abilitati).

  • Quando assegni i pin di UART2:

    • Non puoi usare gli stessi pin di UART0 o di UART1 contemporaneamente per UART2.

    • Se provi a sovrapporre, avrai conflitti di bus: dati che si mescolano, malfunzionamenti o mancato caricamento sketch.

  • Quindi UART2 ha pin “liberi” da scegliere, ma non quelli già usati da altre UART attive.

4️⃣ Regola pratica per il Nextion

  • Se vuoi usare il Nextion senza problemi:

    1. Lascia UART0 per USB / debug.

    2. Usa UART1 o UART2 per il Nextion.

    3. Non assegnare i pin della UART2 a quelli di UART0 (TX/RX USB) o UART1 già usati.

  • Ad esempio, se UART2 non ha pin dedicati, puoi scegliere due GPIO liberi, tipo GPIO21 (TX2) e GPIO22 (RX2), e collegarci il Nextion.

  • Nel codice Arduino:

HardwareSerial Serial2(2); // UART2
Serial2.begin(9600, SERIAL_8N1, 22, 21); // RX=22, TX=21
  • Funzionerà senza interferire con USB o UART1.

💡 In sintesi:

  • UART0 → solo USB / debug / caricamento sketch

  • UART1 → moduli esterni, pin dedicati

  • UART2 → pin a scelta (liberi), non sovrapporre altri UART)

Come funziona allora per UART2

  1. UART2 non ha pin “fissi”: puoi assegnare qualsiasi GPIO compatibile come TX/RX tramite la GPIO matrix.

  2. Però devi scegliere GPIO liberi sulla tua scheda, cioè quelli visibili nello schema/pinout che non siano già usati da altre funzioni critiche (UART0, Touch, ADC, STRAP, SPI flash).

  3. Esempio di pin liberi possibili per UART2 (dipende dal tuo schema, vedi quali GPIO non assegnati ad altre funzioni):

    Funzione prevista Pin liberi?
    TX2 (Nextion) GPIO21 o altri liberi dal tuo schema
    RX2 (Nextion) GPIO20, GPIO19, ecc., liberi
  • Basta evitare di riciclare i pin della UART0 (TXD/RXD USB) o della UART1 già in uso, altrimenti conflitto.

1️⃣ Pin da evitare

Seriali (UART dedicate)

  • GPIO15, 16, 17, 18, 19, 20, 43, 44
    → meglio non usarli per altri dispositivi, perché sono già mappati su UART0/1.

STRAP (boot mode)

  • GPIO0, 3, 45, 46
    → determinano modalità di avvio. Evitare di collegarci sensori o carichi.

JTAG / USB

  • GPIO39, 40, 41, 42
    → serve per debug e USB, meglio non toccarli.

2️⃣ SPI flash / periferiche critiche

Sulla tua scheda, l’ESP32-S3 usa la flash interna via SPI. I pin tipici dedicati allo SPI flash (VSPI / HSPI) sono:

Pin SPI flash Funzione
GPIO6–11 QSPI flash (CLK, CS, D0–D3)

Questi pin non devono essere usati per altre funzioni, altrimenti il chip non parte.

3️⃣ Pin inesistenti o non esposti

  • GPIO22 → 34 → non esistono sui pin esterni della scheda
    → non puoi usarli

4️⃣ Quindi quali pin rimangono liberi?

Dalla numerazione GPIO0–46, togliendo:

  • Seriali → 15, 16, 17, 18, 19, 20, 43, 44

  • STRAP → 0, 3, 45, 46

  • JTAG/USB → 39, 40, 41, 42

  • SPI flash → 6–11

  • Pin non esistenti → 22–34

Rimangono i GPIO liberi:

 

GPIO liberi plausibili Note
1, 2, 4, 5 ADC1_CH0–CH4, touch (alcuni)
7, 8, 9, 10 ADC1_CH6–CH9
12, 13, 14 ADC2_CH1–CH3 (attenzione Wi-Fi se usi ADC2)
21, 25, 26, 27, 28, 29, 30, 31, 32, 33, 35, 36, 37, 38 GPIO liberi per UART2, sensori o altri moduli

 

Ovviamente va sempre verificato sullo schema esatto della tua scheda, perché alcune schede compatte non espongono tutti i GPIO.