Storie interattive su e-ink con firmware ESP32

Un firmware personalizzato trasforma i lettori e-ink Xteink in piattaforme per storie interattive scritte in linguaggio ink. Il progetto, firmato da t0mg, unisce un runtime C++ chiamato inkcpp a un IDE desktop dedicato, eenky, per scrivere, compilare e caricare le storie. Il risultato è un dispositivo economico e hackerabile che porta la narrativa interattiva su un display e-ink.

Il firmware esegue storie compilate in formato .bin utilizzando il runtime inkcpp. La configurazione native compila un eseguibile host che simula il display e-ink in una finestra SDL2 800×480, permettendo l’anteprima delle storie prima di caricarle sul dispositivo. Inoltre, il firmware supporta l’aggiornamento OTA: su ESP32-C3 tramite un firmware updater minimale, su ESP32-S3 tramite partizioni A/B simmetriche.

Memoria e partizioni su ESP32-C3

I dispositivi ESP32-C3 hanno 16 MB di flash e 400 KB di SRAM interna, insufficiente per tenere in memoria interi binari di storie ink. Per questo, la storia selezionata viene copiata dalla scheda SD alla partizione flash ink_cache, che occupa circa 7,9 MB, e mappata in memoria tramite esp_partition_mmap. Così si esegue in modalità zero-copy, consentendo storie fino a circa 5 MB.

La partizione app0 da 7 MB ospita il firmware principale, mentre una partizione app1 da 1 MB contiene il firmware updater minimale per gli aggiornamenti OTA. Su ESP32-S3, invece, le due partizioni simmetriche di circa 7,9 MB ciascuna permettono un aggiornamento A/B senza interruzioni. Le storie vengono caricate direttamente nella PSRAM di bordo, senza bisogno della partizione ink_cache.

L’IDE eenky e il flusso di lavoro

eenky, basato su Electron, permette di scrivere storie in linguaggio ink, compilarle in JSON e poi in .bin, e infine caricarle sul dispositivo via Web Serial. Include anche un simulatore SDL per provare le storie sul computer. Il firmware usa il versionamento semantico con prefisso v, a partire da v0.1.0, e si basa su PlatformIO, ESP-IDF, inkcpp, SDL2 e Unity.

Il progetto è raccolto nel repository di t0mg, dove si trovano il codice del firmware, l’IDE e le istruzioni per iniziare. Per chi vuole costruire un lettore di storie interattive, questo è un punto di partenza completo: si parte da una scheda ESP32-C3 o ESP32-S3 e da un display e-ink Xteink, e si arriva a un dispositivo che esegue narrative ramificate.

Il progetto dimostra come un display e-ink economico possa diventare una piattaforma di lettura interattiva. I numeri parlano chiaro: storie fino a 5 MB su ESP32-C3, aggiornamenti OTA su entrambe le famiglie di chip, e un IDE che gestisce l’intero flusso. Per i maker che vogliono sperimentare con la narrativa digitale, questo è un terreno fertile.

Per replicare il progetto servono pochi elementi: una scheda ESP32-C3 o ESP32-S3, un lettore e-ink Xteink e una scheda SD per le storie. Il firmware si compila con PlatformIO e si carica via Web Serial. La parte più interessante è la possibilità di scrivere le proprie storie in linguaggio ink e vederle funzionare su un dispositivo dedicato.


Fonte: https://github.com/t0mg/eenk

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Menu