Il LilyGO TTGO T5-4.7 E-Paper è un modulo di sviluppo integrato che combina un display E-paper (e-ink) da 4,7 pollici con un microcontrollore ESP32-S3.
Lo schermo E-paper della scheda funziona a una risoluzione di 540 × 960 pixel con 16 livelli di scala di grigi e richiede energia solo durante le operazioni di aggiornamento, il che minimizza il consumo energetico per dati che cambiano lentamente come quelli meteorologici.
In questo tutorial imparerai come iniziare con la scheda LilyGO TTGO T5-4.7 E-Paper. Inoltre, costruiremo una stazione meteo che recupera i dati da internet da OpenWeatherMap e li visualizza sull’E-Paper.
Componenti necessari
Puoi acquistare il LilyGO TTGO T5-4.7 E-Paper da DFRobot o Amazon usando i link qui sotto. Se vuoi alimentare il display a batteria, ti servirà anche una batteria.
Consiglio una batteria ricaricabile 18650 con il relativo supporto. Tuttavia, dovrai saldare i fili del supporto al connettore batteria del display LilyGO E-Paper. Non è difficile, ma serve un saldatore.

LilyGO TTGO T5-4.7 E-Paper

Batteria ricaricabile 18650

Supporto batteria 18650
Makerguides is a participant in affiliate advertising programs designed to provide a means for sites to earn advertising fees by linking to Amazon, AliExpress, Elecrow, and other sites. As an Affiliate we may earn from qualifying purchases.
Hardware del LilyGO TTGO T5-4.7 E-Paper
La piattaforma LilyGO TTGO T5-4.7 E-Paper è una scheda controller con display E Ink da 4,7 pollici che integra un modulo ESP32-S3 con un pannello E-paper in scala di grigi collegato.
Il design è pensato per applicazioni che beneficiano di informazioni persistenti sullo schermo e basso consumo medio, dove il contenuto del display può rimanere visibile senza aggiornamenti continui. La foto sotto mostra il fronte e il retro della scheda LilyGO TTGO T5-4.7 E-Paper.

Processore e sottosistema memoria
La scheda è costruita attorno al modulo ESP32-S3-WROOM-1-N16R18. Questa configurazione offre 16 MB di flash onboard per firmware e risorse, e 8 MB di PSRAM per supportare operazioni intensive di memoria come buffer grafici, rendering di font e gestione dati di rete.
L’ESP32-S3 abilita anche la connettività Wi-Fi e ha potenza di calcolo sufficiente per acquisizioni periodiche di dati, elaborazione locale e aggiornamenti del display tipici di una stazione meteo.
Caratteristiche del display E-Paper
Il pannello E-paper integrato ha una risoluzione di 540 × 960 pixel in orientamento verticale e supporta la resa in scala di grigi a 16 livelli. Il display permette aggiornamenti parziali, con aggiornamenti selettivi di aree per ridurre tempo ed energia quando cambia solo una parte del contenuto.
Tuttavia, il display non deve essere aggiornato parzialmente per lunghi periodi, altrimenti rimarranno immagini residue irreversibili!
Input utente e controlli a bordo
L’input fisico è supportato da tre pulsanti, incluso uno personalizzabile dall’utente per funzioni a livello applicativo. Gli altri pulsanti sono reset e boot.

La scheda espone anche un’interfaccia dedicata a 6 pin per collegare un pannello touchscreen, acquistabile separatamente.
Interfaccia alimentazione a batteria
Per l’alimentazione a batteria, la scheda include un connettore PH 2.0 progettato per una batteria da 3,7 V. La protezione di carica e scarica è fornita da un IC di protezione HX6610S.

Header di espansione e compatibilità host
Un header a 40 pin è presente sulla parte superiore della scheda ed è compatibile con l’interfaccia BUS Raspberry Pi. Ecco il pinout dell’header:

Nota che le interfacce I2C (SDA, SCL) e SPI (MISO, MOSI, CS) sono accessibili lì. L’immagine sotto mostra il pinout degli altri connettori della scheda:

GPIO
La tabella seguente elenca i pin GPIO e il loro uso interno da parte dell’ESP32 integrato. Solo i pin GPIO 45, 10, 48 e 39 sono disponibili per applicazioni utente.
| GPIO ESP32S3 | Collegato a | Libero |
|---|---|---|
| 13 | 74HCT4094D CFG_DATA | ❌ |
| 12 | 74HCT4094D CFG_CLK | ❌ |
| 0 | 74HCT4094D CFG_STR | ❌ |
| 38 | E-paper CKV | ❌ |
| 40 | E-paper STH | ❌ |
| 41 | E-paper CKH | ❌ |
| 8 | E-paper D0 | ❌ |
| 1 | E-paper D1 | ❌ |
| 2 | E-paper D2 | ❌ |
| 3 | E-paper D3 | ❌ |
| 4 | E-paper D4 | ❌ |
| 5 | E-paper D5 | ❌ |
| 6 | E-paper D6 | ❌ |
| 7 | E-paper D7 | ❌ |
| 21 | Pulsante | ❌ |
| 14 | ADC batteria | ❌ |
| 16 | SD MISO | ❌* |
| 15 | SD MOSI | ❌* |
| 11 | SD SCK | ❌* |
| 42 | SD CS | ❌* |
| 18 | SDA | ❌ |
| 17 | SCL | ❌ |
| 47 | TouchPanel IRQ | ❌ |
| 45 | Non collegato | ✅ |
| 10 | Non collegato | ✅ |
| 48 | Non collegato | ✅ |
| 39 | Non collegato | ✅ |
Specifiche tecniche
La tabella seguente riassume le specifiche tecniche della stazione meteo con LilyGO TTGO T5-4.7 E-Paper:
| MCU | ESP32-S3-WROOM-1-N16R8 |
| Connettività wireless | Wi-fi Bluetooth V5.0 |
| Flash | 16MB |
| PSRAM | 8MB |
| Supporto PCF8563 RTC | Rilevamento capacità batteria |
| Driver IC | EDO47TC1 |
| Dimensioni | 4,7 pollici |
| Livelli di grigio | 16 |
| Risoluzione | 540 x 960 pixel |
| Corrente in deep-sleep | ~170µA |
Gli schemi elettrici della scheda display si trovano in github repo.
Versioni
Nota che esistono almeno tre versioni diverse del LilyGO TTGO T5-4.7 E-Paper. C’è una versione iniziale con cinque pulsanti e un supporto per batteria 18650. Vedi la foto sotto:

Non possiedo questa versione e quindi non posso dirti se gli esempi di codice in questo tutorial funzionano con questa scheda.
Tuttavia, ho le schede per le due versioni più recenti V2.3 del 2021-06-10 e V2.4 del 2024-12-03. Ho testato il codice per entrambe le schede e funziona. Nota che queste schede hanno tre pulsanti e nessun supporto batteria. La foto sotto mostra le due schede con i numeri di versione visibili sul retro:

Installazione del Core ESP32
Il LilyGO TTGO T5-4.7 usa un ESP32 e dobbiamo installare una versione specifica (2.017) del core ESP32. Inizia aprendo il dialogo Preferenze selezionando “Preferences…” dal menu “File”. Si aprirà il dialogo Preferenze mostrato sotto.
Sotto la scheda Settings troverai una casella di modifica in fondo al dialogo etichettata “Additional boards manager URLs“:

In questo campo incolla il seguente URL:
https://espressif.github.io/arduino-esp32/package_esp32_dev_index.json
Questo permetterà all’IDE Arduino di sapere dove trovare le librerie core ESP32. Successivamente installeremo le schede ESP32 usando il Boards Manager.
Apri il Boards Manager tramite “Tools -> Boards -> Board Manager”. Vedrai il Boards Manager apparire nella barra laterale sinistra. Inserisci “ESP32” nel campo di ricerca in alto e dovresti vedere due tipi di schede ESP32; le “Arduino ESP32 Boards” e le schede “esp32 by Espressif”. Vogliamo le librerie “esp32 by Espressif”.
Nel menu a tendina per esp32 seleziona la versione 2.0.17 e poi premi il pulsante INSTALL. Dopo un’installazione riuscita, dovresti vedere l’immagine seguente:

Altre versioni (più vecchie) del core ESP32 probabilmente funzionano, ma non le ho provate. Quello che non funziona al momento sono le versioni più recenti 3.x.
Installazione delle librerie
Successivamente dobbiamo installare librerie specifiche e versioni di librerie. Prima clicca su questo EPD47 Library link della libreria e scarica il file “EPD47-master.zip”.
Estrai il file ZIP per ottenere il contenuto. Dovresti vedere i seguenti file in una cartella estratta chiamata “EPD47-master”:

Dobbiamo copiare la cartella “EPD47-master” nella cartella “libraries” dell’IDE Arduino. Su Windows la cartella “libraries” si trova tipicamente in:
C:\Users\<username>\OneDrive\Documents\Arduino\libraries
Poiché questa cartella contiene già librerie installate, ti consiglio di rinominarla temporaneamente, ad esempio in “_libraries”, e creare una nuova cartella chiamata “libraries”. Così eviti conflitti con le librerie già installate e non le perdi. Poi potrai facilmente tornare indietro. L’immagine sotto mostra come dovrebbe apparire la tua cartella “Arduino” con le librerie:

Ora copiamo la cartella “EPD47-master” nella nuova cartella “libraries” come mostrato sotto:

Infine, dobbiamo installare la versione 6.19.0 della libreria Arduinojson di Benoit Blanchon. Apri il LIBRARY MANAGER, inserisci “arduinojson” nella barra di ricerca e installa la libreria. Dopo un’installazione riuscita vedrai l’immagine seguente:

Se poi guardi di nuovo nella cartella delle librerie troverai ora la libreria EPD47-master e la libreria ArduinoJson:

Scheda ESP32-S3 e impostazioni
Il LilyGO TTGO T5-4.7 E-Paper usa un ESP32-S3 e quindi selezioniamo la scheda “ESP32S3 Dev Module”. Per farlo, clicca sul menu a tendina e poi su “Select other board and port…”:

Si aprirà un dialogo dove puoi inserire “esp32s3 dev” nella barra di ricerca. Vedrai la scheda “ESP32S3 Dev Module” sotto Boards. Cliccaci sopra, seleziona la porta COM per attivarla e poi clicca OK:

Nota che devi collegare la scheda tramite cavo USB al computer prima di poter selezionare una porta COM.
Impostazioni Tools
Prima di programmare la scheda, devi regolare le impostazioni. Vai su “Tools” e seleziona le impostazioni mostrate sotto:

Importanti sono “USB CDC On Boot: Enable” per permettere la comunicazione seriale con la scheda, “Flash Size : 16MB(128Mb)”, “Partition Scheme: 16M Flash(3M APP/9.9MB FATFS)” e “PSRAM: OPI PSRAM” per configurare la memoria. Le altre impostazioni di default vanno bene così.
Upload
Di solito puoi caricare il codice tramite Arduino IDE e la scheda passerà automaticamente in modalità upload. Tuttavia, se la scheda è in deep-sleep o bloccata in un loop di crash, puoi usare questa sequenza per forzarla in modalità upload:
- Premi e tieni premuto il pulsante BOOT(IO0)
- Mentre tieni premuto BOOT(IO0), premi RST
- Rilascia RST
- Rilascia il pulsante BOOT(IO0)

Esempio di codice: Pulsante
In questo primo esempio di codice verifichiamo solo che possiamo programmare la scheda, rilevare la pressione di un pulsante e che la comunicazione seriale funzioni:
#define BTN 21
void setup() {
Serial.begin(112500);
pinMode(BTN, INPUT);
Serial.println("running...");
}
void loop() {
if (!digitalRead(BTN)) {
Serial.println("pressed");
delay(100);
}
}
Iniziamo definendo il pin GPIO 21 per il pulsante etichettato SENSOP_VN sulla scheda.
#define BTN 21
Questo è l’unico pulsante che possiamo usare per input utente. È il pulsante accanto allo slot per la scheda SD:

Nella funzione setup inizializziamo la comunicazione seriale, dichiariamo il pin del pulsante come input e stampiamo “running…” sul monitor seriale. Il pulsante è cablato internamente con una resistenza di pullup, quindi non serve abilitare i pullup impostando il pin mode.
void setup() {
Serial.begin(112500);
pinMode(BTN, INPUT);
Serial.println("running...");
}
Nella funzione loop leggiamo lo stato attuale del pulsante e se il valore restituito è false, sappiamo che il pulsante è premuto e stampiamo “pressed” sul monitor seriale.
void loop() {
if (!digitalRead(BTN)) {
Serial.println("pressed");
delay(100);
}
}
Prova prima questo codice per assicurarti di poter programmare la scheda e vedere l’output seriale. Se hai problemi, verifica che le impostazioni Tools siano corrette.
Esempio di codice: Display
Il secondo esempio mostra come controllare il display E-paper. Disegneremo un cerchio e stamperemo il testo “Makerguides” sul display:

Dai un’occhiata veloce al codice completo e poi ne analizziamo i dettagli:
#include "epd_driver.h"
#include "firasans.h"
uint8_t *framebuffer = NULL;
void create_framebuffer() {
size_t framesize = EPD_WIDTH * EPD_HEIGHT / 2;
framebuffer = (uint8_t *)ps_calloc(sizeof(uint8_t), framesize);
if (!framebuffer) {
Serial.println("alloc memory failed !!!");
return;
}
memset(framebuffer, 0xFF, framesize);
}
void init_display() {
create_framebuffer();
epd_init();
epd_poweron();
epd_clear();
}
void setup() {
Serial.begin(115200);
delay(1000);
init_display();
epd_draw_circle(EPD_WIDTH / 2, EPD_HEIGHT / 2, 150, 0, framebuffer);
const char *text= "Makerguides";
int cursor_x = 355;
int cursor_y = 270;
writeln((GFXfont *)&FiraSans, text, &cursor_x, &cursor_y, framebuffer);
epd_draw_grayscale_image(epd_full_screen(), framebuffer);
epd_poweroff_all();
}
void loop() {
}
Importazioni
Iniziamo includendo due file header che forniscono l’API del driver display e una definizione di font. “epd_driver.h” espone funzioni come inizializzazione, controllo alimentazione, primitive di disegno e invio del buffer pixel al pannello, mentre “firasans.h” fornisce i dati dei glifi usati dalla routine di rendering del testo.
#include "epd_driver.h" #include "firasans.h"
Stato globale
Creiamo un puntatore globale chiamato framebuffer per memorizzare l’indirizzo di un buffer pixel allocato dinamicamente in memoria. Le funzioni del driver display in questo sketch disegnano prima in questo buffer, e solo dopo l’intero buffer viene inviato al pannello E-paper per la visualizzazione.
uint8_t *framebuffer = NULL;
create_framebuffer
La funzione create_framebuffer() si occupa di allocare RAM per l’immagine in scala di grigi da visualizzare. L’idea chiave è che il pannello E-paper si aspetta una rappresentazione compatta, e l’espressione EPD_WIDTH * EPD_HEIGHT / 2 riflette quanti byte servono quando ogni pixel usa 4 bit (mezzo byte). Con la scala di grigi a 4 bit, due pixel possono essere memorizzati per byte, quindi il totale dei pixel è diviso per due.
Dopo aver calcolato la dimensione, la funzione usa ps_calloc per allocare e azzerare la memoria. Su target ESP32, questo allocatore è tipicamente usato per posizionare grandi buffer in PSRAM quando disponibile, importante perché un buffer a frame completo in scala di grigi può essere troppo grande per la RAM interna. Se l’allocazione fallisce, la funzione stampa un messaggio diagnostico sulla console seriale e ritorna.
Infine, il buffer viene riempito con 0xFF. In molti formati di buffer per E-paper, 0xFF corrisponde a “bianco” o al valore di grigio più chiaro su tutto il buffer, quindi questo passaggio crea effettivamente una tela bianca pulita prima di qualsiasi disegno.
void create_framebuffer() {
size_t framesize = EPD_WIDTH * EPD_HEIGHT / 2;
framebuffer = (uint8_t *)ps_calloc(sizeof(uint8_t), framesize);
if (!framebuffer) {
Serial.println("alloc memory failed !!!");
return;
}
memset(framebuffer, 0xFF, framesize);
}
init_display
La funzione init_display() centralizza la sequenza di avvio per l’hardware E-paper e assicura che il buffer esista prima di qualsiasi chiamata di disegno. Chiama prima create_framebuffer() così che le funzioni di disegno successive abbiano una destinazione valida.
La chiamata a epd_init() tipicamente inizializza il controller display, configura GPIO/SPI e prepara lo stato interno del driver. epd_poweron() abilita le linee di alimentazione del pannello e porta l’hardware in uno stato operativo. E epd_clear() pulisce il pannello, utile su E-paper perché il contenuto vecchio può persistere se il pannello non viene esplicitamente aggiornato.
void init_display() {
create_framebuffer();
epd_init();
epd_poweron();
epd_clear();
}
setup
La funzione setup() viene eseguita una volta all’avvio e svolge tutto il lavoro in questo sketch, perciò loop() è vuota. Iniziamo inizializzando la porta seriale a 115200 baud per permettere l’output di debug. Poi aspettiamo brevemente per assicurare che la connessione seriale sia stabile prima di continuare. Successivamente chiamiamo init_display() per allocare il buffer e accendere e pulire il pannello.
void setup() {
Serial.begin(115200);
delay(1000);
init_display();
Dopo l’inizializzazione, disegniamo un cerchio nel buffer. Il cerchio è centrato sullo schermo usando metà larghezza e altezza del display. Il raggio è 150, e il valore colore 0 è passato come livello di grigio. Nelle convenzioni tipiche a 4 bit usate da molti driver E-paper, valori numerici più bassi corrispondono a pixel più scuri, quindi 0 è comunemente usato per il nero. L’ultimo argomento è framebuffer, che rende esplicito che l’operazione di disegno modifica il buffer di memoria invece di aggiornare subito il display.
epd_draw_circle(EPD_WIDTH / 2, EPD_HEIGHT / 2, 150, 0, framebuffer);
Poi prepariamo una stringa C da renderizzare e impostiamo le coordinate del cursore. La chiamata a writeln() disegna la stringa usando il font FiraSans nel buffer alla posizione di partenza specificata.
const char *text= "Makerguides"; int cursor_x = 355; int cursor_y = 270; writeln((GFXfont *)&FiraSans, text, &cursor_x, &cursor_y, framebuffer);
Una volta che cerchio e testo sono disegnati in RAM, lo sketch esegue l’aggiornamento dello schermo. La chiamata a epd_draw_grayscale_image() invia il buffer al display. Il primo argomento, epd_full_screen(), indica che la regione di aggiornamento è l’intero display e non un sotto-rect, coerente con il fatto che lo sketch ha preparato un buffer a frame completo. Infine, epd_poweroff_all() spegne l’alimentazione dell’E-paper, dato che l’E-paper può mantenere l’immagine senza energia una volta completato l’aggiornamento.
epd_draw_grayscale_image(epd_full_screen(), framebuffer); epd_poweroff_all(); }
loop
La funzione loop() è vuota perché lo sketch è progettato come un rendering one-shot. Il dispositivo si inizializza, disegna nel buffer, aggiorna il display una volta, spegne il pannello e poi non fa altro. Questo schema è tipico per progetti E-paper alimentati a batteria che si svegliano, aggiornano il contenuto e tornano in deep-sleep.
Altri esempi
Per altri esempi, ad esempio come disegnare linee, rettangoli e immagini in scala di grigi, vedi la cartella sotto Xinyuan-LilyGO/LilyGo-EPD47/tree/esp32s3/examples.
Esempio di codice: Stazione meteo
In quest’ultimo esempio imparerai come far funzionare una stazione meteo sul LilyGO TTGO T5-4.7 E-Paper. I dati meteo sono ricevuti da internet dal servizio OpenWeatherMap, che è gratuito ma richiede la registrazione – ne parleremo più avanti.
Il codice originale che uso qui è di David Bird del 2021 e varie versioni di questo codice si trovano su Xinyuan-LilyGO/LilyGo-EPD47/tree/esp32s3, Xinyuan-LilyGO/LilyGo-EPD-4-7-OWM-Weather-Display e DzikuVx/LilyGo-EPD-4-7-OWM-Weather-Display, per esempio. Tuttavia, nessuno di questi esempi funzionava bene sul mio LilyGO TTGO T5-4.7 E-Paper. Ho quindi fatto alcune modifiche.
Modifiche
Prima ho sistemato alcuni problemi con il layout dei dati meteo visualizzati. Se guardi il display creato dal codice originale, puoi vedere che il testo delle temperature non è ben allineato:

Così ho spostato un po’ gli elementi di testo per migliorare il layout:

Ho anche integrato l’immagine della luna e le icone per tramonto e alba dal DzikuVx/LilyGo-EPD-4-7-OWM-Weather-Display nel codice Xinyuan-LilyGO/LilyGo-EPD-4-7-OWM-Weather-Display.
Carica batteria
Poi ho notato che il display non funziona e non mostra l’icona di carica batteria quando alimentato a batteria. Questo perché 1) il codice originale blocca finché la comunicazione seriale non è stabilita, cosa che non succede senza connessione USB a un computer:
Serial.begin(115200);
while (!Serial) ;
Il codice while (!Serial) deve essere rimosso e sostituito da un breve ritardo, ad esempio delay(1000).
2) Il codice originale legge la tensione batteria dal pin 36 ma per i miei display la tensione batteria è misurata al pin 14:
float voltage = analogRead(14) / 4096.0 * 6.566 * (vref / 1000.0);
Con queste modifiche puoi alimentare il tuo LilyGO TTGO T5-4.7 E-Paper a batteria e l’icona batteria ti indicherà la carica residua.
Posizione città
Il codice originale usa il nome di una città per recuperare le informazioni meteo per quella località. Tuttavia, il servizio OpenWeatherMap permette anche di ottenere i dati meteo attuali per una posizione data da latitudine e longitudine:
https://api.openweathermap.org/data/2.5/weather?lat={lat}&lon={lon}&appid={API key}
Potenzialmente, questo è più preciso e non devi usare il nome specifico della città riconosciuto da OpenWeatherMap. Trovare latitudine e longitudine per la tua posizione è facile. Vai su Google Maps e fai clic destro. Apparirà un popup con i numeri di latitudine e longitudine in alto. Vedi lo screenshot seguente:

Connessione USB
Infine, il codice originale aggiorna i dati meteo sul display una volta all’ora e va in deep-sleep tra gli aggiornamenti per risparmiare batteria. Questo è ottimo, ma rende difficili le modifiche al codice, perché la connessione USB si perde in deep-sleep e non puoi caricare il codice.
Devi resettare la scheda e temporizzare il caricamento in modo che inizi mentre la connessione USB è ancora attiva subito dopo il reset. Vedi la sezione Upload sopra. Poiché è difficile, ho aggiunto codice che impedisce l’entrata in deep-sleep quando il pulsante programmabile dall’utente SENSOP_VN è premuto:
if(digitalRead(21)) { // SENSOP_VN button NOT pressed
BeginSleep();
}
Questo significa che, se vuoi caricare nuovo codice, tieni premuto SENSOP_VN durante il caricamento. La scheda non entrerà in deep-sleep dopo il reset e la connessione USB rimarrà attiva. Una volta caricato, puoi premere RST di nuovo per riavviare la scheda con deep-sleep attivo.
Open weather map
Il codice usa il servizio gratuito OpenWeatherMap per ricevere dati meteo da internet. Tuttavia, prima di usare qualsiasi API di OpenWeather devi avere una chiave API e per questo serve un account. Per creare un account gratuito vai su sign-up page e inserisci i tuoi dati.

Dopo vai alla pagina di creazione api-key e crea una chiave API. La chiave API è quella lunga stringa “sdfd87fakeby6apikeysf4z” che vedi nello screenshot sotto. La tua chiave sarà diversa.

