Un badge ESP32-S3 diventa trackpad e air mouse Bluetooth

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.


Fonte: https://github.com/curisama/The-Badge

Lascia un commento

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

Menu