Collegare un convertitore RS485 a un ESP32
Molti impianti di casa parlano RS485: pavimenti radianti, inverter fotovoltaici, contatori, pompe di calore. Un ESP32 ha tre porte seriali, ma lavora a 3,3 V con segnali riferiti a massa; il bus invece usa una coppia di fili differenziale. In mezzo serve un convertitore da pochi euro. Questa guida racconta come lo abbiamo collegato in due casi reali, su una scheda relè e su un pannello touch da parete, per farli dialogare con il bus di un impianto a pavimento Radiax. Gli errori che abbiamo fatto noi sono i più comuni, e qui li trovi in anticipo.
RS485 in breve
Su un bus RS485 i dati viaggiano su due fili, A e B: conta la differenza di tensione fra i due, non la tensione rispetto a terra. Per questo regge decine di metri di cavo e i disturbi di un quadro elettrico. Quasi sempre è half duplex: parla uno alla volta, gli altri ascoltano. Alle due estremità del cavo ci sono le terminazioni, resistenze da 120 Ω fra A e B, e da qualche parte ci sono le resistenze di riposo, che tengono la linea in uno stato definito quando nessuno parla.
Il convertitore TTL-RS485 fa due cose: traduce il TX e l’RX della seriale dell’ESP32 nel segnale differenziale, e decide quando occupare la linea per trasmettere.
Quale convertitore
A 3,3 V. I piedini dell’ESP32 non reggono i 5 V. Molti moduli accettano un’alimentazione fra 3,3 e 5 V: alimentali a 3,3 V, così anche i segnali che mandano all’ESP32 restano a 3,3 V.
Con direzione automatica, se puoi. Un modulo come l’XY-485 passa da solo in trasmissione quando vede scendere la linea TX: niente piedino in più e niente tempi da gestire nel firmware. I moduli con il MAX485 nudo hanno invece il piedino DE/RE, che va collegato a un GPIO e alzato prima di trasmettere e abbassato subito dopo l’ultimo bit. Funzionano bene, ma sono un’occasione in più di sbagliare.
C’è un limite da conoscere. Molti convertitori a direzione automatica pilotano la linea solo per gli zeri e lasciano gli uni alle resistenze di riposo. Su un bus lungo, con altre schede attaccate, a volte non basta: se gli altri ti sentono male, è uno dei sospetti.
Quali piedini dell’ESP32
La UART0 è quella della presa USB e del caricamento del firmware: lasciala stare. Per il bus usa la UART2, che sui DevKit sta di solito sui piedini 16 (RX) e 17 (TX). Sul pannello AZ-Touch MOD sono liberi, e sono quelli che abbiamo usato.
Non è un obbligo: l’ESP32 può portare una seriale su quasi tutti i piedini. Sulla scheda relè Devantech ESP32LR88 i soli due piedini del modulo che la scheda lascia liberi sono il 35 e il 32, e lì abbiamo usato il GPIO35 per ricevere e il GPIO32 per trasmettere. Il 35 è un piedino di solo ingresso, perfetto per l’RX. Qualche regola per scegliere:
- Evita i piedini di avvio (0, 2, 5, 12, 15) e quelli della memoria flash (dal 6 all'11).
- Sui moduli WROVER il 16 e il 17 servono alla memoria in più: scegli un’altra coppia libera, per esempio il 25 e il 26.
- Non passare dagli ingressi della scheda. Gli ingressi a morsetto di molte schede relè hanno un filtro (sulla ESP32LR88, 10 kΩ e 100 nF: circa un millisecondo). A 9600 baud un bit dura un decimo di millisecondo, e il filtro se lo mangia. Il convertitore va collegato direttamente ai piedini del modulo, anche se vuol dire saldare.
Nel codice basta dire quali piedini usare. Con Arduino:
HardwareSerial bus(2); // UART2
void setup() {
Serial.begin(115200);
bus.begin(9600, SERIAL_8N1, 16 /* RX */, 17 /* TX */);
}
void loop() {
// solo ascolto: stampa in esadecimale quello che passa sul bus
while (bus.available()) Serial.printf("%02x ", bus.read());
}
Con ESPHome è un blocco uart: con rx_pin, tx_pin e baud_rate. La velocità e il formato (qui 9600 8N1) sono quelli del tuo bus: se non li conosci, prima vanno trovati ascoltando.
TXD e RXD: dove si sbaglia
Sui convertitori le scritte TXD e RXD non vogliono dire la stessa cosa per tutti i produttori. Su alcuni portano il nome del piedino dell’ESP32 a cui vanno, e quindi non si incrociano: sull’XY-485, TXD va al TX dell’ESP32 e RXD al suo RX. Su altri vanno incrociati come fra due seriali qualsiasi. Lo schema stampato sul retro del modulo, quando c’è, lo dice; altrimenti decide la prova.
Per la prima prova c’è un trucco: una resistenza da 1 kΩ in serie sul filo del TX dell’ESP32. Se il verso è sbagliato, due uscite si trovano una contro l’altra, e con la resistenza in mezzo non si rompe niente. Quando l’ascolto funziona, toglila o cortocircuitala con una goccia di stagno. Sull’XY-485 quel filo ha già la sua spia e la sua resistenza verso il positivo: con 1 kΩ in serie lo zero arriva al convertitore a qualche decimo di volt, e il circuito che lo mette in trasmissione può non scattare del tutto.
Anche i colori del cavetto in dotazione non sono affidabili: sul nostro il nero era il positivo e il giallo la massa. Segui ogni filo fino alla scritta accanto al connettore.
Massa, terra e terminazioni
Serve un riferimento comune. A e B da soli bastano solo se il convertitore e il bus hanno già la stessa massa, per esempio quando l’ESP32 è alimentato dal bus stesso. Se ha un alimentatore suo, porta il negativo del bus alla massa del convertitore.
Il terzo morsetto non è sempre un GND. Sull’XY-485, dal lato del bus, c’è scritto 接大地, cioè “a terra”: è il ritorno delle protezioni contro le sovratensioni. Col tester, a convertitore scollegato, controlla se è in continuità con il GND del lato ESP32. Se non lo è, il negativo del bus va al GND.
Una terminazione di troppo. Misura la resistenza fra A e B del convertitore scollegato: circa 120 Ω vuol dire che ha la terminazione a bordo. Un bus esistente è già terminato, e una resistenza in più lo carica.
Ogni convertitore in più pesa. Ci è successo davvero: una chiavetta USB-RS485, dimenticata sui morsetti dopo una sessione di ascolto dal PC, ha fatto sparire per tre settimane la sonda più lontana dell’impianto. Staccata la chiavetta, la sonda è tornata a rispondere da sola. Sul bus deve restare solo quello che serve.

Il punto del bus conta
In teoria un bus è lo stesso filo dappertutto. In pratica no. Con la scheda relè collegata in un certo punto del cavo, l’ESP32 sentiva perfettamente chi interroga il bus, ma le sue risposte non arrivavano: l’altro ripeteva una richiesta su due. Spostando i fili sul morsetto del bus della scheda del collettore, tutte le prove sono riuscite. Il pannello invece funziona dal posto del vecchio display, sul suo cavo.
La regola che ne abbiamo tratto: se senti ma non ti sentono, prima di cambiare firmware o convertitore prova a cambiare punto di collegamento.
Le prove, nell’ordine
- A corrente staccata, col tester. Niente continuità fra 3,3 V e massa, né fra RX e TX. Se hai saldato su un modulo, controlla le piazzole vicine: sulla ESP32LR88 quella accanto al TX comanda il relè 1, e una goccia di stagno di troppo collegherebbe la seriale al relè.
- Solo ascolto. Il firmware non trasmette niente. Su un bus che parla devono comparire messaggi sensati; se non compare niente, scambia i due fili dei dati, poi A e B. Questa prova non può disturbare l’impianto.
- Solo dopo, trasmettere, e solo se sai che cosa stai rispondendo. Due dispositivi con lo stesso indirizzo si coprono a vicenda: se il tuo ESP32 prende il posto di un apparecchio, l’originale va staccato dal bus.
Un dettaglio utile: con le resistenze interne dell’ESP32 si può capire se il convertitore c’è. Si tira il piedino RX prima verso massa e poi verso il positivo: se la lettura segue la resistenza, sul filo non c’è nessuno; se resta ferma, il convertitore lo sta pilotando. Sui piedini dal 34 al 39, che le resistenze interne non le hanno, serve una resistenza esterna, per esempio 100 kΩ verso massa.
Che cosa è provato
- Pannello AZ-Touch MOD con XY-485 sui piedini 16 e 17, alimentato dal bus: fa il display di un impianto Radiax vero dal 10 ottobre 2026.
- Scheda relè ESP32LR88 con il convertitore saldato sui piedini 35 e 32: funziona sul bus dall'8 ottobre 2026, collegata al morsetto della scheda del collettore.
- Non provati: i convertitori con piedino DE/RE e la scheda a sedici relè, per cui esiste solo lo schema.
I disegni e i firmware sono nel repository di ORFHAn. Come è fatto il bus che abbiamo usato per le prove, e chi lo comanda, lo racconta rehumatism.