Bonjour à tous,
Cela faisait longtemps que je nourrissait le projet de concevoir une "interface" audio universelle, capable de remplacer un tuner, et pourquoi pas d'en faire plus.
De nombreuses solutions sont disponibles pour mon application : les xxxbox de nos FAIs préférés, les TV écran plat + interface réseau, les boitiers dédiés... aucun ne me convenait sur un critère unique ; la consommation électrique ! En effet, en utilisant ma xxxbox préférée, je dois nécessairement lui associer ma TV. Résultat, pour écouter la radio, je consomme au minimum 80W sans l'ampli (xx box 30W, TV 50W...). Effrayant quand on sait qu'un tuner FM basique se contente de 15 à 20 W... Les solutions à base de boitiers dédiés ne faisant pas mieux, je me suis lancé dans la réalisation de son équivalent en version Raspberry Pi. Pour ce qui ne connaissent pas, ce module intègre tout ce qu'il faut pour faire tourner un OS Linux, plus l'essentiel des besoins multimédia. M'étant déjà lancé dans une autre application sur cette carte, je me suis donné comme objectif de faire mieux qu'un tuner FM .En quelques mots :
- utilisation en "tuner" de mes principales stations
- capable de lire en aléatoire ou en direct de l'intégralité de ma bibliothèque audio disponible sur le disque réseau
- qualité comparable à un lecteur CD
- consommation électrique raisonnable, moins de 5W (hors ampli)
- Facilité extrême d'utilisation au quotidien
Avant de passer au résultat, je tenais à partager les différentes étapes de la conception.
1. Choix de l'alimentation électrique.
Le module Raspberry Pi fonctionne en 5V issu d'une alimentation USB standard. Le choix du type d'alimentation intervient directement dans le bilan énergétique global (rappel : 5W max!). En testant plusieurs alimentation, la plus performante a été celle d'un lecteur de cartouches de sauvegarde informatique type Iomega, distillant ses 5V avec plus de 90% de rendement. Cela dit, une bonne alimentation à découpage issue d'autre application aurait pu être comparable.
2. L'interface audio.
Ici, le travail s'est révélé plus compliquer. La carte RPi possède sa propre interface audio en sortie. En lisant les critiques, il semble qu'elle ne soit pas des meilleures. Et je confirme : en plus d'une fâcheuse tendance à provoquer des clics et plocs dès qu'on la sollicite, elle montre une distorsion d'au moins 0.25%... pas vraiment utilisable.
Je teste donc un certain nombre d'interface audio USB, et fini par adopter une solution originale : l'interface audio d'un casque USB de chez Logitech. L'écoute "normale" de ce casque est pourtant médiocre. En revanche, la mesure ne tenant pas compte des transducteurs se révèle excellente : moins de 0.008% de disto à 1kHz.
Je précise ici la méthode employée : lecture via le lecteur VLC d'un fichier WAV contenant une sinus pure de 1kHz / 44,1Khz FS, au maximum de l'amplitude possible (0dBFS), et banc Audio Precision Portable One).
Je retiens donc ce petit circuit construit autour d'un IC Micronas 3552 annoncé pour 0.05% à 0.5FS pour -3dBFS en entrée, on n'est pas loin !).
3. La sortie
Afin de permettre à l'électronique numérique de s'exprimer pleinement, je choisis de paramétrer l'interface audio à son niveau nominal (0dB). Le contrôle du volume se fait dans le domaine analogique, ce qui permet de bénéficier des performances du convertisseur dans l'ensemble du domaine d'utilisation, y compris aux faibles niveaux. La mesure me donnera raison : en utilisant le contrôle de volume dans le domaine numérique, on passe de 0.008% à 0.15% à faible niveau d'écoute...
Le potentiomètre de sortie est un ALPS de 100kB (log) , motorisé, ce qui permettra le contrôle via les entrées sorties(GPIO) de la carte.
4. La configuration de l'ensemble.
Le système démarre en se connectant en WiFi sur le réseau domestique (configuration du fichier wpa_supplicant.conf). Le lecteur audio est de type VLC. L'ensemble est autonome, mais peut aussi être utilisé via l'interface web de VLC.
Conclusion provisoire.
Le projet me permet aujourd'hui d'écouter mes stations préférées (FI et les autres), et accessoirement de lire mes fichiers audio. Il reste encore pas mal de travail avant une utilisation optimale. Je vous communique cependant les résultats intermédiaires :
- disto < 0.01% sur tout le spectre
- utilisable pour les web radio diffusant en http ou rtp.
- simplicité d'utilisation (1 bouton), mais perfectionnable- cp,s
- consommation totale en fonctionnement (mesure sur le 220V) : 5.3W
Il me reste encore pas mal d'amélioration à apporter, notamment sur la consommation électrique (réduire la fréquence du processeur, ajout d'un convertisseur à découpage sur le 3.3V...), et sur les fonctions (l'accès NAS n'est pas encore facile, ou trop peu configurable), le contrôle du volume via commande du moteur du potentiomètre... Cela dit, le tout est utilisable dès à présent, et sans déployer des moyens énormes, je suis parvenu à l'un des objectifs du projet : faire mieux que les solutions commerciales :)
A suivre donc.
Si vous souhaitez plus d'infos techniques sur la configuration, n'hésitez pas à me demander, je vous répondrais dans la limite de mes connaissances (je ne suis pas un expert en Linux !).
Tous vos commentaires ou suggestions sont les bienvenus !
Vlo