360 più 1260 fa 1620: con questa somma, un utente del forum Arduino si è convinto di aver consumato quasi tre volte la carica della sua batteria LiPo da 600 mAh dopo appena tre giorni di prove. In realta’ la batteria era quasi piena, e l’errore era di unità di misura: aveva sommato milliampere come se fossero milliampereora. Chi vuole alimentare un ESP32 a batteria per mesi parte da qui: l’autonomia si calcola moltiplicando la corrente di ogni fase di lavoro per il tempo che quella fase dura, e si comprime al massimo il tempo in cui il chip resta acceso. Il resto di questo articolo è la ricostruzione completa di quel calcolo, con i numeri veri del caso e il metodo per arrivare dalla batteria ai mesi, o dai mesi alla batteria.
Sommare i milliampere non da’ i milliampereora
Il caso è istruttivo perché è l’errore che fanno quasi tutti la prima volta. La scheda era una LOLIN32 Lite con una LiPo da 600 mAh, programmata per svegliarsi ogni ora, leggere una sonda e tornare in deep sleep, con una connessione WiFi ogni 24 ore per spedire i dati. L’utente aveva misurato i consumi con cura: circa 120 mA durante la connessione WiFi e circa 20 mA durante la lettura della sonda. Dopo 63 letture e 3 connessioni ha moltiplicato e sommato le correnti, ottenendo un consumo presunto superiore alla capacità della batteria, e si è chiesto dove sbagliasse il conto.
Sbagliava l’unità. Il milliamper misura una corrente istantanea, cioè quanta carica scorre in un secondo; il milliamperora misura una carica accumulata, cioè una scorta. Per passare dall’una all’altra serve il tempo: mA moltiplicati per le ore danno i mAh consumati. In unità fisiche, un amperora equivale a 3600 coulomb, quindi quella batteria conteneva 2160 coulomb di carica: se il chip avesse assorbito in modo continuo la corrente misurata in trasmissione, l’avrebbe svuotata in circa cinque ore. Ma il WiFi non restava attivo in modo continuo: si accendeva per pochi secondi al giorno.
Ecco perché, per stimare un sensore a batteria, i consumi vanno sempre associati alla loro durata. I valori tipici di un ciclo di misura su ESP32, misurati sul campo o dichiarati per il solo chip in condizioni ideali, si collocano su ordini di grandezza molto diversi:
- Connessione e trasmissione WiFi: intorno ai 120 mA, per pochi secondi a sessione;
- Lettura di un sensore con chip attivo: intorno ai 20 mA, spesso per meno di un secondo;
- Deep sleep: pochi microampere, con un valore di riferimento di circa 5 uA per il solo chip in condizioni ideali.
Con questi ordini di grandezza il conto cambia segno. Se una fase assorbe 600 mA ma dura un minuto, consuma 10 mAh: tanta corrente per così poco tempo pesa meno di una corrente cento volte più piccola che scorre per giorni. Nel caso del forum, il consumo dominante non era affatto il WiFi: era il deep sleep moltiplicato per 24 ore al giorno, più le perdite della scheda stessa, che il deep sleep del chip non riesce a spegnere.
L’energia si conta in wattora quando c’e’ un convertitore
Finora abbiamo ragionato a tensione costante, dove i mAh bastano. Ma una LiPo ha tensione nominale di 3,7 V, che scende a 3,2 V a fine scarica e sale a 4,2 V appena caricata, mentre il circuito spesso lavora a 5 V o a 3,3 V stabilizzati: in mezzo c’e’ un convertitore, e il convertitore conserva l’energia, non la carica. Per questo, quando la tensione cambia, il conto va fatto in wattora, cioè tensione per carica.
La batteria del caso del forum, convertita in energia, vale 2,22 wattora. Portata a 5 V con un convertitore switching che rende l’85%, mette a disposizione circa 0,38 Ah a quella tensione: i mAh si riducono, ma i wattora restano gli stessi, meno le perdite. Lo stesso specchio funziona al contrario, dal carico verso la batteria: per erogare 1 A a 5 V servono teoricamente 1,35 A prelevati dalla cella, che diventano 1,6 A tenendo conto del rendimento. Chi dimensiona a colpo d’occhio i mAh senza passare dai wattora si ritrova con una batteria più piccola del necessario, perché dimentica sia il salto di tensione sia la tassa del convertitore.
Il sensore consuma poco, il chip consuma tutto
Un punto che sfugge in molti progetti è dove se ne va davvero l’energia. Nei sensori ambientali moderni il consumo del trasduttore è marginale: un sensore di CO2 di ultima generazione, per esempio, assorbe una frazione di quello che consuma il microcontrollore che lo interroga, e le misurazioni pubblicate su questo tipo di sensori mostrano che la durata della batteria è determinata quasi interamente dall’ESP32, non dal sensore. Ottimizzare la sonda lasciando il WiFi acceso un secondo di troppo a ogni ciclo è lavorare sul centimetro sbagliato del metro.
La gerarchia pratica è questa: prima si riduce il tempo di radio accesa, poi il tempo di chip attivo, poi si guarda il sensore. E prima di tutto si guarda la scheda, perché tra il chip e la batteria ci sono componenti che consumano anche quando il processore dorme.
Alimentare un ESP32 a batteria: il calcolo a ritroso dai mesi alla capacità
Il metodo corretto non parte dalla batteria che si ha in casa, ma dall’autonomia che si vuole ottenere, e procede a ritroso. I passaggi, nell’ordine:
- Fissare l’obiettivo in giorni. Un mese, una stagione, un anno: è il numero che decide tutto il resto.
- Scomporre il ciclo in fasi. Per ogni fase (deep sleep, lettura, trasmissione) servono corrente assorbita e durata; la durata si misura con un multimetro o si stima dal codice, la corrente si misura sul prototipo, non si legge dal datasheet della sola CPU.
- Convertire ogni fase in mAh. Corrente per tempo, poi la somma: questo è il consumo per ciclo.
- Moltiplicare per i cicli al giorno e per i giorni dell’obiettivo. Si ottiene la carica totale richiesta.
- Aggiungere il margine. Rendimento del convertitore se la tensione cambia, autoscarica della cella nei mesi, e un cuscinetto per il freddo, che riduce la capacità effettiva delle chimiche al litio.
- Scegliere la batteria per energia. Se c’e’ un convertitore, confrontare i wattora, non i mAh stampati sull’etichetta.
Con questo metodo si leggono diversamente anche gli esempi che circolano nelle community. L’utente del forum, dopo aver scoperto l’errore di unità, ha deciso di passare a una batteria da 10.000 mAh puntando ad almeno un mese di autonomia: un salto generoso, ma ora verificabile con il calcolo invece che con la speranza. In un’altra configurazione documentata, una cella 18650 da 3000 mAh con un consumo medio di 0,85 mAh all’ora arriva a circa 150 giorni teorici, che diventano un centinaio nella realta’ una volta scontate perdite e margini. In un terzo caso, con celle LiFePO4 e un consumo di 44,3 mAh al giorno, l’autonomia stimata era di circa due mesi. Il denominatore comune è sempre lo stesso: nessuno di questi progetti è stato dimensionato guardando la sola corrente di picco, e nessuno ha scelto la batteria prima di conoscere il consumo medio giornaliero.
Duty cycling: accorciare il tempo acceso allunga la vita
La cornice teorica di tutto questo esiste da anni e viene dallo studio delle reti di sensori. Una tesi di laurea all’Universita’ di Padova dedicata al consumo energetico dei nodi sensore wireless lo formula in modo netto: il consumo totale di un nodo è la somma del consumo in stato di riposo e del consumo in attività, e la strategia decisiva per estendere la vita della batteria è il duty cycling, cioè ridurre al minimo la frazione di tempo in cui il nodo resta attivo. Gli ESP32 mettono a disposizione fino a cinque modalita’ di funzionamento proprio per gestire questo bilancio, dal funzionamento pieno al deep sleep.
La stessa tesi cita protocolli radio nati per questo scopo, come X-MAC e lo standard IEEE 802.15.4, e tecniche di aggregazione dei dati che, nei casi analizzati, arrivano a risparmi fino al 90% rispetto alla configurazione iniziale. Il WiFi domestico non è un protocollo a basso consumo, ma il principio si applica identico: lo sketch del caso del forum, con una lettura all’ora e una trasmissione al giorno, è già duty cycling. Il passo successivo è accumulare i dati in memoria e trasmettere a blocchi più radi, svegliarsi su evento invece che su timer quando il fenomeno lo consente, e spegnere fisicamente i sensori tra una misura e l’altra con un transistor, invece di lasciarli alimentati.
Regolatore di tensione e protezione: la parte hardware che il calcolo non vede
Il calcolo a ritroso descrive il chip, ma la batteria alimenta una scheda intera. Il primo imputato è il regolatore di tensione: un regolatore lineare economico dissipa in calore la differenza tra tensione di cella e tensione di lavoro, e soprattutto assorbe una corrente propria anche a carico spento, che in molte schede di sviluppo supera di parecchio il consumo del deep sleep del chip. Per un sensore che deve durare mesi, il regolatore va scelto guardando la corrente a vuoto dichiarata, non solo la corrente massima: un convertitore switching con buon rendimento ai carichi bassi, o un lineare a bassissimo consumo proprio, cambiano l’autonomia più di qualsiasi ottimizzazione del codice. Il chip di interfaccia USB-serie presente sulle schede di sviluppo è il secondo imputato: resta alimentato anche quando non serve, e nei progetti definitivi va eliminato o scollegato.
Il secondo tema è la salute della cella. Una LiPo non va scaricata sotto la soglia minima di cella: scendervi una volta può bastare a degradarla in modo permanente. Servono quindi un circuito di protezione da sovrascarica, integrato nella batteria o sul modulo di ricarica, e un circuito di ricarica con controllo di corrente e fine carica, se il sensore viene ricaricato periodicamente o abbinato a una piccola cella solare. Sono pochi componenti, ma sono quelli che trasformano un esperimento da banco in un oggetto che può restare appeso a un palo per una stagione.
Tornando al punto di partenza: quei 1620 mAh non sono mai esistiti, erano milliampere travestiti da milliampereora. La batteria da 600 mAh, con il calcolo corretto, aveva ancora quasi tutta la sua carica, e la decisione di salire a una cella molto più grande poteva essere presa a tavolino, contando i mAh al giorno prima di aprire il portafoglio. È questa la differenza tra montare un sensore e dimensionarlo: la corrente si misura, il tempo si governa, la batteria si sceglie per ultima.
Da leggere anche: Gli errori del marketing di affiliazione che azzerano i guadagni di chi inizia
Da leggere anche: Come riconoscere l'edizione giusta de Il Quidditch attraverso i secoli illustrato prima di comprarla
Da leggere anche: Alimentare un'autoradio in casa senza che si spenga dopo pochi minuti di musica