| Main category | electronics |
| PUBLISHED | |
| AUTHOR | Camiu |
| TAGS | cars,diy,electronics,embedded,esp32,software |
OTA-Bot-Mochi: come trasformare un display Waveshare in un copilota da cruscotto (e compagno da banco)
Tutti quelli che bazzicano con i microcontrollori hanno un cassetto delle tentazioni. In quel cassetto prima o poi ci finisce un modulo display all-in-one con touch e accelerometro integrato: lo compri dicendoti "ci farò una centralina minimale", e invece resta lì a prendere polvere.
Poi ti viene l'idea: perché lasciarlo a fare la muffa quando può diventare un piccolo bot interattivo a doppia vita? Da una parte compagno da scrivania mentre lavori o saldi, dall'altra copilota animato piazzato sulla plancia dell'auto che reagisce alla guida.
Nasce così OTA-Bot-Mochi, un firmware modulare per ESP32-S3 cucito attorno al display rotondo touch di Waveshare.
Perché l'accelerometro a bordo fa la differenza (soprattutto in curva)
Chiunque abbia provato a mettere un gadget animato in auto si scontra con il solito problema: se ha solo animazioni cicliche a caso dopo due minuti stanca.
Mochi invece sfrutta il sensore IMU a 6 assi integrato sul modulo:
- In auto (modalità copilota): grazie al filtraggio dei dati inerziali, gli occhi sentono i trasferimenti di carico. Quando imposti una curva decisa lo sguardo scivola verso l'interno o reagisce all'accelerazione laterale; se pianti una frenata sgrana gli occhi o si schiaccia in avanti. Non è un video in loop, è fisica in tempo reale.
- Sulla scrivania: basta un colpetto sul piano di lavoro o una toccata per svegliarlo, fargli strizzare gli occhi o fargli seguire i movimenti se lo prendi in mano.
- Touch capacitivo: niente pulsanti meccanici che vibrano; swipe e tap per regolare al volo impostazioni, cambiare schermate o passare alla modalità orologio/dati.
- Audio I2S / ES8311 & Buzzer: feedback sonori e versetti sintetizzati quando reagisce a sollecitazioni o comandi.
L'anatomia del software (senza lo sketch monolitico da tremila righe)
Mettere insieme grafica procedurale fluida, lettura continua dell'IMU, gestione del touch e audio su un microcontrollore rischia di trasformare il codice in una marmellata ingestibile. L'architettura è stata divisa a blocchi puliti e indipendenti:
| Modulo | Ruolo nell'ecosistema | Dettagli da sviluppatore |
|---|---|---|
**eyes & motion_filter** |
Motore visivo & fisica | Geometria procedurale delle pupille, palpebre parametriche e filtraggio vettoriale dell'IMU per evitare che le vibrazioni dell'auto facciano tremare gli occhi. |
**ui & clock** |
Strumenti di bordo | Schermate contestuali, orologio di sistema, layout compatto e sincronizzazione meteo/dati. |
touch |
Input gestuale | Gestione swipe e tap capacitivi reattivi. |
sound |
Feedback sonoro | Driver per codec ES8311 via I2S, toni PCM e fallback su buzzer hardware. |
power |
Gestione energetica | PWM sul backlight per non accecarti se guidi di notte e monitoraggio alimentazione/batteria. |
settings |
Persistenza NVS | Preferenze salvate in Flash (niente reset se togli l'alimentazione all'auto) e comandi USB seriali. |
Il salvavita: l'emulatore su PC
Tarare la reattività dell'accelerometro e la curva di apertura delle palpebre flashando l'ESP32 a ogni modifica di 2 pixel è il modo migliore per perdere la pazienza.
Per velocizzare lo sviluppo ho preparato un emulatore desktop in C++ con stub completi per Arduino e FreeRTOS. Con uno script Bash o PowerShell lanci la simulazione su schermo, muovi gli input da tastiera/mouse, verifichi fluidità e logica degli stati in un istante, e compili sulla scheda reale solo quando il risultato convince.
Risultato: zero saldature, massima resa
Che sia fissato con una staffa o del biadesivo vicino alle bocchette dell'aria o che stia a far da guardia ai circuiti stampati sul banco, Mochi fa esattamente quello che deve fare: porta un tocco di espressività dinamica e interattiva senza richiedere schede custom o cablaggi volanti.
Il codice è interamente open source su GitHub con la release v1.0 pronta: github.com/camiu01/OTA-Bot-Mochi.
No approved comments yet.