Un Display Extra per la mia Model 3

Dopo l’acquisto della mia Model 3 Long Range, a marzo 2020, ho passato più di un mese (complice anche il lockdown) ad installare qualsiasi diavoleria di accessorio reperibile on line per il mio nuovo giocattolo (!).

Come quasi tutti i clienti Model 3 apprezzo grandemente la pulizia della console centrale, senza bocchette per l’aria, manopoline e tutti i controlli “old school”; trovo invece che il grande display centrale procuri una certa distrazione durante la guida.

Mentre per le normali impostazioni, per la musica e per il navigatore il tablet 15” è perfetto, quando si ha bisogno di tenere d’occhio le cose fondamentali (velocità, rigenerazione, spie) l’occhio si sposta continuamente dalla strada alla parte sinistra dello schermo.

Ho pensato quindi se potevo utilizzare la mia esperienza lavorativa e adattare qualcosa fatto negli anni scorsi per realizzare un display aggiuntivo su cui mostrare le informazioni “base”, e cioè

  • Le spie essenziali (cinture, frecce, fari, allarmi ecc)
  • Velocità (possibilmente sia in modo analogico che digitale)
  • Potenza erogata e rigenerata
  • (se avanza spazio) coppia erogata e giri del motore

Inoltre il mio monitor doveva avere le seguenti caratteristiche meccaniche:

  • essere gradevole da vedere;
  • integrarsi con il volante, appoggiandosi al piantone in modo da essere rimovibile se necessario;
  • avere lo stesso colore e finitura, per quanto possibile, del tablet di bordo

È nato così un progetto DIY che mi ha impegnato (a tempo perso) per qualche mese, e che vado a presentare.

Si tratta di un display 7 pollici a risoluzione 1024×600, ad alta luminosità, abbinato ad un embedded computer tipo Raspberry PI. Questo PC, grande come una carta di credito, permette di montare Linux come sistema operativo, e di utilizzare librerie grafiche di nuova generazione con accelerazione 3D, per la migliore resa visiva.

Raspberry PI 3A+

Intorno a questa piattaforma ben collaudata, in quanto la avevo già usata in altri progetti, è stata progettata una scheda che fornisce l’alimentazione al tutto e che interfaccia il Raspberry con il bus di bordo (Vehicle CanBus) Sul bus viaggia una miriade di messaggi che contengono informazioni sui vari servizi di bordo, il problema è decodificarli per capire quali “ascoltare” per estrarre le cose che mi interessano.

Per risolvere questo problema è stato di grande aiuto il forum americano teslaownersonline, in cui vari smanettoni si sono messi a decodificare e catalogare tutti (o quasi) i messaggi che viaggiano sui vari CanBus della nostra Model 3 (si perché di CanBus ce ne sono almeno 3 !).

Per prelevare il segnale del Canbus, oltra a una fonte di alimentazione a +12V per il mio display ho usato il cablaggio che corre nel retro del tunnel centrale. Sotto alle bocchette d’aria posteriori, infatti, corre un cablaggio con una coppia di connettori che porta i segnali che mi servivano. Per non manomettere in nessun modo il cablaggio esistente mi sono procurato online un estensore di cablaggio, dal quale ho prelevato i segnali che mi servivano. L’estensore si inserisce tra i due connettori esistenti e quindi può essere rimosso in qualsiasi momento.

Adattatore CanBus e installazione

Ho fatto poi passare il cavetto all’interno del fianchetto sinistro del tunnel, che si allenta senza troppi problemi, facendolo infine uscire sotto il volante. In questo modo il cavo resta pressoché invisibile senza dover smontare pezzi importanti.

Contenitore

In commercio si trovano delle custodie per Raspberry ma sono tutte abbastanza profonde e poco adatte per il posizionamento a mo’ di cruscotto. Dal momento che non ho trovato nulla che facesse al caso mio, ho preferito disegnare il contenitore e stamparmelo in casa. Ho rilevato forma e dimensioni del piantone dello sterzo, in modo da progettare un contenitore da mettere “a cavalcioni” dello stesso.

Rendering del contenitore

Dal momento che ho deciso di realizzare il contenitore in stampa 3D ho preferito spezzarlo in tre parti: anteriore, posteriore corpo e posteriore coperchio. Il progetto è pronto per essere convertito in un file per una stampa stereolitografica professionale, penso infatti di utilizzare un service esterno per la realizzazione dei prossimi prototipi.

Per fissare il tutto ed evitare che il display potesse muoversi a causa delle vibrazioni ho disegnato due fessure nelle orecchie inferiori. In queste fessure viene fatta passare una fettuccia di velcro che si richiude nella parte inferiore del volante, risultando invisibile e permettendo di rimuovere il tutto in pochi secondi.

Fettuccia di fissaggio

Il contenitore è stato stampato in 3D in ABS Pro, un filamento molto interessante. Di seguito è stato carteggiato per eliminare il più possibile i segni dei layer orizzontali, quindi stuccato, verniciato con una vernice per carrozzieri con una tinta simile al retro del monitor principale. Una mano di protettivo trasparente opaco ha dato il tocco finale.

Elettronica

Come dicevo, tutta l’elettronica di controllo è costruita come intorno ad un Raspberry, il modello PI 3A+ per la precisione. È più piccolo ed economico del classico Raspberry, ma soprattutto è più basso, cosa che ci aiuta a limitare lo spessore del contenitore. A parte è stato progettato un modulo di alimentazione ed una interfaccia CanBus simile ad alcuni shield in commercio, il tutto utilizzando componenti bassi e mettendo il tutto su di un unico circuito stampato. Uno speciale cavo piatto di connessione HDMI è stato realizzato per portare il segnale video al monitor 7”.

Retro del display con elettronica in evidenza

Software

Sostanzialmente è necessario comunicare con il bus della vettura e convertire le informazioni in icone e animazioni sullo schermo. Inoltre l’interfaccia grafica deve essere accattivante e sposarsi bene con la risoluzione native dello schermo. Questa parte “creativa” ha portato via abbastanza tempo, ma disegnare delle situazioni grafiche e poi animarle via software da una bella soddisfazione. Ho scelto di utilizzare la libreria Qt (Qt Quick per la precisione), strumento apprezzato da molti per la relativa semplicità d’uso e gli ottimi risultati che permette di ottenere.

La GUI realizzata in Qt Quick

La parte grafica è stata scritta in QML e quella di comunicazione in C++.

Particolare attenzione è stata posta nel rendere robusto il filesystem Linux residente a bordo, in quanto il display non deve soffrire in caso di distacco repentino dell’alimentazione. Questo in teoria non succede mai, in quanto il sistema rileva quando l’auto si mette in standby, e dopo un certo tempo avvia lo spegnimento automatico. Ad ogni modo, specialmente con questi sistemi la prudenza non è mai abbastanza.

È stato scelto btrfs (si legge butter filesystem) in quanto file system che permette il mirroring dei dati e la riparazione automatica di eventuali errori. Per ridurre al minimo la possibilità di una perdita di dati il sistema utilizza due unità logiche in RAID, ovviamente sulla stessa SD Card, forse il punto debole di tutta la catena (vedi sotto “prossimi sviluppi”).

Il lato negativo di una simile organizzazione (btrfs + RAID) è la (relativamente) lenta partenza del sistema (circa 30 secondi). Normalmente questo non è un problema. Salgo in macchina, inserisco il PIN per guidare, scelgo un brano musicale, inserisco la retromarcia…e il mio display è operativo!

Il display installato

Prova su strada

Il display è stato montato sulla mia Model 3 e testato per un paio di mesi, comportandosi benissimo: mai un problema di mancato avvio o di comunicazione con il CanBus.

On the road !

Devo ancora verificare la resistenza del tutto in condizioni di lavoro difficili come quelle che si verificano d’estate, se si lascia l’auto al sole e le temperature a livello della plancia possono superare tranquillamente i 60°; eventualmente è prevista la possibilità di inserire una piccola ventola di raffreddamento.

Prossimi sviluppi

Nell’ottica di rendere il sistema più compatto ed affidabile sto valutando la possibilità di sostituire il Raspberry PI 3A+ con il suo gemello Compute Module 4, nato apposta per realizzare applicazioni embedded. È più complicato da utilizzare ma offre alcuni vantaggi, tra cui la reperibilità garantita per almeno 7 anni e la maggiore robustezza alle vibrazioni, dal momento che utilizza una eMMC, una memoria saldata direttamente sulla scheda, al posto della SD card rimovibile.

Raspberry Compute Module 4

Se piace….

Il display è stato presentato su un paio di gruppi Facebook  di appassionati e Tesla owners ed ha riscosso un certo interesse. Per rispondere a qualche domanda che mi è stata fatta “ne produrrai qualcuno per venderlo ?”….Perché no? se ricevessi un certo numero di richieste potrei valutare la realizzazione di una piccola serie per qualche collega “teslaro” !