Sito Web su microcontroller ESP32 con 520 KB di RAM: funziona davvero!

HelloESP dimostra che un microcontrollore ESP32 con appena 520 KB di memoria RAM può servire un sito completo grazie a WebSocket e Cloudflare Workers. Analisi tecnica, limiti e implicazioni.

Un sito Web pubblico che gira interamente su un microcontrollore da pochi euro sembra un esercizio accademico; in realtà mette in discussione molte assunzioni consolidate sul modo in cui costruiamo servizi online. Il progetto HelloESP dimostra che, con appena 520 KB di RAM e una CPU embedded, è possibile servire pagine HTML, gestire richieste HTTP e persino raccogliere dati ambientali in tempo reale.

Già nei primi anni 2010 gli ESP8266 erano usati come Web server minimali, ma l’evoluzione delle librerie asincrone e delle architetture edge ha ampliato drasticamente le possibilità. Oggi, con un economico chip ESP32 e servizi come Cloudflare Workers, che aiuta a sviluppare applicazioni serverless, si riesce a costruire un’infrastruttura ibrida sorprendentemente efficace, capace di sostenere traffico reale con risorse ridotte.

Un server Web completo dentro un microcontroller ESP32

Come anticipato, l’autore del progetto HelloESP si è servito di un ESP32 con architettura dual-core Xtensa, frequenza fino a 240 MHz e una dotazione di memoria che, per gli standard Web, è estremamente limitata. Eppure, il dispositivo elettronico è in grado di gestire tutto: file HTML, script JavaScript, immagini e log sono letti da una microSD formattata con il file system FAT32 e serviti direttamente dal dispositivo.

La piattaforma è una DOIT ESP32 DevKit V1, che monta un modulo ESP32-WROOM-32 contenente il SoC ESP32 (Xtensa LX6 dual-core), con connettività WiFi/Bluetooth, flash integrata e gestione completa delle periferiche I/O.

Il firmware, sviluppato con framework Arduino tramite PlatformIO, implementa un server HTTP asincrono che non lavora in modo tradizionale. Non esiste un listener pubblico su Internet; il dispositivo mantiene invece una connessione persistente verso l’esterno. Il punto è interessante: si evita completamente l’esposizione diretta del dispositivo sulla rete globale, riducendo la superficie d’attacco e bypassando problemi di NAT domestico.

Relay via Cloudflare: un compromesso intelligente

Come evidenziato nel precedente paragrafo, il traffico pubblico non raggiunge mai direttamente il microcontrollore.

La catena utilizzata dallo sviluppatore di HelloESP ha origine nel browser Web, passa per una richiesta HTTPS, per un Cloudflare Worker, WebSocket e infine arriva al microcontroller ESP32. Cloudflare Worker agisce come intermediario e inoltra ogni richiesta attraverso una connessione WebSocket già aperta dal dispositivo.

In pratica, il microcontrollore diventa un backend remoto che risponde su richiesta, senza mai esporre porte TCP pubbliche. Le risposte più grandi sono automaticamente frammentate e codificate in base64 per adattarsi ai frame WebSocket, una scelta necessaria vista la limitazione di buffer e memoria disponibile.

Una delle parti più interessanti riguarda l’aggiornamento in tempo reale della pagina HTML: il dispositivo invia eventi ogni 5 secondi trasmettendo i dati provenienti dai sensori, log di accesso e stato del sistema. Il Worker invia questi eventi direttamente ai browser utilizzando i Server-Sent Events (SSE, una tecnologia che permette al server di aggiornare automaticamente il client), evitando così la necessità di effettuare richieste ripetute e continue al server (polling).

In pratica, il browser resta in ascolto e riceve aggiornamenti push; se la connessione SSE fallisce, il sistema torna automaticamente a un polling ogni 30 secondi. È una soluzione semplice ma robusta, che riduce il carico effettivo sul microcontrollore.

Sensoristica e integrazione hardware

Il progetto non si limita a servire una semplice pagina Web ma integra sensori ambientali come BME280 per temperatura, umidità e pressione e CCS811, utilizzato per misurare i composti organici volatili (VOC, cioè sostanze chimiche presenti nell’aria come solventi o vapori) e stimare la concentrazione di CO₂ equivalente (eCO₂), un valore calcolato che rappresenta indirettamente la qualità dell’aria. I dati sono registrati su file CSV ogni 5 minuti e aggregati su base settimanale e mensile.

Gestione della memoria e resilienza

Con circa 180 KB liberi a regime, ogni allocazione conta. Il firmware integra diversi sistemi di protezione: esegue un riavvio automatico quando la memoria disponibile scende sotto una certa soglia critica, utilizza un watchdog WiFi (un controllo continuo che verifica lo stato della connessione e interviene in caso di blocchi), applica un meccanismo di riconnessione con retry esponenziale (cioè aumenta progressivamente il tempo tra un tentativo e l’altro per evitare sovraccarichi) e garantisce scritture atomiche sul file system, assicurando che i dati siano salvati in modo completo e senza rischio di corruzione anche in caso di interruzioni improvvise.

Nello specifico, la scrittura su scheda microSD segue una sequenza precisa (tmp, backup e rename) per evitare corruzioni in caso di crash. È un approccio tipico dei sistemi embedded affidabili, ma raramente si vede nei progetti amatoriali.

Edge computing e minimalismo: una lettura critica

Il progetto HelloESP funziona anche come riflessione tecnica: il sito completo pesa meno di una singola immagine ad alta risoluzione, tipicamente presente nelle pagine Web moderne e dimostra quanto overhead introducano framework, tracking e asset superflui. Combinare microservizi edge con nodi ultra-leggeri aiuta a ridurre costi e complessità, con una sorta di ritorno alle origini, ma con strumenti più maturi.

Va detto che il sistema HelloESP, così come oggi concepito, sostiene poche richieste simultanee prima che la latenza diventi evidente: la RAM è ridotta e ogni connessione WebSocket occupa buffer e stack.

La terminazione HTTPS, inoltre, avviene sul Worker, mentre in LAN il traffico resta in HTTP. Infine, la microSD rappresenta un punto debole fisico: migliaia di scritture giornaliere portano inevitabilmente a usura.

HelloESP non è un prodotto pronto per la produzione ma è un eccellente banco di prova: nel repository GitHub ufficiale si trova tutto il necessario per replicare l’idea ed eventualmente migliorarla in proprio.

Questo articolo contiene link di affiliazione: acquisti o ordini effettuati tramite tali link permetteranno al nostro sito di ricevere una commissione nel rispetto del codice etico. Le offerte potrebbero subire variazioni di prezzo dopo la pubblicazione.

Ti consigliamo anche

Link copiato negli appunti