Une squeezeBox en carton a base de Raspberry pi
J’ai une radio squeezebox de logitech et j’en suis vraiment très content. Malheureusement Logitech a stoppé la commercialisation de ce superbe systeme audio multiroom.
Plus d’informations au sujet de squeezebox : http://www.mysqueezebox.com/
Je cherchais une solution pour pouvoir diffuser de la musique dans une autre pièce, toujours à partir de squeezebox malgré l’arrêt de la commercialisation des produits.
La solution choisie : fabriquer ma propre radio tout seul, comme un grand!
Avec les fonctions suivantes :
– Boutons stop/start, play/pause, piste suivante
– Ecran 4 lignes retro éclairé pour
– affichage du morceau joué
– affichage du menu
– 6 boutons presets (des web radio, random sur sa bibliothèque, …) paramètrable via interface squeezebox serveur
– boutons rotatif pour navigation dans le menu
– choix artist album ou genre
– synchronisation avec les autres squeezebox de la maison (multiroom)
– liste des presets
– shutdown
Budget : Non défini
Nous allons installer squeezeplug sur notre raspberry. Depuis peu, il existe une image toute faite qui fournit un système avec squeezeplug et Max2Play (qui permet de configurer sa raspberry en mode web en évitant les lignes de commandes).
Si vous voulez vous pouvez aussi tout installer à la main (rasbian + squeezeplug seul). Mais ici, on va essayer de se simplifier la vie!
Télécharger sur http://www.squeezeplug.eu/ une image systeme (SPMAX2PLAY_RPI_212.zip par exemple)
Copier l’image sur votre carte sd (j’utilise personnelement Win32DiskImager sous windows) (voir http://www.framboise314.fr/win32diskimager-une-nouvelle-version-est-sortie/)
Connecter la carte SD dans la raspberry pi et brancher l’alimentation et le câble réseau.
Rechercher l’adresse IP de la pisqueeze (j’utilise http://www.advanced-ip-scanner.com/) et ouvrer sa page web.
Allez dans l’onglet “settings/reboot” et changer le nom de la raspberry par “pisqueeze” (ou ce que vous souhaitez), changer la langue (si vraiment l’anglais vous rebute fortement car la traduction en français est assez pourrie, …
Toujours avec cette page web, Rebooter.
Toujours avec cette page web, “Expand file system” pour agrandir la taille de la partition sur la carte SD a sa taille physique. Rebooter encore.
Toujours avec cette page web, “Mise à jour de Max2play”.
Si vous voulez vous connecter en WiFi, paramétrer le dans l’onglet “WIFI & LAN”.
Je suppose ici que vous avez déjà un serveur squeezebox qui fonctionne déjà.
Dans le cas contraire, vous pouvez en créer un
– sur un NAS synologie
– sur un PC
– … (quelques recherche google devraient trouver réponses à toutes les configuration possible.
– ou même directement sur la pisqueeze (dans ce cas, il faut l’activer dans l’onglet “squeezeBox server”
Si vous avez déjà un serveur squeezebox, il a été automatiquement détecté lors de l’installation.
Dans l’onglet “Lecteur audio”,
– désactiver Airplay
– régler l’entrée audio selon que vous utiliser la prise jack, la sortie hdmi, ou une carte audio usb
– le reste par défaut devrait fonctionner.
– Brancher la sortie hdmi (ou jack, au usb) sur votre ampli (ou enceintes, ou tv, ou …).
– ouvrer votre squeezebox serveur sur un navigateur, sélectionner la platine “pisqueeze” et choisissez la musique de votre choix
…
=> petite danse de joie.
Ca marche déjà.
Il nous manque seulement l’interface isqueeze qui va nous permettre de se passer de navigateur (pc, mac, android, …) et de juste pouvoir appuyer sur des boutons sur la radio pour interagir avec la radio.
(ce que je trouve quand même plus pratique).
C’est là que ça se gâte!!!
Il va falloir tout souder (voir schéma).
A noter que rien n’est obligatoire (si vous ne souhaitez qu’un bouton qui fait marche-arrêt, c’est tout à fait possible. Il faudra juste modifier un peu le code).
Pour ma part, j’ai utilisé une vieille nappe IDE pour connexion au GPIO du Raspberry pi. Ce n’est pas vraiment l’idéal (sac de noeuds), mais çà fonctionne.)
Les trois boutons à gauche sur le schémas (sur ma boîte se sont les 3 boutons de couleurs sur le top) sont respectivement affectés à
– Bouton on_off : sur GPIO17 (11 physique) du Rpi
– Bouton play_pause : sur GPIO27 (13 physique) du Rpi
– Bouton next : sur GPIO22 (15 physique) du Rpi
Les 6 boutons suivants sur le schémas (sur ma boîte se sont les 6 petits boutons en bas) sont des boutons de presets. Branchés sur
– GPIO7 (26 physique)
– GPIO8 (24 physique)
– GPIO11 (23 physique)
– GPIO25 (22 physique)
– GPIO9 (21 physique)
– GPIO10 (19 physique)
L’écran LCD 2 ou 4 lignes est à branché soit en i2c, soit en parallèle. Sur le schéma, l’écran est branché en série i2c (le plus simple car moins de câbles).
(mais ça oblige a mettre un module i2c sur l’écran).
Pour version i2c :
Brancher le 5V et le 0V du Rpi sur les pin GND et Vcc du module i2c.
Brancher le GPIO2 (SDA1 I2C) et le GPIO3 (SCL1 I2C) du Rpi sur les pins SDA et SCL du module i2c.
Enlever le jumper des pins led du module i2c.
Brancher le GPIO14 sur la pin du haut (led+) du module i2c. Ca va nous servir à allumer ou éteindre l’écran.
Le potentiomètre du module i2c permet de régler la luminosité.
Le bouton rotatif a
– 3 pattes (ground au milieu) pour la rotation
– 2 pattes de l’autre coté pour le bouton poussoir (validation)
Si vous n’avez pas de bouton rotatif, vous pouvez utiliser à la place 3 boutons poussoirs (haut, bas, validation)
Il va nous servir à naviguer dans le menu de la pisqueeze.
Branchements :
– 0V sur la patte du milieu (coté où il y a 3 pattes)
– GPIO24 (physique 18) sur la patte de droite (coté où il y a 3 pattes)
– GPIO23 (physique 16) sur la patte de gauche (coté où il y a 3 pattes)
– 0V sur une des pattes (coté où il y a 2 pattes)
– GPIO4 (physique 7) sur l’autre patte
Enfin, le capteur infra-rouge se branche ainsi :
(quand on regarde la face capteur)
– patte de gauche : sur GPIO18
– patte du centre : 0V
– patte de droite : 5V
Pour pouvoir utiliser l’écran lcd en mode i2c, il faut activer l’i2c.
Dans la console :
sudo raspi-config
Puis selectionner “advanced options” / I2C.
Activer I2C et charger le i2c kernel module au boot. (oui-oui)
sudo nano /etc/modules
Ajout :
i2c-bcm2708
i2c-dev
Reboot la pisqueeze (sudo reboot)
sudo apt-get install i2c-tools
sudo apt-get install python-smbus
sudo adduser pi i2c
Pour détecter l’écran :
i2cdetect -y 1 (1 est le n° du bus)
On doit obtenir :
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: — — — — — — — — — — — — —
10: — — — — — — — — — — — — — — — —
20: — — — — — — — 27 — — — — — — — —
30: — — — — — — — — — — — — — — — —
40: — — — — — — — — — — — — — — — —
50: — — — — — — — — — — — — — — — —
60: — — — — — — — — — — — — — — — —
70: — — — — — — — —
Notre écran est à l’adresse 27 sur le bus n°1
(si rien n’est détecté, essayer le bus n°2)
Installer mes librairies python à partir de https://pypi.python.org :
– FGPIO (gestion des E/S Rpi avec de nombreux matériel (ici pour boutons et ecran)
– FUTIL ( utilitaires perso)
– FAVRIP (gestion des communications avec ampli home cinema)
– isqueeze (interface squeezebox)
+ librairie pylms pour communication avec squeezebox serveur
Installation de PIP :
mkdir install
cd install/
wget https://pypi.python.org/packages/source/d/distribute/distribute-0.7.3.zip
unzip distribute-0.7.3.zip
cd distribute-0.7.3
sudo python setup.py install
sudo easy_install pip
Installation des librairies
sudo pip install FGPIO
sudo pip install FUTIL==0.1.4 (je ne sais pas pourquoi si on ne précise pas n° de version, c’est une vieille qui est installée!!)
sudo pip install FAVRIP
sudo pip install pylms
sudo pip install isqueeze
Editer le fichier myisqueeze.py : sudo nano /opt/isqueeze/myisqueeze.py
Si vous maîtriser python, pas de soucis, sinon … faites par analogie!
Modifier les adresse IP (serveur squeezeBox, ampli.
Si vous n’avez pas encore installé la partie infrarouge,
Changer la ligne 34 en :
infra_rouge = False
Supprimer ce dont vous n’avez pas besoin (attention à la syntaxe quand même).
Il s’agit ici de lancer notre script python myisqueeze.py en deamon.
En fait l’installation de la librairie isqueeze fait la création d’un deamon nommé “pisqueeze”.
On va juste vérifier que ça fonctionne :
Installation d’un outil pour visualiser les deamons:
sudo apt-get install sysv-rc-conf
Execution de l’utilitaire :
sudo sysv-rc-conf
Vérifier bien que pisqueeze est bien dans la liste et démarre bien en 2,3,4,5.
rebooter pour vérifier
ou plus simplement :
sudo service pisqueeze start
Installation LIRC : gestionnaire récepteur IR
(attention, étape non testée!!!)
Install lirc
Commande sudo apt-get install lirc liblircclient-dev
Modifier le fichier /etc/modules en ajoutant ces deux lignes :
Commande lirc_dev
Commande lirc_rpi gpio_in_pin=18 #18=port GPIO utilisé pour branché le capteur IR
Modifie le fichier /etc/licr/hardware.conf :
# /etc/lirc/hardware.conf
#
# Arguments which will be used when launching lircetc/lid
LIRCD_ARGS=”–uinput”
# Don’t start lircmd even if there seems to be a good config file
# START_LIRCMD=false
# Don’t start irexec, even if a good config file seems to exist.
# START_IREXEC=false
# Try to load appropriate kernel modules
LOAD_MODULES=true
# Run “lircd –driver=help” for a list of supported drivers.
DRIVER=”default”
# usually /dev/lirc0 is the correct setting for systems using udev
DEVICE=”/dev/lirc0″
MODULES=”lirc_rpi”
# Default configuration files for your hardware if any
LIRCD_CONF=””
LIRCMD_CONF=””
Reboot
Je vous invite fortement a aller modifier le code.
myisqueeze.py bien sur, mais c’est assez basique.
Si vous aimez bien le cambouis : allez voir isqueeze.py de la librairie isqueeze.
Là vous pourrez
– modifier le menu
– rajouter des leds
– ….
A l’usage, j’utilise presque toujours ma pisqueeze de la manière suivante :
J’appuie sur le bouton rouge.
et l’ampli s’allume, se met sur la bonne entrée et la squeezebox lance un random sur toute ma bibliothèque musicale.
Pour éteindre, je coupe l’ampli et ça coupe tout.
Quand un morceau me gonfle : un coup sur la télécommande !
Modifier mon Tutoriel
Eh les gens vous connaissez pastebin.com ?
Vues: 3294
J'aime: 0
super projet! bravo et merci du partage 🙂