Skip to content

Arduino, CANBUS et multiplexeur pour commandes au volant

MyAlpDroid edited this page Jul 17, 2022 · 6 revisions

Comment retrouver les commandes au volant

C'est l'enjeu essentiel de l'upgrade. En effet, sans les commandes au volant, on perd pas mal d'intérêt de l'upgrade car je trouve très énervant de tenter régulièrement de tapoter sur l'écran pour modifier le volume, changer de musique ou décrocher le téléphone.

On l'a vu dans l'introduction , il y a une vraie divergence entre le poste Alpine qui utilise le bus CAN pour recevoir les commandes au volant et les postes Android qui généralement utilisent une entrée spécifique réagissant soit à une différence d'impédance soit à des données de type séries. Ces postes ont été conçu pour recevoir l'information "traduite" par des boitiers de type Hiworld qui ont été programmé pour reconnaitre les trames CAN de commandes au volant des véhicules d'une marque.

Ainsi, il existe des boitiers Hiworld et Connect2 pour Renault et la plupart sont manifestement adaptés pour les commodos CLIO/Captur que nous avons dans l'Alpine. Une hypothèse "simpliste" voudrait donc que Renault ne se soit pas cassé la tête à modifier la trame CAN de la CLIO et que l'un de ces boitiers puissent dialoguer avec le commodo Alpine d'une part et le poste Android d'autre part. Force est de constater que ce n'est pas aussi simple. Je pense que je n'ai peut être ni bien cherché ni bien testé mais fondamentalement, je conclus que ces boitiers sont trop peu documentés et disposent d'un support technique trop "absent" pour essayer de débrouiller le sujet et utiliser ces connecteurs. Je n'ai par exemple jamais trouvé le brochage réel du connecteur HiWorld et Connect2 n'a jamais répondu à mes messages. ==> Je suis convaincu que l'un ou l'autre de ces fabricants finira par le proposer...un jour...et ce sera la solution la plus simple.

Donc solution Do It Yourself

Finalement, de quoi avons nous besoin ?

  • D'un système qui lise le bus CAN MMU (multimédia), reconnaisse la trame d'information d'état des commandes au volant , on en a parlé ici : les commandes au volant
  • D'un système qui transforme la trame CAN en un signal compréhensible par le poste Android

Comment le poste Android reconnait une commande au volant

Historiquement, les postes de radio utilisaient des commandes analogiques au volant. Les fabricants, comme Joying, on donc tous garder le principe de recevoir les commandes au volant par le biais d'un tel signal analogique. Il s'agit des fameux fils KEY1 et KEY2 que l'on trouve en sortie de ces postes. Du côté Android du poste, ils disposent tous d'une application de paramétrage spécifique qui permet d'associer les différents signaux arrivant sur KEY1, KEY2 ou KEY1+KEY2 en une action de type appui sur un bouton. L'application se présente ainsi :

Lorsqu'on passe en mode apprentissage, il s'agira d'appuyer sur la touche du commodo pour voir apparaître un chiffre différent sur la ligne ou apparait les chiffres 255. Tout en maintenant la touche du volant enfoncée, on va appuyer sur le bouton de l'application Android qu'on souhaite voir interprété par l'autoradio comme étant la commande souhaitée. Cela signifie qu'on peut aussi programmer les commandes au volant de l'Alpine pour faire "autre chose" que la fonction de base.

En synthèse, on veut donc pouvoir reconnaitre un signal CAN indiquant sous forme numérique la valeur du bouton au volant qui a été appuyé. On veut ensuite transcrire cette valeur numérique en un signal analogique exploitable par le poste Android.

principes

De quoi a-t-on besoin ?

En premier lieu, il nous faut un boitier de décodage/reconnaissance des trames CAN représentant les commandes au volant. On va construire ce boitier en utilisant :

  • un boitier Arduino : J'ai choisi l'Arduino Uno Rev3 (ici)
  • un multiplexeur analogique 8 voies : (de ce type)
  • un décodeur CANBUS standard : (de ce type)
  • de 8 résistances allant de 2 à 100KOhms (vous pouvez choisir toutes valeurs, il s'agit surtout d'augmenter chaque résistance versus la précédente), pour ma part : (R0=)2,2K - 4,7K - 10K - 15K - 22K - 33K - 47K - 68K(= R7)
  • Enfin d'un cable USB pour raccorder la carte Arduino au poste Android : (de ce type)

Le programme

On va écrire un programme qui va lire régulièrement les trames sur le bus CAN MMU de l'Alpine. A chaque fois que le programme détectera la présence de la trame 02D0 (commandes au volant), il enverra un signal sur les pins de l'Arduino , encodé en fonction de la valeur du bouton reconnu. Le multiplexeur/démultiplexeur reçoit sur ses entrées un codage lui indiquant quel(s) port(s) analogique il doit ouvrir.

On cherche uniquement l'impédance, donc on branche les signaux du démultiplexeur sur la masse. On n'envoie pas de tension sur le poste Android, uniquement une mise à la masse et un changement d'impédance de l'entrée KEY1.

A noter qu'on fait le choix de n'interpréter les touches qu'unitairement sauf dans le cas de Volume + et - où on tient compte d'un appui simultané pour faire la fonction "MUTE". Mais on pourrait multiplier les usages et donc les possibilités en interprétant l'appui simultané de Volume + avec SRC pour déclencher une autre fonction (comme le lancement du GPS par exemple).

variante à deux lecteurs CANBUS

On va profiter du programme pour lire d'une part l'ensemble des trames du BUS multimédia et ainsi se donner la possibilité de (re)trouver la télémétrie Alpine. On va ainsi accéder à toutes les données , voir plus de la télémétrie.

On peut aussi oser aller plus loin et brancher un deuxième lecteur CANBUS directement sur le BUS ECU et disposer ainsi de l'ensemble des informations/capteurs de l'Alpine.

Assemblage

Une image vaut mieux que 10 000 explications, il suffit de relier les fils entre eux :

Vous pouvez utiliser des plaques pré-percer et souder les composants :

Pour ceux qui veulent se fabriquer une carte , le schéma électrique est le suivant :

J'ai tenté d'imprimer des cartes PCB. En fait, je rencontre un problème d'isolation masse/tension entre le circuit CAN et le circuit "Key/Mic".

Finalement, je pense que la dernière version doit être la bonne mais je n'ai pas envie de réimprimer les cartes. Mon prototype me satisfaisant.