joeldc13 | Nouveau projet : SpeedGauge, un manomètre digital maison (Speeduino, MegaSquirt, OBD2, CAN)
Après le dashboard et le volant, il me restait des composants sur l'établi : quelques cartes ESP32-C3, un Raspberry Pi 3, deux ou trois écrans... Plutôt que de les laisser prendre la poussière, je me suis lancé dans un nouveau projet : un manomètre digital rond de 52 mm, qui se loge dans un support de jauge classique et qui affiche ce que l'on veut, directement depuis le calculateur.
Et comme d'habitude, ça a un peu dérapé Au départ c'était « juste un mano », à l'arrivée c'est une vraie petite carte électronique, un simulateur de calculateur, des tests sur une vraie voiture et une campagne de tests d'endurance. Ça va être long, désolé
1. L'idée
Les manos digitaux du commerce compatibles ECU programmable, c'est soit très cher, soit limité à un seul calculateur. L'objectif : un écran simple, joli, qui se branche sur à peu près tout, et qui reste sous les 100 €. Si le résultat tient la route, l'idée est d'en faire une petite série pour les copains et pour ceux que ça intéresse.
Ce qu'il fait :
- Écran rond IPS de 1,28" (240 × 240), style racing inspiré de Haltech (fond noir, jaune et rouge), comme sur le dashboard
- Pages configurables : une grosse valeur, deux, quatre, ou une page diagnostic
- Une shift light sur tout le tour de l'écran : jaune, orange, rouge, puis tout clignote au régime de passage
- Alertes : l'écran bascule tout seul sur la valeur en défaut (eau trop chaude, AFR trop pauvre, pression d'huile...) et clignote en rouge jusqu'à ce qu'on l'acquitte
- Un bouton en façade, plus une entrée pour un bouton déporté (au volant par exemple)
- Tous les seuils, échelles et pages se règlent depuis un petit configurateur sur PC : on branche la jauge en USB, on ouvre la page dans Chrome, et c'est tout. Le même outil fait les mises à jour du logiciel
Les différentes pages, en vrai (ce sont des captures de l'écran récupérées directement par l'USB, mises dans une lunette pour faire joli) :
La shift light en action, quand le régime monte :
Et l'alerte, quand l'eau dépasse le seuil, impossible de la rater :
2. Compatible avec quoi ?
C'est là que le projet a pris de l'ampleur :
- Speeduino par le port série, évidemment (c'était le point de départ)
- MegaSquirt : MS1, MS2 / MS3 en série, et MS3 en CAN
- OBD2 sur n'importe quelle voiture récente, soit en filaire sur le CAN, soit sans fil avec un dongle Bluetooth BLE (j'ai un OBDLink CX)
- Et en CAN, les diffusions des calculateurs du commerce : Haltech, Link, ECUMaster et MaxxECU
Côté électronique, la carte accepte du série TTL (5 V ou 3,3 V), du RS232 et du CAN, avec une alimentation 12 V protégée (inversion de polarité, surtensions, fusible).
3. Le premier proto
Premier jet sur une plaque d'essai avec une carte ESP32-C3 SuperMini (la même que dans le volant) et un petit module d'écran rond. C'est moche, il y a des fils partout, mais ça permet de tout valider avant de dessiner la carte.
(La page diagnostic des premiers essais en OBD2 : là, ça ne marchait pas encore, « SYNC LOST » et 29 erreurs )
4. Le simulateur de calculateur
Pour tester une jauge compatible avec dix calculateurs différents, il faudrait... dix calculateurs différents. Pas vraiment dans le budget
Du coup j'ai recyclé le Raspberry Pi 3 et l'écran 7" de mes fonds de tiroir en simulateur de calculateur. Il se fait passer au choix pour une Speeduino, une MegaSquirt, une voiture en OBD2 (filaire ou en se faisant passer pour un dongle OBDLink en Bluetooth), une Haltech, une Link, une ECUMaster ou une MaxxECU.
Il rejoue mes vrais logs de roulage (Pouilly !), on peut forcer n'importe quelle valeur depuis une page web, et surtout il sait simuler des pannes : calculateur muet, trames coupées ou corrompues, valeurs aberrantes, bus saturé... Le but : vérifier que la jauge ne se plante jamais et n'affiche jamais n'importe quoi.
(Le banc : le Pi et son écran en haut, le proto en bas, relié en Bluetooth au faux dongle. À droite, les premières pièces imprimées du boîtier.)
5. La carte électronique
Une fois le proto validé, j'ai dessiné une vraie carte sous KiCad : un PCB rond de 48 mm, en composants CMS, assemblé directement chez JLCPCB. C'est mon premier PCB de ce niveau, et franchement le résultat est bluffant.
- Un module ESP32-C3 (Bluetooth intégré), antenne en bordure de carte
- Un convertisseur 12 V → 3,3 V automobile (supporte jusqu'à 40 V en continu), avec ses protections
- Un transceiver CAN, un convertisseur RS232 qui s'active par cavalier, et la terminaison CAN de 120 Ω sur pont à souder
- Une prise USB-C pour la configuration et les mises à jour
- Un bornier débrochable 8 voies : +12 V, masse, éclairage, bouton déporté, RX, TX, CANH, CANL
- L'écran se monte de l'autre côté, avec le bouton
Le boîtier est en PETG imprimé sur la Bambu, une lunette fine et une bride en U pour le support de jauge.
La commande est partie : 5 cartes, dont 2 assemblées pour valider avant de lancer la petite série. En attendant, le logiciel tourne déjà sur le proto, prêt pour la vraie carte.
6. Premier essai sur une vraie voiture : la 206+
Le simulateur c'est bien, mais rien ne vaut une vraie voiture. Premier cobaye : la 206+ de 2011, avec l'OBDLink CX branché sur la prise OBD et le proto posé sur le siège passager.
Et première surprise : la 206+ ne cause pas en CAN comme je le pensais, mais en KWP2000 sur la ligne K, un protocole bien plus ancien et beaucoup plus lent. Petite séance de mise à jour dans la voiture, et c'est reparti : environ 10 mesures par seconde, avec des valeurs cohérentes avec le combiné. Pour un protocole des années 2000, ça le fait
Du coup, la jauge sait maintenant parler les 9 protocoles OBD2 existants (CAN 11 et 29 bits à 250 ou 500 k, KWP2000, ISO 9141, et les deux J1850 des américaines).
Et en vidéo :
https://youtube.com/shorts/llYqu6HG0QA
7. Les tests d'endurance (les « burndown tests »)
Avant de proposer ça à qui que ce soit, je voulais être sûr que ça tient. Donc on a laissé tourner le banc pendant des heures, sans intervention :
- 42 voitures simulées en OBD2 : Peugeot, Renault, VW, BMW, Mercedes, Ford, Toyota, Mini, Volvo hybride, électriques... Chacune avec ses petites manies : calculateur diesel lent qui répond « patientez », papillon refusé chez BMW, bus CAN chargé, protocoles anciens, etc. Testées en Bluetooth, et 26 d'entre elles aussi en CAN filaire
- 11 configurations passées une par une : Speeduino, MegaSquirt (3 variantes), OBD2 filaire et Bluetooth, Haltech, Link (2 formats), ECUMaster, MaxxECU
- Pour chacune : démarrage, exactitude des valeurs moteur froid, chaud et en conditions normales, 4 minutes de relecture de log, puis 5 types de pannes injectées
Résultat de la première campagne de 1 h 35 : 175 tests sur 175 conformes. Aucun plantage, aucun redémarrage, pas de fuite mémoire, et la jauge retrouve ses valeurs en moins de 2 secondes après chaque panne. La première valeur s'affiche entre 6 et 16 secondes en Bluetooth (le temps de se connecter au dongle), et presque instantanément en filaire.
Et pour ceux qui aiment les chiffres, en mesures par seconde : 166 en OBD2 filaire, 48 en Haltech et MaxxECU, 25 en Speeduino. Largement assez pour un mano
Les tests ont aussi servi à trouver de vrais bugs, que l'on n'aurait jamais vus sans le banc : un filtre CAN qui bloquait la MegaSquirt sur la vraie carte, ou les diesels lents dont la réponse « patientez » était prise pour un refus.
8. Les galères
- Le Wi-Fi de la petite carte SuperMini était quasi invisible à pleine puissance. Au final j'ai carrément retiré le Wi-Fi, au profit de la configuration en USB : plus simple, et plus de mémoire pour le Bluetooth
- Le dessin des arcs de cercle prenait 200 ms par image : une jauge qui rame, ça ne pardonne pas. Réécrit autrement, l'affichage d'une image prend maintenant 9 ms
- Écrire sur l'USB quand aucun logiciel n'écoute côté PC figeait complètement le processeur... Bien vicieux à trouver, celui-là
- Les cheap ELM327 Bluetooth à 10 € ne marchent pas : ils sont en Bluetooth « classique », l'ESP32-C3 ne parle que le BLE. Il faut un dongle BLE, comme l'OBDLink CX
- L'OBDLink CX n'accepte un nouvel appairage que pendant les 5 minutes qui suivent son branchement. On s'en est rendu compte après un moment à se demander pourquoi plus rien ne se connectait
9. Et la suite : une V2 « premium »
La V1 est pensée rapport qualité / prix. Mais tant qu'à faire, je réfléchit déjà à une V2 plus haut de gamme :
- Un boîtier de 60 mm, avec un écran rond bien plus grand et plus fin : 1,85" en 360 × 360, voire de l'AMOLED en 466 × 466
- Un processeur plus costaud (ESP32-S3)
- Et surtout un enregistrement des logs sur carte micro SD, au format MegaLogViewer, que l'on récupère en branchant simplement la jauge en USB sur le PC
Le module 1,85" est commandé pour faire les premiers essais.
En attendant
Prochaines étapes : recevoir les cartes, les valider, puis essayer sur la Mini R53, la Volvo V60 T8 et la barquette. Si certains roulent en Haltech, Link, ECUMaster ou MaxxECU et veulent jouer les cobayes, ça m'intéresse beaucoup : c'est la seule partie que je n'ai pas pu tester en vrai
Et si vous êtes intéressés par une jauge, dites-le-moi, ça m'aidera à dimensionner la série (je suis parti sur une première série de 30 PCB, c'est la limite qui me permettrait d'avoir un prix sous les 90 euros je pense) |