Création d'un système audio personalisé pour Clio 2


July 2013.

Image











Introduction


Heureux propriétaire d'une Clio 2.2 essence 1.2L, je me suis fabriqué un petit système audio sympathique et sans prétention.

La problématique


J'aime écouter de la musique. J'ai plein de fichiers audio sur mon NAS. Lorsque je roule, j'aime avoir toute ma musique à disposition dans ma voiture.

Problèmes:

Pourquoi ne pas utiliser simplement un autoradio avec un disque dur externe branché dessus en USB?

J'avais déjà réalisé un prototype qui utilisait la liaison bluetooth pour envoyer la musique. La musique passait dans le profil A2DP et les commandes au volant étaient récupérées par le profil AVRCP.
Problème: je perds alors la possibilité de connecter mon téléphone à l'autoradio et ne peux plus passer ou recevoir des appels en roulant en utilisant le micro placé au dessus de mon rétroviseur.

Présentation du système construit


Pour résoudre tous ces problèmes, j'ai décidé de monter les éléments suivants:








Conception et construction


Démontage et repérage du système en place


Le système en place est constitué des éléments suivant:











Une clioUn autoradio Alpine CDE-133BTUne interface commande au volant Alpine KCE-840B + le câble KWE-845E
Ma clio!ImageImageImage


Le commodo de commande au volant est relié par son connecteur exotique rouge au câble KWE-845E, qui se contente d'être un adaptateur pour le connecteur de l'interface KCE-840B. Cette interface est branchée sur un câble électrique bleu blanc; et par un jack 3.5 standard sur l'autoradio.

Identification du fonctionnement du commodo de commande au volant


Une fois ouvert, le commodo de commande au volant se rélève être un morceau de plastique avec des interrupteurs dedans. Un petit tour à l'ohmmètre nous révèle qu'il s'agit d'une simple matrice d'interrupteurs.









Le connecteur d'arrivée du commodoLa correspondance des boutons
Connecteur rouge commande au volant clio 2Il auraient pu rajoute un dernier bouton


La molette est composée de trois interrupteurs. On peut déterminer le sens de rotation en regardant leurs états courant et leurs états précédant. On retrouve les autres boutons: Volume plus, Volume moins, Dessous (Bot), Dessus 1 et Dessus 2 (Top1 et Top2).

On notera que cette disposition nous permettra d'utiliser d'autres combinaisons que la célèbre Vol Plus + Vol Moins.








Identification du fonctionnement du bus Alpine


Identification du connecteur


Le connecteur est un jack 3.5 standard. On en trouve facilement, même en supermarché.








Pin n°Contenu
1Masse
25V
3Données




Les signaux du bus autoradio Alpine KCE-840B




Identification du bus de données


Le bus de données est assez particulier en son genre.

Image

On y trouve:

Chaque bit est constitué d'un état haut ou bas de 0.5ms, et d'un état bas de 0.5ms. On pourra noter que dans aucune trame rencontrée ne se suivent deux zéros.

Les commandes associées que j'ai rencontré sont:










CommandeValeurs
Volume plus1A FB 75 7B 7A DA A0
Volume moins1A FB 75 6D BE DA A0
Molette bas1A FB 75 75 7D EA A0
Molette haut1A FB 75 6A BF EA A0
Dessous1A FB 75 77 7B 5A A0
Dessus 11A FB 75 76 FB 6A A0
Dessus 21A FB 75 6D 7E EA A0
Mute (Volume plus + Volume moins)1A FB 75 75 BD DA A0









Réalisation de interface commande au volant



Image

Parce que j'ai eu la flemme de fabriquer une carte électronique sur mesure, j'ai utilisé un kit de développement de chez Texas Instrument, le EK-LM4F120XL. Il comprend un CPU Cortex M4 LM4F120, qui suffit largement pour ce qu'on souhaite faire avec. Il est largement sur-dimensionné pour l'instant, mais pourra servir plus tard pour s'interfacer avec d'autres éléments de la voiture.

Le kit a aussi l'avantage de disposer d'une liaison série qui transite par le port USB (qui d'ailleurs sert à alimenter la carte), qui pourra être relié au PC.

Le code utilise 3 GPIO en sortie pour alimenter la matrice d'interrupteurs, et 3 autres en entrée pour lire les valeurs.

Un autre GPIO sert à émuler le BUS Alpine montré précédemment.

Le circuit se comportera exactement comme l'interface Alpine si il est tout seul, et enverra certaines commandes au PC lorsque celui ci manifestera sa présence.

Les autres éléments de l'interface sont:








Montage du PC


Pour lire l'audio, j'ai choisi de monter un ordinateur en architecture PC. J'aurais pu préparer une carte embarquée avec un coeur ARM et un Linux embarqué mais avec un PC je n'ai pas à me prendre la tête avec tous les drivers (SATA, Bluetooth, WiFi, etc.).

Matériel
















ÉlémentModèleCommentaire
Carte mèreIntel D525MWJ'ai pris celle là parce qu'elle était en solde. N'oubliez pas de rajouter de la RAM
AlimentationM3-ATXS'occupe de gérer les problématiques liées à la batterie de la voiture
Disque durUn 600GB 2.5" SATA standardPlein de place pour plein de musique
BoitierUn vieux boitier mini ITX qu'il me restaitPas cher ^^


L'alimentation M3-ATX, conçue spécialement pour ce genre de projet, permet de sortir tous les connecteurs nécessaire au fonctionnement d'un PC (Alim ATX, Alim 12V pour CPU, Molex/SATA) à partir d'une batterie dégueulasse (6-24V). Elle démarre automatique le PC dès la présence confirmée d'un signal moteur; et une fois ce dernier confirmé éteint (5s), elle éteint proprement le PC avant de couper l'alimentation au bout d'une minute. Aussi, si la tension batterie est trop faible, elle ne fait rien, ce qui évite de se retrouver vidé bêtement.

Image

On trouve toutes les entrées nécessaires sur le connecteur ISO du système audio de la voiture (12V => Jaune, Masse => Noir, Signal moteur => Rouge).

Logiciel


Le choix du système d'exploitation est entièrement personnel. La plupart des systèmes habituels (UNIX, Windows) fonctionnent (tant qu'ils arrivent à faire fonctionner une liaison série).

J'ai choisi un FreeBSD 9.1 Release, dernière version en date. Ceci me permet de synchroniser facilement le pool ZFS contenant ma musique de mon NAS vers le système grâce au système de snapshots.

Le système utilise pour lire la musique est un Music Player Daemon, qui présente les avantage suivant:

Le contrôle local (suivant, précédant, pause, etc.) est effectué avec les commandes au volant, grâce à la carte embarquée et à sa liaison série.

Le contrôle avancé (gestion des playlists, sélection de la liste de lecture courante, etc.) est effectué avec un ordinateur ou un téléphone.








Conclusion


Le système réalisé a les caractéristiques suivantes:








Codes sources


Le code source de tout ce bazar est disponible ici:
ZeWaren/nuclear-muse on GitHub.