P4 Jukebox multi-pièces

De Wiki de Projets IMA
Révision datée du 5 décembre 2015 à 14:48 par Ajouy (discussion | contributions) (Semaine 14 (04/01/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

Version 1

Matériel envisagé :

Logiciels envisagés :

Version 2

Matériel envisagé :

  • Matériel identique à la version 1 du cahier des charges
  • 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)

É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

Suivi de l'avancement du Projet

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...)


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.

L'objectif pour dans deux semaines est d'envoyer un flux musical vers une enceinte déjà existante.

Semaine 3 (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 le sprint 1 correspondant à la semaine du 12/10/2015 (envoi de flux audio vers un HP), 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.


Solution 2 : Shairport P4 SHAIRPORT.png

Shairport quant à lui n'est pas une solution multi-plateformes et s'arrête aux appareils APPLE. P4 APPLE.jpg
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.

Semaine 4 (12/10/2015)

Objectif

  • Envoyer un flux musical vers une enceinte déjà existante.

SPRINT 1

Lors du Sprint 1, 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.

Semaine 5 (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 :

P4 MUSICBOX.png

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. P4 BUBBLEUPNP.png

BubbleUPnP n'étant pas Open Source, notre but sera maintenant de créer une application multi-plateformes disposant des mêmes fonctionnalités.

Semaine 6 (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.

Semaine 7 (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é)

L'objectif principal reste donc la création d'un application android (open source) ainsi que l'établissement d'un état de l'art.

Semaine 8 (09/11/2015)

Nous avons établit un premier jet des solutions multi-room existantes. Nous avons également fait une réunion avec nos tuteurs afin de faire un point sur l'avancée du projet. Les points qui ont été abordés sont les suivants :

  • Création d'un état de l'art essentiel
  • Le produit final doit être modulaire (design des différentes parties à faire)
  • Mise à jour et installation de la Raspberry Pi (création d'un manuel nécessaire)
  • Faire un point sur la consommation énergétique

Nous avons également fait une démonstration de la chaine de transmission en entière. Pour cela nous avons utilisé un smartphone comme routeur auquel nous avons connecté les deux Raspberry en Wi-Fi ainsi qu'un second smartphone qui stream la musique. Nous avons ensuite lancé l'application BubbleUPnP grâce à laquelle nous avons pu diffuser deux flux différents simultanément sur les Raspberry.

Semaine 9 (16/11/2015)

Nous avons poursuivi l'écriture du software pour Android.
Nous avons aussi activement réalisé des recherches à propos du protocole UPnP et comment streamer de la musique à partir d'une application que l'on programme nous-mêmes.

Semaine 10 (23/11/2015)

Afin de pouvoir connecter des haut-parleurs passifs à notre Raspberry, nous avons débuté la réalisation d'un PCB d'amplificateur audio sous Altium.
Cet amplificateur embarque comme prévu l'amplificateur LM3886.

Semaine 11 (30/11/2015)

Le PCB de la carte sous Altium a été fini.

Objectif :

Arriver à streamer une musique sur la RPi à partir de notre application.

Semaine 12 (07/12/2015)

Objectif

Ajouter les contrôles (lecture, pause...) à notre lecteur.

Exporter le fichier nécessaire à la fabrication du de la carte.

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.

Semaine 15 (11/01/2016)

Semaine 16 (18/01/2016)

Semaine 17 (25/01/2016)

Semaine 18 (01/02/2016)

Semaine 19 (08/02/2016)

Semaine 20 (15/02/2016)

Semaine 21 (22/02/2016)