In molte applicazioni IOT ti troverai a usare dispositivi ad alto assorbimento, che richiedono correnti che l’ESP32 non è in grado di fornire. In questi casi, prima di passare ai relays elettronici o meccanici possiamo ricorrere ad un economico transistor di media potenza come il TIP120.
Un errore comune tra i neofiti è provare a pilotare motori elettrici, servocomandi o decine di Led usando la corrente di uscita di un ESP32 o di un Arduino. Purtroppo i dispositivi esterni possono richiedere correnti elevate, molto più alte di quelle erogabili da un controller. Arduino, ad esempio può erogare appena 40mA a 5.0V e quindi 0.2W di potenza a fronte di richieste di oltre 10~100W!
Per fare un esempio, la striscia di LED RGB che useremo in questo progetto richiede correnti di 5~6 Ampere per una potenza complessiva di circa 70W: pensa alla corrente che sarebbe necessaria per azionare un cancello automatico!
🔑
Come calcolare la corrente necessaria: La corrente che può consumare una striscia di LED di 5 mt alimentata a 12V dipende dalla potenza nominale della striscia. La potenza nominale è indicata in Watt per metro lineare, quindi per calcolare la corrente totale della striscia basta moltiplicare la potenza nominale per la lunghezza della striscia. Nel nostro progetto la striscia di LED da 14,4W/mt consuma 72W su una lunghezza di 5mt. La corrente totale assorbita dalla striscia sarà quindi 72W / 12V = 6A.
Detto questo, la soluzione ai nostri problemi di erogazione è molto semplice: basta usare un transistor come switch, e per questo compito non esiste nulla di meglio che usarne uno di tipo Darlington come ad esempio il TIP120.
🔑
Quando applichiamo una piccola tensione alla base di un transistor Darlington, il componente si attiva e permette alla corrente a 12V di fluire liberamente e alimentare il carico, nel nostro caso i LED.
Se vuoi approfondire la differenza tra corrente e tensione ti consiglio di leggere questo articolo del blog di Robotdazero.
Il nostro progetto
Obiettivo di questo prototipo è pilotare da smartphone o desktop una striscia di LED RGB a 12V: la striscia verrà collegata a 3 TIP 120, a loro volta connessi ad un singolo ESP32. Le basi dei transistor sono collegate a 3 pin PWM dell’ESP32, uno ciascuno per le linee rosse, verdi e blu della striscia.
Per quanto riguarda il software, abbiamo creato un server web minimale da caricare sul browser digitando l’indirizzo IP acquisito del nostro ESP32.
La pagina Web contiene alcuni pulsanti per attivare / disattivare ogni colore. Ci sono anche pulsanti per mescolare i tre colori base e creare qualsiasi combinazione cromatica. Tengo a ricordarti che si tratta di un server web minimale e senza supporto per AJAX: per questo motivo noterai un breve ritardo (refresh) della pagina dopo la pressione di ogni pulsante.
🔑
Cosa è AJAX:
AJAX, abbreviazione di Asynchronous JavaScript and XML, è un insieme di tecnologie che consentono di scambiare dati tra un browser web e un server web in modo asincrono. Ciò significa che l'utente può continuare a interagire con la pagina web, anche mentre i dati vengono caricati.
AJAX è composto da diverse tecnologie, tra cui:
HTML/XHTML: il linguaggio di markup utilizzato per creare la struttura di una pagina web.
CSS: il linguaggio di stile utilizzato per definire l'aspetto di una pagina web.
JavaScript: il linguaggio di scripting utilizzato per aggiungere funzionalità dinamiche a una pagina web.
XMLHttpRequest: un'API JavaScript che consente di inviare richieste al server web e ricevere le risposte.
AJAX viene utilizzato per creare pagine web più dinamiche e interattive: ad esempio, viense spesso utilizzato per
aggiornare il contenuto di una pagina web senza ricaricarla da zero.
Lo schema elettrico del circuito
Segui attentamente la disposizione dei connettori, studia la foto e in pochi minuti sarai in grado di creare ogni combinazione di colore RGB sulla striscia.
Collega i terminali R,G & B della striscia al pin di collettore del transistor come da immagine.
Usando le tre resistenze da 10 Kohm collega la base di ogni transistor ai rispettivi pin D25, D26 e D27 dell’ESP32.
Le resistenze sono utili per limitare la corrente di ingresso nei transistor e non sono opzionali.
Inoltre tutti i dispositivi devono essere collegati tra di loro: il GND dell’ESP32 deve essere collegato al GND dei transistor e a quello disponibile nell’alimentatore esterno a 12V. L’ESP32 può essere alimentato da un semplice cavo USB collegato al PC. Nella immagine in alto puoi notare il rettangolo rosso attorno ai pin 26,27,25 dell’ESP32.
L’hardware utilizzato
Il circuito comprende pochi pezzi facili da assemblare anche senza una breadboard:
Se decidi di utilizzare PlatformIO dalla linea di comando crea un file “platformio.ini” con questo contenuto:
Finita la compilazione e l’upload puoi lanciare il tuo browser all’indirizzo che apparirà dopo la connessione. Dopo la apertura della pagina potrai usare i cursori per regolare separatamente i livelli dei tre colori fondamentali.
Conclusione
Una delle competenze che vorrai imparare con l’ESP32 è il pilotaggio di carichi esterni. Potrai così creare sistemi di illuminazione automatizzati, centraline di sicurezza avanzate e magari sistemi di irrigazione regolati dal controller.
Per questi progetti potrai avvalerti di transistor come il TIP120, ma anche di schede commerciali in grado di azionare grossi motori elettrici. Queste schede sono di utilizzo semplicissimo: basta collegare il loro pin di input ad uno dei pin dell’ESP32 (ad esempio 25, 26 e 27 del nostro prototipo) e il gioco è fatto!
Imparare a pilotare carichi esterni con ESP32 è certamente uno skill essenziale per chiunque voglia creare progetti di microelettronica avanzati.