Disegnare una forma pixel per pixel dal browser e vederla accendersi su una matrice 8×8 di LED WS2812B: questo fa il progetto di Rui Santos. L’ESP32 si collega alla rete Wi-Fi e serve una pagina web con una griglia 8×8, dove si sceglie il colore di ciascuno dei 64 LED RGB. Le forme salvate restano in memoria anche dopo un riavvio, quindi si possono mostrare sulla matrice fisica, ricaricare nell’editor o riprodurre in sequenza come slideshow. Il tutto unendo un web server asincrono, un filesystem e la libreria FastLED su una sola scheda.
Come funziona l’editor web servito dall’ESP32
La pagina web mostra una griglia 8×8 e per ogni pixel si sceglie il colore. Un cursore regola la luminosita’ complessiva della forma, che viene scalata prima di arrivare ai LED fisici. Nel codice la luminosita’ di default e’ 128 su una scala da 0 a 255. Inoltre la matrice si pilota con un solo pin digitale, il GPIO 2, tramite la libreria FastLED, con parametri di configurazione per orientamento, flip orizzontale e verticale e ordine dei colori.
Il web server e’ asincrono, quindi l’ESP32 continua a gestire la pagina senza bloccare il resto. Percio’ si puo’ disegnare mentre la matrice resta accesa sull’ultima forma inviata. Chi vuole rifare il progetto trova sul sito del maker Rui Santos il racconto completo del lavoro, dagli sketch al montaggio.
Le forme salvate in LittleFS e lo slideshow
Fino a 10 forme vengono salvate in LittleFS come JSON, quindi restano memorizzate anche dopo un riavvio. La galleria mostra l’anteprima di ogni forma salvata. Cliccandola viene visualizzata sulla matrice fisica e ricaricata nell’editor per modificarla. Inoltre si puo’ cancellare una forma, operazione che spegne anche i LED fisici, e attivare uno slideshow che scorre tutte le forme salvate con intervallo regolabile. L’intervallo di default dello slideshow e’ di 2000 ms tra una forma e l’altra.
- ESP32 board
- Matrice 8×8 con 64 LED WS2812B
- Alimentatore AC-DC da 5V e 2A
- Jumper wires
- Arduino IDE con FastLED, ESPAsyncWebServer, AsyncTCP e ArduinoJSON 7.X
La parte software si appoggia alla libreria FastLED di Daniel Garcia, a ESPAsyncWebServer e AsyncTCP di ESP32Async, ad ArduinoJSON 7.X di Benoit Blanchon e a LittleFS. Per chi vuole partire da una matrice piu’ grande, il catalogo ha il pannello 16×16 LED Neopixel WS2812B flessibile, con 256 LED al posto dei 64 di questo progetto.
Alimentazione e consumi della matrice 8×8
La matrice WS2812B e’ composta da 64 LED RGB disposti in una griglia 8×8 e va alimentata a 5V. A 5V ogni LED assorbe circa 50mA alla massima luminosita’. Di conseguenza, a piena luminosita’ in colore bianco ogni 30 LED la matrice puo’ assorbire fino a 1,5A. L’alimentatore consigliato per la matrice e’ un adattatore AC-DC da 5V e 2A, quindi con un margine utile sopra il picco di corrente.
Chi preferisce una forma diversa da quella quadrata puo’ guardare la matrice LED RGB indirizzabile 8×32 con 256 LED WS2812B, che usa lo stesso tipo di LED ma su una geometria allungata. Il cablaggio resta semplice: un solo filo di dati verso il GPIO 2 e l’alimentazione a 5V.
Fonte: https://randomnerdtutorials.com/esp32-8×8-matrix-shape-editor-web-server/
