Un GPIO dell’ESP32 fornisce un segnale da 3,3 V, mentre molti moduli relè comuni sono progettati per un’alimentazione a 5 V. Questa differenza può lasciare il relè attivato solo parzialmente, impedirne lo spegnimento affidabile o provocare clic intermittenti. Non basta controllare la tensione della bobina: bisogna anche verificare come il modulo interpreta il segnale in ingresso.
La guida pubblicata su DEV Community, originariamente su iot.gripe, suggerisce di controllare la tensione della bobina, la compatibilità logica, la polarità di attivazione, l’isolamento e la capacità dei contatti prima dell’acquisto. Random Nerd Tutorials mostra che alcuni moduli accettano effettivamente il livello dell’ESP32: in quello descritto, l’ingresso si attiva sotto circa 2 V. La differenza tra i due casi spiega perché una scheda può controllare un modulo senza problemi e non funzionare con un altro che, a prima vista, sembra equivalente.
La bobina e l’ingresso sono due requisiti distinti
Un relè meccanico usa una piccola corrente per azionare un elettromagnete, che sposta i contatti in grado di aprire o chiudere un altro circuito. Il GPIO non deve alimentare direttamente la bobina: il modulo include un transistor per fornire quella corrente e un diodo per proteggere il circuito quando la bobina viene disattivata. Può anche includere un optoaccoppiatore, un LED indicatore e morsetti COM, NO e NC.
È utile distinguere due domande che spesso vengono confuse nelle schede prodotto. La prima riguarda la tensione necessaria al funzionamento della bobina: la guida di iot.gripe indica che 5 V sono i più comuni, anche se esistono moduli con bobina da 3,3 V. La seconda riguarda il livello che l’ingresso IN deve ricevere per attivare o disattivare il circuito di controllo. Il fatto che la bobina sia da 5 V non significa di per sé che il GPIO da 3,3 V sia incompatibile; e la dicitura «compatibile con ESP32» in un annuncio non chiarisce necessariamente come è stato realizzato l’ingresso.
L’esperienza descritta da Random Nerd Tutorials è un esempio concreto: l’ingresso del modulo si attiva quando scende sotto circa 2 V, quindi può rispondere a un segnale dell’ESP32. La guida di iot.gripe, invece, mette in guardia dai moduli da 5 V con optoaccoppiatore e attivazione attiva bassa, nei quali un HIGH da 3,3 V potrebbe non bastare a spegnere completamente l’optoaccoppiatore. Il relè potrebbe rimanere inserito, fare clic in modo intermittente o lasciare il LED debolmente acceso.
Cosa controllare prima di scegliere il modulo
La prima verifica consiste nell’accertarsi che il produttore dichiari la compatibilità dell’ingresso con la logica a 3,3 V. Se la scheda tecnica non è chiara, non bisogna dedurlo soltanto dalla tensione di alimentazione: prova il modulo con l’ESP32 prima di collegarlo a un carico. Un’altra possibilità è scegliere un modulo con bobina da 3,3 V, anche se questo non sostituisce la verifica dell’ingresso di controllo.
In seguito, individua se l’attivazione è attiva bassa o attiva alta. Nel primo caso, IN attiva il relè quando passa a LOW; nel secondo, lo attiva quando riceve HIGH. Molti moduli economici sono attivi bassi e alcuni permettono di selezionare la logica tramite un ponticello. La polarità influisce sia sul cablaggio logico sia sul programma: se è invertita, il comando che lo sviluppatore considera «accensione» può spegnere il relè, e viceversa.
Un ponticello JD-VCC può consentire di separare l’alimentazione della bobina da quella della parte di controllo. La guida di iot.gripe propone di rimuovere il ponticello, alimentare la parte dell’optoaccoppiatore a 3,3 V e la bobina separatamente a 5 V. Random Nerd Tutorials spiega che, rimuovendo il ponticello dal proprio modulo, serve un’alimentazione indipendente per l’elettromagnete e che l’optoaccoppiatore può isolare fisicamente i due circuiti. Questa configurazione dipende dal design specifico del modulo: bisogna seguire il suo schema e non dare per scontato che la presenza del ponticello garantisca l’isolamento in qualsiasi configurazione.
Bisogna anche scegliere il tipo di contatto in base al comportamento desiderato. COM è il terminale comune; NO (normalmente aperto) mantiene il circuito aperto finché il relè non viene attivato, mentre NC (normalmente chiuso) lo mantiene collegato fino all’attivazione. Per una lampada che deve accendersi solo quando riceve un comando, Random Nerd Tutorials usa NO. È una scelta relativa allo stato elettrico del carico, distinta dalla logica HIGH o LOW che attiva l’ingresso del modulo.
Infine, controlla il numero di canali e la capacità dei contatti. Un modulo multicanale controlla più uscite, ma ogni canale aggiunge un ingresso e un carico da alimentare. La guida di iot.gripe cita come valore frequente una specifica di 10 A a 250 V AC e raccomanda di mantenere un margine rispetto al carico; non presenta questo valore come adatto a qualsiasi apparecchio. Per carichi elevati, come stufe, riscaldatori o motori, consiglia di non avvicinarsi al limite e di ricorrere a contattori adeguati e a un elettricista.
Alimentazione, isolamento e sicurezza
In una scheda alimentata via USB, il pin da 5 V di solito può alimentare uno o due relè, secondo la guida di iot.gripe. Per più relè, consiglia un alimentatore separato con massa comune. Random Nerd Tutorials distingue anche l’alimentazione di controllo da JD-VCC, che alimenta l’elettromagnete. La scelta tra un’unica alimentazione e un alimentatore separato influisce sul montaggio e sull’isolamento; non conviene farla solo per comodità se il modulo verrà collegato alla rete elettrica.
Un optoaccoppiatore aggiunge separazione tra il segnale del microcontrollore e il circuito del relè, ma la configurazione delle alimentazioni è importante: Random Nerd Tutorials indica che, con il ponticello inserito, VCC e JD-VCC sono collegati e l’elettromagnete viene alimentato direttamente dal pin di alimentazione della scheda; in questa configurazione, i circuiti non sono fisicamente isolati tra loro. Rimuovere il ponticello e usare un’alimentazione indipendente per la bobina permette di ottenere l’isolamento offerto dall’optoaccoppiatore, secondo la spiegazione.
La prova iniziale va eseguita con il modulo scollegato dalla rete elettrica. La guida di iot.gripe raccomanda di verificare l’accensione e lo spegnimento tramite il LED e il clic del relè prima di collegare un carico. Anche BlueGrays suggerisce di usare prima un LED al posto di una lampada. La rete elettrica comporta il rischio di scosse o incendi: se non si ha esperienza con gli impianti elettrici, la guida di iot.gripe consiglia di affidare il collegamento a un elettricista. Random Nerd Tutorials raccomanda di tenere tutto scollegato dalla rete mentre si programma o si cabla e di collocare il montaggio finale in una scatola che impedisca di lasciare esposti i terminali della corrente alternata.
Anche l’avvio fa parte del progetto
Anche se la logica funziona durante il normale funzionamento, il relè può attivarsi brevemente all’avvio. La causa indicata da iot.gripe è che il pin può trovarsi in uno stato indefinito finché il programma non lo configura. Per questo consiglia di impostare quanto prima lo stato di spegnimento in setup() ed evitare i pin di avvio; per l’ESP32-C3 cita GPIO 2, 8 e 9 come pin da evitare, perché il loro stato durante l’avvio può attivare il relè per un istante.
Il codice dovrebbe rappresentare esplicitamente la polarità del modulo, invece di distribuire le inversioni in diverse parti del programma. La guida di iot.gripe mostra una funzione che converte lo stato logico desiderato in HIGH o LOW in base a un’opzione di attivazione attiva bassa. BlueGrays applica lo stesso principio nel suo esempio per GPIO 26 e imposta lo stato di spegnimento durante la configurazione dell’uscita. È una piccola scelta progettuale con un effetto pratico: rende chiaro il rapporto tra il comando dell’applicazione e il livello elettrico inviato al pin.
Anche il pin assegnato merita una verifica. Random Nerd Tutorials collega il suo esempio a GPIO 26 e chiarisce che si può usare un altro GPIO adatto; anche BlueGrays propone GPIO26 come valore predefinito. Non è un motivo per copiare quel numero senza controllare la scheda: la guida di iot.gripe raccomanda di evitare i pin di avvio sull’ESP32-C3 e il cablaggio deve corrispondere al modello specifico utilizzato.
Quando conviene un’altra tecnologia
Per accendere e spegnere una luce poche volte al giorno, la guida di iot.gripe considera il relè meccanico l’opzione più semplice e affidabile. Ha contatti fisici e fa clic; la sua durata è limitata da quei contatti. Un relè a stato solido (SSR) non ha parti mobili e funziona in silenzio, ma può lasciar passare una piccola corrente quando è spento. In alcune lampadine LED, questa dispersione è sufficiente a produrre una luce fioca o sfarfallii.
Secondo la tabella di quella guida, né l’SSR né il relè meccanico sono generalmente adatti a regolare l’intensità. Per attenuare un carico, propone un TRIAC con il circuito appropriato; avverte inoltre che può esserci corrente di dispersione quando è spento. La scelta dipende quindi dall’applicazione specifica: commutazioni frequenti e silenziose suggeriscono l’SSR; una luce con accensioni occasionali, il relè meccanico; la regolazione, un TRIAC con il circuito adeguato.
Il criterio finale non è acquistare il modulo con più canali né quello che dichiara una bobina da 5 V. Bisogna verificare che l’ingresso riconosca i 3,3 V dell’ESP32, decidere quale alimentazione e isolamento richiede il montaggio, impostare uno stato sicuro durante l’avvio e verificare la commutazione senza un carico collegato alla rete. Se il produttore non specifica la compatibilità logica, questa verifica va fatta prima di collegare la lampada.
Fonti: DEV Community, Random Nerd Tutorials, BlueGrays