P4 Jukebox multi-pièces : Différence entre versions
(→Fonctionnement par SPRINT) |
(→Choix techniques : matériel et logiciel) |
||
Ligne 20 : | Ligne 20 : | ||
====Choix techniques : matériel et logiciel==== | ====Choix techniques : matériel et logiciel==== | ||
− | + | '''Matériel envisagé :''' | |
− | + | [[Fichier:P4_Sol2.png|350px|thumb|right|Solution HP Passif]] | |
− | + | [[Fichier:P4_Sol1.png|350px|thumb|right|Solution HP Actif]] | |
* Plateforme Linux embarqué (Raspberry Pi) | * Plateforme Linux embarqué (Raspberry Pi) | ||
− | |||
* [http://electronics-diy.com/schematics/1318/50w-lm3886-power-amplifier-2.gif Amplificateur de puissance à base de LM3886] (Coût plus important, meilleure qualité, puissance de sortie plus importante) | * [http://electronics-diy.com/schematics/1318/50w-lm3886-power-amplifier-2.gif Amplificateur de puissance à base de LM3886] (Coût plus important, meilleure qualité, puissance de sortie plus importante) | ||
* [http://www.sonelec-musique.com/images/electronique_ampli_bf_lm386.gif Amplificateur de puissance à base de LM386] (Coût moins important, moins bonne qualité, puissance de sortie plus faible) | * [http://www.sonelec-musique.com/images/electronique_ampli_bf_lm386.gif Amplificateur de puissance à base de LM386] (Coût moins important, moins bonne qualité, puissance de sortie plus faible) | ||
* [http://www.gotronic.fr/art-paire-d-enceintes-sp3v-13522.htm Haut parleur 8 Ohm] | * [http://www.gotronic.fr/art-paire-d-enceintes-sp3v-13522.htm Haut parleur 8 Ohm] | ||
− | + | * Possibilité d'utiliser également des haut parleurs actifs avec la Raspberry Pi<br><br> | |
− | |||
− | |||
− | + | '''Logiciels envisagés :''' | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | Logiciels envisagés : | ||
* Création d'une application pour Android avec Android Studio | * Création d'une application pour Android avec Android Studio | ||
Ligne 48 : | Ligne 38 : | ||
<br> | <br> | ||
+ | |||
====Architecture des modules==== | ====Architecture des modules==== | ||
=====Présentation des modules===== | =====Présentation des modules===== |
Version du 29 décembre 2015 à 21:06
Sommaire
- 1 Cahier des charges
- 2 Suivi de l'avancement du Projet
- 2.1 Semaine 1 (21/09/2015)
- 2.2 Semaine 2 (28/09/2015)
- 2.3 Fonctionnement par SPRINT
- 2.4 Sprint #1 (15/10/2015) Objectif : Envoyer un flux musical vers une enceinte déjà existante
- 2.5 Sprint #2 (10/11/2015) Objectif : Envoyer deux flux musicaux différents vers deux enceintes déjà existantes
- 2.6 Sprint #3 (05/01/2016) Objectif : Streamer UNE musique vers UNE enceinte via le Wi-FI avec NOTRE application
- 2.7 Semaine 12 (07/12/2015)
- 2.8 Semaine 13 (14/12/2015)
- 2.9 Semaine 14 (04/01/2016)
- 2.10 Semaine 15 (11/01/2016)
- 2.11 Semaine 16 (18/01/2016)
- 2.12 Semaine 17 (25/01/2016)
- 2.13 Semaine 18 (01/02/2016)
- 2.14 Semaine 19 (08/02/2016)
- 2.15 Semaine 20 (15/02/2016)
- 2.16 Semaine 21 (22/02/2016)
Cahier des charges
Présentation générale du projet
Contexte
La diffusion de musique dans différentes pièces d'une maison est problématique si l'on veut avoir une source. Il serait possible de tirer des câbles mais cette solution n'est ni esthétique ni pratique (réseau peu reconfigurable).
Objectif du projet
Réaliser une plateforme permettant de jouer de la musique dans différentes pièces.
Description du projet
Pour arriver au bout de ce projet, il conviendra de développer :
- Une enceinte embarquant un amplificateur audio et un système Wifi pour recevoir le flux de données
- Une application sur PC afin de permettre le choix du flux musical à envoyer (chaque enceinte pourra recevoir un flux différent si souhaité) ainsi que le contrôles habituels (volume, corrections, ...)
- Une application sur Smartphone permettant de commander le système
Choix techniques : matériel et logiciel
Matériel envisagé :
- Plateforme Linux embarqué (Raspberry Pi)
- Amplificateur de puissance à base de LM3886 (Coût plus important, meilleure qualité, puissance de sortie plus importante)
- Amplificateur de puissance à base de LM386 (Coût moins important, moins bonne qualité, puissance de sortie plus faible)
- Haut parleur 8 Ohm
- Possibilité d'utiliser également des haut parleurs actifs avec la Raspberry Pi
Logiciels envisagés :
- Création d'une application pour Android avec Android Studio
- Utilisation des logiciels intégrés pour les autres plateformes (AirPlay, Windows Media player)
Architecture des modules
Présentation des modules
Pour clarifier les choses, nous appellerons « module » le haut-parleur et ses équipements embarqués, la partie applicative pour streamer la musique étant mise de côté.
Dans le cadre de ce projet, nous sommes partis sur deux types de module distincts puisque nous souhaitons proposer au public une solution modulaire et non fermée.
Dans les deux solutions, nous avons choisi d’ajouter à la Raspberry Pi une carte son USB afin d’améliorer considérablement la qualité sonore que nous envoyons vers le haut-parleur.
Type de module 1
Le premier module embarque une Raspberry Pi avec MusicBox pour la réception de la musique ainsi qu’une carte son USB.
Cette solution permet à l’utilisateur de brancher n’importe quel haut-parleur actif à la carte son avec un connecteur jack 3.6 mm. Il pourra ainsi garder son propre haut-parleur s’il le désire.
Type de module 2
Le second module embarque lui aussi une Raspberry Pi avec MusicBox ainsi qu’une carte son USB.
Cependant nous proposons en plus dans celui-ci un amplificateur audio auquel nous connecterons un haut-parleur passif.
L’avantage de cette solution est de maîtriser la qualité audio du haut-parleur pour notre utilisateur et de ne fournir qu’une seule « boite » avec solution toute intégrée.
Les modules seront connectés à un réseau Wi-Fi domestique sur lequel un smartphone ou un ordinateur envoyant la musique y seront aussi connectés.
Étapes du projet
- Définition du cadre du projet
- Création du cahier des charges
- Création de l'enceinte connectée (boitier, circuit d'amplification, logiciels de la plateforme Linux embarquée)
- Développement du logiciel de diffusion de l'ordinateur central
- Développement de l'application mobile
Objectifs à long terme
Créer un produit DIY open source, le moins coûteux possible, simple à mettre en place et à mettre à jour. Celà inclut la création d'un manuel pour l'utilisateur sans connaissances techniques qui veut pouvoir réaliser par lui même un produit final de bonne qualité.
Toutes les solutions techniques sur lesquels on s'appuiera en fin de projet seront open source ou sous licence GNU GPL.
Suivi de l'avancement du Projet
Planning prévisionnel mis à jour :
Semaine 1 (21/09/2015)
Nous avons fait des recherches sur des solutions déjà existantes pour diffuser de la musique dans plusieurs pièces d'une maison. Samsung propose déjà un système permettant de diffuser plusieurs flux différents dans différentes pièces via le réseau wifi du domicile, cependant le prix pour un module d'entrée de gamme est d'environ 150€.
Nous avons également pensé à une première architecture matérielle de notre projet qui consisterait en :
- La Raspberry pi qui recevrait le flux via le réseau wifi
- Une carte son USB pour améliorer la qualité du signal
- Un amplificateur de puissance pour amplifier le signal en sortie de la carte son
- Des enceintes passive pour diffuser la musique
Voici une première version du devis pour un module wifi avec deux enceintes : lien
Semaine 2 (28/09/2015)
Nous avons pu discuter avec Rodolphe Astori et Alexandre Boé ce qui nous a permis de définir plus précisément la teneur du projet. L'objectif principal de ce projet est de développer une solution "low cost" que n'importe quel étudiant pourrait réaliser au Fablab, tout cela pour un faible coût (moins de 100 euros).
En effet, ce type de système déjà existants sur le marché présente un coût très important, allant de 200 euros pour Sonos et Bose jusqu'à 400 euros par haut-parleur.
Les points clés du projet seraient :
- Entièrement réalisable soi-même
- Coût maîtrisé
- Modulable
- Possibilité de pouvoir choisir la gamme de chaque module (amplificateur de meilleur qualité mais plus cher...)
Fonctionnement par SPRINT
Nous nous sommes également convenus avec Rodolphe Astori de procéder par "sprint", c'est à dire d'essayer de réaliser un système fonctionnel le plus rapidement possible, et de faire un point sur notre réalisation au bout de 15 jours. Si au bout de ces 15 jours, le projet prend la direction voulue, on continue dans cette voie, sinon on revoit le cahier des charges.
Il est également essentiel de faire des points très régulièrement (une à deux fois par semaine) pour faire ressortir les éventuelles difficultés rencontrées.
Sprint #1 (15/10/2015)
Objectif : Envoyer un flux musical vers une enceinte déjà existante
Préparation
(05/10/2015) :
Pour cette semaine, nous avons mis de côté la réalisation de Haut-Parleurs au profit de la communication entre lui et un Device (Tablette, smartphone, PC,... ).
Nous avons alors réalisé une veille technologique afin de se donner un bon pannel des solutions existantes sur le marché pour réaliser cette communication, et le tout open source !
Pour ce sprint, nous aurons pour le moment retenu deux solutions :
Solution 1 : VLC
50px
VLC est multi-plateformes et permet l'envoi de flux audio vers un Device placé sur le même réseau (Que ce soit WiFi ou Ethernet) que la plateforme disposant de VLC. Cette méthode utilise un protocole UDP et requiert quelques configurations préalables.
Shairport quant à lui n'est pas une solution multi-plateformes et s'arrête aux appareils APPLE.
Cette solution ne peut évidemment pas être retenue pour ce projet mais permet de démontrer qu'il existe des solutions "Plug&Play".
En effet, il suffit que le Device receveur du flux soit connecté au même réseau que le Device émetteur, et ce dernier le détecte automatiquement en proposant déjà l'envoi d'un flux audio.
Réunion
Nous avons présenté la solution Shairport, qui n'a sans surprise pas intéressé les personnes présentes. En effet le côté multi-plateformes manque énormément.
De plus, la solution Shairport est loin d'être une solution Open Source. En revanche, le flux audio passait très bien (schéma de l'installation visible ci-dessous).
Configuration Shairport pour le Sprint 1
Pour la solution VLC, un souci de routage WiFi nous a empêché d'envoyer le flux audio vers la Raspberry.
Etat en fin de sprint
- Etat de l'art clair à réaliser
- Retenir la solution existante la plus appropriée aux fonctions que l'on souhaite
- Se concentrer sur l'application mobile
Sprint #2 (10/11/2015)
Objectif : Envoyer deux flux musicaux différents vers deux enceintes déjà existantes
Préparation
Dans un premier temps il s’agissait de réaliser une veille technologique décrivant les solutions existantes autant au niveau logiciel et matériel DIY que celles commercialisées par des marques connues.
Il fallait également arriver à streamer de la musique vers au moins deux enceintes en utilisant les solutions trouvées.
Les solutions commercialisées (sous le nom d'enceintes multiroom) sont les suivantes :
(19/10/2015) :
Nous avons finalement trouvé une solution open source et surtout déjà très riche en fonctionnalités : Pi MusicBox.
Pi MusicBox est une solution standalone Open Source permettant de streamer des playlists enregistrées sur des comptes SoundCloud, Google Music, Spotify et bien d'autres.
Cette solution permet également d'envoyer un flux audio vers une RaspberryPi sur le même réseau que l'appareil émetteur.
Nous installons premièrement une image .iso de MusicBox sur la RaspberryPI.
Dans n'importe quel navigateur web de n'importe quel appareil connecté sur le même réseau WiFi, nous entrons l'IP de la RaspberryPI.
Nous affichons directement l'interface de MusicBox :
Cette interface nous permet toutes les configurations préalables : Association de comptes Spotify, SoundCloud, Google Music, etc. Mais aussi de donner un nom à notre Raspberry !
En effet, dans le cadre de ce projet Multi-pièces, nous allons simuler des pièces donc appeler notre Raspberry test "BedRoom1" par exemple.
Le protocole de streaming utilisé par MusicBox est le protocole UPnP (pour Universal Plug and Play), un des nombreux protocoles de la Digital Living Network Alliance.
Nous téléchargeons donc une application Android supportant le protocole UPnP pour tester l'envoi d'un flux audio du téléphone vers "BedRoom1" : BubbleUPnP.
Notre but sera maintenant de créer une application multi-plateformes disposant des mêmes fonctionnalités.
(26/10/2015) Semaine de vacances : Pendant cette semaine nous avons travaillé sur l'application Android. Nous avons créé une première version de l'application dont les fonctionnalités sont pour l'instant limitées à la lecture d'une musique en local.
(02/11/2015) :
Nous avons continué à travailler sur l'application pendant cette semaine. De plus, nous avons fait un point des solutions existantes pour différentes plateformes.
Pour mobile/tablette :
- Android : BubbleUPnP
- iOS : AirPlay (intégré)
Pour ordinateur :
- Windows : Windows Media Player (intégré)
- Mac OS : AirPlay (intégré)
(09/11/2015) :
Nous avons établit un premier jet des solutions multi-room existantes.
Réunion
Nous avons effectué une démonstration d’une chaine complète. Nous avons réussi à diffuser deux musiques différentes depuis un même portable vers deux enceintes séparées.
Etat en fin de sprint
L’objectif fixé en début de sprint est donc atteint et nous avons pu définir de nouveaux objectifs pour le sprint suivant :
- Réaliser notre propre application et arriver à streamer une musique vers une enceinte
- Réaliser le PCB du circuit d’amplification à base de LM3886
L’intérêt de réaliser une application Android pour streamer de la musique est qu’elle soit open source.
Sprint #3 (05/01/2016)
Objectif : Streamer UNE musique vers UNE enceinte via le Wi-FI avec NOTRE application
Préparation
TRAVAIL SUR L'APPLICATION ANDROID
Pour le sprint 3 nous nous sommes concentrés sur la réalisation d’une application Android. En effet, comme iOS dispose d’une solution intégrée déjà existante nous avons jugé n’il n’était pas nécessaire de développer une application dédiée.
Nous avons choisi de développer notre application en utilisant Android Studio. Cette application est donc réalisée en Java, et nous avons fait en sorte qu’elle soit compatible avec tous les téléphones disposant de la version 4.1 (Jelly Bean) ou plus. Cela permet qu’un maximum d’utilisateurs puisse profiter de l’application tout en la rendant compatible avec les versions récentes.
Dans un premier temps nous avons créé une activity Android standard disposant d’un panneau latéral qui nous permettra par la suite de rajouter les fonctions de recherche de serveur DLNA.
Dans un second temps nous avons créé une classe Song qui contient les variables liées à chaque chanson et les méthodes nécessaires pour pouvoir les manipuler.
On a ensuite implanté une barre permettant de contrôler la lecture (lecture, pause, chanson suivante…). Les contrôles étant déjà présents dans le service « Media Player » il était seulement nécessaire de rajouter le widget contenant notre barre à l’activité principale puis de lier les boutons aux contrôles.
Il a ensuite été nécessaire de créer une autre classe contenant les méthodes permettant de manipuler les chansons. Cette classe, nommée MusicService, permet de lier la liste des chansons que l’on a récupérées dans l’Activity principale au lecteur de média. En effet, le lecteur de média est un service sous Android et est donc indispensable à lier si l’on veut lire un média quelconque.
Une fois ces étapes faites, nous avons affiché cette liste dans l’activité principale et l’avons trié par ordre alphabétique. On initialise alors le service permettant de lire les médias et on lit l’action de toucher une chanson dans la liste au démarrage de ce service. On a alors une première version du lecteur musical, qui pour l’instant est limitée à la lecture en local.
TRAVAIL SUR L'AMPLIFICATEUR AUDIO
Nous avons également réalisé le layout des deux PCB du module 2 : un pour l’amplification à base de LM3886 et un pour le circuit d’alimentation. Afin de dissiper sa chaleur importante lors de l’utilisation de l’amplificateur, nous avons commandé un dissipateur thermique sur lequel nous visserons le LM3886.
Nous nous sommes fortement inspirés de l’amplificateur ci-contre où les informations sur le site correspondant sont très détaillées et nous permettent de comprendre l’importance de beaucoup de composants dans un amplificateur audio.
Par rapport au circuit d’origine, nous avons ajouté une LED de fonctionnement de l’amplificateur, un switch ON/OFF ainsi qu’un potentiomètre rotatif pour pouvoir agir sur le volume sonore.
Pour l’entrée audio, l’utilisateur trouvera en façade de l’amplificateur une entrée stéréo RCA ainsi qu’une entrée jack 3.6 mm. Pour la sortie, nous avons prévu un bornier standard pour connexion de haut-parleur ainsi qu’une sortie jack femelle 3.6 mm.
La version quasiment finale du PCB est donc la suivante :
Principe de l'Amplificateur Audio
Nous avons commandé
- les derniers connecteurs nécessaires à la réalisation de cette carte (et la carte d'alimentation (carte 2/2))
- un dissipateur thermique pour dissiper la chaleur du LM3886.
Dissipateur thermique 70x40x10(Lxlxh)(mm)
Etat en fin de sprint
Les objectifs de ce sprint n’ont donc pas tout à fait été atteints :
- Le lecteur Android ne permet pour l’instant que de lire localement les musiques
- Le PCB n’a pas encore été tiré
Il est donc nécessaire pour le sprint suivant de corriger au plus vite ces deux points de manière à ce que le projet puisse aboutir. Les objectifs pour le sprint suivant sont donc de faire en sorte d’arriver à streamer un flux musical vers une enceinte avec notre application ainsi que de tirer les PCB, les souder et commencer les tests.
Semaine 12 (07/12/2015)
Semaine 13 (14/12/2015)
Objectifs
Soudure de des composants sur la carte et tests.
Finalisation de la première version de notre application Android : Lecture d'un média en local ou à distance + contrôles.
Semaine 14 (04/01/2016)
Objectifs
Design du haut parleur au fablab.
Amélioration de l'application pour pouvoir streamer vers plusieurs serveurs DLNA.