Una volta ottenuta la chiave API (e latitudine e longitudine della tua posizione), puoi provarla nel browser. Inserisci il seguente URL, con la tua chiave API, nel browser:
https://api.openweathermap.org/data/2.5/weather?lat=44.34&lon=10.99&appid={API key}
Nota che il browser Chrome ha un pulsante Pretty Print che puoi cliccare per vedere i dati meteo recuperati in JSON formattato bene:

Così puoi testare la tua chiave API e i valori di latitudine e longitudine. Se ti serve aiuto, dai un’occhiata al nostro tutorial: Simple ESP32 Internet Weather Station.
Scarica codice e imposta parametri
Dopo aver verificato la tua chiave API, puoi scaricare il codice per la stazione meteo come file ZIP: weather_lilygo_t5_epd.zip . Estrailo e apri il file “weather_lilygo_t5_epd.ino” nella cartella “weather_lilygo_t5_epd” nel tuo IDE Arduino.
Come ultimo passo devi impostare le credenziali Wi-Fi e i parametri dei dati meteo. Clicca sulla scheda “owm_credentials.h” e imposta SSID, Password, chiave API e le informazioni sulla posizione:

A seconda della tua posizione potresti voler cambiare anche i parametri Language, Hemisphere, Units e Timezone.
C’è anche un esempio di codice su come configurare la stazione meteo tramite interfaccia web: Xinyuan-LilyGO/LilyGo-EPD-4-7-OWM-Weather-Display/tree/web, se preferisci questo invece di impostare i parametri nel codice.
Dopo aver regolato le impostazioni, carica il codice sulla tua scheda LilyGO TTGO T5-4.7 e dopo un breve sfarfallio dovresti vedere i dati meteo apparire sul display:

Collegamento batteria 18650
La scheda LilyGO TTGO T5-4.7 E-Paper viene fornita con un connettore e circuito di ricarica per una batteria LiPo esterna. Ho collegato una batteria ricaricabile 18650. Puoi usare anche una batteria LiPo più piccola (flat) ma tendono a costare di più o avere meno capacità. La foto sotto mostra come collegare la batteria 18650:

Durata operativa
Una tipica batteria 18650 ha una capacità da 2300 a 3600mAh e la corrente di picco che l’ESP32 assorbe usando il Wi-Fi può arrivare a 400mA. La corrente in deep-sleep della scheda LilyGO TTGO T5-4.7 è circa 170µA, ma non l’ho misurata.
Se usiamo una 18650 da 3300mAh, e attiviamo il Wi-Fi per un secondo ogni ora per scaricare i dati meteo, otteniamo un’autonomia stimata di oltre un anno con una singola carica.
Ecco il calcolo: con una corrente media di 400mA × 1s / 3600s = 0.111mA per il Wi-Fi e una corrente in deep-sleep di 0.17mA, la corrente media totale è 0.111mA + 0.17mA = 0.281mA. Assumendo una batteria da 3300mAh, l’autonomia stimata è quindi 3300mAh / 0.281mA ≈ 11744h ≈ 1,34 anni.
Conclusioni
In questo tutorial hai imparato come costruire una stazione meteo con il display LilyGO TTGO T5-4.7 E-Paper. Per maggiori informazioni sul LilyGO TTGO T5 dai un’occhiata a Wiki e agli esempi di codice su Xinyuan-LilyGO/LilyGo-EPD47/tree/esp32s3/examples.
La documentazione menziona che lo schermo non dovrebbe essere aggiornato parzialmente per lunghi periodi, perché lascerebbe immagini residue irreversibili. Quindi fai attenzione quando costruisci applicazioni che usano Partial Refresh.
Per altri esempi su display E-paper dai un’occhiata ai nostri Weather Station on e-Paper Display, Simple ESP32 Internet Weather Station, Temperature Plotter on e-Paper Display, Monthly Calendar on E-Paper Display e ai tutorial Digital Clock on e-Paper Display.
Se hai domande sentiti libero di lasciarle nella sezione commenti.
Buon divertimento con il tinkering 😉

