Un badge rotondo con display AMOLED da 466×466 pixel può fare molto più che mostrare un logo. Il firmware di curisama lo trasforma in un trackpad e in un air mouse Bluetooth HID, e ci aggiunge orologio, timer, registratore audio, giochi e animazioni fidget. La scheda al centro è la Waveshare ESP32-S3-Touch-AMOLED-1.75C, con custodia di alluminio fresato e 32 MB di flash.
Il progetto punta su due cose concrete: il risparmio energetico e la portabilità del codice. Infatti la stessa interfaccia gira anche su PC, grazie a un file port.h che isola tutta la parte hardware-specifica. Quindi si può provare la UI senza toccare la scheda, e poi flashare il firmware vero.
Trackpad, air mouse e anello di tasti funzione via Bluetooth LE
Il collegamento BLE HID è il cuore del progetto. Strofina la faccia del badge e il puntatore del PC si muove come su un trackpad. In alternativa punti il badge e usi il giroscopio come air mouse. In più c’e’ un anello di tasti funzione extra, sempre sullo schermo rotondo.
L’app orologio ha quattro schermate con swipe verticale. La prima è un quadrante a sette segmenti, poi c’e’ il timer con un anello che si chiude, il cronometro con i giri e la sveglia sorvegliata dal launcher. Il registratore invece salva audio in IMA-ADPCM a 16 kHz sulla flash: circa 52 minuti di registrazione. Premendo export il badge si ripresenta come unità USB in sola lettura con i file .WAV.
- Trackpad: si strofina la faccia del badge per muovere il puntatore
- Air mouse: si punta con il giroscopio per controllare il PC
- Anello di tasti funzione extra sul display
- Orologio con quattro schermate swipe verticali
- Registratore audio in IMA-ADPCM a 16 kHz, circa 52 minuti su flash
- Export come unità USB in sola lettura con file .WAV
Il codice sta in un repository di curisama su GitHub, con il firmware completo e gli script di build. La prima build scarica circa 20 MB di componenti, quindi conviene lanciare tools/setup.sh per configurare il toolchain prima di compilare.
Standby da 11,9 a 19,6 ore con tickless idle e rail AXP2101 spente
Il risparmio energetico è la parte più curata. Il firmware usa CONFIG_PM_ENABLE, il tickless idle, lo spegnimento reale del pannello e delle rail AXP2101 inutilizzate. Così lo standby è passato da 11,9 a 19,6 ore. Con una carica il badge funziona circa un giorno.
Anche il WiFi si accende solo quando serve. Il badge lo attiva per impostare l’orologio quando è diventato obsoleto, più una scansione iniziale per scegliere la rete direttamente sul display. Perciò la radio resta spenta per la maggior parte del tempo.
Sul fronte grafico, l’animazione dell’acqua è stata portata da 3 FPS a 18 FPS. La scheda 1.75C ha 32 MB di flash e 8 MB di PSRAM octal, mentre la versione 1.75 semplice si ferma a 16 MB di flash. Il firmware gira su ESP-IDF 5.5.
Per flashare ci sono due strade. La prima è un flasher da browser basato su WebSerial, che richiede Chrome o Edge. La seconda usa esptool per caricare i binari delle release. In più c’e’ tools/regress.sh per i controlli di regressione, e il simulatore desktop che si avvia con sim/build.py e sim/server.py.
- ESP-IDF 5.5 come ambiente di sviluppo
- Simulatore desktop con sim/build.py e sim/server.py
- Flasher da browser basato su WebSerial, richiede Chrome o Edge
- esptool per flashare i binari delle release
- tools/setup.sh per configurare il toolchain
- tools/regress.sh per i controlli di regressione
Chi vuole rifare il progetto parte da una scheda con display AMOLED rotondo e touch, e da lì costruisce tutto il resto. Il firmware è pensato per essere letto e modificato, con la parte hardware separata dal resto. Quindi si può cambiare scheda senza riscrivere l’interfaccia, oppure provare le modifiche sul PC prima di flashare.
