ESP-FH4R2
ESP-FH4R2 – Web UI per LED RGB (ESP32‑S3 N4R2)
Questo progetto espone una semplice interfaccia web per controllare il LED RGB integrato della scheda tramite un color picker. I file statici (come index.html) sono serviti da SPIFFS, mentre un endpoint HTTP (/color) imposta il colore del NeoPixel onboard.
Panoramica
- Web server su ESP32‑S3 (porta 80) con file statici da SPIFFS
- Pagina
index.htmlcon<input type="color">per scegliere il colore - Endpoint
GET /color?hex=RRGGBBper impostare il colore in tempo reale - Utility:
GET /lsper elenco file eGET /fsinfoper info filesystem
Setup di Rete (Nuovo)
- Pagina
setup.html: configurazione Wi‑Fi e rete dal browser.- Campi: SSID, password, DHCP oppure IP statico (IP, maschera, gateway, DNS).
- Pulsanti: Salva (scrive
/config.jsonsu SPIFFS) e Riavvia.
- Link dalla home: in
index.htmlè presente il link “apri setup”. - All’avvio: la scheda legge automaticamente le impostazioni da
/config.json(se presente) e le applica prima della connessione. - Se nessuna configurazione è presente: avvia un Access Point di setup (
ESP-FH4R2-Setup, password12345678) per accedere asetup.html.
Specifiche scheda ESP‑FH4R2 (ESP32‑S3 N4R2)
Nota: “N4R2” indica tipicamente 4 MB di Flash e 2 MB di PSRAM.
- MCU: ESP32‑S3 (dual‑core Xtensa LX7 fino a 240 MHz)
- Memoria: 4 MB Flash, 2 MB PSRAM
- Connettività: Wi‑Fi 2.4 GHz (802.11 b/g/n), Bluetooth LE 5
- USB: nativa (USB‑C) per programmazione e seriale
- LED RGB integrato (NeoPixel) controllato via
Adafruit_NeoPixel - File system SPIFFS per contenuti web
- I/O a 3.3 V
Struttura del progetto
src/main.cpp: logica firmware (Wi‑Fi, server HTTP, endpoint/colore gestione NeoPixel)data/index.html: interfaccia web servita da SPIFFS (color picker + JS)data/setup.html: pagina di configurazione rete (carica/salva via API)data/config.json: file di configurazione iniziale (usato al primo avvio dopo upload SPIFFS)data/info.html: pagina informazioni con visualizzazione difsinfoelsdata/archivio.html: gestione file su SPIFFS (upload e cancellazione)- Mostra in fondo lo spazio SPIFFS: totale, occupato e libero (usa
/fsinfo). - Dimensioni con separatori migliaia/milioni per una lettura più chiara.
- All'apertura della pagina: LED a semaforo in base all'occupazione SPIFFS:
- Verde: basso utilizzo
- Giallo: ~50%
- Rosso: >70%
- Il LED si aggiorna automaticamente dopo upload e cancellazione file.
- Mostra in fondo lo spazio SPIFFS: totale, occupato e libero (usa
platformio.ini: configurazione PlatformIO (envadafruit_qtpy_esp32s3_n4r2, SPIFFS, dipendenze)
Build e Upload (PlatformIO)
- Configura le credenziali Wi‑Fi in
src/main.cpp(WIFI_SSID,WIFI_PASS). - Carica i file su SPIFFS:
pio run -t uploadfs
- Flash del firmware:
pio run -t upload
- Monitora la seriale (per IP e log):
pio device monitor
- Apri il browser su
http://<ip_esp32>e usa il color picker. - Per configurare la rete dal web, apri
http://<ip_esp32>/setup.html.
Suggerimento: dopo
uploadfs, esegui un reset della board per assicurarti che i file vengano serviti correttamente.
API HTTP
GET /color?hex=RRGGBB- Parametro
hex: colore in formato esadecimale a 6 cifre (senza#). - Risposta:
{"ok": true, "hex": "RRGGBB"}
- Parametro
Esempio: http://<ip_esp32>/color?hex=FF00AA
API Configurazione (Nuovo)
GET /api/get_config→ restituisce JSON condhcp,ssid,pass,ip,mask,gw,dns.POST /api/save_config→ accetta JSON con i campi sopra e salva su/config.json.POST /api/reboot→ riavvia la scheda per applicare le nuove impostazioni.
Pagina Web
La pagina data/index.html include:
- Un
<input type="color">per scegliere il colore - Un bottone “Spegni” (porta il LED a nero
#000000) - Script che invia la scelta a
/colore mostra lo stato - Un link alla pagina di setup rete
Note
- Luminosità NeoPixel: impostata a un valore moderato in
setup(); modifica se necessario. - Pin NeoPixel: nel codice è impostato il pin 21 per il LED onboard; se la tua scheda usa un altro pin, modifica il costruttore
Adafruit_NeoPixelinsrc/main.cppoppure usa la costantePIN_NEOPIXELse disponibile nel core. - Le credenziali Wi‑Fi sono in chiaro in
src/main.cppper semplicità: valuta metodi più sicuri per ambienti reali. - Configurazione persistente: salvata su SPIFFS in
/config.jsone caricata automaticamente all’avvio.
Indicazioni LED
- Rosso: durante l’avvio in modalità STA fino al completamento della connessione Wi‑Fi.
- Blu: modalità Access Point di setup attiva.
- Spento: dopo la connessione in STA (completato l’avvio).
Pinout
L’immagine seguente mostra il pinout della scheda (file incluso nel repo):
GET /ls→ restituisce elenco file su SPIFFS (testo). Usato dainfo.html.GET /fsinfo→ restituisce info spazio usato/total e presenzaindex.html(testo). Usato dainfo.html.POST /api/delete→ elimina un file. Bodypath=/nomefile(x-www-form-urlencoded). Usato daarchivio.html.POST /upload→ upload file (multipart/form-data). Usato daarchivio.html.GET /api/download?path=/file→ scarica un file forzando il download (Content-Disposition). Usato daarchivio.html.
Per il codice sorgente e gli altri progetti visita il profilo GitHub di rsodvd79 .
