Un système audio pour la maison [Part 3]

Apres avoir vu (rapidement) les avantages des squeezebox, installé le serveur et les client, je vous propose donc d’ajouter deux petites choses à notre installation :

Un DAC

pour avoir un son de meilleur qualité. En raccordant le tout à une chaîne Hifi on obtiendra un son tout a fait correct (bon … je ne suis pas un audiophile, mais il me suffit tout à fait 😉 ). Le DAC va remplacer la carte son interne du Pi, qui n’est pas exceptionnelle.

A la suite de conseils précieux j’ai commandé un mini GAMAX pour 37$ sur dhgate (made in china c’est  sûr 😉 ) , cette petite bête est de la taille du Pi et propose :

  •  une entrée USB (qu’on reliera au Pi)
  • une sortie Jack
  • une sortie coax
  • une double sortie RCA (L/R)
  • une sortie numérique
  • une entrée micro

J’alimente ce petit boitier avec une vielle alimentation 12V qui correspond pil poil à ce que veut le DAC (9-24V avec le + au milieu).

Coté reconnaissance par le Pi il n’y eu aucun soucis. J’ai branché et squeezelite permet de vérifier sa présence :

squeezelite-armv6 -l

cela donne :


Output devices:
null - Discard all samples (playback) or generate zero samples (capture)
default:CARD=Set - C-Media USB Headphone Set, USB Audio - Default Audio Device
sysdefault:CARD=Set - C-Media USB Headphone Set, USB Audio - Default Audio Device
front:CARD=Set,DEV=0 - C-Media USB Headphone Set, USB Audio - Front speakers
surround40:CARD=Set,DEV=0 - C-Media USB Headphone Set, USB Audio - 4.0 Surround output to Front and Rear speakers
surround41:CARD=Set,DEV=0 - C-Media USB Headphone Set, USB Audio - 4.1 Surround output to Front, Rear and Subwoofer speakers
surround50:CARD=Set,DEV=0 - C-Media USB Headphone Set, USB Audio - 5.0 Surround output to Front, Center and Rear speakers
surround51:CARD=Set,DEV=0 - C-Media USB Headphone Set, USB Audio - 5.1 Surround output to Front, Center, Rear and Subwoofer speakers
surround71:CARD=Set,DEV=0 - C-Media USB Headphone Set, USB Audio - 7.1 Surround output to Front, Center, Side, Rear and Woofer speakers
iec958:CARD=Set,DEV=0 - C-Media USB Headphone Set, USB Audio - IEC958 (S/PDIF) Digital Audio Output
default:CARD=ALSA - bcm2835 ALSA, bcm2835 ALSA - Default Audio Device
sysdefault:CARD=ALSA - bcm2835 ALSA, bcm2835 ALSA - Default Audio Device

A vous de choisir votre sortie préférée suivant votre DAC . Je me suis cantonné à « sysdefault:CARD=Set » que j’ai mis dans le script de démarrage que je vous avait donné précédemment (/etc/initi.d/squeezelite-arm6  : variable SLOPTIONS)

Une télécommande

Pour cela j’utiliserai lirc, le port GPIO du Raspberry Pi et un TSOP 4838 (d’autres marcheront peut être, mais je n’en sais rien 😉 )

Le matériel

Le montage à utiliser est détaillé chez Adafruit, vous n’êtes pas du tout obligé d’utiliser cette télécommande. Personnellement j’ai recyclé celle d’un vieux lecteur CD mort depuis longtemps.

Si vous suivez le montage d’adafruit il suffit de connecter GND, 3,3V et le data du TSOP (recepteur IR 38kHz) aux ports adéquats du Pi (le Data utilisé est le n°18) .

Le Système

sudo modprobe lirc_rpi

chargera le module nécessaire pour lirc.
Edit : Ce module est à rajouter au fichier /etc/modules pour qu’il soit chargé automatiquement au démarrage du Raspberry Pi

vérifiez avec un

mode2 -d /dev/lirc0

que votre Pi reçoit bien les infos venant de la télécommande (appuyez et viser 😉 )

L’apprentissage de la télécommande

Sans doute la plus grosse partie du boulot qui reste à faire.

sudo irrecord -d /dev/lirc0 /etc/lirc/lircd.conf

La première phase va permettre de reconnaitre le protocole employé par la télécommande, il ne s’agit pas spécialement d’appuyer sur toutes les touches. Les informations à l’écran sont à lire (il faut toujours lire ce qui est affiché à l’écran 😉 )

La seconde phase est plus « laborieuse », il va falloir associer les touches une par une. Le programme demande un « mnémonique » tel que KEY_PLAY, KEY_STOP, … (la liste complète est trouvable grâce à

irrecord –list-namespace

).

Une fois l’apprentissage de toutes les touches effectuées il va falloir « câbler » ça avec squeelite

Donnons des ordre à squeezelite

Pour cela je vais utiliser le fichier de configuration de irexec : /etc/lirc/lircrc


begin
prog = irexec
button = KEY_PLAY
config = /usr/local/ir2squeeze/pause
end

begin
prog = irexec
button = KEY_NEXT
config = /usr/local/ir2squeeze/next
end

begin
prog = irexec
button = KEY_PREVIOUS
config = /usr/local/ir2squeeze/previous
end

begin
prog = irexec
button = KEY_POWER
config = /usr/local/ir2squeeze/power
end

J’associe donc à chaque touche un script shell qui va être appelé, de ce fait ma télécommande peut faire plus ou moins n’importe quoi !!!!

I except you know Expect

Pour piloter squeezelite je ne vais pas faire dans la dentelle (pour le moment), un script par touche. Et pour me faire comprendre je vais directement utiliser le protocole réseau avec une commande telnet. Pour ça il y a un utilitaire magnifique que j’ai découvert il y a peu : Expect

d’abord on va l’installer

apt-get install expect

Exemple du script /usr/local/ir2squeeze/pause :

#!/usr/bin/expect

spawn telnet 192.168.X.X 9090
expect "Escape character is *"
send "AA:BB:CC:DD:EE:FF pause\n"
expect "* pause"
send "exit\n"
expect eof

où 192.168.X.X est l’adresse IP du serveur squeezebox et AA:BB:CC:DD:EE:FF l’adresse MAC de la machine cliente. Cette adresse MAC peut être trouvée dans l’écran information du serveur ou par un ifconfig -a sur le client, ça tombe bien c’est celui sur lequel vous travaillez actuellement.

Edit : Afin que lirc démarre en même temps que votre système il faut le rajouter dans le mécanisme d’init.d.

ln -s /etc/init.d/lirc /etc/rc2.d/S15lirc

Le démarrage de lirc peut se faire à l’aide de la commande classique :

sudo service lirc

Je ne suis pas rentré dans tout les détails techniques  mais cela devrait vous donner quelques pistes pour (peut-être) faire fonctionner votre Pi en tant que squeezebox 😉

Publicités

Publié le 16 octobre 2013, dans Raspberry Pi, et tagué , , . Bookmarquez ce permalien. Poster un commentaire.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :