Un ESP32 può fare molto più che gestire sensori e Wi-Fi. Questo progetto di M Mohammed Shaheen K S lo trasforma in un video player completo: legge un file Motion JPEG da una MicroSD e lo riproduce su un display TFT da 2,4 pollici. Il risultato è un dispositivo compatto che mostra animazioni personalizzate o elementi UI dinamici, spingendo le prestazioni della scheda al limite.
Il cuore del sistema è il formato MJPEG, una sequenza di singole immagini JPEG. La scheda MicroSD memorizza il video come file .mjpeg. L’ESP32 legge il flusso di file grezzo tramite il bus SPI, senza bisogno di codec complessi o hardware aggiuntivo.
Lettura dei dati e buffer in RAM
La lettura del file avviene in blocchi da 4 KB nella RAM. Questa scelta evita ritardi dovuti all’accesso continuo alla scheda. Il sistema cerca i marcatori di inizio e fine frame JPEG, così da assemblare in memoria le immagini complete pronte per la decodifica.
Il buffer per i frame è di 80 KB, una dimensione che bilancia memoria disponibile e fluidità di riproduzione. La libreria JPEGDEC decompressa ogni immagine JPEG direttamente in memoria, convertendo i dati in pixel RGB565 a 16 bit. Questo formato è quello nativo del display, quindi non serve altra elaborazione.
Display TFT e frequenza fotogrammi
Il display TFT da 2,4 pollici con risoluzione 240×320 usa il controller ILI9341. I dati pixel arrivano tramite un bus SPI ad alta velocità. La frequenza SPI del display è di 27 MHz, mentre la velocità massima supportata arriva a 40 MHz. Questa differenza garantisce una trasmissione stabile senza errori.
La riproduzione mira a 15 FPS. L’intervallo tra un frame e l’altro è di 1000/15 millisecondi, circa 66 ms. Piccoli ritardi tra un aggiornamento e l’altro mantengono il flusso regolare, evitando strappi o freeze. La qualità video è media, adatta a contenuti semplici e interfacce animate.
Per rifare il progetto servono pochi componenti: un modulo ESP32 Dev Module, un display TFT SPI da 2,4 pollici (modello TJCTM24024-SPI) e una MicroSD. Il collegamento usa il bus SPI sia per la scheda SD sia per il display. Il codice sorgente, disponibile nel repository del progetto, include tutte le librerie necessarie: SPI.h, SD.h, Adafruit_GFX.h, Adafruit_ILI9341.h e JPEGDEC.h.
Prima di caricare il video sulla MicroSD bisogna convertirlo nel formato giusto. La risoluzione deve essere 320×240 pixel e il file deve essere salvato come .mjpeg. Il repository di M Mohammed Shaheen K S contiene il codice completo e le indicazioni per la conversione, così da ottenere un file pronto all’uso.
Il progetto dimostra come un ESP32 possa gestire flussi video leggeri con pochi componenti esterni. Le possibilità di utilizzo spaziano dalle animazioni personalizzate ai pannelli informativi, fino a piccoli giochi retrò.
Fonte: https://circuitdigest.com/articles/esp32-video-player-tutorial
