<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
		<id>https://projets-ima.plil.fr/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Vdupont1</id>
		<title>Wiki de Projets IMA - Contributions de l’utilisateur [fr]</title>
		<link rel="self" type="application/atom+xml" href="https://projets-ima.plil.fr/mediawiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Vdupont1"/>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php/Sp%C3%A9cial:Contributions/Vdupont1"/>
		<updated>2026-05-14T05:16:00Z</updated>
		<subtitle>Contributions de l’utilisateur</subtitle>
		<generator>MediaWiki 1.29.2</generator>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=53694</id>
		<title>IMA4 2017/2018 P14</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=53694"/>
				<updated>2018-03-20T00:51:31Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : /* Lundi 19/03/18 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
* '''Intitulé du projet''' : Proposer une solution permettant d'assembler des écrans de PC afin de créer un écran géant&lt;br /&gt;
&lt;br /&gt;
Le renouvellement de matériel informatique continu entraîne un nombre grandissant d'écrans d'ordinateur qui sont difficilement réutilisables compte tenu de leur petite taille. (17&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Afin de leur donner une seconde vie, ce projet a pour but de construire une plateforme permettant d'assembler ces écrans en un écran géant d'une forme &amp;quot;quelconque&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Exemple d'un cas d'écran carré'''&lt;br /&gt;
[[Fichier:Combinaison_ecrans.jpg]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
Afin de réaliser ce projet, il faudra :&lt;br /&gt;
&lt;br /&gt;
* Ajouter un Raspberry Pi sur chaque écran afin de le rentre &amp;quot;intelligent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Créer une application permettant de prendre un flux vidéo et de le diriger vers l'écran visé.&lt;br /&gt;
&lt;br /&gt;
* Permettre de déplacer facilement les écrans tout en maintenant le flux, que ce soit sur des configurations pleines en 2D ou des configurations plus complexes avec des espaces vides ou en 3D.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
* Le positionnement des écrans et la communication entre ces derniers.&lt;br /&gt;
&lt;br /&gt;
Pour une application telle qu'un écran géant composé de plusieurs écran, il est difficilement envisageable d'utiliser un système de coordonnées GPS pour repérer des écrans qui sont particulièrement proches les uns des autres. &lt;br /&gt;
En revanche il est tout à fait réaliste de penser à un système de capteurs de contact/proximité, disposés sur les bords des écrans pour leur permettre de s’emboîter puis il ne resterait qu'à exploiter les possibilités proposées par les Raspberry Pi ainsi qu'un système de coordonnées réalisé dans ce but pour déterminer où l'écran se situe par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
* La gestion du flux vidéo&lt;br /&gt;
&lt;br /&gt;
Le système sera potentiellement réalisé de sorte que chaque écran soit autonome dans son fonctionnement, une fois sa position relative déterminée au préalable.&lt;br /&gt;
En effet, pour le moment le problème était surtout dans le positionnement des écrans plus que dans la gestion du flux vidéo, à priori.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Est-ce que le système peut continuer de fonctionner si on retire l'un des écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pour pallier au problème d'un retrait d'écran, ou d'un disfonctionnement éventuel localisé, une solution possible est de fournir à chaque écran la totalité du flux vidéo.&lt;br /&gt;
Ceci permet dans un premier temps de s'affranchir d'un traitement vidéo avant distribution mais surtout que les autres écrans puissent fonctionner sans interruption due à un écran en particulier  &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Peut-il y avoir des décalages d'affichage entre les écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Malgré l'absence de possibilités de test pour le moment, on peut néanmoins supposer qu'il n'y ait pas de décalage. &lt;br /&gt;
Chaque écran va recevoir le flux vidéo puis en fonction du positionnement des écrans, et on pourra utiliser le système de coordonnées pour effectuer une &amp;quot;selection&amp;quot; sur la partie à afficher.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une configuration de 4 écrans en rectangle, il faudrait donc que l'écran inférieur gauche n'affiche que l'image correspondante jusqu'à la moitié, ensuite l'écran inférieur droit s'occuperait de l'affichage de la partie inférieure droite, etc&lt;br /&gt;
&lt;br /&gt;
En agrandissant le procédé à plus d'écrans, on trouve facilement une méthode de calcul.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet où il s'agira d'être capable de fournir une solution matérielle à la problématique, on s'orientera vers un prototype n'incluant que 4 écrans. Ceci permet à la fois d'éviter un encombrement matériel mais aussi .&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
* 5 Raspberry Pi 3 [https://fr.rs-online.com/web/p/processor-microcontroller-development-kits/8968660/?src=raspberrypi] lien 2 [https://www.mouser.fr/ProductDetail/Adafruit/3055?qs=sGAEpiMZZMuG6%2fXKM6MUaQgA7zSPt2LlznodoAe%252bkgk%3d]&lt;br /&gt;
&lt;br /&gt;
* Un Commutateur (5 Ports +)&lt;br /&gt;
&lt;br /&gt;
* 5 Câbles Ethernet&lt;br /&gt;
&lt;br /&gt;
* 4 Câbles VGA&lt;br /&gt;
&lt;br /&gt;
* 4 Adaptateur VGA-femelle vers HDMI-mâle&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
* 1) Régler le problème de la gestion du flux vidéo par le réseau ainsi qu'au niveau des Raspberry-Pi&lt;br /&gt;
&lt;br /&gt;
'''Hypothèse''': pour une configuration d'écran donnée, on suppose les écrans déjà intelligent et on dispose de leur emplacement relatif.&lt;br /&gt;
&lt;br /&gt;
* 2) Une fois la première version fonctionnelle, s'orienter vers la mise en place du système intelligent&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| Lundi 15/01/18 : 3h30&lt;br /&gt;
Mercredi 17/01/18 : 4h&lt;br /&gt;
| Mercredi 24/01/18 : 4h&lt;br /&gt;
| Mercredi 31/01/18 : 4h&lt;br /&gt;
| Lundi 05/02/18 : 2h&lt;br /&gt;
Mercredi 07/02/18 : 4h&lt;br /&gt;
|&lt;br /&gt;
Mercredi 14/02/18 : 4h&lt;br /&gt;
|&lt;br /&gt;
Absente (malade)&lt;br /&gt;
|&lt;br /&gt;
Mercredi 07/03/18 : 4h&lt;br /&gt;
|Lundi 12/03/18 : 2h&lt;br /&gt;
Mercredi 14/03/18 : 4h&lt;br /&gt;
|&lt;br /&gt;
|Lundi 19/03/18 : 6h&lt;br /&gt;
Mercredi 21/03/18 : ----&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
===Lundi 15/01/18===&lt;br /&gt;
&lt;br /&gt;
* Première séance ayant pour but de synthétiser l'idée théorique souhaitée par le projet.&lt;br /&gt;
&lt;br /&gt;
On imagine un système d'ensemble d'écrans autonomes mais qui communiquent leur emplacement entre eux, dans le sens où il n'est pas nécessaire de reconfigurer à chaque modification sur l'emplacement des écrans.&lt;br /&gt;
&lt;br /&gt;
Le système est pour ainsi dire évolutif puisqu'à chaque modification, exemple: passage d'un écran géant de 2*2 à 2*3 ou 3*2 (ou plus), les affichages peuvent modifier la zone du flux vidéo à afficher afin de conserver une image sur la totalité des écrans.&lt;br /&gt;
&lt;br /&gt;
De ce fait on peut imaginer des structures plus complexes, cylindriques dans le cas d'un flux d'une caméra à 360° ou plus simplement pour des simulateurs où les écrans seraient inclinés sans pour autant décrire un cercle autour de l'utilisateur.&lt;br /&gt;
&lt;br /&gt;
Cependant, pour des raisons évidentes d'effectif, de temps il est nécessaire de se réduire à une solution moins ambitieuse mais néanmoins acceptable.&lt;br /&gt;
&lt;br /&gt;
===Mercredi 17/01/18===&lt;br /&gt;
&lt;br /&gt;
* Mise en place d'un cahier des charge réalisable dans le temps imparti par rapport à la réponse théorique que l'on souhaiterai apporter au problème.&lt;br /&gt;
&lt;br /&gt;
Suite aux raisons évoquées précédemment, nous allons donc nous orienter vers un système à échelle réduite que nous ferons évoluer progressivement.&lt;br /&gt;
&lt;br /&gt;
Comme prévu nous diffuserons le flux vidéo initial, ''envoyé par Ethernet par une Raspberry Pi à partir d'un fichier stocké sur une clé usb par exemple'', aux 4 Raspberry intégrées aux écrans via un switch donc également par Ethernet (le port HDMI des R-Pi étant uniquement une sortie)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous effectuerons ensuite grâce aux R-Pi la modification du flux en fonction des écrans servant à l'affichage avant de rediriger la partie du flux qui nous intéresse vers les écrans.&lt;br /&gt;
&lt;br /&gt;
*'''Remarque:''' Dans un premier temps, pour une configuration donnée et avec les emplacement des écrans connues, il s'agit uniquement de réaliser la conversion d'affichage.&lt;br /&gt;
&lt;br /&gt;
Le fait de rendre les écrans intelligents n'est cependant pas ignoré et viendra dans un second temps, le choix de la méthode à employer étant encore en suspend. Nous allons cependant effectuer des hypothèses avec des capteurs.&lt;br /&gt;
&lt;br /&gt;
* Soit X et Y les dimensions du flux vidéo&lt;br /&gt;
* Soit U,R,D,L les états des capteurs sur un écran donné (respectivement, Up, Right, Down, Left) (1 pour actifs, 0 pour inactif)&lt;br /&gt;
* Soit I,J les indices des écrans (I = 0/1 et J = 0/1)&lt;br /&gt;
* Soit nb_X et nb_Y respectivement le nombre d'écrans en fonction des coordonnées i.e les dimensions de notre écran géant&lt;br /&gt;
&lt;br /&gt;
La configuration d'écran est la suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma (I,J)'''&lt;br /&gt;
&lt;br /&gt;
0,1 ; 1,1&lt;br /&gt;
&lt;br /&gt;
0,0 ; 1,0&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quel que soit l'écran, le flux qu'il devra recevoir sera situé entre [X1,X2] et [Y1,Y2].&lt;br /&gt;
Évidemment ces valeurs de l'emplacement de l'écran&lt;br /&gt;
&lt;br /&gt;
* Y2 = Y * ( D||U ) * (I+1) / nb_Y&lt;br /&gt;
* Y1 = Y * D * I / nb_Y&lt;br /&gt;
* X1 = X * L * J / nb_X&lt;br /&gt;
* X2 = X * ( L||R ) * (J+1) / nb_X&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 24/01/18===&lt;br /&gt;
Début de la gestion réseau du flux vidéo.&lt;br /&gt;
&lt;br /&gt;
Pour la partie théorique, nous allons donc procéder de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
Une Raspberry s'occupera de diffuser le flux sur le réseau via un commutateur. À partir d'un fichier vidéo interne.&lt;br /&gt;
&lt;br /&gt;
Les autres R-Pi disposeront d'un fichier de configuration qui contient les coordonnées à afficher en fonction de la position de l'écran, dans la première partie ce fichier sera directement implanté avec un contenu propre à chaque R-Pi mais dans la seconde il s'agira de les modifier automatiquement.&lt;br /&gt;
&lt;br /&gt;
Configuration eth0 sur la Raspberry pi : &lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
address 192.168.1.&amp;lt;2+numero_rpi&amp;gt;&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
&lt;br /&gt;
On commencera par créer un fichier fifo pour faire la transmission entre nc et OMXplayer&lt;br /&gt;
&lt;br /&gt;
Lecture du réseau : nc -l -p &amp;lt;port&amp;gt; &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Affichage : omxplayer --crop x1,y1,x2,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
[https://elinux.org/Omxplayer] : Documentation OMX player&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 31/01/18===&lt;br /&gt;
&lt;br /&gt;
Tentatives de communication PC (Source flux) à Raspberry (Écran) via nc : Échec&lt;br /&gt;
&lt;br /&gt;
* [PC source] : | nc &lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 1] : nc -l -p 12345 &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 2] : omxplayer --crop x1,y1,x1,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Avec x1,y1,x2,y2 les coordonnées des coins de la fenêtre à afficher&lt;br /&gt;
&lt;br /&gt;
Problème rencontré : la Raspberry n'arrive pas à obtenir une adresse joignable malgré une connexion directe avec le PC en ethernet&lt;br /&gt;
&lt;br /&gt;
* sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; iface eth0 inet dhcp&lt;br /&gt;
&lt;br /&gt;
* ifdown eth0&lt;br /&gt;
&lt;br /&gt;
* ifup eth0&lt;br /&gt;
&lt;br /&gt;
* ifconfig&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; inet adr:169.254.68.185&lt;br /&gt;
&lt;br /&gt;
Seconde tentative avec VLC en mode Streaming sur le PC source et VLC en écoute de stream avec VLC également : Échec (IP de la source = ?)&lt;br /&gt;
&lt;br /&gt;
Ligne de commande pour VLC de lecture&lt;br /&gt;
&lt;br /&gt;
* vlc -vvv http://IP_SOURCE:8080/PATH --crop X_RESxY_RES+LEFT_CROP+TOP_CROP -f&lt;br /&gt;
&lt;br /&gt;
PATH: paramètre donné lors du lancement du stream sur la machine source&lt;br /&gt;
&lt;br /&gt;
X_RES : Résolution X de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
Y_RES : Résolution Y de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
LEFT_CROP : Largeur de la zone coupée en partant de la gauche (en pixel)&lt;br /&gt;
&lt;br /&gt;
TOP_CROP : Hauteur de la zone coupée en partant du haut (en pixel)&lt;br /&gt;
&lt;br /&gt;
-f : Full screen&lt;br /&gt;
&lt;br /&gt;
* Test avec le mode de stream (une fois le problème résolu) : le lancement de la lecture sous VLC du côté de la raspberry entraîne des pertes considérables au niveau du flux vidéo avec des coupures très fréquentes (écran noir) ainsi qu'une forte consommation des ressources&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;photo 95%&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
===Lundi 05/02/18===&lt;br /&gt;
&lt;br /&gt;
Omxplayer demeure plus adapté puisqu'il n'entraîne pas une sur-consommation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;photo 0-3%&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mercredi 07/02/18===&lt;br /&gt;
&lt;br /&gt;
Envoie avec succès d'un fichier vidéo via netcat du PC source vers la Raspberry&lt;br /&gt;
&lt;br /&gt;
* $ nc -w 3 172.26.145.172 1234 &amp;lt; Downloads/dragons.mp4&lt;br /&gt;
&lt;br /&gt;
Où 172.26.145.172 est l'adresse obtenue par ifconfig sur la Raspberry.&lt;br /&gt;
&lt;br /&gt;
Réception avec :&lt;br /&gt;
&lt;br /&gt;
* $ nc -l -p 1234 &amp;gt; Downloads/test.mp4&lt;br /&gt;
&lt;br /&gt;
Commande de lecture : &lt;br /&gt;
&lt;br /&gt;
* $ omxplayer --aspect-mode stretch --crop X1,Y1,X2,Y2 Downloads/test.mp4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Récupération de la résolution du flux vidéo (ou fichier dans le cas actuel) : exiftool&lt;br /&gt;
&lt;br /&gt;
Nécessite un &amp;quot;exiftool&amp;quot; sur chaque Raspberry&lt;br /&gt;
&lt;br /&gt;
* $ sudo apt-get install exiftool&lt;br /&gt;
&lt;br /&gt;
* $ exiftool &amp;lt;file&amp;gt; | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f1&lt;br /&gt;
&lt;br /&gt;
Observation d'événements particuliers sur des dossiers&lt;br /&gt;
&lt;br /&gt;
* $ apt-get install inotify-tools&lt;br /&gt;
&lt;br /&gt;
Script d'observation et d’exécution d'action sur la création d'un fichier dans un dossier &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# CONFIGURATION&lt;br /&gt;
&lt;br /&gt;
DIR=&amp;quot;~/Downloads&amp;quot;&lt;br /&gt;
EVENTS=&amp;quot;create&amp;quot;&lt;br /&gt;
&lt;br /&gt;
NB_X=1&lt;br /&gt;
NB_Y=1&lt;br /&gt;
X=0&lt;br /&gt;
Y=0&lt;br /&gt;
&lt;br /&gt;
# MAIN&lt;br /&gt;
&lt;br /&gt;
inotifywait -m -e $EVENTS $DIR |&lt;br /&gt;
while read file&lt;br /&gt;
do&lt;br /&gt;
&lt;br /&gt;
        X1=0&lt;br /&gt;
        Y1=0&lt;br /&gt;
&lt;br /&gt;
        X2=exiftool /home/pifou/Downloads/hide-and-seek.mp4 | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f1 | awk '{print $1&amp;quot;*(1+X)/$NB_X&amp;quot;}' | bc&lt;br /&gt;
        Y2=exiftool /home/pifou/Downloads/hide-and-seek.mp4 | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f2 | awk '{print $1&amp;quot;*(1+Y)/$NB_Y&amp;quot;}' | bc&lt;br /&gt;
&lt;br /&gt;
        echo &amp;quot;File recieved : $file&amp;quot;;&lt;br /&gt;
        omxplayer --aspect-mode stretch --crop X1,Y1,X2,Y2 $DIR/$file;&lt;br /&gt;
        PID=$!;&lt;br /&gt;
        wait $PID;&lt;br /&gt;
        rm -f $DIR/$file;&lt;br /&gt;
        echo &amp;quot;File removed $file&amp;quot;;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 14/02/18===&lt;br /&gt;
&lt;br /&gt;
Récupération du temps de lecture (pour la commande wait)&lt;br /&gt;
&lt;br /&gt;
* exiftool &amp;lt;video&amp;gt; | grep -m 1 &amp;quot;Track Duration&amp;quot; | cut -d' ' -f21 | cut -d':' -fX&lt;br /&gt;
&lt;br /&gt;
X=1 -&amp;gt; heures ; 2 -&amp;gt; minutes ; 3 ; secondes&lt;br /&gt;
&lt;br /&gt;
Début de la conception d'une méthode d'acquisition de la position de l'écran relative aux autres.&lt;br /&gt;
&lt;br /&gt;
Un premier problème est présent pour la détection des coins dans une configuration d'écrans plus ou moins aléatoire&lt;br /&gt;
&lt;br /&gt;
Dans le cas de notre prototype à 4 écrans. Qu'ils soient disposés en carré ou en ligne à l'horizontale ou à la verticale, ça ne pose pas de problème puisqu'il suffit de juger à l'état des (futurs) capteurs disposé cependant dans le cas où l'on supprime un écran, on se retrouve avec des incohérences&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
absente pour maladie toute la semaine&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Jusqu'à présent nous nous sommes surtout intéressés à la partie lecture du flux vidéo (fichier jusqu'à présent) et nous alors donc nous orienter sur la partie essentielle, le streaming de la R-pi maîtresse.&lt;br /&gt;
&lt;br /&gt;
Remarque : La R-pi maîtresse sera dotée d'une caméra afin de pouvoir effectuer la détection des écrans via un traitement d'image.&lt;br /&gt;
&lt;br /&gt;
Le concept est simple, la R-pi envoie un signal aux autres qui doivent afficher un identifiant qui est sous la forme d'une image de 4 carrés de couleurs.&lt;br /&gt;
Ensuite elle prend une photo des écrans puis après un traitement d'image elle peut ensuite attribuer les fichiers de configuration aux R-pi correspondantes pour les scripts de lecture&lt;br /&gt;
&lt;br /&gt;
Pour le moment, seul le streaming par VLC sur la maîtresse et la lecture sous omxplayer sur la partie visualisation fonctionne mais souffre d'une latence particulièrement élevée (rappel: vlc consomme 97%+ de la raspberry).&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
===Lundi 12/03/18===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Problème avec la carte SD de la R-pi 1 théoriquement résolu en copiant via &amp;quot;dd if=&amp;lt;input_file&amp;gt; of=&amp;lt;output_file&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Début des recherches sur le traitement d'image par une raspberry utilisant une caméra.&lt;br /&gt;
&lt;br /&gt;
OpenCV semble proposer plusieurs solution possibles qui sont à exploiter&lt;br /&gt;
&lt;br /&gt;
Sources:&lt;br /&gt;
&lt;br /&gt;
- Vidéo de présentation d'un projet de reconnaissance de formes colorées [https://www.youtube.com/watch?v=uV7mLcYoaV8]&lt;br /&gt;
&lt;br /&gt;
- Détermination de la couleur d'un objet avec OpenCV [https://www.pyimagesearch.com/2016/02/15/determining-object-color-with-opencv/]&lt;br /&gt;
&lt;br /&gt;
- Shape Detection avec OpenCV [https://www.pyimagesearch.com/2016/02/08/opencv-shape-detection/]&lt;br /&gt;
&lt;br /&gt;
* Solution à examiner pour la gestion d'un stream par une R-pi puis lu par une R-pi via omxplayer [https://stackoverflow.com/questions/25498765/how-to-play-mjpeg-stream-with-omxplayer]&lt;br /&gt;
&lt;br /&gt;
===Mercredi 14/03/18===&lt;br /&gt;
&lt;br /&gt;
* Installation d'OpenCV sur la R-pi maîtresse suivant le tutoriel [https://www.pyimagesearch.com/2016/04/18/install-guide-raspberry-pi-3-raspbian-jessie-opencv-3/]&lt;br /&gt;
&lt;br /&gt;
Note : Lors de l'installation le nom de l'environnement du tutoriel est &amp;quot;cv&amp;quot; pour les deux exemples (python2 et python3) or nous avons déclaré &amp;quot;cv2&amp;quot; pour python2 ET &amp;quot;cv3&amp;quot; pour python3&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; actuellement bloquée au point du make -j4 la compilation plante à environ 24-25% sur une erreur (même chose avec la commande make pour n'utiliser qu'un coeur de la R-pi)&lt;br /&gt;
&lt;br /&gt;
* Création d'un serveur de stream pour la R-pi maîtresse [https://github.com/cncjs/cncjs/wiki/Setup-Guide:-Raspberry-Pi-%7C-MJPEG-Streamer-Install-&amp;amp;-Setup-&amp;amp;-FFMpeg-Recording]&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; Le système est installé sur la R-pi maîtresse mais n'arrive pas à se lancer pour le moment -&amp;gt; en recherche de solution pour ce problème&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
===Lundi 19/03/18===&lt;br /&gt;
&lt;br /&gt;
* Compilation d'OpenCV débloquée [https://stackoverflow.com/questions/40262928/error-compiling-opencv-fatal-error-stdlib-h-no-such-file-or-directory]&lt;br /&gt;
&lt;br /&gt;
Réinstallation effectuée proprement en raison d'un problème avec stdlib.h dans les fichiers précompilés d'où l'ajout de la commande &lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; -DENABLE_PRECOMPILED_HEADERS=OFF&lt;br /&gt;
&lt;br /&gt;
à la suite du cmake qui est à présent &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd ~/opencv-3.1.0/&lt;br /&gt;
$ mkdir build&lt;br /&gt;
$ cd build&lt;br /&gt;
$ cmake -D CMAKE_BUILD_TYPE=RELEASE \&lt;br /&gt;
    -D CMAKE_INSTALL_PREFIX=/usr/local \&lt;br /&gt;
    -D INSTALL_PYTHON_EXAMPLES=ON \&lt;br /&gt;
    -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.1.0/modules \&lt;br /&gt;
    -D BUILD_EXAMPLES=ON .. \&lt;br /&gt;
    -DENABLE_PRECOMPILED_HEADERS=OFF&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Réinstallation complète du serveur de stream indiqué au tutoriel : [https://github.com/cncjs/cncjs/wiki/Setup-Guide:-Raspberry-Pi-%7C-MJPEG-Streamer-Install-&amp;amp;-Setup-&amp;amp;-FFMpeg-Recording]&lt;br /&gt;
&lt;br /&gt;
Le serveur est fonctionnel (testé en local uniquement) localhost:8081/steam.html conformément au instructions.&lt;br /&gt;
&lt;br /&gt;
L'une des raisons du non fonctionnement était que /dev/video0 n'était pas disponible malgré le fait qu'une caméra était présente sur la raspberry or une webcam branchée en USB permet l'apparition de /dev/video1 qui a été utilisée pour le test.&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=53533</id>
		<title>IMA4 2017/2018 P14</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=53533"/>
				<updated>2018-03-19T14:37:07Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : /* Lundi 19/03/18 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
* '''Intitulé du projet''' : Proposer une solution permettant d'assembler des écrans de PC afin de créer un écran géant&lt;br /&gt;
&lt;br /&gt;
Le renouvellement de matériel informatique continu entraîne un nombre grandissant d'écrans d'ordinateur qui sont difficilement réutilisables compte tenu de leur petite taille. (17&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Afin de leur donner une seconde vie, ce projet a pour but de construire une plateforme permettant d'assembler ces écrans en un écran géant d'une forme &amp;quot;quelconque&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Exemple d'un cas d'écran carré'''&lt;br /&gt;
[[Fichier:Combinaison_ecrans.jpg]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
Afin de réaliser ce projet, il faudra :&lt;br /&gt;
&lt;br /&gt;
* Ajouter un Raspberry Pi sur chaque écran afin de le rentre &amp;quot;intelligent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Créer une application permettant de prendre un flux vidéo et de le diriger vers l'écran visé.&lt;br /&gt;
&lt;br /&gt;
* Permettre de déplacer facilement les écrans tout en maintenant le flux, que ce soit sur des configurations pleines en 2D ou des configurations plus complexes avec des espaces vides ou en 3D.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
* Le positionnement des écrans et la communication entre ces derniers.&lt;br /&gt;
&lt;br /&gt;
Pour une application telle qu'un écran géant composé de plusieurs écran, il est difficilement envisageable d'utiliser un système de coordonnées GPS pour repérer des écrans qui sont particulièrement proches les uns des autres. &lt;br /&gt;
En revanche il est tout à fait réaliste de penser à un système de capteurs de contact/proximité, disposés sur les bords des écrans pour leur permettre de s’emboîter puis il ne resterait qu'à exploiter les possibilités proposées par les Raspberry Pi ainsi qu'un système de coordonnées réalisé dans ce but pour déterminer où l'écran se situe par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
* La gestion du flux vidéo&lt;br /&gt;
&lt;br /&gt;
Le système sera potentiellement réalisé de sorte que chaque écran soit autonome dans son fonctionnement, une fois sa position relative déterminée au préalable.&lt;br /&gt;
En effet, pour le moment le problème était surtout dans le positionnement des écrans plus que dans la gestion du flux vidéo, à priori.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Est-ce que le système peut continuer de fonctionner si on retire l'un des écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pour pallier au problème d'un retrait d'écran, ou d'un disfonctionnement éventuel localisé, une solution possible est de fournir à chaque écran la totalité du flux vidéo.&lt;br /&gt;
Ceci permet dans un premier temps de s'affranchir d'un traitement vidéo avant distribution mais surtout que les autres écrans puissent fonctionner sans interruption due à un écran en particulier  &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Peut-il y avoir des décalages d'affichage entre les écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Malgré l'absence de possibilités de test pour le moment, on peut néanmoins supposer qu'il n'y ait pas de décalage. &lt;br /&gt;
Chaque écran va recevoir le flux vidéo puis en fonction du positionnement des écrans, et on pourra utiliser le système de coordonnées pour effectuer une &amp;quot;selection&amp;quot; sur la partie à afficher.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une configuration de 4 écrans en rectangle, il faudrait donc que l'écran inférieur gauche n'affiche que l'image correspondante jusqu'à la moitié, ensuite l'écran inférieur droit s'occuperait de l'affichage de la partie inférieure droite, etc&lt;br /&gt;
&lt;br /&gt;
En agrandissant le procédé à plus d'écrans, on trouve facilement une méthode de calcul.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet où il s'agira d'être capable de fournir une solution matérielle à la problématique, on s'orientera vers un prototype n'incluant que 4 écrans. Ceci permet à la fois d'éviter un encombrement matériel mais aussi .&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
* 5 Raspberry Pi 3 [https://fr.rs-online.com/web/p/processor-microcontroller-development-kits/8968660/?src=raspberrypi] lien 2 [https://www.mouser.fr/ProductDetail/Adafruit/3055?qs=sGAEpiMZZMuG6%2fXKM6MUaQgA7zSPt2LlznodoAe%252bkgk%3d]&lt;br /&gt;
&lt;br /&gt;
* Un Commutateur (5 Ports +)&lt;br /&gt;
&lt;br /&gt;
* 5 Câbles Ethernet&lt;br /&gt;
&lt;br /&gt;
* 4 Câbles VGA&lt;br /&gt;
&lt;br /&gt;
* 4 Adaptateur VGA-femelle vers HDMI-mâle&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
* 1) Régler le problème de la gestion du flux vidéo par le réseau ainsi qu'au niveau des Raspberry-Pi&lt;br /&gt;
&lt;br /&gt;
'''Hypothèse''': pour une configuration d'écran donnée, on suppose les écrans déjà intelligent et on dispose de leur emplacement relatif.&lt;br /&gt;
&lt;br /&gt;
* 2) Une fois la première version fonctionnelle, s'orienter vers la mise en place du système intelligent&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| Lundi 15/01/18 : 3h30&lt;br /&gt;
Mercredi 17/01/18 : 4h&lt;br /&gt;
| Mercredi 24/01/18 : 4h&lt;br /&gt;
| Mercredi 31/01/18 : 4h&lt;br /&gt;
| Lundi 05/02/18 : 2h&lt;br /&gt;
Mercredi 07/02/18 : 4h&lt;br /&gt;
|&lt;br /&gt;
Mercredi 14/02/18 : 4h&lt;br /&gt;
|&lt;br /&gt;
Absente (malade)&lt;br /&gt;
|&lt;br /&gt;
Mercredi 07/03/18 : 4h&lt;br /&gt;
|Lundi 12/03/18 : 2h&lt;br /&gt;
Mercredi 14/03/18 : 4h&lt;br /&gt;
|&lt;br /&gt;
|Lundi 19/03/18 : 6h&lt;br /&gt;
Mercredi 21/03/18 : ----&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
===Lundi 15/01/18===&lt;br /&gt;
&lt;br /&gt;
* Première séance ayant pour but de synthétiser l'idée théorique souhaitée par le projet.&lt;br /&gt;
&lt;br /&gt;
On imagine un système d'ensemble d'écrans autonomes mais qui communiquent leur emplacement entre eux, dans le sens où il n'est pas nécessaire de reconfigurer à chaque modification sur l'emplacement des écrans.&lt;br /&gt;
&lt;br /&gt;
Le système est pour ainsi dire évolutif puisqu'à chaque modification, exemple: passage d'un écran géant de 2*2 à 2*3 ou 3*2 (ou plus), les affichages peuvent modifier la zone du flux vidéo à afficher afin de conserver une image sur la totalité des écrans.&lt;br /&gt;
&lt;br /&gt;
De ce fait on peut imaginer des structures plus complexes, cylindriques dans le cas d'un flux d'une caméra à 360° ou plus simplement pour des simulateurs où les écrans seraient inclinés sans pour autant décrire un cercle autour de l'utilisateur.&lt;br /&gt;
&lt;br /&gt;
Cependant, pour des raisons évidentes d'effectif, de temps il est nécessaire de se réduire à une solution moins ambitieuse mais néanmoins acceptable.&lt;br /&gt;
&lt;br /&gt;
===Mercredi 17/01/18===&lt;br /&gt;
&lt;br /&gt;
* Mise en place d'un cahier des charge réalisable dans le temps imparti par rapport à la réponse théorique que l'on souhaiterai apporter au problème.&lt;br /&gt;
&lt;br /&gt;
Suite aux raisons évoquées précédemment, nous allons donc nous orienter vers un système à échelle réduite que nous ferons évoluer progressivement.&lt;br /&gt;
&lt;br /&gt;
Comme prévu nous diffuserons le flux vidéo initial, ''envoyé par Ethernet par une Raspberry Pi à partir d'un fichier stocké sur une clé usb par exemple'', aux 4 Raspberry intégrées aux écrans via un switch donc également par Ethernet (le port HDMI des R-Pi étant uniquement une sortie)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous effectuerons ensuite grâce aux R-Pi la modification du flux en fonction des écrans servant à l'affichage avant de rediriger la partie du flux qui nous intéresse vers les écrans.&lt;br /&gt;
&lt;br /&gt;
*'''Remarque:''' Dans un premier temps, pour une configuration donnée et avec les emplacement des écrans connues, il s'agit uniquement de réaliser la conversion d'affichage.&lt;br /&gt;
&lt;br /&gt;
Le fait de rendre les écrans intelligents n'est cependant pas ignoré et viendra dans un second temps, le choix de la méthode à employer étant encore en suspend. Nous allons cependant effectuer des hypothèses avec des capteurs.&lt;br /&gt;
&lt;br /&gt;
* Soit X et Y les dimensions du flux vidéo&lt;br /&gt;
* Soit U,R,D,L les états des capteurs sur un écran donné (respectivement, Up, Right, Down, Left) (1 pour actifs, 0 pour inactif)&lt;br /&gt;
* Soit I,J les indices des écrans (I = 0/1 et J = 0/1)&lt;br /&gt;
* Soit nb_X et nb_Y respectivement le nombre d'écrans en fonction des coordonnées i.e les dimensions de notre écran géant&lt;br /&gt;
&lt;br /&gt;
La configuration d'écran est la suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma (I,J)'''&lt;br /&gt;
&lt;br /&gt;
0,1 ; 1,1&lt;br /&gt;
&lt;br /&gt;
0,0 ; 1,0&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quel que soit l'écran, le flux qu'il devra recevoir sera situé entre [X1,X2] et [Y1,Y2].&lt;br /&gt;
Évidemment ces valeurs de l'emplacement de l'écran&lt;br /&gt;
&lt;br /&gt;
* Y2 = Y * ( D||U ) * (I+1) / nb_Y&lt;br /&gt;
* Y1 = Y * D * I / nb_Y&lt;br /&gt;
* X1 = X * L * J / nb_X&lt;br /&gt;
* X2 = X * ( L||R ) * (J+1) / nb_X&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 24/01/18===&lt;br /&gt;
Début de la gestion réseau du flux vidéo.&lt;br /&gt;
&lt;br /&gt;
Pour la partie théorique, nous allons donc procéder de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
Une Raspberry s'occupera de diffuser le flux sur le réseau via un commutateur. À partir d'un fichier vidéo interne.&lt;br /&gt;
&lt;br /&gt;
Les autres R-Pi disposeront d'un fichier de configuration qui contient les coordonnées à afficher en fonction de la position de l'écran, dans la première partie ce fichier sera directement implanté avec un contenu propre à chaque R-Pi mais dans la seconde il s'agira de les modifier automatiquement.&lt;br /&gt;
&lt;br /&gt;
Configuration eth0 sur la Raspberry pi : &lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
address 192.168.1.&amp;lt;2+numero_rpi&amp;gt;&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
&lt;br /&gt;
On commencera par créer un fichier fifo pour faire la transmission entre nc et OMXplayer&lt;br /&gt;
&lt;br /&gt;
Lecture du réseau : nc -l -p &amp;lt;port&amp;gt; &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Affichage : omxplayer --crop x1,y1,x2,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
[https://elinux.org/Omxplayer] : Documentation OMX player&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 31/01/18===&lt;br /&gt;
&lt;br /&gt;
Tentatives de communication PC (Source flux) à Raspberry (Écran) via nc : Échec&lt;br /&gt;
&lt;br /&gt;
* [PC source] : | nc &lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 1] : nc -l -p 12345 &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 2] : omxplayer --crop x1,y1,x1,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Avec x1,y1,x2,y2 les coordonnées des coins de la fenêtre à afficher&lt;br /&gt;
&lt;br /&gt;
Problème rencontré : la Raspberry n'arrive pas à obtenir une adresse joignable malgré une connexion directe avec le PC en ethernet&lt;br /&gt;
&lt;br /&gt;
* sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; iface eth0 inet dhcp&lt;br /&gt;
&lt;br /&gt;
* ifdown eth0&lt;br /&gt;
&lt;br /&gt;
* ifup eth0&lt;br /&gt;
&lt;br /&gt;
* ifconfig&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; inet adr:169.254.68.185&lt;br /&gt;
&lt;br /&gt;
Seconde tentative avec VLC en mode Streaming sur le PC source et VLC en écoute de stream avec VLC également : Échec (IP de la source = ?)&lt;br /&gt;
&lt;br /&gt;
Ligne de commande pour VLC de lecture&lt;br /&gt;
&lt;br /&gt;
* vlc -vvv http://IP_SOURCE:8080/PATH --crop X_RESxY_RES+LEFT_CROP+TOP_CROP -f&lt;br /&gt;
&lt;br /&gt;
PATH: paramètre donné lors du lancement du stream sur la machine source&lt;br /&gt;
&lt;br /&gt;
X_RES : Résolution X de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
Y_RES : Résolution Y de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
LEFT_CROP : Largeur de la zone coupée en partant de la gauche (en pixel)&lt;br /&gt;
&lt;br /&gt;
TOP_CROP : Hauteur de la zone coupée en partant du haut (en pixel)&lt;br /&gt;
&lt;br /&gt;
-f : Full screen&lt;br /&gt;
&lt;br /&gt;
* Test avec le mode de stream (une fois le problème résolu) : le lancement de la lecture sous VLC du côté de la raspberry entraîne des pertes considérables au niveau du flux vidéo avec des coupures très fréquentes (écran noir) ainsi qu'une forte consommation des ressources&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;photo 95%&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
===Lundi 05/02/18===&lt;br /&gt;
&lt;br /&gt;
Omxplayer demeure plus adapté puisqu'il n'entraîne pas une sur-consommation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;photo 0-3%&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mercredi 07/02/18===&lt;br /&gt;
&lt;br /&gt;
Envoie avec succès d'un fichier vidéo via netcat du PC source vers la Raspberry&lt;br /&gt;
&lt;br /&gt;
* $ nc -w 3 172.26.145.172 1234 &amp;lt; Downloads/dragons.mp4&lt;br /&gt;
&lt;br /&gt;
Où 172.26.145.172 est l'adresse obtenue par ifconfig sur la Raspberry.&lt;br /&gt;
&lt;br /&gt;
Réception avec :&lt;br /&gt;
&lt;br /&gt;
* $ nc -l -p 1234 &amp;gt; Downloads/test.mp4&lt;br /&gt;
&lt;br /&gt;
Commande de lecture : &lt;br /&gt;
&lt;br /&gt;
* $ omxplayer --aspect-mode stretch --crop X1,Y1,X2,Y2 Downloads/test.mp4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Récupération de la résolution du flux vidéo (ou fichier dans le cas actuel) : exiftool&lt;br /&gt;
&lt;br /&gt;
Nécessite un &amp;quot;exiftool&amp;quot; sur chaque Raspberry&lt;br /&gt;
&lt;br /&gt;
* $ sudo apt-get install exiftool&lt;br /&gt;
&lt;br /&gt;
* $ exiftool &amp;lt;file&amp;gt; | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f1&lt;br /&gt;
&lt;br /&gt;
Observation d'événements particuliers sur des dossiers&lt;br /&gt;
&lt;br /&gt;
* $ apt-get install inotify-tools&lt;br /&gt;
&lt;br /&gt;
Script d'observation et d’exécution d'action sur la création d'un fichier dans un dossier &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# CONFIGURATION&lt;br /&gt;
&lt;br /&gt;
DIR=&amp;quot;~/Downloads&amp;quot;&lt;br /&gt;
EVENTS=&amp;quot;create&amp;quot;&lt;br /&gt;
&lt;br /&gt;
NB_X=1&lt;br /&gt;
NB_Y=1&lt;br /&gt;
X=0&lt;br /&gt;
Y=0&lt;br /&gt;
&lt;br /&gt;
# MAIN&lt;br /&gt;
&lt;br /&gt;
inotifywait -m -e $EVENTS $DIR |&lt;br /&gt;
while read file&lt;br /&gt;
do&lt;br /&gt;
&lt;br /&gt;
        X1=0&lt;br /&gt;
        Y1=0&lt;br /&gt;
&lt;br /&gt;
        X2=exiftool /home/pifou/Downloads/hide-and-seek.mp4 | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f1 | awk '{print $1&amp;quot;*(1+X)/$NB_X&amp;quot;}' | bc&lt;br /&gt;
        Y2=exiftool /home/pifou/Downloads/hide-and-seek.mp4 | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f2 | awk '{print $1&amp;quot;*(1+Y)/$NB_Y&amp;quot;}' | bc&lt;br /&gt;
&lt;br /&gt;
        echo &amp;quot;File recieved : $file&amp;quot;;&lt;br /&gt;
        omxplayer --aspect-mode stretch --crop X1,Y1,X2,Y2 $DIR/$file;&lt;br /&gt;
        PID=$!;&lt;br /&gt;
        wait $PID;&lt;br /&gt;
        rm -f $DIR/$file;&lt;br /&gt;
        echo &amp;quot;File removed $file&amp;quot;;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 14/02/18===&lt;br /&gt;
&lt;br /&gt;
Récupération du temps de lecture (pour la commande wait)&lt;br /&gt;
&lt;br /&gt;
* exiftool &amp;lt;video&amp;gt; | grep -m 1 &amp;quot;Track Duration&amp;quot; | cut -d' ' -f21 | cut -d':' -fX&lt;br /&gt;
&lt;br /&gt;
X=1 -&amp;gt; heures ; 2 -&amp;gt; minutes ; 3 ; secondes&lt;br /&gt;
&lt;br /&gt;
Début de la conception d'une méthode d'acquisition de la position de l'écran relative aux autres.&lt;br /&gt;
&lt;br /&gt;
Un premier problème est présent pour la détection des coins dans une configuration d'écrans plus ou moins aléatoire&lt;br /&gt;
&lt;br /&gt;
Dans le cas de notre prototype à 4 écrans. Qu'ils soient disposés en carré ou en ligne à l'horizontale ou à la verticale, ça ne pose pas de problème puisqu'il suffit de juger à l'état des (futurs) capteurs disposé cependant dans le cas où l'on supprime un écran, on se retrouve avec des incohérences&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
absente pour maladie toute la semaine&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Jusqu'à présent nous nous sommes surtout intéressés à la partie lecture du flux vidéo (fichier jusqu'à présent) et nous alors donc nous orienter sur la partie essentielle, le streaming de la R-pi maîtresse.&lt;br /&gt;
&lt;br /&gt;
Remarque : La R-pi maîtresse sera dotée d'une caméra afin de pouvoir effectuer la détection des écrans via un traitement d'image.&lt;br /&gt;
&lt;br /&gt;
Le concept est simple, la R-pi envoie un signal aux autres qui doivent afficher un identifiant qui est sous la forme d'une image de 4 carrés de couleurs.&lt;br /&gt;
Ensuite elle prend une photo des écrans puis après un traitement d'image elle peut ensuite attribuer les fichiers de configuration aux R-pi correspondantes pour les scripts de lecture&lt;br /&gt;
&lt;br /&gt;
Pour le moment, seul le streaming par VLC sur la maîtresse et la lecture sous omxplayer sur la partie visualisation fonctionne mais souffre d'une latence particulièrement élevée (rappel: vlc consomme 97%+ de la raspberry).&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
===Lundi 12/03/18===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Problème avec la carte SD de la R-pi 1 théoriquement résolu en copiant via &amp;quot;dd if=&amp;lt;input_file&amp;gt; of=&amp;lt;output_file&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Début des recherches sur le traitement d'image par une raspberry utilisant une caméra.&lt;br /&gt;
&lt;br /&gt;
OpenCV semble proposer plusieurs solution possibles qui sont à exploiter&lt;br /&gt;
&lt;br /&gt;
Sources:&lt;br /&gt;
&lt;br /&gt;
- Vidéo de présentation d'un projet de reconnaissance de formes colorées [https://www.youtube.com/watch?v=uV7mLcYoaV8]&lt;br /&gt;
&lt;br /&gt;
- Détermination de la couleur d'un objet avec OpenCV [https://www.pyimagesearch.com/2016/02/15/determining-object-color-with-opencv/]&lt;br /&gt;
&lt;br /&gt;
- Shape Detection avec OpenCV [https://www.pyimagesearch.com/2016/02/08/opencv-shape-detection/]&lt;br /&gt;
&lt;br /&gt;
* Solution à examiner pour la gestion d'un stream par une R-pi puis lu par une R-pi via omxplayer [https://stackoverflow.com/questions/25498765/how-to-play-mjpeg-stream-with-omxplayer]&lt;br /&gt;
&lt;br /&gt;
===Mercredi 14/03/18===&lt;br /&gt;
&lt;br /&gt;
* Installation d'OpenCV sur la R-pi maîtresse suivant le tutoriel [https://www.pyimagesearch.com/2016/04/18/install-guide-raspberry-pi-3-raspbian-jessie-opencv-3/]&lt;br /&gt;
&lt;br /&gt;
Note : Lors de l'installation le nom de l'environnement du tutoriel est &amp;quot;cv&amp;quot; pour les deux exemples (python2 et python3) or nous avons déclaré &amp;quot;cv2&amp;quot; pour python2 ET &amp;quot;cv3&amp;quot; pour python3&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; actuellement bloquée au point du make -j4 la compilation plante à environ 24-25% sur une erreur (même chose avec la commande make pour n'utiliser qu'un coeur de la R-pi)&lt;br /&gt;
&lt;br /&gt;
* Création d'un serveur de stream pour la R-pi maîtresse [https://github.com/cncjs/cncjs/wiki/Setup-Guide:-Raspberry-Pi-%7C-MJPEG-Streamer-Install-&amp;amp;-Setup-&amp;amp;-FFMpeg-Recording]&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; Le système est installé sur la R-pi maîtresse mais n'arrive pas à se lancer pour le moment -&amp;gt; en recherche de solution pour ce problème&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
===Lundi 19/03/18===&lt;br /&gt;
&lt;br /&gt;
* Compilation d'OpenCV débloquée [https://stackoverflow.com/questions/40262928/error-compiling-opencv-fatal-error-stdlib-h-no-such-file-or-directory]&lt;br /&gt;
&lt;br /&gt;
Réinstallation effectuée proprement en raison d'un problème avec stdlib.h dans les fichiers précompilés d'où l'ajout de la commande &lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; -DENABLE_PRECOMPILED_HEADERS=OFF&lt;br /&gt;
&lt;br /&gt;
à la suite du cmake qui est à présent &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd ~/opencv-3.1.0/&lt;br /&gt;
$ mkdir build&lt;br /&gt;
$ cd build&lt;br /&gt;
$ cmake -D CMAKE_BUILD_TYPE=RELEASE \&lt;br /&gt;
    -D CMAKE_INSTALL_PREFIX=/usr/local \&lt;br /&gt;
    -D INSTALL_PYTHON_EXAMPLES=ON \&lt;br /&gt;
    -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.1.0/modules \&lt;br /&gt;
    -D BUILD_EXAMPLES=ON .. \&lt;br /&gt;
    -DENABLE_PRECOMPILED_HEADERS=OFF&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=53532</id>
		<title>IMA4 2017/2018 P14</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=53532"/>
				<updated>2018-03-19T14:36:55Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : /* Lundi 19/03/18 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
* '''Intitulé du projet''' : Proposer une solution permettant d'assembler des écrans de PC afin de créer un écran géant&lt;br /&gt;
&lt;br /&gt;
Le renouvellement de matériel informatique continu entraîne un nombre grandissant d'écrans d'ordinateur qui sont difficilement réutilisables compte tenu de leur petite taille. (17&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Afin de leur donner une seconde vie, ce projet a pour but de construire une plateforme permettant d'assembler ces écrans en un écran géant d'une forme &amp;quot;quelconque&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Exemple d'un cas d'écran carré'''&lt;br /&gt;
[[Fichier:Combinaison_ecrans.jpg]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
Afin de réaliser ce projet, il faudra :&lt;br /&gt;
&lt;br /&gt;
* Ajouter un Raspberry Pi sur chaque écran afin de le rentre &amp;quot;intelligent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Créer une application permettant de prendre un flux vidéo et de le diriger vers l'écran visé.&lt;br /&gt;
&lt;br /&gt;
* Permettre de déplacer facilement les écrans tout en maintenant le flux, que ce soit sur des configurations pleines en 2D ou des configurations plus complexes avec des espaces vides ou en 3D.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
* Le positionnement des écrans et la communication entre ces derniers.&lt;br /&gt;
&lt;br /&gt;
Pour une application telle qu'un écran géant composé de plusieurs écran, il est difficilement envisageable d'utiliser un système de coordonnées GPS pour repérer des écrans qui sont particulièrement proches les uns des autres. &lt;br /&gt;
En revanche il est tout à fait réaliste de penser à un système de capteurs de contact/proximité, disposés sur les bords des écrans pour leur permettre de s’emboîter puis il ne resterait qu'à exploiter les possibilités proposées par les Raspberry Pi ainsi qu'un système de coordonnées réalisé dans ce but pour déterminer où l'écran se situe par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
* La gestion du flux vidéo&lt;br /&gt;
&lt;br /&gt;
Le système sera potentiellement réalisé de sorte que chaque écran soit autonome dans son fonctionnement, une fois sa position relative déterminée au préalable.&lt;br /&gt;
En effet, pour le moment le problème était surtout dans le positionnement des écrans plus que dans la gestion du flux vidéo, à priori.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Est-ce que le système peut continuer de fonctionner si on retire l'un des écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pour pallier au problème d'un retrait d'écran, ou d'un disfonctionnement éventuel localisé, une solution possible est de fournir à chaque écran la totalité du flux vidéo.&lt;br /&gt;
Ceci permet dans un premier temps de s'affranchir d'un traitement vidéo avant distribution mais surtout que les autres écrans puissent fonctionner sans interruption due à un écran en particulier  &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Peut-il y avoir des décalages d'affichage entre les écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Malgré l'absence de possibilités de test pour le moment, on peut néanmoins supposer qu'il n'y ait pas de décalage. &lt;br /&gt;
Chaque écran va recevoir le flux vidéo puis en fonction du positionnement des écrans, et on pourra utiliser le système de coordonnées pour effectuer une &amp;quot;selection&amp;quot; sur la partie à afficher.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une configuration de 4 écrans en rectangle, il faudrait donc que l'écran inférieur gauche n'affiche que l'image correspondante jusqu'à la moitié, ensuite l'écran inférieur droit s'occuperait de l'affichage de la partie inférieure droite, etc&lt;br /&gt;
&lt;br /&gt;
En agrandissant le procédé à plus d'écrans, on trouve facilement une méthode de calcul.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet où il s'agira d'être capable de fournir une solution matérielle à la problématique, on s'orientera vers un prototype n'incluant que 4 écrans. Ceci permet à la fois d'éviter un encombrement matériel mais aussi .&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
* 5 Raspberry Pi 3 [https://fr.rs-online.com/web/p/processor-microcontroller-development-kits/8968660/?src=raspberrypi] lien 2 [https://www.mouser.fr/ProductDetail/Adafruit/3055?qs=sGAEpiMZZMuG6%2fXKM6MUaQgA7zSPt2LlznodoAe%252bkgk%3d]&lt;br /&gt;
&lt;br /&gt;
* Un Commutateur (5 Ports +)&lt;br /&gt;
&lt;br /&gt;
* 5 Câbles Ethernet&lt;br /&gt;
&lt;br /&gt;
* 4 Câbles VGA&lt;br /&gt;
&lt;br /&gt;
* 4 Adaptateur VGA-femelle vers HDMI-mâle&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
* 1) Régler le problème de la gestion du flux vidéo par le réseau ainsi qu'au niveau des Raspberry-Pi&lt;br /&gt;
&lt;br /&gt;
'''Hypothèse''': pour une configuration d'écran donnée, on suppose les écrans déjà intelligent et on dispose de leur emplacement relatif.&lt;br /&gt;
&lt;br /&gt;
* 2) Une fois la première version fonctionnelle, s'orienter vers la mise en place du système intelligent&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| Lundi 15/01/18 : 3h30&lt;br /&gt;
Mercredi 17/01/18 : 4h&lt;br /&gt;
| Mercredi 24/01/18 : 4h&lt;br /&gt;
| Mercredi 31/01/18 : 4h&lt;br /&gt;
| Lundi 05/02/18 : 2h&lt;br /&gt;
Mercredi 07/02/18 : 4h&lt;br /&gt;
|&lt;br /&gt;
Mercredi 14/02/18 : 4h&lt;br /&gt;
|&lt;br /&gt;
Absente (malade)&lt;br /&gt;
|&lt;br /&gt;
Mercredi 07/03/18 : 4h&lt;br /&gt;
|Lundi 12/03/18 : 2h&lt;br /&gt;
Mercredi 14/03/18 : 4h&lt;br /&gt;
|&lt;br /&gt;
|Lundi 19/03/18 : 6h&lt;br /&gt;
Mercredi 21/03/18 : ----&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
===Lundi 15/01/18===&lt;br /&gt;
&lt;br /&gt;
* Première séance ayant pour but de synthétiser l'idée théorique souhaitée par le projet.&lt;br /&gt;
&lt;br /&gt;
On imagine un système d'ensemble d'écrans autonomes mais qui communiquent leur emplacement entre eux, dans le sens où il n'est pas nécessaire de reconfigurer à chaque modification sur l'emplacement des écrans.&lt;br /&gt;
&lt;br /&gt;
Le système est pour ainsi dire évolutif puisqu'à chaque modification, exemple: passage d'un écran géant de 2*2 à 2*3 ou 3*2 (ou plus), les affichages peuvent modifier la zone du flux vidéo à afficher afin de conserver une image sur la totalité des écrans.&lt;br /&gt;
&lt;br /&gt;
De ce fait on peut imaginer des structures plus complexes, cylindriques dans le cas d'un flux d'une caméra à 360° ou plus simplement pour des simulateurs où les écrans seraient inclinés sans pour autant décrire un cercle autour de l'utilisateur.&lt;br /&gt;
&lt;br /&gt;
Cependant, pour des raisons évidentes d'effectif, de temps il est nécessaire de se réduire à une solution moins ambitieuse mais néanmoins acceptable.&lt;br /&gt;
&lt;br /&gt;
===Mercredi 17/01/18===&lt;br /&gt;
&lt;br /&gt;
* Mise en place d'un cahier des charge réalisable dans le temps imparti par rapport à la réponse théorique que l'on souhaiterai apporter au problème.&lt;br /&gt;
&lt;br /&gt;
Suite aux raisons évoquées précédemment, nous allons donc nous orienter vers un système à échelle réduite que nous ferons évoluer progressivement.&lt;br /&gt;
&lt;br /&gt;
Comme prévu nous diffuserons le flux vidéo initial, ''envoyé par Ethernet par une Raspberry Pi à partir d'un fichier stocké sur une clé usb par exemple'', aux 4 Raspberry intégrées aux écrans via un switch donc également par Ethernet (le port HDMI des R-Pi étant uniquement une sortie)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous effectuerons ensuite grâce aux R-Pi la modification du flux en fonction des écrans servant à l'affichage avant de rediriger la partie du flux qui nous intéresse vers les écrans.&lt;br /&gt;
&lt;br /&gt;
*'''Remarque:''' Dans un premier temps, pour une configuration donnée et avec les emplacement des écrans connues, il s'agit uniquement de réaliser la conversion d'affichage.&lt;br /&gt;
&lt;br /&gt;
Le fait de rendre les écrans intelligents n'est cependant pas ignoré et viendra dans un second temps, le choix de la méthode à employer étant encore en suspend. Nous allons cependant effectuer des hypothèses avec des capteurs.&lt;br /&gt;
&lt;br /&gt;
* Soit X et Y les dimensions du flux vidéo&lt;br /&gt;
* Soit U,R,D,L les états des capteurs sur un écran donné (respectivement, Up, Right, Down, Left) (1 pour actifs, 0 pour inactif)&lt;br /&gt;
* Soit I,J les indices des écrans (I = 0/1 et J = 0/1)&lt;br /&gt;
* Soit nb_X et nb_Y respectivement le nombre d'écrans en fonction des coordonnées i.e les dimensions de notre écran géant&lt;br /&gt;
&lt;br /&gt;
La configuration d'écran est la suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma (I,J)'''&lt;br /&gt;
&lt;br /&gt;
0,1 ; 1,1&lt;br /&gt;
&lt;br /&gt;
0,0 ; 1,0&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quel que soit l'écran, le flux qu'il devra recevoir sera situé entre [X1,X2] et [Y1,Y2].&lt;br /&gt;
Évidemment ces valeurs de l'emplacement de l'écran&lt;br /&gt;
&lt;br /&gt;
* Y2 = Y * ( D||U ) * (I+1) / nb_Y&lt;br /&gt;
* Y1 = Y * D * I / nb_Y&lt;br /&gt;
* X1 = X * L * J / nb_X&lt;br /&gt;
* X2 = X * ( L||R ) * (J+1) / nb_X&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 24/01/18===&lt;br /&gt;
Début de la gestion réseau du flux vidéo.&lt;br /&gt;
&lt;br /&gt;
Pour la partie théorique, nous allons donc procéder de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
Une Raspberry s'occupera de diffuser le flux sur le réseau via un commutateur. À partir d'un fichier vidéo interne.&lt;br /&gt;
&lt;br /&gt;
Les autres R-Pi disposeront d'un fichier de configuration qui contient les coordonnées à afficher en fonction de la position de l'écran, dans la première partie ce fichier sera directement implanté avec un contenu propre à chaque R-Pi mais dans la seconde il s'agira de les modifier automatiquement.&lt;br /&gt;
&lt;br /&gt;
Configuration eth0 sur la Raspberry pi : &lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
address 192.168.1.&amp;lt;2+numero_rpi&amp;gt;&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
&lt;br /&gt;
On commencera par créer un fichier fifo pour faire la transmission entre nc et OMXplayer&lt;br /&gt;
&lt;br /&gt;
Lecture du réseau : nc -l -p &amp;lt;port&amp;gt; &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Affichage : omxplayer --crop x1,y1,x2,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
[https://elinux.org/Omxplayer] : Documentation OMX player&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 31/01/18===&lt;br /&gt;
&lt;br /&gt;
Tentatives de communication PC (Source flux) à Raspberry (Écran) via nc : Échec&lt;br /&gt;
&lt;br /&gt;
* [PC source] : | nc &lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 1] : nc -l -p 12345 &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 2] : omxplayer --crop x1,y1,x1,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Avec x1,y1,x2,y2 les coordonnées des coins de la fenêtre à afficher&lt;br /&gt;
&lt;br /&gt;
Problème rencontré : la Raspberry n'arrive pas à obtenir une adresse joignable malgré une connexion directe avec le PC en ethernet&lt;br /&gt;
&lt;br /&gt;
* sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; iface eth0 inet dhcp&lt;br /&gt;
&lt;br /&gt;
* ifdown eth0&lt;br /&gt;
&lt;br /&gt;
* ifup eth0&lt;br /&gt;
&lt;br /&gt;
* ifconfig&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; inet adr:169.254.68.185&lt;br /&gt;
&lt;br /&gt;
Seconde tentative avec VLC en mode Streaming sur le PC source et VLC en écoute de stream avec VLC également : Échec (IP de la source = ?)&lt;br /&gt;
&lt;br /&gt;
Ligne de commande pour VLC de lecture&lt;br /&gt;
&lt;br /&gt;
* vlc -vvv http://IP_SOURCE:8080/PATH --crop X_RESxY_RES+LEFT_CROP+TOP_CROP -f&lt;br /&gt;
&lt;br /&gt;
PATH: paramètre donné lors du lancement du stream sur la machine source&lt;br /&gt;
&lt;br /&gt;
X_RES : Résolution X de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
Y_RES : Résolution Y de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
LEFT_CROP : Largeur de la zone coupée en partant de la gauche (en pixel)&lt;br /&gt;
&lt;br /&gt;
TOP_CROP : Hauteur de la zone coupée en partant du haut (en pixel)&lt;br /&gt;
&lt;br /&gt;
-f : Full screen&lt;br /&gt;
&lt;br /&gt;
* Test avec le mode de stream (une fois le problème résolu) : le lancement de la lecture sous VLC du côté de la raspberry entraîne des pertes considérables au niveau du flux vidéo avec des coupures très fréquentes (écran noir) ainsi qu'une forte consommation des ressources&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;photo 95%&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
===Lundi 05/02/18===&lt;br /&gt;
&lt;br /&gt;
Omxplayer demeure plus adapté puisqu'il n'entraîne pas une sur-consommation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;photo 0-3%&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mercredi 07/02/18===&lt;br /&gt;
&lt;br /&gt;
Envoie avec succès d'un fichier vidéo via netcat du PC source vers la Raspberry&lt;br /&gt;
&lt;br /&gt;
* $ nc -w 3 172.26.145.172 1234 &amp;lt; Downloads/dragons.mp4&lt;br /&gt;
&lt;br /&gt;
Où 172.26.145.172 est l'adresse obtenue par ifconfig sur la Raspberry.&lt;br /&gt;
&lt;br /&gt;
Réception avec :&lt;br /&gt;
&lt;br /&gt;
* $ nc -l -p 1234 &amp;gt; Downloads/test.mp4&lt;br /&gt;
&lt;br /&gt;
Commande de lecture : &lt;br /&gt;
&lt;br /&gt;
* $ omxplayer --aspect-mode stretch --crop X1,Y1,X2,Y2 Downloads/test.mp4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Récupération de la résolution du flux vidéo (ou fichier dans le cas actuel) : exiftool&lt;br /&gt;
&lt;br /&gt;
Nécessite un &amp;quot;exiftool&amp;quot; sur chaque Raspberry&lt;br /&gt;
&lt;br /&gt;
* $ sudo apt-get install exiftool&lt;br /&gt;
&lt;br /&gt;
* $ exiftool &amp;lt;file&amp;gt; | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f1&lt;br /&gt;
&lt;br /&gt;
Observation d'événements particuliers sur des dossiers&lt;br /&gt;
&lt;br /&gt;
* $ apt-get install inotify-tools&lt;br /&gt;
&lt;br /&gt;
Script d'observation et d’exécution d'action sur la création d'un fichier dans un dossier &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# CONFIGURATION&lt;br /&gt;
&lt;br /&gt;
DIR=&amp;quot;~/Downloads&amp;quot;&lt;br /&gt;
EVENTS=&amp;quot;create&amp;quot;&lt;br /&gt;
&lt;br /&gt;
NB_X=1&lt;br /&gt;
NB_Y=1&lt;br /&gt;
X=0&lt;br /&gt;
Y=0&lt;br /&gt;
&lt;br /&gt;
# MAIN&lt;br /&gt;
&lt;br /&gt;
inotifywait -m -e $EVENTS $DIR |&lt;br /&gt;
while read file&lt;br /&gt;
do&lt;br /&gt;
&lt;br /&gt;
        X1=0&lt;br /&gt;
        Y1=0&lt;br /&gt;
&lt;br /&gt;
        X2=exiftool /home/pifou/Downloads/hide-and-seek.mp4 | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f1 | awk '{print $1&amp;quot;*(1+X)/$NB_X&amp;quot;}' | bc&lt;br /&gt;
        Y2=exiftool /home/pifou/Downloads/hide-and-seek.mp4 | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f2 | awk '{print $1&amp;quot;*(1+Y)/$NB_Y&amp;quot;}' | bc&lt;br /&gt;
&lt;br /&gt;
        echo &amp;quot;File recieved : $file&amp;quot;;&lt;br /&gt;
        omxplayer --aspect-mode stretch --crop X1,Y1,X2,Y2 $DIR/$file;&lt;br /&gt;
        PID=$!;&lt;br /&gt;
        wait $PID;&lt;br /&gt;
        rm -f $DIR/$file;&lt;br /&gt;
        echo &amp;quot;File removed $file&amp;quot;;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 14/02/18===&lt;br /&gt;
&lt;br /&gt;
Récupération du temps de lecture (pour la commande wait)&lt;br /&gt;
&lt;br /&gt;
* exiftool &amp;lt;video&amp;gt; | grep -m 1 &amp;quot;Track Duration&amp;quot; | cut -d' ' -f21 | cut -d':' -fX&lt;br /&gt;
&lt;br /&gt;
X=1 -&amp;gt; heures ; 2 -&amp;gt; minutes ; 3 ; secondes&lt;br /&gt;
&lt;br /&gt;
Début de la conception d'une méthode d'acquisition de la position de l'écran relative aux autres.&lt;br /&gt;
&lt;br /&gt;
Un premier problème est présent pour la détection des coins dans une configuration d'écrans plus ou moins aléatoire&lt;br /&gt;
&lt;br /&gt;
Dans le cas de notre prototype à 4 écrans. Qu'ils soient disposés en carré ou en ligne à l'horizontale ou à la verticale, ça ne pose pas de problème puisqu'il suffit de juger à l'état des (futurs) capteurs disposé cependant dans le cas où l'on supprime un écran, on se retrouve avec des incohérences&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
absente pour maladie toute la semaine&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Jusqu'à présent nous nous sommes surtout intéressés à la partie lecture du flux vidéo (fichier jusqu'à présent) et nous alors donc nous orienter sur la partie essentielle, le streaming de la R-pi maîtresse.&lt;br /&gt;
&lt;br /&gt;
Remarque : La R-pi maîtresse sera dotée d'une caméra afin de pouvoir effectuer la détection des écrans via un traitement d'image.&lt;br /&gt;
&lt;br /&gt;
Le concept est simple, la R-pi envoie un signal aux autres qui doivent afficher un identifiant qui est sous la forme d'une image de 4 carrés de couleurs.&lt;br /&gt;
Ensuite elle prend une photo des écrans puis après un traitement d'image elle peut ensuite attribuer les fichiers de configuration aux R-pi correspondantes pour les scripts de lecture&lt;br /&gt;
&lt;br /&gt;
Pour le moment, seul le streaming par VLC sur la maîtresse et la lecture sous omxplayer sur la partie visualisation fonctionne mais souffre d'une latence particulièrement élevée (rappel: vlc consomme 97%+ de la raspberry).&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
===Lundi 12/03/18===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Problème avec la carte SD de la R-pi 1 théoriquement résolu en copiant via &amp;quot;dd if=&amp;lt;input_file&amp;gt; of=&amp;lt;output_file&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Début des recherches sur le traitement d'image par une raspberry utilisant une caméra.&lt;br /&gt;
&lt;br /&gt;
OpenCV semble proposer plusieurs solution possibles qui sont à exploiter&lt;br /&gt;
&lt;br /&gt;
Sources:&lt;br /&gt;
&lt;br /&gt;
- Vidéo de présentation d'un projet de reconnaissance de formes colorées [https://www.youtube.com/watch?v=uV7mLcYoaV8]&lt;br /&gt;
&lt;br /&gt;
- Détermination de la couleur d'un objet avec OpenCV [https://www.pyimagesearch.com/2016/02/15/determining-object-color-with-opencv/]&lt;br /&gt;
&lt;br /&gt;
- Shape Detection avec OpenCV [https://www.pyimagesearch.com/2016/02/08/opencv-shape-detection/]&lt;br /&gt;
&lt;br /&gt;
* Solution à examiner pour la gestion d'un stream par une R-pi puis lu par une R-pi via omxplayer [https://stackoverflow.com/questions/25498765/how-to-play-mjpeg-stream-with-omxplayer]&lt;br /&gt;
&lt;br /&gt;
===Mercredi 14/03/18===&lt;br /&gt;
&lt;br /&gt;
* Installation d'OpenCV sur la R-pi maîtresse suivant le tutoriel [https://www.pyimagesearch.com/2016/04/18/install-guide-raspberry-pi-3-raspbian-jessie-opencv-3/]&lt;br /&gt;
&lt;br /&gt;
Note : Lors de l'installation le nom de l'environnement du tutoriel est &amp;quot;cv&amp;quot; pour les deux exemples (python2 et python3) or nous avons déclaré &amp;quot;cv2&amp;quot; pour python2 ET &amp;quot;cv3&amp;quot; pour python3&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; actuellement bloquée au point du make -j4 la compilation plante à environ 24-25% sur une erreur (même chose avec la commande make pour n'utiliser qu'un coeur de la R-pi)&lt;br /&gt;
&lt;br /&gt;
* Création d'un serveur de stream pour la R-pi maîtresse [https://github.com/cncjs/cncjs/wiki/Setup-Guide:-Raspberry-Pi-%7C-MJPEG-Streamer-Install-&amp;amp;-Setup-&amp;amp;-FFMpeg-Recording]&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; Le système est installé sur la R-pi maîtresse mais n'arrive pas à se lancer pour le moment -&amp;gt; en recherche de solution pour ce problème&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
===Lundi 19/03/18===&lt;br /&gt;
&lt;br /&gt;
* Compilation d'OpenCV débloquée [https://stackoverflow.com/questions/40262928/error-compiling-opencv-fatal-error-stdlib-h-no-such-file-or-directory]&lt;br /&gt;
&lt;br /&gt;
Réinstallation effectuée proprement en raison d'un problème avec stdlib.h dans les fichiers précompilés d'où l'ajout de la commande &lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; -DENABLE_PRECOMPILED_HEADERS=OFF&lt;br /&gt;
&lt;br /&gt;
à la suite du cmake qui est à présent &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd ~/opencv-3.1.0/&lt;br /&gt;
$ mkdir build&lt;br /&gt;
$ cd build&lt;br /&gt;
$ cmake -D CMAKE_BUILD_TYPE=RELEASE \&lt;br /&gt;
    -D CMAKE_INSTALL_PREFIX=/usr/local \&lt;br /&gt;
    -D INSTALL_PYTHON_EXAMPLES=ON \&lt;br /&gt;
    -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.1.0/modules \&lt;br /&gt;
    -D BUILD_EXAMPLES=ON .. \&lt;br /&gt;
    -DENABLE_PRECOMPILED_HEADERS=OFF&lt;br /&gt;
&lt;br /&gt;
&amp;lt;\pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=53531</id>
		<title>IMA4 2017/2018 P14</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=53531"/>
				<updated>2018-03-19T14:34:27Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : /* Feuille d'heures */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
* '''Intitulé du projet''' : Proposer une solution permettant d'assembler des écrans de PC afin de créer un écran géant&lt;br /&gt;
&lt;br /&gt;
Le renouvellement de matériel informatique continu entraîne un nombre grandissant d'écrans d'ordinateur qui sont difficilement réutilisables compte tenu de leur petite taille. (17&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Afin de leur donner une seconde vie, ce projet a pour but de construire une plateforme permettant d'assembler ces écrans en un écran géant d'une forme &amp;quot;quelconque&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Exemple d'un cas d'écran carré'''&lt;br /&gt;
[[Fichier:Combinaison_ecrans.jpg]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
Afin de réaliser ce projet, il faudra :&lt;br /&gt;
&lt;br /&gt;
* Ajouter un Raspberry Pi sur chaque écran afin de le rentre &amp;quot;intelligent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Créer une application permettant de prendre un flux vidéo et de le diriger vers l'écran visé.&lt;br /&gt;
&lt;br /&gt;
* Permettre de déplacer facilement les écrans tout en maintenant le flux, que ce soit sur des configurations pleines en 2D ou des configurations plus complexes avec des espaces vides ou en 3D.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
* Le positionnement des écrans et la communication entre ces derniers.&lt;br /&gt;
&lt;br /&gt;
Pour une application telle qu'un écran géant composé de plusieurs écran, il est difficilement envisageable d'utiliser un système de coordonnées GPS pour repérer des écrans qui sont particulièrement proches les uns des autres. &lt;br /&gt;
En revanche il est tout à fait réaliste de penser à un système de capteurs de contact/proximité, disposés sur les bords des écrans pour leur permettre de s’emboîter puis il ne resterait qu'à exploiter les possibilités proposées par les Raspberry Pi ainsi qu'un système de coordonnées réalisé dans ce but pour déterminer où l'écran se situe par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
* La gestion du flux vidéo&lt;br /&gt;
&lt;br /&gt;
Le système sera potentiellement réalisé de sorte que chaque écran soit autonome dans son fonctionnement, une fois sa position relative déterminée au préalable.&lt;br /&gt;
En effet, pour le moment le problème était surtout dans le positionnement des écrans plus que dans la gestion du flux vidéo, à priori.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Est-ce que le système peut continuer de fonctionner si on retire l'un des écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pour pallier au problème d'un retrait d'écran, ou d'un disfonctionnement éventuel localisé, une solution possible est de fournir à chaque écran la totalité du flux vidéo.&lt;br /&gt;
Ceci permet dans un premier temps de s'affranchir d'un traitement vidéo avant distribution mais surtout que les autres écrans puissent fonctionner sans interruption due à un écran en particulier  &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Peut-il y avoir des décalages d'affichage entre les écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Malgré l'absence de possibilités de test pour le moment, on peut néanmoins supposer qu'il n'y ait pas de décalage. &lt;br /&gt;
Chaque écran va recevoir le flux vidéo puis en fonction du positionnement des écrans, et on pourra utiliser le système de coordonnées pour effectuer une &amp;quot;selection&amp;quot; sur la partie à afficher.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une configuration de 4 écrans en rectangle, il faudrait donc que l'écran inférieur gauche n'affiche que l'image correspondante jusqu'à la moitié, ensuite l'écran inférieur droit s'occuperait de l'affichage de la partie inférieure droite, etc&lt;br /&gt;
&lt;br /&gt;
En agrandissant le procédé à plus d'écrans, on trouve facilement une méthode de calcul.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet où il s'agira d'être capable de fournir une solution matérielle à la problématique, on s'orientera vers un prototype n'incluant que 4 écrans. Ceci permet à la fois d'éviter un encombrement matériel mais aussi .&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
* 5 Raspberry Pi 3 [https://fr.rs-online.com/web/p/processor-microcontroller-development-kits/8968660/?src=raspberrypi] lien 2 [https://www.mouser.fr/ProductDetail/Adafruit/3055?qs=sGAEpiMZZMuG6%2fXKM6MUaQgA7zSPt2LlznodoAe%252bkgk%3d]&lt;br /&gt;
&lt;br /&gt;
* Un Commutateur (5 Ports +)&lt;br /&gt;
&lt;br /&gt;
* 5 Câbles Ethernet&lt;br /&gt;
&lt;br /&gt;
* 4 Câbles VGA&lt;br /&gt;
&lt;br /&gt;
* 4 Adaptateur VGA-femelle vers HDMI-mâle&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
* 1) Régler le problème de la gestion du flux vidéo par le réseau ainsi qu'au niveau des Raspberry-Pi&lt;br /&gt;
&lt;br /&gt;
'''Hypothèse''': pour une configuration d'écran donnée, on suppose les écrans déjà intelligent et on dispose de leur emplacement relatif.&lt;br /&gt;
&lt;br /&gt;
* 2) Une fois la première version fonctionnelle, s'orienter vers la mise en place du système intelligent&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| Lundi 15/01/18 : 3h30&lt;br /&gt;
Mercredi 17/01/18 : 4h&lt;br /&gt;
| Mercredi 24/01/18 : 4h&lt;br /&gt;
| Mercredi 31/01/18 : 4h&lt;br /&gt;
| Lundi 05/02/18 : 2h&lt;br /&gt;
Mercredi 07/02/18 : 4h&lt;br /&gt;
|&lt;br /&gt;
Mercredi 14/02/18 : 4h&lt;br /&gt;
|&lt;br /&gt;
Absente (malade)&lt;br /&gt;
|&lt;br /&gt;
Mercredi 07/03/18 : 4h&lt;br /&gt;
|Lundi 12/03/18 : 2h&lt;br /&gt;
Mercredi 14/03/18 : 4h&lt;br /&gt;
|&lt;br /&gt;
|Lundi 19/03/18 : 6h&lt;br /&gt;
Mercredi 21/03/18 : ----&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
===Lundi 15/01/18===&lt;br /&gt;
&lt;br /&gt;
* Première séance ayant pour but de synthétiser l'idée théorique souhaitée par le projet.&lt;br /&gt;
&lt;br /&gt;
On imagine un système d'ensemble d'écrans autonomes mais qui communiquent leur emplacement entre eux, dans le sens où il n'est pas nécessaire de reconfigurer à chaque modification sur l'emplacement des écrans.&lt;br /&gt;
&lt;br /&gt;
Le système est pour ainsi dire évolutif puisqu'à chaque modification, exemple: passage d'un écran géant de 2*2 à 2*3 ou 3*2 (ou plus), les affichages peuvent modifier la zone du flux vidéo à afficher afin de conserver une image sur la totalité des écrans.&lt;br /&gt;
&lt;br /&gt;
De ce fait on peut imaginer des structures plus complexes, cylindriques dans le cas d'un flux d'une caméra à 360° ou plus simplement pour des simulateurs où les écrans seraient inclinés sans pour autant décrire un cercle autour de l'utilisateur.&lt;br /&gt;
&lt;br /&gt;
Cependant, pour des raisons évidentes d'effectif, de temps il est nécessaire de se réduire à une solution moins ambitieuse mais néanmoins acceptable.&lt;br /&gt;
&lt;br /&gt;
===Mercredi 17/01/18===&lt;br /&gt;
&lt;br /&gt;
* Mise en place d'un cahier des charge réalisable dans le temps imparti par rapport à la réponse théorique que l'on souhaiterai apporter au problème.&lt;br /&gt;
&lt;br /&gt;
Suite aux raisons évoquées précédemment, nous allons donc nous orienter vers un système à échelle réduite que nous ferons évoluer progressivement.&lt;br /&gt;
&lt;br /&gt;
Comme prévu nous diffuserons le flux vidéo initial, ''envoyé par Ethernet par une Raspberry Pi à partir d'un fichier stocké sur une clé usb par exemple'', aux 4 Raspberry intégrées aux écrans via un switch donc également par Ethernet (le port HDMI des R-Pi étant uniquement une sortie)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous effectuerons ensuite grâce aux R-Pi la modification du flux en fonction des écrans servant à l'affichage avant de rediriger la partie du flux qui nous intéresse vers les écrans.&lt;br /&gt;
&lt;br /&gt;
*'''Remarque:''' Dans un premier temps, pour une configuration donnée et avec les emplacement des écrans connues, il s'agit uniquement de réaliser la conversion d'affichage.&lt;br /&gt;
&lt;br /&gt;
Le fait de rendre les écrans intelligents n'est cependant pas ignoré et viendra dans un second temps, le choix de la méthode à employer étant encore en suspend. Nous allons cependant effectuer des hypothèses avec des capteurs.&lt;br /&gt;
&lt;br /&gt;
* Soit X et Y les dimensions du flux vidéo&lt;br /&gt;
* Soit U,R,D,L les états des capteurs sur un écran donné (respectivement, Up, Right, Down, Left) (1 pour actifs, 0 pour inactif)&lt;br /&gt;
* Soit I,J les indices des écrans (I = 0/1 et J = 0/1)&lt;br /&gt;
* Soit nb_X et nb_Y respectivement le nombre d'écrans en fonction des coordonnées i.e les dimensions de notre écran géant&lt;br /&gt;
&lt;br /&gt;
La configuration d'écran est la suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma (I,J)'''&lt;br /&gt;
&lt;br /&gt;
0,1 ; 1,1&lt;br /&gt;
&lt;br /&gt;
0,0 ; 1,0&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quel que soit l'écran, le flux qu'il devra recevoir sera situé entre [X1,X2] et [Y1,Y2].&lt;br /&gt;
Évidemment ces valeurs de l'emplacement de l'écran&lt;br /&gt;
&lt;br /&gt;
* Y2 = Y * ( D||U ) * (I+1) / nb_Y&lt;br /&gt;
* Y1 = Y * D * I / nb_Y&lt;br /&gt;
* X1 = X * L * J / nb_X&lt;br /&gt;
* X2 = X * ( L||R ) * (J+1) / nb_X&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 24/01/18===&lt;br /&gt;
Début de la gestion réseau du flux vidéo.&lt;br /&gt;
&lt;br /&gt;
Pour la partie théorique, nous allons donc procéder de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
Une Raspberry s'occupera de diffuser le flux sur le réseau via un commutateur. À partir d'un fichier vidéo interne.&lt;br /&gt;
&lt;br /&gt;
Les autres R-Pi disposeront d'un fichier de configuration qui contient les coordonnées à afficher en fonction de la position de l'écran, dans la première partie ce fichier sera directement implanté avec un contenu propre à chaque R-Pi mais dans la seconde il s'agira de les modifier automatiquement.&lt;br /&gt;
&lt;br /&gt;
Configuration eth0 sur la Raspberry pi : &lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
address 192.168.1.&amp;lt;2+numero_rpi&amp;gt;&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
&lt;br /&gt;
On commencera par créer un fichier fifo pour faire la transmission entre nc et OMXplayer&lt;br /&gt;
&lt;br /&gt;
Lecture du réseau : nc -l -p &amp;lt;port&amp;gt; &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Affichage : omxplayer --crop x1,y1,x2,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
[https://elinux.org/Omxplayer] : Documentation OMX player&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 31/01/18===&lt;br /&gt;
&lt;br /&gt;
Tentatives de communication PC (Source flux) à Raspberry (Écran) via nc : Échec&lt;br /&gt;
&lt;br /&gt;
* [PC source] : | nc &lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 1] : nc -l -p 12345 &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 2] : omxplayer --crop x1,y1,x1,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Avec x1,y1,x2,y2 les coordonnées des coins de la fenêtre à afficher&lt;br /&gt;
&lt;br /&gt;
Problème rencontré : la Raspberry n'arrive pas à obtenir une adresse joignable malgré une connexion directe avec le PC en ethernet&lt;br /&gt;
&lt;br /&gt;
* sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; iface eth0 inet dhcp&lt;br /&gt;
&lt;br /&gt;
* ifdown eth0&lt;br /&gt;
&lt;br /&gt;
* ifup eth0&lt;br /&gt;
&lt;br /&gt;
* ifconfig&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; inet adr:169.254.68.185&lt;br /&gt;
&lt;br /&gt;
Seconde tentative avec VLC en mode Streaming sur le PC source et VLC en écoute de stream avec VLC également : Échec (IP de la source = ?)&lt;br /&gt;
&lt;br /&gt;
Ligne de commande pour VLC de lecture&lt;br /&gt;
&lt;br /&gt;
* vlc -vvv http://IP_SOURCE:8080/PATH --crop X_RESxY_RES+LEFT_CROP+TOP_CROP -f&lt;br /&gt;
&lt;br /&gt;
PATH: paramètre donné lors du lancement du stream sur la machine source&lt;br /&gt;
&lt;br /&gt;
X_RES : Résolution X de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
Y_RES : Résolution Y de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
LEFT_CROP : Largeur de la zone coupée en partant de la gauche (en pixel)&lt;br /&gt;
&lt;br /&gt;
TOP_CROP : Hauteur de la zone coupée en partant du haut (en pixel)&lt;br /&gt;
&lt;br /&gt;
-f : Full screen&lt;br /&gt;
&lt;br /&gt;
* Test avec le mode de stream (une fois le problème résolu) : le lancement de la lecture sous VLC du côté de la raspberry entraîne des pertes considérables au niveau du flux vidéo avec des coupures très fréquentes (écran noir) ainsi qu'une forte consommation des ressources&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;photo 95%&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
===Lundi 05/02/18===&lt;br /&gt;
&lt;br /&gt;
Omxplayer demeure plus adapté puisqu'il n'entraîne pas une sur-consommation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;photo 0-3%&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mercredi 07/02/18===&lt;br /&gt;
&lt;br /&gt;
Envoie avec succès d'un fichier vidéo via netcat du PC source vers la Raspberry&lt;br /&gt;
&lt;br /&gt;
* $ nc -w 3 172.26.145.172 1234 &amp;lt; Downloads/dragons.mp4&lt;br /&gt;
&lt;br /&gt;
Où 172.26.145.172 est l'adresse obtenue par ifconfig sur la Raspberry.&lt;br /&gt;
&lt;br /&gt;
Réception avec :&lt;br /&gt;
&lt;br /&gt;
* $ nc -l -p 1234 &amp;gt; Downloads/test.mp4&lt;br /&gt;
&lt;br /&gt;
Commande de lecture : &lt;br /&gt;
&lt;br /&gt;
* $ omxplayer --aspect-mode stretch --crop X1,Y1,X2,Y2 Downloads/test.mp4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Récupération de la résolution du flux vidéo (ou fichier dans le cas actuel) : exiftool&lt;br /&gt;
&lt;br /&gt;
Nécessite un &amp;quot;exiftool&amp;quot; sur chaque Raspberry&lt;br /&gt;
&lt;br /&gt;
* $ sudo apt-get install exiftool&lt;br /&gt;
&lt;br /&gt;
* $ exiftool &amp;lt;file&amp;gt; | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f1&lt;br /&gt;
&lt;br /&gt;
Observation d'événements particuliers sur des dossiers&lt;br /&gt;
&lt;br /&gt;
* $ apt-get install inotify-tools&lt;br /&gt;
&lt;br /&gt;
Script d'observation et d’exécution d'action sur la création d'un fichier dans un dossier &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# CONFIGURATION&lt;br /&gt;
&lt;br /&gt;
DIR=&amp;quot;~/Downloads&amp;quot;&lt;br /&gt;
EVENTS=&amp;quot;create&amp;quot;&lt;br /&gt;
&lt;br /&gt;
NB_X=1&lt;br /&gt;
NB_Y=1&lt;br /&gt;
X=0&lt;br /&gt;
Y=0&lt;br /&gt;
&lt;br /&gt;
# MAIN&lt;br /&gt;
&lt;br /&gt;
inotifywait -m -e $EVENTS $DIR |&lt;br /&gt;
while read file&lt;br /&gt;
do&lt;br /&gt;
&lt;br /&gt;
        X1=0&lt;br /&gt;
        Y1=0&lt;br /&gt;
&lt;br /&gt;
        X2=exiftool /home/pifou/Downloads/hide-and-seek.mp4 | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f1 | awk '{print $1&amp;quot;*(1+X)/$NB_X&amp;quot;}' | bc&lt;br /&gt;
        Y2=exiftool /home/pifou/Downloads/hide-and-seek.mp4 | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f2 | awk '{print $1&amp;quot;*(1+Y)/$NB_Y&amp;quot;}' | bc&lt;br /&gt;
&lt;br /&gt;
        echo &amp;quot;File recieved : $file&amp;quot;;&lt;br /&gt;
        omxplayer --aspect-mode stretch --crop X1,Y1,X2,Y2 $DIR/$file;&lt;br /&gt;
        PID=$!;&lt;br /&gt;
        wait $PID;&lt;br /&gt;
        rm -f $DIR/$file;&lt;br /&gt;
        echo &amp;quot;File removed $file&amp;quot;;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 14/02/18===&lt;br /&gt;
&lt;br /&gt;
Récupération du temps de lecture (pour la commande wait)&lt;br /&gt;
&lt;br /&gt;
* exiftool &amp;lt;video&amp;gt; | grep -m 1 &amp;quot;Track Duration&amp;quot; | cut -d' ' -f21 | cut -d':' -fX&lt;br /&gt;
&lt;br /&gt;
X=1 -&amp;gt; heures ; 2 -&amp;gt; minutes ; 3 ; secondes&lt;br /&gt;
&lt;br /&gt;
Début de la conception d'une méthode d'acquisition de la position de l'écran relative aux autres.&lt;br /&gt;
&lt;br /&gt;
Un premier problème est présent pour la détection des coins dans une configuration d'écrans plus ou moins aléatoire&lt;br /&gt;
&lt;br /&gt;
Dans le cas de notre prototype à 4 écrans. Qu'ils soient disposés en carré ou en ligne à l'horizontale ou à la verticale, ça ne pose pas de problème puisqu'il suffit de juger à l'état des (futurs) capteurs disposé cependant dans le cas où l'on supprime un écran, on se retrouve avec des incohérences&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
absente pour maladie toute la semaine&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Jusqu'à présent nous nous sommes surtout intéressés à la partie lecture du flux vidéo (fichier jusqu'à présent) et nous alors donc nous orienter sur la partie essentielle, le streaming de la R-pi maîtresse.&lt;br /&gt;
&lt;br /&gt;
Remarque : La R-pi maîtresse sera dotée d'une caméra afin de pouvoir effectuer la détection des écrans via un traitement d'image.&lt;br /&gt;
&lt;br /&gt;
Le concept est simple, la R-pi envoie un signal aux autres qui doivent afficher un identifiant qui est sous la forme d'une image de 4 carrés de couleurs.&lt;br /&gt;
Ensuite elle prend une photo des écrans puis après un traitement d'image elle peut ensuite attribuer les fichiers de configuration aux R-pi correspondantes pour les scripts de lecture&lt;br /&gt;
&lt;br /&gt;
Pour le moment, seul le streaming par VLC sur la maîtresse et la lecture sous omxplayer sur la partie visualisation fonctionne mais souffre d'une latence particulièrement élevée (rappel: vlc consomme 97%+ de la raspberry).&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
===Lundi 12/03/18===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Problème avec la carte SD de la R-pi 1 théoriquement résolu en copiant via &amp;quot;dd if=&amp;lt;input_file&amp;gt; of=&amp;lt;output_file&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Début des recherches sur le traitement d'image par une raspberry utilisant une caméra.&lt;br /&gt;
&lt;br /&gt;
OpenCV semble proposer plusieurs solution possibles qui sont à exploiter&lt;br /&gt;
&lt;br /&gt;
Sources:&lt;br /&gt;
&lt;br /&gt;
- Vidéo de présentation d'un projet de reconnaissance de formes colorées [https://www.youtube.com/watch?v=uV7mLcYoaV8]&lt;br /&gt;
&lt;br /&gt;
- Détermination de la couleur d'un objet avec OpenCV [https://www.pyimagesearch.com/2016/02/15/determining-object-color-with-opencv/]&lt;br /&gt;
&lt;br /&gt;
- Shape Detection avec OpenCV [https://www.pyimagesearch.com/2016/02/08/opencv-shape-detection/]&lt;br /&gt;
&lt;br /&gt;
* Solution à examiner pour la gestion d'un stream par une R-pi puis lu par une R-pi via omxplayer [https://stackoverflow.com/questions/25498765/how-to-play-mjpeg-stream-with-omxplayer]&lt;br /&gt;
&lt;br /&gt;
===Mercredi 14/03/18===&lt;br /&gt;
&lt;br /&gt;
* Installation d'OpenCV sur la R-pi maîtresse suivant le tutoriel [https://www.pyimagesearch.com/2016/04/18/install-guide-raspberry-pi-3-raspbian-jessie-opencv-3/]&lt;br /&gt;
&lt;br /&gt;
Note : Lors de l'installation le nom de l'environnement du tutoriel est &amp;quot;cv&amp;quot; pour les deux exemples (python2 et python3) or nous avons déclaré &amp;quot;cv2&amp;quot; pour python2 ET &amp;quot;cv3&amp;quot; pour python3&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; actuellement bloquée au point du make -j4 la compilation plante à environ 24-25% sur une erreur (même chose avec la commande make pour n'utiliser qu'un coeur de la R-pi)&lt;br /&gt;
&lt;br /&gt;
* Création d'un serveur de stream pour la R-pi maîtresse [https://github.com/cncjs/cncjs/wiki/Setup-Guide:-Raspberry-Pi-%7C-MJPEG-Streamer-Install-&amp;amp;-Setup-&amp;amp;-FFMpeg-Recording]&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; Le système est installé sur la R-pi maîtresse mais n'arrive pas à se lancer pour le moment -&amp;gt; en recherche de solution pour ce problème&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
===Lundi 19/03/18===&lt;br /&gt;
&lt;br /&gt;
* Compilation d'OpenCV débloquée [https://stackoverflow.com/questions/40262928/error-compiling-opencv-fatal-error-stdlib-h-no-such-file-or-directory]&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=53528</id>
		<title>IMA4 2017/2018 P14</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=53528"/>
				<updated>2018-03-19T13:38:24Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : /* Semaine 9 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
* '''Intitulé du projet''' : Proposer une solution permettant d'assembler des écrans de PC afin de créer un écran géant&lt;br /&gt;
&lt;br /&gt;
Le renouvellement de matériel informatique continu entraîne un nombre grandissant d'écrans d'ordinateur qui sont difficilement réutilisables compte tenu de leur petite taille. (17&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Afin de leur donner une seconde vie, ce projet a pour but de construire une plateforme permettant d'assembler ces écrans en un écran géant d'une forme &amp;quot;quelconque&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Exemple d'un cas d'écran carré'''&lt;br /&gt;
[[Fichier:Combinaison_ecrans.jpg]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
Afin de réaliser ce projet, il faudra :&lt;br /&gt;
&lt;br /&gt;
* Ajouter un Raspberry Pi sur chaque écran afin de le rentre &amp;quot;intelligent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Créer une application permettant de prendre un flux vidéo et de le diriger vers l'écran visé.&lt;br /&gt;
&lt;br /&gt;
* Permettre de déplacer facilement les écrans tout en maintenant le flux, que ce soit sur des configurations pleines en 2D ou des configurations plus complexes avec des espaces vides ou en 3D.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
* Le positionnement des écrans et la communication entre ces derniers.&lt;br /&gt;
&lt;br /&gt;
Pour une application telle qu'un écran géant composé de plusieurs écran, il est difficilement envisageable d'utiliser un système de coordonnées GPS pour repérer des écrans qui sont particulièrement proches les uns des autres. &lt;br /&gt;
En revanche il est tout à fait réaliste de penser à un système de capteurs de contact/proximité, disposés sur les bords des écrans pour leur permettre de s’emboîter puis il ne resterait qu'à exploiter les possibilités proposées par les Raspberry Pi ainsi qu'un système de coordonnées réalisé dans ce but pour déterminer où l'écran se situe par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
* La gestion du flux vidéo&lt;br /&gt;
&lt;br /&gt;
Le système sera potentiellement réalisé de sorte que chaque écran soit autonome dans son fonctionnement, une fois sa position relative déterminée au préalable.&lt;br /&gt;
En effet, pour le moment le problème était surtout dans le positionnement des écrans plus que dans la gestion du flux vidéo, à priori.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Est-ce que le système peut continuer de fonctionner si on retire l'un des écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pour pallier au problème d'un retrait d'écran, ou d'un disfonctionnement éventuel localisé, une solution possible est de fournir à chaque écran la totalité du flux vidéo.&lt;br /&gt;
Ceci permet dans un premier temps de s'affranchir d'un traitement vidéo avant distribution mais surtout que les autres écrans puissent fonctionner sans interruption due à un écran en particulier  &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Peut-il y avoir des décalages d'affichage entre les écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Malgré l'absence de possibilités de test pour le moment, on peut néanmoins supposer qu'il n'y ait pas de décalage. &lt;br /&gt;
Chaque écran va recevoir le flux vidéo puis en fonction du positionnement des écrans, et on pourra utiliser le système de coordonnées pour effectuer une &amp;quot;selection&amp;quot; sur la partie à afficher.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une configuration de 4 écrans en rectangle, il faudrait donc que l'écran inférieur gauche n'affiche que l'image correspondante jusqu'à la moitié, ensuite l'écran inférieur droit s'occuperait de l'affichage de la partie inférieure droite, etc&lt;br /&gt;
&lt;br /&gt;
En agrandissant le procédé à plus d'écrans, on trouve facilement une méthode de calcul.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet où il s'agira d'être capable de fournir une solution matérielle à la problématique, on s'orientera vers un prototype n'incluant que 4 écrans. Ceci permet à la fois d'éviter un encombrement matériel mais aussi .&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
* 5 Raspberry Pi 3 [https://fr.rs-online.com/web/p/processor-microcontroller-development-kits/8968660/?src=raspberrypi] lien 2 [https://www.mouser.fr/ProductDetail/Adafruit/3055?qs=sGAEpiMZZMuG6%2fXKM6MUaQgA7zSPt2LlznodoAe%252bkgk%3d]&lt;br /&gt;
&lt;br /&gt;
* Un Commutateur (5 Ports +)&lt;br /&gt;
&lt;br /&gt;
* 5 Câbles Ethernet&lt;br /&gt;
&lt;br /&gt;
* 4 Câbles VGA&lt;br /&gt;
&lt;br /&gt;
* 4 Adaptateur VGA-femelle vers HDMI-mâle&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
* 1) Régler le problème de la gestion du flux vidéo par le réseau ainsi qu'au niveau des Raspberry-Pi&lt;br /&gt;
&lt;br /&gt;
'''Hypothèse''': pour une configuration d'écran donnée, on suppose les écrans déjà intelligent et on dispose de leur emplacement relatif.&lt;br /&gt;
&lt;br /&gt;
* 2) Une fois la première version fonctionnelle, s'orienter vers la mise en place du système intelligent&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| Lundi 15/01/18 : 3h30&lt;br /&gt;
Mercredi 17/01/18 : 4h&lt;br /&gt;
| Mercredi 24/01/18 : 4h&lt;br /&gt;
| Mercredi 31/01/18 : 4h&lt;br /&gt;
| Lundi 05/02/18 : 2h&lt;br /&gt;
Mercredi 07/02/18 : 4h&lt;br /&gt;
|&lt;br /&gt;
Mercredi 14/02/18 : 4h&lt;br /&gt;
|&lt;br /&gt;
Absente (malade)&lt;br /&gt;
|&lt;br /&gt;
Mercredi 07/03/18 : 4h&lt;br /&gt;
|Lundi 12/03/18 : 2h&lt;br /&gt;
Mercredi 14/03/18 : 4h&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
===Lundi 15/01/18===&lt;br /&gt;
&lt;br /&gt;
* Première séance ayant pour but de synthétiser l'idée théorique souhaitée par le projet.&lt;br /&gt;
&lt;br /&gt;
On imagine un système d'ensemble d'écrans autonomes mais qui communiquent leur emplacement entre eux, dans le sens où il n'est pas nécessaire de reconfigurer à chaque modification sur l'emplacement des écrans.&lt;br /&gt;
&lt;br /&gt;
Le système est pour ainsi dire évolutif puisqu'à chaque modification, exemple: passage d'un écran géant de 2*2 à 2*3 ou 3*2 (ou plus), les affichages peuvent modifier la zone du flux vidéo à afficher afin de conserver une image sur la totalité des écrans.&lt;br /&gt;
&lt;br /&gt;
De ce fait on peut imaginer des structures plus complexes, cylindriques dans le cas d'un flux d'une caméra à 360° ou plus simplement pour des simulateurs où les écrans seraient inclinés sans pour autant décrire un cercle autour de l'utilisateur.&lt;br /&gt;
&lt;br /&gt;
Cependant, pour des raisons évidentes d'effectif, de temps il est nécessaire de se réduire à une solution moins ambitieuse mais néanmoins acceptable.&lt;br /&gt;
&lt;br /&gt;
===Mercredi 17/01/18===&lt;br /&gt;
&lt;br /&gt;
* Mise en place d'un cahier des charge réalisable dans le temps imparti par rapport à la réponse théorique que l'on souhaiterai apporter au problème.&lt;br /&gt;
&lt;br /&gt;
Suite aux raisons évoquées précédemment, nous allons donc nous orienter vers un système à échelle réduite que nous ferons évoluer progressivement.&lt;br /&gt;
&lt;br /&gt;
Comme prévu nous diffuserons le flux vidéo initial, ''envoyé par Ethernet par une Raspberry Pi à partir d'un fichier stocké sur une clé usb par exemple'', aux 4 Raspberry intégrées aux écrans via un switch donc également par Ethernet (le port HDMI des R-Pi étant uniquement une sortie)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous effectuerons ensuite grâce aux R-Pi la modification du flux en fonction des écrans servant à l'affichage avant de rediriger la partie du flux qui nous intéresse vers les écrans.&lt;br /&gt;
&lt;br /&gt;
*'''Remarque:''' Dans un premier temps, pour une configuration donnée et avec les emplacement des écrans connues, il s'agit uniquement de réaliser la conversion d'affichage.&lt;br /&gt;
&lt;br /&gt;
Le fait de rendre les écrans intelligents n'est cependant pas ignoré et viendra dans un second temps, le choix de la méthode à employer étant encore en suspend. Nous allons cependant effectuer des hypothèses avec des capteurs.&lt;br /&gt;
&lt;br /&gt;
* Soit X et Y les dimensions du flux vidéo&lt;br /&gt;
* Soit U,R,D,L les états des capteurs sur un écran donné (respectivement, Up, Right, Down, Left) (1 pour actifs, 0 pour inactif)&lt;br /&gt;
* Soit I,J les indices des écrans (I = 0/1 et J = 0/1)&lt;br /&gt;
* Soit nb_X et nb_Y respectivement le nombre d'écrans en fonction des coordonnées i.e les dimensions de notre écran géant&lt;br /&gt;
&lt;br /&gt;
La configuration d'écran est la suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma (I,J)'''&lt;br /&gt;
&lt;br /&gt;
0,1 ; 1,1&lt;br /&gt;
&lt;br /&gt;
0,0 ; 1,0&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quel que soit l'écran, le flux qu'il devra recevoir sera situé entre [X1,X2] et [Y1,Y2].&lt;br /&gt;
Évidemment ces valeurs de l'emplacement de l'écran&lt;br /&gt;
&lt;br /&gt;
* Y2 = Y * ( D||U ) * (I+1) / nb_Y&lt;br /&gt;
* Y1 = Y * D * I / nb_Y&lt;br /&gt;
* X1 = X * L * J / nb_X&lt;br /&gt;
* X2 = X * ( L||R ) * (J+1) / nb_X&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 24/01/18===&lt;br /&gt;
Début de la gestion réseau du flux vidéo.&lt;br /&gt;
&lt;br /&gt;
Pour la partie théorique, nous allons donc procéder de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
Une Raspberry s'occupera de diffuser le flux sur le réseau via un commutateur. À partir d'un fichier vidéo interne.&lt;br /&gt;
&lt;br /&gt;
Les autres R-Pi disposeront d'un fichier de configuration qui contient les coordonnées à afficher en fonction de la position de l'écran, dans la première partie ce fichier sera directement implanté avec un contenu propre à chaque R-Pi mais dans la seconde il s'agira de les modifier automatiquement.&lt;br /&gt;
&lt;br /&gt;
Configuration eth0 sur la Raspberry pi : &lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
address 192.168.1.&amp;lt;2+numero_rpi&amp;gt;&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
&lt;br /&gt;
On commencera par créer un fichier fifo pour faire la transmission entre nc et OMXplayer&lt;br /&gt;
&lt;br /&gt;
Lecture du réseau : nc -l -p &amp;lt;port&amp;gt; &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Affichage : omxplayer --crop x1,y1,x2,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
[https://elinux.org/Omxplayer] : Documentation OMX player&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 31/01/18===&lt;br /&gt;
&lt;br /&gt;
Tentatives de communication PC (Source flux) à Raspberry (Écran) via nc : Échec&lt;br /&gt;
&lt;br /&gt;
* [PC source] : | nc &lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 1] : nc -l -p 12345 &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 2] : omxplayer --crop x1,y1,x1,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Avec x1,y1,x2,y2 les coordonnées des coins de la fenêtre à afficher&lt;br /&gt;
&lt;br /&gt;
Problème rencontré : la Raspberry n'arrive pas à obtenir une adresse joignable malgré une connexion directe avec le PC en ethernet&lt;br /&gt;
&lt;br /&gt;
* sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; iface eth0 inet dhcp&lt;br /&gt;
&lt;br /&gt;
* ifdown eth0&lt;br /&gt;
&lt;br /&gt;
* ifup eth0&lt;br /&gt;
&lt;br /&gt;
* ifconfig&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; inet adr:169.254.68.185&lt;br /&gt;
&lt;br /&gt;
Seconde tentative avec VLC en mode Streaming sur le PC source et VLC en écoute de stream avec VLC également : Échec (IP de la source = ?)&lt;br /&gt;
&lt;br /&gt;
Ligne de commande pour VLC de lecture&lt;br /&gt;
&lt;br /&gt;
* vlc -vvv http://IP_SOURCE:8080/PATH --crop X_RESxY_RES+LEFT_CROP+TOP_CROP -f&lt;br /&gt;
&lt;br /&gt;
PATH: paramètre donné lors du lancement du stream sur la machine source&lt;br /&gt;
&lt;br /&gt;
X_RES : Résolution X de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
Y_RES : Résolution Y de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
LEFT_CROP : Largeur de la zone coupée en partant de la gauche (en pixel)&lt;br /&gt;
&lt;br /&gt;
TOP_CROP : Hauteur de la zone coupée en partant du haut (en pixel)&lt;br /&gt;
&lt;br /&gt;
-f : Full screen&lt;br /&gt;
&lt;br /&gt;
* Test avec le mode de stream (une fois le problème résolu) : le lancement de la lecture sous VLC du côté de la raspberry entraîne des pertes considérables au niveau du flux vidéo avec des coupures très fréquentes (écran noir) ainsi qu'une forte consommation des ressources&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;photo 95%&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
===Lundi 05/02/18===&lt;br /&gt;
&lt;br /&gt;
Omxplayer demeure plus adapté puisqu'il n'entraîne pas une sur-consommation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;photo 0-3%&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mercredi 07/02/18===&lt;br /&gt;
&lt;br /&gt;
Envoie avec succès d'un fichier vidéo via netcat du PC source vers la Raspberry&lt;br /&gt;
&lt;br /&gt;
* $ nc -w 3 172.26.145.172 1234 &amp;lt; Downloads/dragons.mp4&lt;br /&gt;
&lt;br /&gt;
Où 172.26.145.172 est l'adresse obtenue par ifconfig sur la Raspberry.&lt;br /&gt;
&lt;br /&gt;
Réception avec :&lt;br /&gt;
&lt;br /&gt;
* $ nc -l -p 1234 &amp;gt; Downloads/test.mp4&lt;br /&gt;
&lt;br /&gt;
Commande de lecture : &lt;br /&gt;
&lt;br /&gt;
* $ omxplayer --aspect-mode stretch --crop X1,Y1,X2,Y2 Downloads/test.mp4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Récupération de la résolution du flux vidéo (ou fichier dans le cas actuel) : exiftool&lt;br /&gt;
&lt;br /&gt;
Nécessite un &amp;quot;exiftool&amp;quot; sur chaque Raspberry&lt;br /&gt;
&lt;br /&gt;
* $ sudo apt-get install exiftool&lt;br /&gt;
&lt;br /&gt;
* $ exiftool &amp;lt;file&amp;gt; | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f1&lt;br /&gt;
&lt;br /&gt;
Observation d'événements particuliers sur des dossiers&lt;br /&gt;
&lt;br /&gt;
* $ apt-get install inotify-tools&lt;br /&gt;
&lt;br /&gt;
Script d'observation et d’exécution d'action sur la création d'un fichier dans un dossier &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# CONFIGURATION&lt;br /&gt;
&lt;br /&gt;
DIR=&amp;quot;~/Downloads&amp;quot;&lt;br /&gt;
EVENTS=&amp;quot;create&amp;quot;&lt;br /&gt;
&lt;br /&gt;
NB_X=1&lt;br /&gt;
NB_Y=1&lt;br /&gt;
X=0&lt;br /&gt;
Y=0&lt;br /&gt;
&lt;br /&gt;
# MAIN&lt;br /&gt;
&lt;br /&gt;
inotifywait -m -e $EVENTS $DIR |&lt;br /&gt;
while read file&lt;br /&gt;
do&lt;br /&gt;
&lt;br /&gt;
        X1=0&lt;br /&gt;
        Y1=0&lt;br /&gt;
&lt;br /&gt;
        X2=exiftool /home/pifou/Downloads/hide-and-seek.mp4 | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f1 | awk '{print $1&amp;quot;*(1+X)/$NB_X&amp;quot;}' | bc&lt;br /&gt;
        Y2=exiftool /home/pifou/Downloads/hide-and-seek.mp4 | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f2 | awk '{print $1&amp;quot;*(1+Y)/$NB_Y&amp;quot;}' | bc&lt;br /&gt;
&lt;br /&gt;
        echo &amp;quot;File recieved : $file&amp;quot;;&lt;br /&gt;
        omxplayer --aspect-mode stretch --crop X1,Y1,X2,Y2 $DIR/$file;&lt;br /&gt;
        PID=$!;&lt;br /&gt;
        wait $PID;&lt;br /&gt;
        rm -f $DIR/$file;&lt;br /&gt;
        echo &amp;quot;File removed $file&amp;quot;;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 14/02/18===&lt;br /&gt;
&lt;br /&gt;
Récupération du temps de lecture (pour la commande wait)&lt;br /&gt;
&lt;br /&gt;
* exiftool &amp;lt;video&amp;gt; | grep -m 1 &amp;quot;Track Duration&amp;quot; | cut -d' ' -f21 | cut -d':' -fX&lt;br /&gt;
&lt;br /&gt;
X=1 -&amp;gt; heures ; 2 -&amp;gt; minutes ; 3 ; secondes&lt;br /&gt;
&lt;br /&gt;
Début de la conception d'une méthode d'acquisition de la position de l'écran relative aux autres.&lt;br /&gt;
&lt;br /&gt;
Un premier problème est présent pour la détection des coins dans une configuration d'écrans plus ou moins aléatoire&lt;br /&gt;
&lt;br /&gt;
Dans le cas de notre prototype à 4 écrans. Qu'ils soient disposés en carré ou en ligne à l'horizontale ou à la verticale, ça ne pose pas de problème puisqu'il suffit de juger à l'état des (futurs) capteurs disposé cependant dans le cas où l'on supprime un écran, on se retrouve avec des incohérences&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
absente pour maladie toute la semaine&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Jusqu'à présent nous nous sommes surtout intéressés à la partie lecture du flux vidéo (fichier jusqu'à présent) et nous alors donc nous orienter sur la partie essentielle, le streaming de la R-pi maîtresse.&lt;br /&gt;
&lt;br /&gt;
Remarque : La R-pi maîtresse sera dotée d'une caméra afin de pouvoir effectuer la détection des écrans via un traitement d'image.&lt;br /&gt;
&lt;br /&gt;
Le concept est simple, la R-pi envoie un signal aux autres qui doivent afficher un identifiant qui est sous la forme d'une image de 4 carrés de couleurs.&lt;br /&gt;
Ensuite elle prend une photo des écrans puis après un traitement d'image elle peut ensuite attribuer les fichiers de configuration aux R-pi correspondantes pour les scripts de lecture&lt;br /&gt;
&lt;br /&gt;
Pour le moment, seul le streaming par VLC sur la maîtresse et la lecture sous omxplayer sur la partie visualisation fonctionne mais souffre d'une latence particulièrement élevée (rappel: vlc consomme 97%+ de la raspberry).&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
===Lundi 12/03/18===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Problème avec la carte SD de la R-pi 1 théoriquement résolu en copiant via &amp;quot;dd if=&amp;lt;input_file&amp;gt; of=&amp;lt;output_file&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Début des recherches sur le traitement d'image par une raspberry utilisant une caméra.&lt;br /&gt;
&lt;br /&gt;
OpenCV semble proposer plusieurs solution possibles qui sont à exploiter&lt;br /&gt;
&lt;br /&gt;
Sources:&lt;br /&gt;
&lt;br /&gt;
- Vidéo de présentation d'un projet de reconnaissance de formes colorées [https://www.youtube.com/watch?v=uV7mLcYoaV8]&lt;br /&gt;
&lt;br /&gt;
- Détermination de la couleur d'un objet avec OpenCV [https://www.pyimagesearch.com/2016/02/15/determining-object-color-with-opencv/]&lt;br /&gt;
&lt;br /&gt;
- Shape Detection avec OpenCV [https://www.pyimagesearch.com/2016/02/08/opencv-shape-detection/]&lt;br /&gt;
&lt;br /&gt;
* Solution à examiner pour la gestion d'un stream par une R-pi puis lu par une R-pi via omxplayer [https://stackoverflow.com/questions/25498765/how-to-play-mjpeg-stream-with-omxplayer]&lt;br /&gt;
&lt;br /&gt;
===Mercredi 14/03/18===&lt;br /&gt;
&lt;br /&gt;
* Installation d'OpenCV sur la R-pi maîtresse suivant le tutoriel [https://www.pyimagesearch.com/2016/04/18/install-guide-raspberry-pi-3-raspbian-jessie-opencv-3/]&lt;br /&gt;
&lt;br /&gt;
Note : Lors de l'installation le nom de l'environnement du tutoriel est &amp;quot;cv&amp;quot; pour les deux exemples (python2 et python3) or nous avons déclaré &amp;quot;cv2&amp;quot; pour python2 ET &amp;quot;cv3&amp;quot; pour python3&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; actuellement bloquée au point du make -j4 la compilation plante à environ 24-25% sur une erreur (même chose avec la commande make pour n'utiliser qu'un coeur de la R-pi)&lt;br /&gt;
&lt;br /&gt;
* Création d'un serveur de stream pour la R-pi maîtresse [https://github.com/cncjs/cncjs/wiki/Setup-Guide:-Raspberry-Pi-%7C-MJPEG-Streamer-Install-&amp;amp;-Setup-&amp;amp;-FFMpeg-Recording]&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; Le système est installé sur la R-pi maîtresse mais n'arrive pas à se lancer pour le moment -&amp;gt; en recherche de solution pour ce problème&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
===Lundi 19/03/18===&lt;br /&gt;
&lt;br /&gt;
* Compilation d'OpenCV débloquée [https://stackoverflow.com/questions/40262928/error-compiling-opencv-fatal-error-stdlib-h-no-such-file-or-directory]&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=53527</id>
		<title>IMA4 2017/2018 P14</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=53527"/>
				<updated>2018-03-19T13:38:11Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : /* Semaine 9 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
* '''Intitulé du projet''' : Proposer une solution permettant d'assembler des écrans de PC afin de créer un écran géant&lt;br /&gt;
&lt;br /&gt;
Le renouvellement de matériel informatique continu entraîne un nombre grandissant d'écrans d'ordinateur qui sont difficilement réutilisables compte tenu de leur petite taille. (17&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Afin de leur donner une seconde vie, ce projet a pour but de construire une plateforme permettant d'assembler ces écrans en un écran géant d'une forme &amp;quot;quelconque&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Exemple d'un cas d'écran carré'''&lt;br /&gt;
[[Fichier:Combinaison_ecrans.jpg]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
Afin de réaliser ce projet, il faudra :&lt;br /&gt;
&lt;br /&gt;
* Ajouter un Raspberry Pi sur chaque écran afin de le rentre &amp;quot;intelligent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Créer une application permettant de prendre un flux vidéo et de le diriger vers l'écran visé.&lt;br /&gt;
&lt;br /&gt;
* Permettre de déplacer facilement les écrans tout en maintenant le flux, que ce soit sur des configurations pleines en 2D ou des configurations plus complexes avec des espaces vides ou en 3D.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
* Le positionnement des écrans et la communication entre ces derniers.&lt;br /&gt;
&lt;br /&gt;
Pour une application telle qu'un écran géant composé de plusieurs écran, il est difficilement envisageable d'utiliser un système de coordonnées GPS pour repérer des écrans qui sont particulièrement proches les uns des autres. &lt;br /&gt;
En revanche il est tout à fait réaliste de penser à un système de capteurs de contact/proximité, disposés sur les bords des écrans pour leur permettre de s’emboîter puis il ne resterait qu'à exploiter les possibilités proposées par les Raspberry Pi ainsi qu'un système de coordonnées réalisé dans ce but pour déterminer où l'écran se situe par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
* La gestion du flux vidéo&lt;br /&gt;
&lt;br /&gt;
Le système sera potentiellement réalisé de sorte que chaque écran soit autonome dans son fonctionnement, une fois sa position relative déterminée au préalable.&lt;br /&gt;
En effet, pour le moment le problème était surtout dans le positionnement des écrans plus que dans la gestion du flux vidéo, à priori.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Est-ce que le système peut continuer de fonctionner si on retire l'un des écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pour pallier au problème d'un retrait d'écran, ou d'un disfonctionnement éventuel localisé, une solution possible est de fournir à chaque écran la totalité du flux vidéo.&lt;br /&gt;
Ceci permet dans un premier temps de s'affranchir d'un traitement vidéo avant distribution mais surtout que les autres écrans puissent fonctionner sans interruption due à un écran en particulier  &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Peut-il y avoir des décalages d'affichage entre les écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Malgré l'absence de possibilités de test pour le moment, on peut néanmoins supposer qu'il n'y ait pas de décalage. &lt;br /&gt;
Chaque écran va recevoir le flux vidéo puis en fonction du positionnement des écrans, et on pourra utiliser le système de coordonnées pour effectuer une &amp;quot;selection&amp;quot; sur la partie à afficher.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une configuration de 4 écrans en rectangle, il faudrait donc que l'écran inférieur gauche n'affiche que l'image correspondante jusqu'à la moitié, ensuite l'écran inférieur droit s'occuperait de l'affichage de la partie inférieure droite, etc&lt;br /&gt;
&lt;br /&gt;
En agrandissant le procédé à plus d'écrans, on trouve facilement une méthode de calcul.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet où il s'agira d'être capable de fournir une solution matérielle à la problématique, on s'orientera vers un prototype n'incluant que 4 écrans. Ceci permet à la fois d'éviter un encombrement matériel mais aussi .&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
* 5 Raspberry Pi 3 [https://fr.rs-online.com/web/p/processor-microcontroller-development-kits/8968660/?src=raspberrypi] lien 2 [https://www.mouser.fr/ProductDetail/Adafruit/3055?qs=sGAEpiMZZMuG6%2fXKM6MUaQgA7zSPt2LlznodoAe%252bkgk%3d]&lt;br /&gt;
&lt;br /&gt;
* Un Commutateur (5 Ports +)&lt;br /&gt;
&lt;br /&gt;
* 5 Câbles Ethernet&lt;br /&gt;
&lt;br /&gt;
* 4 Câbles VGA&lt;br /&gt;
&lt;br /&gt;
* 4 Adaptateur VGA-femelle vers HDMI-mâle&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
* 1) Régler le problème de la gestion du flux vidéo par le réseau ainsi qu'au niveau des Raspberry-Pi&lt;br /&gt;
&lt;br /&gt;
'''Hypothèse''': pour une configuration d'écran donnée, on suppose les écrans déjà intelligent et on dispose de leur emplacement relatif.&lt;br /&gt;
&lt;br /&gt;
* 2) Une fois la première version fonctionnelle, s'orienter vers la mise en place du système intelligent&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| Lundi 15/01/18 : 3h30&lt;br /&gt;
Mercredi 17/01/18 : 4h&lt;br /&gt;
| Mercredi 24/01/18 : 4h&lt;br /&gt;
| Mercredi 31/01/18 : 4h&lt;br /&gt;
| Lundi 05/02/18 : 2h&lt;br /&gt;
Mercredi 07/02/18 : 4h&lt;br /&gt;
|&lt;br /&gt;
Mercredi 14/02/18 : 4h&lt;br /&gt;
|&lt;br /&gt;
Absente (malade)&lt;br /&gt;
|&lt;br /&gt;
Mercredi 07/03/18 : 4h&lt;br /&gt;
|Lundi 12/03/18 : 2h&lt;br /&gt;
Mercredi 14/03/18 : 4h&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
===Lundi 15/01/18===&lt;br /&gt;
&lt;br /&gt;
* Première séance ayant pour but de synthétiser l'idée théorique souhaitée par le projet.&lt;br /&gt;
&lt;br /&gt;
On imagine un système d'ensemble d'écrans autonomes mais qui communiquent leur emplacement entre eux, dans le sens où il n'est pas nécessaire de reconfigurer à chaque modification sur l'emplacement des écrans.&lt;br /&gt;
&lt;br /&gt;
Le système est pour ainsi dire évolutif puisqu'à chaque modification, exemple: passage d'un écran géant de 2*2 à 2*3 ou 3*2 (ou plus), les affichages peuvent modifier la zone du flux vidéo à afficher afin de conserver une image sur la totalité des écrans.&lt;br /&gt;
&lt;br /&gt;
De ce fait on peut imaginer des structures plus complexes, cylindriques dans le cas d'un flux d'une caméra à 360° ou plus simplement pour des simulateurs où les écrans seraient inclinés sans pour autant décrire un cercle autour de l'utilisateur.&lt;br /&gt;
&lt;br /&gt;
Cependant, pour des raisons évidentes d'effectif, de temps il est nécessaire de se réduire à une solution moins ambitieuse mais néanmoins acceptable.&lt;br /&gt;
&lt;br /&gt;
===Mercredi 17/01/18===&lt;br /&gt;
&lt;br /&gt;
* Mise en place d'un cahier des charge réalisable dans le temps imparti par rapport à la réponse théorique que l'on souhaiterai apporter au problème.&lt;br /&gt;
&lt;br /&gt;
Suite aux raisons évoquées précédemment, nous allons donc nous orienter vers un système à échelle réduite que nous ferons évoluer progressivement.&lt;br /&gt;
&lt;br /&gt;
Comme prévu nous diffuserons le flux vidéo initial, ''envoyé par Ethernet par une Raspberry Pi à partir d'un fichier stocké sur une clé usb par exemple'', aux 4 Raspberry intégrées aux écrans via un switch donc également par Ethernet (le port HDMI des R-Pi étant uniquement une sortie)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous effectuerons ensuite grâce aux R-Pi la modification du flux en fonction des écrans servant à l'affichage avant de rediriger la partie du flux qui nous intéresse vers les écrans.&lt;br /&gt;
&lt;br /&gt;
*'''Remarque:''' Dans un premier temps, pour une configuration donnée et avec les emplacement des écrans connues, il s'agit uniquement de réaliser la conversion d'affichage.&lt;br /&gt;
&lt;br /&gt;
Le fait de rendre les écrans intelligents n'est cependant pas ignoré et viendra dans un second temps, le choix de la méthode à employer étant encore en suspend. Nous allons cependant effectuer des hypothèses avec des capteurs.&lt;br /&gt;
&lt;br /&gt;
* Soit X et Y les dimensions du flux vidéo&lt;br /&gt;
* Soit U,R,D,L les états des capteurs sur un écran donné (respectivement, Up, Right, Down, Left) (1 pour actifs, 0 pour inactif)&lt;br /&gt;
* Soit I,J les indices des écrans (I = 0/1 et J = 0/1)&lt;br /&gt;
* Soit nb_X et nb_Y respectivement le nombre d'écrans en fonction des coordonnées i.e les dimensions de notre écran géant&lt;br /&gt;
&lt;br /&gt;
La configuration d'écran est la suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma (I,J)'''&lt;br /&gt;
&lt;br /&gt;
0,1 ; 1,1&lt;br /&gt;
&lt;br /&gt;
0,0 ; 1,0&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quel que soit l'écran, le flux qu'il devra recevoir sera situé entre [X1,X2] et [Y1,Y2].&lt;br /&gt;
Évidemment ces valeurs de l'emplacement de l'écran&lt;br /&gt;
&lt;br /&gt;
* Y2 = Y * ( D||U ) * (I+1) / nb_Y&lt;br /&gt;
* Y1 = Y * D * I / nb_Y&lt;br /&gt;
* X1 = X * L * J / nb_X&lt;br /&gt;
* X2 = X * ( L||R ) * (J+1) / nb_X&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 24/01/18===&lt;br /&gt;
Début de la gestion réseau du flux vidéo.&lt;br /&gt;
&lt;br /&gt;
Pour la partie théorique, nous allons donc procéder de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
Une Raspberry s'occupera de diffuser le flux sur le réseau via un commutateur. À partir d'un fichier vidéo interne.&lt;br /&gt;
&lt;br /&gt;
Les autres R-Pi disposeront d'un fichier de configuration qui contient les coordonnées à afficher en fonction de la position de l'écran, dans la première partie ce fichier sera directement implanté avec un contenu propre à chaque R-Pi mais dans la seconde il s'agira de les modifier automatiquement.&lt;br /&gt;
&lt;br /&gt;
Configuration eth0 sur la Raspberry pi : &lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
address 192.168.1.&amp;lt;2+numero_rpi&amp;gt;&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
&lt;br /&gt;
On commencera par créer un fichier fifo pour faire la transmission entre nc et OMXplayer&lt;br /&gt;
&lt;br /&gt;
Lecture du réseau : nc -l -p &amp;lt;port&amp;gt; &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Affichage : omxplayer --crop x1,y1,x2,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
[https://elinux.org/Omxplayer] : Documentation OMX player&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 31/01/18===&lt;br /&gt;
&lt;br /&gt;
Tentatives de communication PC (Source flux) à Raspberry (Écran) via nc : Échec&lt;br /&gt;
&lt;br /&gt;
* [PC source] : | nc &lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 1] : nc -l -p 12345 &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 2] : omxplayer --crop x1,y1,x1,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Avec x1,y1,x2,y2 les coordonnées des coins de la fenêtre à afficher&lt;br /&gt;
&lt;br /&gt;
Problème rencontré : la Raspberry n'arrive pas à obtenir une adresse joignable malgré une connexion directe avec le PC en ethernet&lt;br /&gt;
&lt;br /&gt;
* sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; iface eth0 inet dhcp&lt;br /&gt;
&lt;br /&gt;
* ifdown eth0&lt;br /&gt;
&lt;br /&gt;
* ifup eth0&lt;br /&gt;
&lt;br /&gt;
* ifconfig&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; inet adr:169.254.68.185&lt;br /&gt;
&lt;br /&gt;
Seconde tentative avec VLC en mode Streaming sur le PC source et VLC en écoute de stream avec VLC également : Échec (IP de la source = ?)&lt;br /&gt;
&lt;br /&gt;
Ligne de commande pour VLC de lecture&lt;br /&gt;
&lt;br /&gt;
* vlc -vvv http://IP_SOURCE:8080/PATH --crop X_RESxY_RES+LEFT_CROP+TOP_CROP -f&lt;br /&gt;
&lt;br /&gt;
PATH: paramètre donné lors du lancement du stream sur la machine source&lt;br /&gt;
&lt;br /&gt;
X_RES : Résolution X de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
Y_RES : Résolution Y de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
LEFT_CROP : Largeur de la zone coupée en partant de la gauche (en pixel)&lt;br /&gt;
&lt;br /&gt;
TOP_CROP : Hauteur de la zone coupée en partant du haut (en pixel)&lt;br /&gt;
&lt;br /&gt;
-f : Full screen&lt;br /&gt;
&lt;br /&gt;
* Test avec le mode de stream (une fois le problème résolu) : le lancement de la lecture sous VLC du côté de la raspberry entraîne des pertes considérables au niveau du flux vidéo avec des coupures très fréquentes (écran noir) ainsi qu'une forte consommation des ressources&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;photo 95%&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
===Lundi 05/02/18===&lt;br /&gt;
&lt;br /&gt;
Omxplayer demeure plus adapté puisqu'il n'entraîne pas une sur-consommation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;photo 0-3%&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mercredi 07/02/18===&lt;br /&gt;
&lt;br /&gt;
Envoie avec succès d'un fichier vidéo via netcat du PC source vers la Raspberry&lt;br /&gt;
&lt;br /&gt;
* $ nc -w 3 172.26.145.172 1234 &amp;lt; Downloads/dragons.mp4&lt;br /&gt;
&lt;br /&gt;
Où 172.26.145.172 est l'adresse obtenue par ifconfig sur la Raspberry.&lt;br /&gt;
&lt;br /&gt;
Réception avec :&lt;br /&gt;
&lt;br /&gt;
* $ nc -l -p 1234 &amp;gt; Downloads/test.mp4&lt;br /&gt;
&lt;br /&gt;
Commande de lecture : &lt;br /&gt;
&lt;br /&gt;
* $ omxplayer --aspect-mode stretch --crop X1,Y1,X2,Y2 Downloads/test.mp4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Récupération de la résolution du flux vidéo (ou fichier dans le cas actuel) : exiftool&lt;br /&gt;
&lt;br /&gt;
Nécessite un &amp;quot;exiftool&amp;quot; sur chaque Raspberry&lt;br /&gt;
&lt;br /&gt;
* $ sudo apt-get install exiftool&lt;br /&gt;
&lt;br /&gt;
* $ exiftool &amp;lt;file&amp;gt; | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f1&lt;br /&gt;
&lt;br /&gt;
Observation d'événements particuliers sur des dossiers&lt;br /&gt;
&lt;br /&gt;
* $ apt-get install inotify-tools&lt;br /&gt;
&lt;br /&gt;
Script d'observation et d’exécution d'action sur la création d'un fichier dans un dossier &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# CONFIGURATION&lt;br /&gt;
&lt;br /&gt;
DIR=&amp;quot;~/Downloads&amp;quot;&lt;br /&gt;
EVENTS=&amp;quot;create&amp;quot;&lt;br /&gt;
&lt;br /&gt;
NB_X=1&lt;br /&gt;
NB_Y=1&lt;br /&gt;
X=0&lt;br /&gt;
Y=0&lt;br /&gt;
&lt;br /&gt;
# MAIN&lt;br /&gt;
&lt;br /&gt;
inotifywait -m -e $EVENTS $DIR |&lt;br /&gt;
while read file&lt;br /&gt;
do&lt;br /&gt;
&lt;br /&gt;
        X1=0&lt;br /&gt;
        Y1=0&lt;br /&gt;
&lt;br /&gt;
        X2=exiftool /home/pifou/Downloads/hide-and-seek.mp4 | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f1 | awk '{print $1&amp;quot;*(1+X)/$NB_X&amp;quot;}' | bc&lt;br /&gt;
        Y2=exiftool /home/pifou/Downloads/hide-and-seek.mp4 | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f2 | awk '{print $1&amp;quot;*(1+Y)/$NB_Y&amp;quot;}' | bc&lt;br /&gt;
&lt;br /&gt;
        echo &amp;quot;File recieved : $file&amp;quot;;&lt;br /&gt;
        omxplayer --aspect-mode stretch --crop X1,Y1,X2,Y2 $DIR/$file;&lt;br /&gt;
        PID=$!;&lt;br /&gt;
        wait $PID;&lt;br /&gt;
        rm -f $DIR/$file;&lt;br /&gt;
        echo &amp;quot;File removed $file&amp;quot;;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 14/02/18===&lt;br /&gt;
&lt;br /&gt;
Récupération du temps de lecture (pour la commande wait)&lt;br /&gt;
&lt;br /&gt;
* exiftool &amp;lt;video&amp;gt; | grep -m 1 &amp;quot;Track Duration&amp;quot; | cut -d' ' -f21 | cut -d':' -fX&lt;br /&gt;
&lt;br /&gt;
X=1 -&amp;gt; heures ; 2 -&amp;gt; minutes ; 3 ; secondes&lt;br /&gt;
&lt;br /&gt;
Début de la conception d'une méthode d'acquisition de la position de l'écran relative aux autres.&lt;br /&gt;
&lt;br /&gt;
Un premier problème est présent pour la détection des coins dans une configuration d'écrans plus ou moins aléatoire&lt;br /&gt;
&lt;br /&gt;
Dans le cas de notre prototype à 4 écrans. Qu'ils soient disposés en carré ou en ligne à l'horizontale ou à la verticale, ça ne pose pas de problème puisqu'il suffit de juger à l'état des (futurs) capteurs disposé cependant dans le cas où l'on supprime un écran, on se retrouve avec des incohérences&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
absente pour maladie toute la semaine&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
Jusqu'à présent nous nous sommes surtout intéressés à la partie lecture du flux vidéo (fichier jusqu'à présent) et nous alors donc nous orienter sur la partie essentielle, le streaming de la R-pi maîtresse.&lt;br /&gt;
&lt;br /&gt;
Remarque : La R-pi maîtresse sera dotée d'une caméra afin de pouvoir effectuer la détection des écrans via un traitement d'image.&lt;br /&gt;
&lt;br /&gt;
Le concept est simple, la R-pi envoie un signal aux autres qui doivent afficher un identifiant qui est sous la forme d'une image de 4 carrés de couleurs.&lt;br /&gt;
Ensuite elle prend une photo des écrans puis après un traitement d'image elle peut ensuite attribuer les fichiers de configuration aux R-pi correspondantes pour les scripts de lecture&lt;br /&gt;
&lt;br /&gt;
Pour le moment, seul le streaming par VLC sur la maîtresse et la lecture sous omxplayer sur la partie visualisation fonctionne mais souffre d'une latence particulièrement élevée (rappel: vlc consomme 97%+ de la raspberry).&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
===Lundi 12/03/18===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Problème avec la carte SD de la R-pi 1 théoriquement résolu en copiant via &amp;quot;dd if=&amp;lt;input_file&amp;gt; of=&amp;lt;output_file&amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* Début des recherches sur le traitement d'image par une raspberry utilisant une caméra.&lt;br /&gt;
&lt;br /&gt;
OpenCV semble proposer plusieurs solution possibles qui sont à exploiter&lt;br /&gt;
&lt;br /&gt;
Sources:&lt;br /&gt;
&lt;br /&gt;
- Vidéo de présentation d'un projet de reconnaissance de formes colorées [https://www.youtube.com/watch?v=uV7mLcYoaV8]&lt;br /&gt;
&lt;br /&gt;
- Détermination de la couleur d'un objet avec OpenCV [https://www.pyimagesearch.com/2016/02/15/determining-object-color-with-opencv/]&lt;br /&gt;
&lt;br /&gt;
- Shape Detection avec OpenCV [https://www.pyimagesearch.com/2016/02/08/opencv-shape-detection/]&lt;br /&gt;
&lt;br /&gt;
* Solution à examiner pour la gestion d'un stream par une R-pi puis lu par une R-pi via omxplayer [https://stackoverflow.com/questions/25498765/how-to-play-mjpeg-stream-with-omxplayer]&lt;br /&gt;
&lt;br /&gt;
===Mercredi 14/03/18===&lt;br /&gt;
&lt;br /&gt;
* Installation d'OpenCV sur la R-pi maîtresse suivant le tutoriel [https://www.pyimagesearch.com/2016/04/18/install-guide-raspberry-pi-3-raspbian-jessie-opencv-3/]&lt;br /&gt;
&lt;br /&gt;
Note : Lors de l'installation le nom de l'environnement du tutoriel est &amp;quot;cv&amp;quot; pour les deux exemples (python2 et python3) or nous avons déclaré &amp;quot;cv2&amp;quot; pour python2 ET &amp;quot;cv3&amp;quot; pour python3&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; actuellement bloquée au point du make -j4 la compilation plante à environ 24-25% sur une erreur (même chose avec la commande make pour n'utiliser qu'un coeur de la R-pi)&lt;br /&gt;
&lt;br /&gt;
* Création d'un serveur de stream pour la R-pi maîtresse [https://github.com/cncjs/cncjs/wiki/Setup-Guide:-Raspberry-Pi-%7C-MJPEG-Streamer-Install-&amp;amp;-Setup-&amp;amp;-FFMpeg-Recording]&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; Le système est installé sur la R-pi maîtresse mais n'arrive pas à se lancer pour le moment -&amp;gt; en recherche de solution pour ce problème&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
Lundi 19/03/18&lt;br /&gt;
&lt;br /&gt;
* Compilation d'OpenCV débloquée [https://stackoverflow.com/questions/40262928/error-compiling-opencv-fatal-error-stdlib-h-no-such-file-or-directory]&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Discussion:Projets_IMA4_SC_%26_SA_2017/2018&amp;diff=51983</id>
		<title>Discussion:Projets IMA4 SC &amp; SA 2017/2018</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Discussion:Projets_IMA4_SC_%26_SA_2017/2018&amp;diff=51983"/>
				<updated>2018-02-21T14:24:46Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : /* Fiche de présence */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==  Notes sur les projets ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Projet || Analyse du projet || Retour sur l'analyse || Matériel || Mi-parcours || Wiki terminé || Rapport || Vidéo&lt;br /&gt;
|-&lt;br /&gt;
| P1 [[IMA4 2017/2018 P1|Automatisation de la production de bière]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Présentation sans supports, bonne analyse de la concurrence. Par contre le scénario d'usage est à revoir en précisant l'usage pour le particulier.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Le scénario est précisé mais aucune réponse aux questions difficiles &amp;quot;gestion des températures et procédure d'entretien&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Rien.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Si le contenu du Wiki reflète la quantité de travail fourni, c'est inquiétant.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P3 [[IMA4 2017/2018 P3|Sécurisation de l'Internet des Objets par surveillance globale]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Présentation focalisée sur les réseaux de neurones. Exercice mal compris (pas d'introduction du contexte, pas de scénario d'usage).&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Toujours pas d'analyse de la concurrence, ni de scénario d'usage. Pas de réponse aux questions difficiles &amp;quot;quel est le matériel ? quel est le protocole ? quelles sont les entrées du réseau de neurones ?&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Une liste mais il manque des références vers les fournisseurs agréés (voir page de l'an dernier).&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Illustrez votre Wiki avec des schémas ou des photos de votre montage. Décrivez mieux votre plateforme de test et les résultats obtenus. Essayez de corriger les problèmes de français.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P4 [[IMA4 2017/2018 P4|Développement d'un module d'énergie pour Internet des Objets]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Exercice correctement réalisé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Pas de réponse aux questions difficiles &amp;quot;Architecture de la source d'énergie (nombre de chemins d'énergie ?)&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Rien.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Vous devriez avoir quelques éléments sur la réalisation. Complétez votre Wiki.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P5 [[IMA4 2017/2018 P5|Réseau de capteurs de pollution]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt; Présentation focalisée sur la création du site Web. Effort fait pour rédiger un scénario d'usage.&amp;lt;/font&amp;gt; &lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt; Réponses aux questions mais l'analyse de la consommation est imprécise. &amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt; Du matériel listé dans la page Wiki mais à reporter en bas de la page des projets de cette année avec des références valides.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Un effort de documentation mais illustrez par des schémas, des pages de l'application et des tests.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P6 [[IMA4 2017/2018 P6|Réseau LoRaWAN]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Exercice correctement réalisé. Scénario d'usage à préciser sur la partie réseau de capteurs.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt; Scénario d'usage non précisé. Pas de réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt; Du matériel listé mais sans référence, êtes-vous sur que le matériel n'a pas besoin d'être acheté ?&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Très bonne description de l'avancé du projet. N'hésitez pas à solliciter votre encadrant direct en cas de blocage !&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P7 [[IMA4 2017/2018 P7|Brique pour apprentissage informatique]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt; Pas de support. Exercice très bien réalisé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Pas de réponse aux questions difficiles &amp;quot;quelle alimentation ? comment faire pour différencier les briques ? comment les briques vont-elles communiquer ? quelle sécurité vis-à-vis des enfants ?&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Pas de liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Très bonne description de l'avancé du projet. Faites un effort de formatage du texte (par exemple en utilisant des sous-titres plutôt que de souligner des lignes).&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P10 [[IMA4 2017/2018 P10|Portage de RIOT-OS sur MSP430 pour IOT]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt; Rien à signaler (juste une confusion entre le MSP430 et le CC430).&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt; Questions difficiles évacuées. &amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt; Du matériel listé mais sans référence.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Une bonne description de l'avancé du projet.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P12 [[IMA4 2017/2018 P12|Système d'ostéophonie pour magicien]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Un peu rapide, exercice réalisé. &amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Pas d'analyse de la concurrence. Peu d'effort de rédaction. Des coquilles. Une réponse rapide à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt; Du matériel listé mais pas forcément exhaustif et sans référence valide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Très bonne description de l'avancé du projet. Wiki agréable à lire.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P14 [[IMA4 2017/2018 P14|Ecran géant modulaire]]&lt;br /&gt;
| Doublant&lt;br /&gt;
| Doublant&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Page Wiki vide, pas de liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Une bonne description de l'avancé du projet. Essayez de mieux formater votre texte pour une meilleure facilité de lecture.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P15 [[IMA4 2017/2018 P15|Balle vibrante connectée pour enfants sourd]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Présentation acceptable mais avec des supports non soignés. Pas d'analyse de la concurrence, pas de scénario d'usage.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;L'analyse de la concurrence et le scénario d'usage ont été ajoutés. Par contre pas de réponse aux questions difficiles &amp;quot;quelle sera l'autonomie de la balle et quel sera le système de rechargement ?&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Pas de liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Rien sur l'avancé du projet au 18/02/2018&amp;lt;/font&amp;gt;. &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Wiki mis à jour en catastrophe le 19/02/2018. Peu d'informations, seul le routage d'une carte semble avoir été entrepris.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P16 [[IMA4 2017/2018 P16|Sous-chaussure chauffante pour docker]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Présentation acceptable mais avec des supports non soignés. Trouver des concurrents indirects. Une histoire mais pas de scénario d'usage.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Page Wiki modifiée après la présentation. Une réponse incomplète à la question difficile. Trop de coquilles pour ce niveau d'études.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Pas de liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Bonne description du travail. Cinq séances pour faire chauffer une résistance, n'est-ce pas trop ?&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P17 [[IMA4 2017/2018 P17|Safe Watch]]&lt;br /&gt;
| Doublant&lt;br /&gt;
| Doublant&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune modification de la page Wiki depuis début octobre.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Une bonne description de l'avancé du projet. Projet encore dans la phase de prototypage. Comment vous comptez recevoir une carte SIM ?&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P18 [[IMA4 2017/2018 P18|Mandala électronique]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Supports très textuels, pas de scénario d'usage mais une rédaction sur l'intérêt psychologique, pas vraiment de partie &amp;quot;concurrents&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Un effort pour trouver des &amp;quot;concurrents&amp;quot;, pas de réponses aux questions difficiles &amp;quot;combien de LEDs ? quelle alimentation pour quelle autonomie&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Pas de liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Le travail est a peu près décrit mais la page Wiki ressemble a un brouillon.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P19 [[IMA4 2017/2018 P19|Bijou électronique]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Bonne présentation orale. Utilisation du bluetooth peu convainquant. Pas de scénario d'usage. Un &amp;quot;concurrent&amp;quot; trouvé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Concept de scénario d'usage non compris. Une réponse à la question difficile très rapide et non convaincante.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Une liste de matériel dans la page Wiki mais à insérer dans le tableau en bas de la page principale. Pas de référence (voir sur la page de l'an passé).&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Le travail avec le prototype pilote de LEDs est très bien décrit et de façon agréable à lire. Par contre le schéma du futur circuit est très mal engagé. Il faut commencer par faire un schéma plus précis du collier.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P20 [[IMA4 2017/2018 P20|Solution de messagerie à base de conteneurs]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Support assez corrects, sujet non entièrement compris, scénario d'usage minimal.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Un problème dans le scénario d'usage : les conteneurs doivent être lancés sur un serveur. Une réponse acceptable à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas de matériel particulier.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Rien sur l'avancé du projet. Aucun travail ?&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P22 [[IMA4 2017/2018 P22|Horloge numérique DCF77, serveur de temps et ludique]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Analyse très correcte.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Compte-rendu du travail très lapidaire et parfois illisible à cause des coquilles. Le Wiki ne donne pas l'impression que le projet avance.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P23 [[IMA4 2017/2018 P23|Table de bar connectée]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Présentation trop impécise, pas vraiment de scénario d'usage. Par contre des concurrents ont été présentés.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Un scénario d'usage éloigné de la future utilisation. Trop de coquilles dans ce scénario. Réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Une liste du matériel mais pas dans la page principale. Pas de référence (voir page de l'an passé).&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Compte-rendu non à jour au 18/02/2018 alors que la feuille d'heures est à jour. Le Wiki manque d'illustration, par exemple donnez le schéma du circuit.&amp;lt;/font&amp;gt; &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Des informations sur la carte en gestation&amp;lt;/font&amp;gt;.&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P25 [[IMA4 2017/2018 P25|Essaim de robots]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Analyse très correcte. Un concurrent assez peu en rapport avec les essaims de robots mais dans la ligne des dispositifs de déminage.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas de question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Liste du matériel. Préciser pour le chassis.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Impossible de connaître l'avancé du projet à la lecture du Wiki. N'êtes-vous pas entrain de vous perdre dans vos problèmes avec FreeRTOS ?&amp;lt;/font&amp;gt; &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P30 [[IMA4 2017/2018 P30|Contrôle d'une caméra WiFi.]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Objectif mal expliqué. Exercice réalisé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Mieux définir l'objectif suite à la visite en entreprise. Pas de réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Bonne description du travail. Votre Wiki manque d'illustrations sur un sujet qui le permet.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P32 [[IMA4 2017/2018 P32|Tribute to Peter Vogel]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Excellente présentation et excellent travail préparatoire, Scénario d'usage à préciser, trouver des concurrents.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Tout simplement parfait !&amp;lt;/b&amp;gt; Bien illustré, bien rédigé, le travail est très bien décrit. Attention quand vous dites qu'un ATMega328p n'a pas assez de sorties pour commander 8 oscillateurs, il dispose tout de même de plus de 20 E/S.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P35 [[IMA4 2017/2018 P35|Manette de jeu vidéo pour personne en situation de handicap]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Exercice réussi. Cependant précisez les acteurs dans le scénario d'usage.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Pas de modification du scénario. Pas de réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Rien à redire sur la liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Description du travail correct, des illustrations. Essayez de formater avec la syntaxe Wiki.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P39 [[IMA4 2017/2018 P39|Musique des plantes]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Analyse très correcte.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Réponses aux questions difficiles.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Le travail effectué est décrit. Un nombre de coquilles non acceptable, la lecture en devient difficile. Utilisez la syntaxe de formatage du Wiki.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P40 [[IMA4 2017/2018 P40|Exploration du réseau d'anonymisation Tor]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Sujet se prêtant peu à l'exercice mais très bonne présentation. Sujet travaillé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas vraiment de question, la suggestion est noté dans la page Wiki.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas de matériel à commander.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Description du travail un peu rapide (DNS leak quesako ?). Rédaction en cours au moment de la lecture du Wiki.&amp;lt;/font&amp;gt;&amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Effort de rédaction entre le 18/02/2018 et le 19/02/2018. Il manque des sections mais le travail effectué devient lisible.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P42 [[IMA4 2017/2018 P42|Automatisation de l'assemblage de LEGO]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Analyse très correcte.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Pas de réponse aux questions difficiles &amp;quot;Comment démarrer l'imprimante à distance ? Comment sera calibrée la plaque d’impression ?&lt;br /&gt;
Comment la plaque va se fixer sur le sol ? &amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Tout simplement parfait !&amp;lt;/b&amp;gt; Bien illustré, bien rédigé, le travail est très bien décrit. Il est possible de mettre une copie d'écran de l'application de plus. Pas la peine de vous tirer dans les pattes.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P44 [[IMA4 2017/2018 P44|Reconnaissance d’objets via Traitement d’image]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Le projet ne semble pas encore avoir été sérieusement étudié.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Net effort de documentation de la page Wiki. Pas de réponse directe à la question difficile sur la Kinect mais une discussion sur le problème posé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Très bonne description du travail. Des illustrations mais il pourrait y avoir des photos du système robotino / kinect. Feuille d'heure étrange.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P49 [[IMA4 2017/2018 P49|Suivi de la qualité de l’air]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Contexte mal présenté, sujet flou. Scénario d'usage à préciser. Pas de contact avec les encadrants avant la présentation.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Page de Wiki vide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Compte-rendu rapide du travail. Ce compte-rendu est inquiétant. Il ne semble y avoir aucun résultat depuis le début du projet. Un module a été abandonné sans que le module en question n'ait été décrit ou que la raison de l'abandon ait été précisé. Attention votre projet est en voie d'échec.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P50 [[IMA4 2017/2018 P50|Etage commande de Centaure]]&lt;br /&gt;
| Doublant&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Page de Wiki assez vide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Le robot centaure est en plus mauvais état maintenant qu'au début du projet. Vous semblez avoir une nouvelle fois abandonné votre projet.&amp;lt;/font&amp;gt; &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Des ajouts mineurs au Wiki le 19/02/2018.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P60 [[IMA4 2017/2018 P60|Commande de niveaux d’eau]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Présentation très correcte.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Pas de réponse à la question difficile. Page Wiki un peu vide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas de matériel à commander.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Un Wiki incomplet alors que la feuille d'heures est actualisée. Vous semblez toujours bloqués sur les problèmes d'étalonnage !&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P64 [[IMA4 2017/2018 P64|Simulation Labview et mise en réseau Modbus d’un ascenseur]]&lt;br /&gt;
| Doublant&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Wiki avec quelques informations sur le travail accompli depuis fin novembre : étude sur modbus et labview. Quelques coquilles.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Très peu d'illustrations. Texte mal formaté et avec des coquilles intolérable à ce niveau d'étude. Le compte-rendu donne l'impression d'une méthode de travail très brouillonne.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P65 [[IMA4 2017/2018 P65|Exosquelette pour apprentissage]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Présentation sans support. Trouver des concurrents indirects. Pas de scénario d'usage.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Page Wiki vide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Rien sur l'avancé du projet. Projet en échec ?&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P66 [[IMA4 2017/2018 P66|Coupe de France de robotique]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Analyse très correcte.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Page Wiki bien tenue. Ajoutez des illustrations.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Quelques éléments sur le matériel dans la page Wiki mais aucune liste avec références.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Tout simplement parfait !&amp;lt;/b&amp;gt; Bien illustré, bien rédigé, le travail est très bien décrit. Presque à jour. Vous n'aviez pas des cartes à faire fabriquer à l'extérieur ?&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P67 [[IMA4 2017/2018 P67|Scanner 3D DIY]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Exercice bien réalisé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Page Wiki très complète. Ajoutez des illustrations.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Une liste probablement pas exhaustive.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;Exceptionnel !&amp;lt;/b&amp;gt; Très illustré, bien rédigé, le travail de recherche est très bien décrit. Je ne suis pas un fan de la mise en gras d'un quart du texte et la syntaxe Wiki n'est pas vraiment utilisée mais c'est du détail?&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P68 [[IMA4 2017/2018 P68|Générateur de chronogrammes d'ordonnancement]]&lt;br /&gt;
| Doublant&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Page Wiki vide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas de matériel à commander.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Rien sur l'avancé du projet. Projet en échec ?&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| PP1 [[IMA4 2017/2018 Pré-projet 1|Robot hexapode pour escalier]]&lt;br /&gt;
| Erasmus &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Projet en échec constaté.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Fiche de présence ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Projet !! Elèves !! Séance 1 (17/01) !! Séance 2 (24/01) !! Séance 3 (31/01) !! Séance 4 (7/02) !! Séance 5 (14/02) !! Séance 6 (21/02) !! Séance 7 (7/03) !! Séance 8 (14/03) !! Séance 9 (21/03) !! Séance 10 (28/03) !! Séance 11 (4/04) !! Séance 12 (11/04) !! Séance 13 (18/04)&lt;br /&gt;
|-&lt;br /&gt;
| P1 [[IMA4 2017/2018 P1|Automatisation de la production de bière]]&lt;br /&gt;
|Quentin Boëns / Henri Carlier&lt;br /&gt;
|E304 &lt;br /&gt;
|E304/305&lt;br /&gt;
|E304&lt;br /&gt;
|E304&lt;br /&gt;
|E304&lt;br /&gt;
|-&lt;br /&gt;
| P3 [[IMA4 2017/2018 P3|Sécurisation de l'Internet des Objets par surveillance globale]]&lt;br /&gt;
|Ji Yang&lt;br /&gt;
|E306&lt;br /&gt;
|E303&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle &amp;lt;/font&amp;gt;&lt;br /&gt;
|E301&lt;br /&gt;
|E306&lt;br /&gt;
|-&lt;br /&gt;
| P4 [[IMA4 2017/2018 P4|Développement d'un module d'énergie pour Internet des Objets]]&lt;br /&gt;
| Alexis Viscogliosi / Abass Ayoub &lt;br /&gt;
|C008&lt;br /&gt;
|C008&lt;br /&gt;
|E304 &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Alexis Viscogliosi Absent excusé pour entretien stage&amp;lt;/font&amp;gt;&lt;br /&gt;
|C008&lt;br /&gt;
|C008&lt;br /&gt;
|-&lt;br /&gt;
| P5 [[IMA4 2017/2018 P5|Réseau de capteurs de pollution]]&lt;br /&gt;
| Paul Ribeiro / Mehanna Naïf&lt;br /&gt;
|E303&lt;br /&gt;
|E301&lt;br /&gt;
|A204 &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Absents &amp;lt;/font&amp;gt;&lt;br /&gt;
|E301&lt;br /&gt;
|E301 puis B309 puis B207&lt;br /&gt;
|E301&lt;br /&gt;
|-&lt;br /&gt;
| P6 [[IMA4 2017/2018 P6|Réseau LoRaWAN]]&lt;br /&gt;
|  Antoine Gosse&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306 &lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
|-&lt;br /&gt;
| P7 [[IMA4 2017/2018 P7|Brique pour apprentissage informatique]]&lt;br /&gt;
| Maëva Delaporte / Simon Blas&lt;br /&gt;
| E304 &amp;lt;br/&amp;gt;&lt;br /&gt;
| E304 &amp;lt;br/&amp;gt;&lt;br /&gt;
| E304 &amp;lt;br/&amp;gt;&lt;br /&gt;
| E301 &amp;lt;br/&amp;gt;&lt;br /&gt;
| E301 &amp;lt;br/&amp;gt;&lt;br /&gt;
| E301 &amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P10 [[IMA4 2017/2018 P10|Portage de RIOT-OS sur MSP430 pour IOT]]&lt;br /&gt;
| Baptiste Cartier&lt;br /&gt;
| E306&lt;br /&gt;
| E301&lt;br /&gt;
| E306&lt;br /&gt;
| E301&lt;br /&gt;
| E301&lt;br /&gt;
| E301&lt;br /&gt;
|-&lt;br /&gt;
| P12 [[IMA4 2017/2018 P12|Système d'ostéophonie pour magicien]]&lt;br /&gt;
| Amine El Messaoudi / Simon Feutrier&lt;br /&gt;
| E301&lt;br /&gt;
| E301&lt;br /&gt;
| C201&lt;br /&gt;
| C201&lt;br /&gt;
| B207&lt;br /&gt;
|-&lt;br /&gt;
| P14 [[IMA4 2017/2018 P14|Ecran géant modulaire]]&lt;br /&gt;
| Jade Dupont&lt;br /&gt;
|E304 &lt;br /&gt;
|E304 &lt;br /&gt;
|E304 &lt;br /&gt;
|E304 &lt;br /&gt;
|E304 &lt;br /&gt;
|Absence Maladie&lt;br /&gt;
|-&lt;br /&gt;
| P15 [[IMA4 2017/2018 P15|Balle vibrante connectée pour enfants sourd]]&lt;br /&gt;
| Thomas Cunin / Thibault Cattelain&lt;br /&gt;
| E304&lt;br /&gt;
| B306/E304&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle (E304 - A305)&amp;lt;/font&amp;gt;&lt;br /&gt;
| E301&lt;br /&gt;
|-&lt;br /&gt;
| P16 [[IMA4 2017/2018 P16|Sous-chaussure chauffante pour docker]]&lt;br /&gt;
| Rémi Mairesse / Gustave Roux&lt;br /&gt;
| E304&lt;br /&gt;
| E301&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle &amp;lt;/font&amp;gt;&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
|-&lt;br /&gt;
| P17 [[IMA4 2017/2018 P17|Safe Watch]]&lt;br /&gt;
| Oumaima Naanaa&lt;br /&gt;
|E302&lt;br /&gt;
|E304&lt;br /&gt;
|E304&lt;br /&gt;
|E304&lt;br /&gt;
|E304&lt;br /&gt;
|E304&lt;br /&gt;
|-&lt;br /&gt;
| P18 [[IMA4 2017/2018 P18|Mandala électronique]]&lt;br /&gt;
| Lirui Zhang / Lihe Zhang&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| P19 [[IMA4 2017/2018 P19|Bijou électronique]]&lt;br /&gt;
| Lijie Yao / Keren Qiang&lt;br /&gt;
| E303&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
|-&lt;br /&gt;
| P20 [[IMA4 2017/2018 P20|Solution de messagerie à base de conteneurs]]&lt;br /&gt;
| Maxime Creteur / Gao Fan&lt;br /&gt;
|E303&lt;br /&gt;
|E301&lt;br /&gt;
|A204 &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Absents &amp;lt;/font&amp;gt;&lt;br /&gt;
|E303&lt;br /&gt;
|B309 puis B207&lt;br /&gt;
|-&lt;br /&gt;
| P22 [[IMA4 2017/2018 P22|Horloge numérique DCF77, serveur de temps et ludique]]&lt;br /&gt;
| Amaury Knockaert / Fabrice Taingland&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E304/E302&lt;br /&gt;
| C203/E306&lt;br /&gt;
| E306/E304&lt;br /&gt;
| E304&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| P23 [[IMA4 2017/2018 P23|Table de bar connectée]]&lt;br /&gt;
| Matthieu Delobelle&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E303 - C201&lt;br /&gt;
| E306 - C201&lt;br /&gt;
| E304&lt;br /&gt;
|-&lt;br /&gt;
| P25 [[IMA4 2017/2018 P25|Essaim de robots]]&lt;br /&gt;
| Benjamin Canu / Ganix Etcheguibel&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
|-&lt;br /&gt;
| P30 [[IMA4 2017/2018 P30|Contrôle d'une caméra WiFi.]]&lt;br /&gt;
| Taky Djeraba / Thomas Hubert&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle &amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P32 [[IMA4 2017/2018 P32|Tribute to Peter Vogel]]&lt;br /&gt;
| Jean-Baptiste Watine / Antoine Untereiner&lt;br /&gt;
| E306/C201&lt;br /&gt;
| E301&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle (C201) &amp;lt;/font&amp;gt;&lt;br /&gt;
| C205&lt;br /&gt;
| C205/E301&lt;br /&gt;
| C205/E301&lt;br /&gt;
|-&lt;br /&gt;
| P35 [[IMA4 2017/2018 P35|Manette de jeu vidéo pour personne en situation de handicap]]&lt;br /&gt;
| Transley Gracias / Camille Saad&lt;br /&gt;
| E306 &lt;br /&gt;
| E306 &lt;br /&gt;
| E305&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
|-&lt;br /&gt;
| P39 [[IMA4 2017/2018 P39|Musique des plantes]]&lt;br /&gt;
| Xavier Chenot / Rodolphe Toin&lt;br /&gt;
| E306 &lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
|-&lt;br /&gt;
| P40 [[IMA4 2017/2018 P40|Exploration du réseau d'anonymisation Tor]]&lt;br /&gt;
| Antoine Duquenoy / Anthony Durot&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
|-&lt;br /&gt;
| P42 [[IMA4 2017/2018 P42|Automatisation de l'assemblage de LEGO]]&lt;br /&gt;
| Eloi Zalczer / Justine Senellart&lt;br /&gt;
|E302/E306&lt;br /&gt;
|E302/E306&lt;br /&gt;
|E304/E302&lt;br /&gt;
|E304/E302&lt;br /&gt;
|E306/E302&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| P44 [[IMA4 2017/2018 P44|Reconnaissance d’objets via Traitement d’image]]&lt;br /&gt;
| Damien Narbais / Zoé Briois&lt;br /&gt;
| E306&lt;br /&gt;
| E301&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle (E301)&amp;lt;/font&amp;gt;&lt;br /&gt;
| E304 + 17h réunion C00X&lt;br /&gt;
| C205&lt;br /&gt;
|-&lt;br /&gt;
| P49 [[IMA4 2017/2018 P49|Suivi de la qualité de l’air]]&lt;br /&gt;
| Hugo Delbroucq / Nicolas Havard &lt;br /&gt;
| E301&lt;br /&gt;
| INRIA&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle &amp;lt;/font&amp;gt; (INRIA)&lt;br /&gt;
| E301&lt;br /&gt;
| E301 puis E304&lt;br /&gt;
| E301&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P50 [[IMA4 2017/2018 P50|Etage commande de Centaure]]&lt;br /&gt;
|-&lt;br /&gt;
| P60 [[IMA4 2017/2018 P60|Commande de niveaux d’eau]]&lt;br /&gt;
| Claire Vandamme / Alexandra Villa &lt;br /&gt;
|C008&lt;br /&gt;
|C008&lt;br /&gt;
|Hors Polytech/B106&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle &amp;lt;/font&amp;gt; &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Absentes &amp;lt;/font&amp;gt;&lt;br /&gt;
|C008&lt;br /&gt;
|C008&lt;br /&gt;
|- &lt;br /&gt;
| P64 [[IMA4 2017/2018 P64|Simulation Labview et mise en réseau Modbus d’un ascenseur]]&lt;br /&gt;
|-&lt;br /&gt;
| P65 [[IMA4 2017/2018 P65|Exosquelette pour apprentissage]]&lt;br /&gt;
| Florian Le Foll&lt;br /&gt;
| E301&lt;br /&gt;
| E301&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; (Pas de salle) &amp;lt;/font&amp;gt;E303&lt;br /&gt;
|E303&lt;br /&gt;
|E303&lt;br /&gt;
|-&lt;br /&gt;
| P66 [[IMA4 2017/2018 P66|Coupe de France de robotique]]&lt;br /&gt;
| Carval Amaury/ Prud'Homme Geoffrey&lt;br /&gt;
| fabricarium &lt;br /&gt;
| fabricarium puis Hors Polytech&lt;br /&gt;
| E304&lt;br /&gt;
| E301&lt;br /&gt;
| Carval E306 - Preud'homme E301&lt;br /&gt;
| E301&lt;br /&gt;
|-&lt;br /&gt;
| P67 [[IMA4 2017/2018 P67|Scanner 3D DIY]]&lt;br /&gt;
| Erwan Dufresne&lt;br /&gt;
| E302/E306&lt;br /&gt;
| E301&lt;br /&gt;
| E304&lt;br /&gt;
| E301&lt;br /&gt;
| E302&lt;br /&gt;
|-&lt;br /&gt;
| PP1 [[IMA4 2017/2018 PP1|Robot hexapode pour escalier]]&lt;br /&gt;
| Eduardo Gomez &lt;br /&gt;
|C201&lt;br /&gt;
|C201&lt;br /&gt;
|C201&lt;br /&gt;
|Fabricarium&lt;br /&gt;
|Fabricarium&lt;br /&gt;
|C201&lt;br /&gt;
|-&lt;br /&gt;
| P68 [[IMA4 2017/2018 P68|Générateur de chronogrammes d'ordonnancement]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=51012</id>
		<title>IMA4 2017/2018 P14</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=51012"/>
				<updated>2018-02-15T09:31:19Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : /* Choix techniques : matériel et logiciel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
* '''Intitulé du projet''' : Proposer une solution permettant d'assembler des écrans de PC afin de créer un écran géant&lt;br /&gt;
&lt;br /&gt;
Le renouvellement de matériel informatique continu entraîne un nombre grandissant d'écrans d'ordinateur qui sont difficilement réutilisables compte tenu de leur petite taille. (17&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Afin de leur donner une seconde vie, ce projet a pour but de construire une plateforme permettant d'assembler ces écrans en un écran géant d'une forme &amp;quot;quelconque&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Exemple d'un cas d'écran carré'''&lt;br /&gt;
[[Fichier:Combinaison_ecrans.jpg]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
Afin de réaliser ce projet, il faudra :&lt;br /&gt;
&lt;br /&gt;
* Ajouter un Raspberry Pi sur chaque écran afin de le rentre &amp;quot;intelligent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Créer une application permettant de prendre un flux vidéo et de le diriger vers l'écran visé.&lt;br /&gt;
&lt;br /&gt;
* Permettre de déplacer facilement les écrans tout en maintenant le flux, que ce soit sur des configurations pleines en 2D ou des configurations plus complexes avec des espaces vides ou en 3D.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
* Le positionnement des écrans et la communication entre ces derniers.&lt;br /&gt;
&lt;br /&gt;
Pour une application telle qu'un écran géant composé de plusieurs écran, il est difficilement envisageable d'utiliser un système de coordonnées GPS pour repérer des écrans qui sont particulièrement proches les uns des autres. &lt;br /&gt;
En revanche il est tout à fait réaliste de penser à un système de capteurs de contact/proximité, disposés sur les bords des écrans pour leur permettre de s’emboîter puis il ne resterait qu'à exploiter les possibilités proposées par les Raspberry Pi ainsi qu'un système de coordonnées réalisé dans ce but pour déterminer où l'écran se situe par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
* La gestion du flux vidéo&lt;br /&gt;
&lt;br /&gt;
Le système sera potentiellement réalisé de sorte que chaque écran soit autonome dans son fonctionnement, une fois sa position relative déterminée au préalable.&lt;br /&gt;
En effet, pour le moment le problème était surtout dans le positionnement des écrans plus que dans la gestion du flux vidéo, à priori.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Est-ce que le système peut continuer de fonctionner si on retire l'un des écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pour pallier au problème d'un retrait d'écran, ou d'un disfonctionnement éventuel localisé, une solution possible est de fournir à chaque écran la totalité du flux vidéo.&lt;br /&gt;
Ceci permet dans un premier temps de s'affranchir d'un traitement vidéo avant distribution mais surtout que les autres écrans puissent fonctionner sans interruption due à un écran en particulier  &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Peut-il y avoir des décalages d'affichage entre les écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Malgré l'absence de possibilités de test pour le moment, on peut néanmoins supposer qu'il n'y ait pas de décalage. &lt;br /&gt;
Chaque écran va recevoir le flux vidéo puis en fonction du positionnement des écrans, et on pourra utiliser le système de coordonnées pour effectuer une &amp;quot;selection&amp;quot; sur la partie à afficher.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une configuration de 4 écrans en rectangle, il faudrait donc que l'écran inférieur gauche n'affiche que l'image correspondante jusqu'à la moitié, ensuite l'écran inférieur droit s'occuperait de l'affichage de la partie inférieure droite, etc&lt;br /&gt;
&lt;br /&gt;
En agrandissant le procédé à plus d'écrans, on trouve facilement une méthode de calcul.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet où il s'agira d'être capable de fournir une solution matérielle à la problématique, on s'orientera vers un prototype n'incluant que 4 écrans. Ceci permet à la fois d'éviter un encombrement matériel mais aussi .&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
* 5 Raspberry Pi 3 [https://fr.rs-online.com/web/p/processor-microcontroller-development-kits/8968660/?src=raspberrypi] lien 2 [https://www.mouser.fr/ProductDetail/Adafruit/3055?qs=sGAEpiMZZMuG6%2fXKM6MUaQgA7zSPt2LlznodoAe%252bkgk%3d]&lt;br /&gt;
&lt;br /&gt;
* Un Commutateur (5 Ports +)&lt;br /&gt;
&lt;br /&gt;
* 5 Câbles Ethernet&lt;br /&gt;
&lt;br /&gt;
* 4 Câbles VGA&lt;br /&gt;
&lt;br /&gt;
* 4 Adaptateur VGA-femelle vers HDMI-mâle&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
* 1) Régler le problème de la gestion du flux vidéo par le réseau ainsi qu'au niveau des Raspberry-Pi&lt;br /&gt;
&lt;br /&gt;
'''Hypothèse''': pour une configuration d'écran donnée, on suppose les écrans déjà intelligent et on dispose de leur emplacement relatif.&lt;br /&gt;
&lt;br /&gt;
* 2) Une fois la première version fonctionnelle, s'orienter vers la mise en place du système intelligent&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| Lundi 15/01/18 : 3h30&lt;br /&gt;
Mercredi 17/01/18 : 4h&lt;br /&gt;
| Mercredi 24/01/18 : 4h&lt;br /&gt;
| Mercredi 31/01/18 : 4h&lt;br /&gt;
| Lundi 05/02/18 : 2h&lt;br /&gt;
Mercredi 07/02/18 : 4h&lt;br /&gt;
|&lt;br /&gt;
Mercredi 14/02/18 : 4h&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
===Lundi 15/01/18===&lt;br /&gt;
&lt;br /&gt;
* Première séance ayant pour but de synthétiser l'idée théorique souhaitée par le projet.&lt;br /&gt;
&lt;br /&gt;
On imagine un système d'ensemble d'écrans autonomes mais qui communiquent leur emplacement entre eux, dans le sens où il n'est pas nécessaire de reconfigurer à chaque modification sur l'emplacement des écrans.&lt;br /&gt;
&lt;br /&gt;
Le système est pour ainsi dire évolutif puisqu'à chaque modification, exemple: passage d'un écran géant de 2*2 à 2*3 ou 3*2 (ou plus), les affichages peuvent modifier la zone du flux vidéo à afficher afin de conserver une image sur la totalité des écrans.&lt;br /&gt;
&lt;br /&gt;
De ce fait on peut imaginer des structures plus complexes, cylindriques dans le cas d'un flux d'une caméra à 360° ou plus simplement pour des simulateurs où les écrans seraient inclinés sans pour autant décrire un cercle autour de l'utilisateur.&lt;br /&gt;
&lt;br /&gt;
Cependant, pour des raisons évidentes d'effectif, de temps il est nécessaire de se réduire à une solution moins ambitieuse mais néanmoins acceptable.&lt;br /&gt;
&lt;br /&gt;
===Mercredi 17/01/18===&lt;br /&gt;
&lt;br /&gt;
* Mise en place d'un cahier des charge réalisable dans le temps imparti par rapport à la réponse théorique que l'on souhaiterai apporter au problème.&lt;br /&gt;
&lt;br /&gt;
Suite aux raisons évoquées précédemment, nous allons donc nous orienter vers un système à échelle réduite que nous ferons évoluer progressivement.&lt;br /&gt;
&lt;br /&gt;
Comme prévu nous diffuserons le flux vidéo initial, ''envoyé par Ethernet par une Raspberry Pi à partir d'un fichier stocké sur une clé usb par exemple'', aux 4 Raspberry intégrées aux écrans via un switch donc également par Ethernet (le port HDMI des R-Pi étant uniquement une sortie)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous effectuerons ensuite grâce aux R-Pi la modification du flux en fonction des écrans servant à l'affichage avant de rediriger la partie du flux qui nous intéresse vers les écrans.&lt;br /&gt;
&lt;br /&gt;
*'''Remarque:''' Dans un premier temps, pour une configuration donnée et avec les emplacement des écrans connues, il s'agit uniquement de réaliser la conversion d'affichage.&lt;br /&gt;
&lt;br /&gt;
Le fait de rendre les écrans intelligents n'est cependant pas ignoré et viendra dans un second temps, le choix de la méthode à employer étant encore en suspend. Nous allons cependant effectuer des hypothèses avec des capteurs.&lt;br /&gt;
&lt;br /&gt;
* Soit X et Y les dimensions du flux vidéo&lt;br /&gt;
* Soit U,R,D,L les états des capteurs sur un écran donné (respectivement, Up, Right, Down, Left) (1 pour actifs, 0 pour inactif)&lt;br /&gt;
* Soit I,J les indices des écrans (I = 0/1 et J = 0/1)&lt;br /&gt;
* Soit nb_X et nb_Y respectivement le nombre d'écrans en fonction des coordonnées i.e les dimensions de notre écran géant&lt;br /&gt;
&lt;br /&gt;
La configuration d'écran est la suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma (I,J)'''&lt;br /&gt;
&lt;br /&gt;
0,1 ; 1,1&lt;br /&gt;
&lt;br /&gt;
0,0 ; 1,0&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quel que soit l'écran, le flux qu'il devra recevoir sera situé entre [X1,X2] et [Y1,Y2].&lt;br /&gt;
Évidemment ces valeurs de l'emplacement de l'écran&lt;br /&gt;
&lt;br /&gt;
* Y2 = Y * ( D||U ) * (I+1) / nb_Y&lt;br /&gt;
* Y1 = Y * D * I / nb_Y&lt;br /&gt;
* X1 = X * L * J / nb_X&lt;br /&gt;
* X2 = X * ( L||R ) * (J+1) / nb_X&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 24/01/18===&lt;br /&gt;
Début de la gestion réseau du flux vidéo.&lt;br /&gt;
&lt;br /&gt;
Pour la partie théorique, nous allons donc procéder de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
Une Raspberry s'occupera de diffuser le flux sur le réseau via un commutateur. À partir d'un fichier vidéo interne.&lt;br /&gt;
&lt;br /&gt;
Les autres R-Pi disposeront d'un fichier de configuration qui contient les coordonnées à afficher en fonction de la position de l'écran, dans la première partie ce fichier sera directement implanté avec un contenu propre à chaque R-Pi mais dans la seconde il s'agira de les modifier automatiquement.&lt;br /&gt;
&lt;br /&gt;
Configuration eth0 sur la Raspberry pi : &lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
address 192.168.1.&amp;lt;2+numero_rpi&amp;gt;&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
&lt;br /&gt;
On commencera par créer un fichier fifo pour faire la transmission entre nc et OMXplayer&lt;br /&gt;
&lt;br /&gt;
Lecture du réseau : nc -l -p &amp;lt;port&amp;gt; &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Affichage : omxplayer --crop x1,y1,x2,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
[https://elinux.org/Omxplayer] : Documentation OMX player&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 31/01/18===&lt;br /&gt;
&lt;br /&gt;
Tentatives de communication PC (Source flux) à Raspberry (Écran) via nc : Échec&lt;br /&gt;
&lt;br /&gt;
* [PC source] : | nc &lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 1] : nc -l -p 12345 &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 2] : omxplayer --crop x1,y1,x1,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Avec x1,y1,x2,y2 les coordonnées des coins de la fenêtre à afficher&lt;br /&gt;
&lt;br /&gt;
Problème rencontré : la Raspberry n'arrive pas à obtenir une adresse joignable malgré une connexion directe avec le PC en ethernet&lt;br /&gt;
&lt;br /&gt;
* sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; iface eth0 inet dhcp&lt;br /&gt;
&lt;br /&gt;
* ifdown eth0&lt;br /&gt;
&lt;br /&gt;
* ifup eth0&lt;br /&gt;
&lt;br /&gt;
* ifconfig&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; inet adr:169.254.68.185&lt;br /&gt;
&lt;br /&gt;
Seconde tentative avec VLC en mode Streaming sur le PC source et VLC en écoute de stream avec VLC également : Échec (IP de la source = ?)&lt;br /&gt;
&lt;br /&gt;
Ligne de commande pour VLC de lecture&lt;br /&gt;
&lt;br /&gt;
* vlc -vvv http://IP_SOURCE:8080/PATH --crop X_RESxY_RES+LEFT_CROP+TOP_CROP -f&lt;br /&gt;
&lt;br /&gt;
PATH: paramètre donné lors du lancement du stream sur la machine source&lt;br /&gt;
&lt;br /&gt;
X_RES : Résolution X de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
Y_RES : Résolution Y de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
LEFT_CROP : Largeur de la zone coupée en partant de la gauche (en pixel)&lt;br /&gt;
&lt;br /&gt;
TOP_CROP : Hauteur de la zone coupée en partant du haut (en pixel)&lt;br /&gt;
&lt;br /&gt;
-f : Full screen&lt;br /&gt;
&lt;br /&gt;
* Test avec le mode de stream (une fois le problème résolu) : le lancement de la lecture sous VLC du côté de la raspberry entraîne des pertes considérables au niveau du flux vidéo avec des coupures très fréquentes (écran noir) ainsi qu'une forte consommation des ressources&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;photo 95%&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
===Lundi 05/02/18===&lt;br /&gt;
&lt;br /&gt;
Omxplayer demeure plus adapté puisqu'il n'entraîne pas une sur-consommation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;photo 0-3%&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mercredi 07/02/18===&lt;br /&gt;
&lt;br /&gt;
Envoie avec succès d'un fichier vidéo via netcat du PC source vers la Raspberry&lt;br /&gt;
&lt;br /&gt;
* $ nc -w 3 172.26.145.172 1234 &amp;lt; Downloads/dragons.mp4&lt;br /&gt;
&lt;br /&gt;
Où 172.26.145.172 est l'adresse obtenue par ifconfig sur la Raspberry.&lt;br /&gt;
&lt;br /&gt;
Réception avec :&lt;br /&gt;
&lt;br /&gt;
* $ nc -l -p 1234 &amp;gt; Downloads/test.mp4&lt;br /&gt;
&lt;br /&gt;
Commande de lecture : &lt;br /&gt;
&lt;br /&gt;
* $ omxplayer --aspect-mode stretch --crop X1,Y1,X2,Y2 Downloads/test.mp4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Récupération de la résolution du flux vidéo (ou fichier dans le cas actuel) : exiftool&lt;br /&gt;
&lt;br /&gt;
Nécessite un &amp;quot;exiftool&amp;quot; sur chaque Raspberry&lt;br /&gt;
&lt;br /&gt;
* $ sudo apt-get install exiftool&lt;br /&gt;
&lt;br /&gt;
* $ exiftool &amp;lt;file&amp;gt; | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f1&lt;br /&gt;
&lt;br /&gt;
Observation d'événements particuliers sur des dossiers&lt;br /&gt;
&lt;br /&gt;
* $ apt-get install inotify-tools&lt;br /&gt;
&lt;br /&gt;
Script d'observation et d’exécution d'action sur la création d'un fichier dans un dossier &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# CONFIGURATION&lt;br /&gt;
&lt;br /&gt;
DIR=&amp;quot;~/Downloads&amp;quot;&lt;br /&gt;
EVENTS=&amp;quot;create&amp;quot;&lt;br /&gt;
&lt;br /&gt;
NB_X=1&lt;br /&gt;
NB_Y=1&lt;br /&gt;
X=0&lt;br /&gt;
Y=0&lt;br /&gt;
&lt;br /&gt;
# MAIN&lt;br /&gt;
&lt;br /&gt;
inotifywait -m -e $EVENTS $DIR |&lt;br /&gt;
while read file&lt;br /&gt;
do&lt;br /&gt;
&lt;br /&gt;
        X1=0&lt;br /&gt;
        Y1=0&lt;br /&gt;
&lt;br /&gt;
        X2=exiftool /home/pifou/Downloads/hide-and-seek.mp4 | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f1 | awk '{print $1&amp;quot;*(1+X)/$NB_X&amp;quot;}' | bc&lt;br /&gt;
        Y2=exiftool /home/pifou/Downloads/hide-and-seek.mp4 | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f2 | awk '{print $1&amp;quot;*(1+Y)/$NB_Y&amp;quot;}' | bc&lt;br /&gt;
&lt;br /&gt;
        echo &amp;quot;File recieved : $file&amp;quot;;&lt;br /&gt;
        omxplayer --aspect-mode stretch --crop X1,Y1,X2,Y2 $DIR/$file;&lt;br /&gt;
        PID=$!;&lt;br /&gt;
        wait $PID;&lt;br /&gt;
        rm -f $DIR/$file;&lt;br /&gt;
        echo &amp;quot;File removed $file&amp;quot;;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 14/02/18===&lt;br /&gt;
&lt;br /&gt;
Récupération du temps de lecture (pour la commande wait)&lt;br /&gt;
&lt;br /&gt;
* exiftool &amp;lt;video&amp;gt; | grep -m 1 &amp;quot;Track Duration&amp;quot; | cut -d' ' -f21 | cut -d':' -fX&lt;br /&gt;
&lt;br /&gt;
X=1 -&amp;gt; heures ; 2 -&amp;gt; minutes ; 3 ; secondes&lt;br /&gt;
&lt;br /&gt;
Début de la conception d'une méthode d'acquisition de la position de l'écran relative aux autres.&lt;br /&gt;
&lt;br /&gt;
Un premier problème est présent pour la détection des coins dans une configuration d'écrans plus ou moins aléatoire&lt;br /&gt;
&lt;br /&gt;
Dans le cas de notre prototype à 4 écrans. Qu'ils soient disposés en carré ou en ligne à l'horizontale ou à la verticale, ça ne pose pas de problème puisqu'il suffit de juger à l'état des (futurs) capteurs disposé cependant dans le cas où l'on supprime un écran, on se retrouve avec des incohérences&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Discussion:Projets_IMA4_SC_%26_SA_2017/2018&amp;diff=50975</id>
		<title>Discussion:Projets IMA4 SC &amp; SA 2017/2018</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Discussion:Projets_IMA4_SC_%26_SA_2017/2018&amp;diff=50975"/>
				<updated>2018-02-14T18:03:51Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : /* Fiche de présence */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==  Notes sur les projets ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Projet || Analyse du projet || Retour sur l'analyse || Matériel || Mi-parcours || Wiki terminé || Rapport || Vidéo&lt;br /&gt;
|-&lt;br /&gt;
| P1 [[IMA4 2017/2018 P1|Automatisation de la production de bière]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Présentation sans supports, bonne analyse de la concurrence. Par contre le scénario d'usage est à revoir en précisant l'usage pour le particulier.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Le scénario est précisé mais aucune réponse aux questions difficiles &amp;quot;gestion des températures et procédure d'entretien&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Rien.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P3 [[IMA4 2017/2018 P3|Sécurisation de l'Internet des Objets par surveillance globale]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Présentation focalisée sur les réseaux de neurones. Exercice mal compris (pas d'introduction du contexte, pas de scénario d'usage).&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Toujours pas d'analyse de la concurrence, ni de scénario d'usage. Pas de réponse aux questions difficiles &amp;quot;quel est le matériel ? quel est le protocole ? quelles sont les entrées du réseau de neurones ?&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Une liste mais il manque des références vers les fournisseurs agréés (voir page de l'an dernier).&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P4 [[IMA4 2017/2018 P4|Développement d'un module d'énergie pour Internet des Objets]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Exercice correctement réalisé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Pas de réponse aux questions difficiles &amp;quot;Architecture de la source d'énergie (nombre de chemins d'énergie ?)&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Rien.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P5 [[IMA4 2017/2018 P5|Réseau de capteurs de pollution]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt; Présentation focalisée sur la création du site Web. Effort fait pour rédiger un scénario d'usage.&amp;lt;/font&amp;gt; &lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt; Réponses aux questions mais l'analyse de la consommation est imprécise. &amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt; Du matériel listé dans la page Wiki mais à reporter en bas de la page des projets de cette année avec des références valides.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P6 [[IMA4 2017/2018 P6|Réseau LoRaWAN]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Exercice correctement réalisé. Scénario d'usage à préciser sur la partie réseau de capteurs.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt; Scénario d'usage non précisé. Pas de réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt; Du matériel listé mais sans référence, êtes-vous sur que le matériel n'a pas besoin d'être acheté ?&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P7 [[IMA4 2017/2018 P7|Brique pour apprentissage informatique]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt; Pas de support. Exercice très bien réalisé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Pas de réponse aux questions difficiles &amp;quot;quelle alimentation ? comment faire pour différencier les briques ? comment les briques vont-elles communiquer ? quelle sécurité vis-à-vis des enfants ?&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Pas de liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P10 [[IMA4 2017/2018 P10|Portage de RIOT-OS sur MSP430 pour IOT]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt; Rien à signaler (juste une confusion entre le MSP430 et le CC430).&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt; Questions difficiles évacuées. &amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt; Du matériel listé mais sans référence.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P12 [[IMA4 2017/2018 P12|Système d'ostéophonie pour magicien]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Un peu rapide, exercice réalisé. &amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Pas d'analyse de la concurrence. Peu d'effort de rédaction. Des coquilles. Une réponse rapide à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt; Du matériel listé mais pas forcément exhaustif et sans référence valide.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P14 [[IMA4 2017/2018 P14|Ecran géant modulaire]]&lt;br /&gt;
| Doublant&lt;br /&gt;
| Doublant&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Page Wiki vide, pas de liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P15 [[IMA4 2017/2018 P15|Balle vibrante connectée pour enfants sourd]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Présentation acceptable mais avec des supports non soignés. Pas d'analyse de la concurrence, pas de scénario d'usage.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;L'analyse de la concurrence et le scénario d'usage ont été ajoutés. Par contre pas de réponse aux questions difficiles &amp;quot;quelle sera l'autonomie de la balle et quel sera le système de rechargement ?&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Pas de liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P16 [[IMA4 2017/2018 P16|Sous-chaussure chauffante pour docker]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Présentation acceptable mais avec des supports non soignés. Trouver des concurrents indirects. Une histoire mais pas de scénario d'usage.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Page Wiki modifiée après la présentation. Une réponse incomplète à la question difficile. Trop de coquilles pour ce niveau d'études.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Pas de liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P17 [[IMA4 2017/2018 P17|Safe Watch]]&lt;br /&gt;
| Doublant&lt;br /&gt;
| Doublant&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune modification de la page Wiki depuis début octobre.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P18 [[IMA4 2017/2018 P18|Mandala électronique]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Supports très textuels, pas de scénario d'usage mais une rédaction sur l'intérêt psychologique, pas vraiment de partie &amp;quot;concurrents&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Un effort pour trouver des &amp;quot;concurrents&amp;quot;, pas de réponses aux questions difficiles &amp;quot;combien de LEDs ? quelle alimentation pour quelle autonomie&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Pas de liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P19 [[IMA4 2017/2018 P19|Bijou électronique]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Bonne présentation orale. Utilisation du bluetooth peu convainquant. Pas de scénario d'usage. Un &amp;quot;concurrent&amp;quot; trouvé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Concept de scénario d'usage non compris. Une réponse à la question difficile très rapide et non convaincante.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Une liste de matériel dans la page Wiki mais à insérer dans le tableau en bas de la page principale. Pas de référence (voir sur la page de l'an passé).&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P20 [[IMA4 2017/2018 P20|Solution de messagerie à base de conteneurs]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Support assez corrects, sujet non entièrement compris, scénario d'usage minimal.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Un problème dans le scénario d'usage : les conteneurs doivent être lancés sur un serveur. Une réponse acceptable à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas de matériel particulier.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P22 [[IMA4 2017/2018 P22|Horloge numérique DCF77, serveur de temps et ludique]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Analyse très correcte.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P23 [[IMA4 2017/2018 P23|Table de bar connectée]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Présentation trop impécise, pas vraiment de scénario d'usage. Par contre des concurrents ont été présentés.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Un scénario d'usage éloigné de la future utilisation. Trop de coquilles dans ce scénario. Réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Une liste du matériel mais pas dans la page principale. Pas de référence (voir page de l'an passé).&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P25 [[IMA4 2017/2018 P25|Essaim de robots]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Analyse très correcte. Un concurrent assez peu en rapport avec les essaims de robots mais dans la ligne des dispositifs de déminage.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas de question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Liste du matériel. Préciser pour le chassis.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P30 [[IMA4 2017/2018 P30|Contrôle d'une caméra WiFi.]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Objectif mal expliqué. Exercice réalisé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Mieux définir l'objectif suite à la visite en entreprise. Pas de réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P32 [[IMA4 2017/2018 P32|Tribute to Peter Vogel]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Excellente présentation et excellent travail préparatoire, Scénario d'usage à préciser, trouver des concurrents.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P35 [[IMA4 2017/2018 P35|Manette de jeu vidéo pour personne en situation de handicap]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Exercice réussi. Cependant précisez les acteurs dans le scénario d'usage.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Pas de modification du scénario. Pas de réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Rien à redire sur la liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P39 [[IMA4 2017/2018 P39|Musique des plantes]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Analyse très correcte.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Réponses aux questions difficiles.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P40 [[IMA4 2017/2018 P40|Exploration du réseau d'anonymisation Tor]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Sujet se prêtant peu à l'exercice mais très bonne présentation. Sujet travaillé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas vraiment de question, la suggestion est noté dans la page Wiki.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas de matériel à commander.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P42 [[IMA4 2017/2018 P42|Automatisation de l'assemblage de LEGO]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Analyse très correcte.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Pas de réponse aux questions difficiles &amp;quot;Comment démarrer l'imprimante à distance ? Comment sera calibrée la plaque d’impression ?&lt;br /&gt;
Comment la plaque va se fixer sur le sol ? &amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P44 [[IMA4 2017/2018 P44|Reconnaissance d’objets via Traitement d’image]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Le projet ne semble pas encore avoir été sérieusement étudié.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Net effort de documentation de la page Wiki. Pas de réponse directe à la question difficile sur la Kinect mais une discussion sur le problème posé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P49 [[IMA4 2017/2018 P49|Suivi de la qualité de l’air]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Contexte mal présenté, sujet flou. Scénario d'usage à préciser. Pas de contact avec les encadrants avant la présentation.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Page de Wiki vide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P50 [[IMA4 2017/2018 P50|Etage commande de Centaure]]&lt;br /&gt;
| Doublant&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Page de Wiki assez vide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P60 [[IMA4 2017/2018 P60|Commande de niveaux d’eau]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Présentation très correcte.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Pas de réponse à la question difficile. Page Wiki un peu vide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas de matériel à commander.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P64 [[IMA4 2017/2018 P64|Simulation Labview et mise en réseau Modbus d’un ascenseur]]&lt;br /&gt;
| Doublant&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Wiki avec quelques informations sur le travail accompli depuis fin novembre : étude sur modbus et labview. Quelques coquilles.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P65 [[IMA4 2017/2018 P65|Exosquelette pour apprentissage]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Présentation sans support. Trouver des concurrents indirects. Pas de scénario d'usage.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Page Wiki vide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P66 [[IMA4 2017/2018 P66|Coupe de France de robotique]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Analyse très correcte.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Page Wiki bien tenue. Ajoutez des illustrations.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Quelques éléments sur le matériel dans la page Wiki mais aucune liste avec références.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P67 [[IMA4 2017/2018 P67|Scanner 3D DIY]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Exercice bien réalisé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Page Wiki très complète. Ajoutez des illustrations.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Une liste probablement pas exhaustive.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P68 [[IMA4 2017/2018 P68|Générateur de chronogrammes d'ordonnancement]]&lt;br /&gt;
| Doublant&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Page Wiki vide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas de matériel à commander.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| PP1 [[IMA4 2017/2018 Pré-projet 1|Robot hexapode pour escalier]]&lt;br /&gt;
| Erasmus &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Fiche de présence ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Projet !! Elèves !! Séance 1 (17/01) !! Séance 2 (24/01) !! Séance 3 (31/01) !! Séance 4 (7/02) !! Séance 5 (14/02) !! Séance 6 (21/02) !! Séance 7 (7/03) !! Séance 8 (14/03) !! Séance 9 (21/03) !! Séance 10 (28/03) !! Séance 11 (4/04) !! Séance 12 (11/04) !! Séance 13 (18/04)&lt;br /&gt;
|-&lt;br /&gt;
| P1 [[IMA4 2017/2018 P1|Automatisation de la production de bière]]&lt;br /&gt;
|Quentin Boëns / Henri Carlier&lt;br /&gt;
|E304 &lt;br /&gt;
|E304/305&lt;br /&gt;
|E304&lt;br /&gt;
|E304&lt;br /&gt;
|E304&lt;br /&gt;
|-&lt;br /&gt;
| P3 [[IMA4 2017/2018 P3|Sécurisation de l'Internet des Objets par surveillance globale]]&lt;br /&gt;
|Ji Yang&lt;br /&gt;
|E306&lt;br /&gt;
|E303&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle &amp;lt;/font&amp;gt;&lt;br /&gt;
|E301&lt;br /&gt;
|-&lt;br /&gt;
| P4 [[IMA4 2017/2018 P4|Développement d'un module d'énergie pour Internet des Objets]]&lt;br /&gt;
| Alexis Viscogliosi / Abass Ayoub &lt;br /&gt;
|C008&lt;br /&gt;
|C008&lt;br /&gt;
|E304 &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Alexis Viscogliosi Absent excusé pour entretien stage&amp;lt;/font&amp;gt;&lt;br /&gt;
|C008&lt;br /&gt;
|C008&lt;br /&gt;
|-&lt;br /&gt;
| P5 [[IMA4 2017/2018 P5|Réseau de capteurs de pollution]]&lt;br /&gt;
| Paul Ribeiro / Mehanna Naïf&lt;br /&gt;
|E303&lt;br /&gt;
|E301&lt;br /&gt;
|A204 &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Absents &amp;lt;/font&amp;gt;&lt;br /&gt;
|E301&lt;br /&gt;
|E301 puis B309 puis B207&lt;br /&gt;
|-&lt;br /&gt;
| P6 [[IMA4 2017/2018 P6|Réseau LoRaWAN]]&lt;br /&gt;
|  Antoine Gosse&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306 &lt;br /&gt;
| E306&lt;br /&gt;
|-&lt;br /&gt;
| P7 [[IMA4 2017/2018 P7|Brique pour apprentissage informatique]]&lt;br /&gt;
| Maëva Delaporte / Simon Blas&lt;br /&gt;
| E304 &amp;lt;br/&amp;gt;&lt;br /&gt;
| E304 &amp;lt;br/&amp;gt;&lt;br /&gt;
| E304 &amp;lt;br/&amp;gt;&lt;br /&gt;
| E301 &amp;lt;br/&amp;gt;&lt;br /&gt;
| E301 &amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P10 [[IMA4 2017/2018 P10|Portage de RIOT-OS sur MSP430 pour IOT]]&lt;br /&gt;
| Baptiste Cartier&lt;br /&gt;
| E306&lt;br /&gt;
| E301&lt;br /&gt;
| E306&lt;br /&gt;
| E301&lt;br /&gt;
| E301&lt;br /&gt;
|-&lt;br /&gt;
| P12 [[IMA4 2017/2018 P12|Système d'ostéophonie pour magicien]]&lt;br /&gt;
| Amine El Messaoudi / Simon Feutrier&lt;br /&gt;
| E301&lt;br /&gt;
| E301&lt;br /&gt;
| C201&lt;br /&gt;
| C201&lt;br /&gt;
|-&lt;br /&gt;
| P14 [[IMA4 2017/2018 P14|Ecran géant modulaire]]&lt;br /&gt;
| Jade Dupont&lt;br /&gt;
|E304 &lt;br /&gt;
|E304 &lt;br /&gt;
|E304 &lt;br /&gt;
|E304 &lt;br /&gt;
|E304 &lt;br /&gt;
|-&lt;br /&gt;
| P15 [[IMA4 2017/2018 P15|Balle vibrante connectée pour enfants sourd]]&lt;br /&gt;
| Thomas Cunin / Thibault Cattelain&lt;br /&gt;
| E304&lt;br /&gt;
| B306/E304&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle (E304 - A305)&amp;lt;/font&amp;gt;&lt;br /&gt;
| E301&lt;br /&gt;
|-&lt;br /&gt;
| P16 [[IMA4 2017/2018 P16|Sous-chaussure chauffante pour docker]]&lt;br /&gt;
| Rémi Mairesse / Gustave Roux&lt;br /&gt;
| E304&lt;br /&gt;
| E301&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle &amp;lt;/font&amp;gt;&lt;br /&gt;
| E304&lt;br /&gt;
|-&lt;br /&gt;
| P17 [[IMA4 2017/2018 P17|Safe Watch]]&lt;br /&gt;
| Oumaima Naanaa&lt;br /&gt;
|E302&lt;br /&gt;
|E304&lt;br /&gt;
|E304&lt;br /&gt;
|E304&lt;br /&gt;
|E304&lt;br /&gt;
|-&lt;br /&gt;
| P18 [[IMA4 2017/2018 P18|Mandala électronique]]&lt;br /&gt;
| Lirui Zhang / Lihe Zhang&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| P19 [[IMA4 2017/2018 P19|Bijou électronique]]&lt;br /&gt;
| Lijie Yao / Keren Qiang&lt;br /&gt;
| E303&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
|-&lt;br /&gt;
| P20 [[IMA4 2017/2018 P20|Solution de messagerie à base de conteneurs]]&lt;br /&gt;
| Maxime Creteur / Gao Fan&lt;br /&gt;
|E303&lt;br /&gt;
|E301&lt;br /&gt;
|A204 &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Absents &amp;lt;/font&amp;gt;&lt;br /&gt;
|E303&lt;br /&gt;
|B309 puis B207&lt;br /&gt;
|-&lt;br /&gt;
| P22 [[IMA4 2017/2018 P22|Horloge numérique DCF77, serveur de temps et ludique]]&lt;br /&gt;
| Amaury Knockaert / Fabrice Taingland&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E304/E302&lt;br /&gt;
| C203/E306&lt;br /&gt;
|-&lt;br /&gt;
| P23 [[IMA4 2017/2018 P23|Table de bar connectée]]&lt;br /&gt;
| Matthieu Delobelle&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E303 - C201&lt;br /&gt;
| E306 - C201&lt;br /&gt;
| E304&lt;br /&gt;
|-&lt;br /&gt;
| P25 [[IMA4 2017/2018 P25|Essaim de robots]]&lt;br /&gt;
| Benjamin Canu / Ganix Etcheguibel&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
|-&lt;br /&gt;
| P30 [[IMA4 2017/2018 P30|Contrôle d'une caméra WiFi.]]&lt;br /&gt;
| Taky Djeraba / Thomas Hubert&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle &amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P32 [[IMA4 2017/2018 P32|Tribute to Peter Vogel]]&lt;br /&gt;
| Jean-Baptiste Watine / Antoine Untereiner&lt;br /&gt;
| E306/C201&lt;br /&gt;
| E301&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle (C201) &amp;lt;/font&amp;gt;&lt;br /&gt;
| C205&lt;br /&gt;
| C205/E301&lt;br /&gt;
|-&lt;br /&gt;
| P35 [[IMA4 2017/2018 P35|Manette de jeu vidéo pour personne en situation de handicap]]&lt;br /&gt;
| Transley Gracias / Camille Saad&lt;br /&gt;
| E306 &lt;br /&gt;
| E306 &lt;br /&gt;
| E305&lt;br /&gt;
| E306&lt;br /&gt;
|-&lt;br /&gt;
| P39 [[IMA4 2017/2018 P39|Musique des plantes]]&lt;br /&gt;
| Xavier Chenot / Rodolphe Toin&lt;br /&gt;
| E306 &lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| P40 [[IMA4 2017/2018 P40|Exploration du réseau d'anonymisation Tor]]&lt;br /&gt;
| Antoine Duquenoy / Anthony Durot&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
|-&lt;br /&gt;
| P42 [[IMA4 2017/2018 P42|Automatisation de l'assemblage de LEGO]]&lt;br /&gt;
| Eloi Zalczer / Justine Senellart&lt;br /&gt;
|E302/E306&lt;br /&gt;
|E302/E306&lt;br /&gt;
|E304/E302&lt;br /&gt;
|E304/E302&lt;br /&gt;
|E306/E302&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| P44 [[IMA4 2017/2018 P44|Reconnaissance d’objets via Traitement d’image]]&lt;br /&gt;
| Damien Narbais / Zoé Briois&lt;br /&gt;
| E306&lt;br /&gt;
| E301&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle (E301)&amp;lt;/font&amp;gt;&lt;br /&gt;
| E304 + 17h réunion C00X&lt;br /&gt;
| C205&lt;br /&gt;
|-&lt;br /&gt;
| P49 [[IMA4 2017/2018 P49|Suivi de la qualité de l’air]]&lt;br /&gt;
| Hugo Delbroucq / Nicolas Havard &lt;br /&gt;
| E301&lt;br /&gt;
| INRIA&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle &amp;lt;/font&amp;gt; (INRIA)&lt;br /&gt;
| E301&lt;br /&gt;
| E301 puis E304&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P50 [[IMA4 2017/2018 P50|Etage commande de Centaure]]&lt;br /&gt;
|-&lt;br /&gt;
| P60 [[IMA4 2017/2018 P60|Commande de niveaux d’eau]]&lt;br /&gt;
| Claire Vandamme / Alexandra Villa &lt;br /&gt;
|C008&lt;br /&gt;
|C008&lt;br /&gt;
|Hors Polytech/B106&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle &amp;lt;/font&amp;gt; &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Absentes &amp;lt;/font&amp;gt;&lt;br /&gt;
|C008&lt;br /&gt;
|C008&lt;br /&gt;
|- &lt;br /&gt;
| P64 [[IMA4 2017/2018 P64|Simulation Labview et mise en réseau Modbus d’un ascenseur]]&lt;br /&gt;
|-&lt;br /&gt;
| P65 [[IMA4 2017/2018 P65|Exosquelette pour apprentissage]]&lt;br /&gt;
| Florian Le Foll&lt;br /&gt;
| E301&lt;br /&gt;
| E301&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; (Pas de salle) &amp;lt;/font&amp;gt;E303&lt;br /&gt;
|E303&lt;br /&gt;
|E303&lt;br /&gt;
|-&lt;br /&gt;
| P66 [[IMA4 2017/2018 P66|Coupe de France de robotique]]&lt;br /&gt;
| Carval Amaury/ Prud'Homme Geoffrey&lt;br /&gt;
| fabricarium &lt;br /&gt;
| fabricarium puis Hors Polytech&lt;br /&gt;
| E304&lt;br /&gt;
| E301&lt;br /&gt;
| Carval E306 - Preud'homme E301&lt;br /&gt;
|-&lt;br /&gt;
| P67 [[IMA4 2017/2018 P67|Scanner 3D DIY]]&lt;br /&gt;
| Erwan Dufresne&lt;br /&gt;
| E302/E306&lt;br /&gt;
| E301&lt;br /&gt;
| E304&lt;br /&gt;
| E301&lt;br /&gt;
| E302&lt;br /&gt;
|-&lt;br /&gt;
| P68 [[IMA4 2017/2018 P68|Générateur de chronogrammes d'ordonnancement]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=50974</id>
		<title>IMA4 2017/2018 P14</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=50974"/>
				<updated>2018-02-14T18:03:19Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : /* Réalisation du Projet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
* '''Intitulé du projet''' : Proposer une solution permettant d'assembler des écrans de PC afin de créer un écran géant&lt;br /&gt;
&lt;br /&gt;
Le renouvellement de matériel informatique continu entraîne un nombre grandissant d'écrans d'ordinateur qui sont difficilement réutilisables compte tenu de leur petite taille. (17&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Afin de leur donner une seconde vie, ce projet a pour but de construire une plateforme permettant d'assembler ces écrans en un écran géant d'une forme &amp;quot;quelconque&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Exemple d'un cas d'écran carré'''&lt;br /&gt;
[[Fichier:Combinaison_ecrans.jpg]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
Afin de réaliser ce projet, il faudra :&lt;br /&gt;
&lt;br /&gt;
* Ajouter un Raspberry Pi sur chaque écran afin de le rentre &amp;quot;intelligent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Créer une application permettant de prendre un flux vidéo et de le diriger vers l'écran visé.&lt;br /&gt;
&lt;br /&gt;
* Permettre de déplacer facilement les écrans tout en maintenant le flux, que ce soit sur des configurations pleines en 2D ou des configurations plus complexes avec des espaces vides ou en 3D.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
* Le positionnement des écrans et la communication entre ces derniers.&lt;br /&gt;
&lt;br /&gt;
Pour une application telle qu'un écran géant composé de plusieurs écran, il est difficilement envisageable d'utiliser un système de coordonnées GPS pour repérer des écrans qui sont particulièrement proches les uns des autres. &lt;br /&gt;
En revanche il est tout à fait réaliste de penser à un système de capteurs de contact/proximité, disposés sur les bords des écrans pour leur permettre de s’emboîter puis il ne resterait qu'à exploiter les possibilités proposées par les Raspberry Pi ainsi qu'un système de coordonnées réalisé dans ce but pour déterminer où l'écran se situe par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
* La gestion du flux vidéo&lt;br /&gt;
&lt;br /&gt;
Le système sera potentiellement réalisé de sorte que chaque écran soit autonome dans son fonctionnement, une fois sa position relative déterminée au préalable.&lt;br /&gt;
En effet, pour le moment le problème était surtout dans le positionnement des écrans plus que dans la gestion du flux vidéo, à priori.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Est-ce que le système peut continuer de fonctionner si on retire l'un des écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pour pallier au problème d'un retrait d'écran, ou d'un disfonctionnement éventuel localisé, une solution possible est de fournir à chaque écran la totalité du flux vidéo.&lt;br /&gt;
Ceci permet dans un premier temps de s'affranchir d'un traitement vidéo avant distribution mais surtout que les autres écrans puissent fonctionner sans interruption due à un écran en particulier  &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Peut-il y avoir des décalages d'affichage entre les écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Malgré l'absence de possibilités de test pour le moment, on peut néanmoins supposer qu'il n'y ait pas de décalage. &lt;br /&gt;
Chaque écran va recevoir le flux vidéo puis en fonction du positionnement des écrans, et on pourra utiliser le système de coordonnées pour effectuer une &amp;quot;selection&amp;quot; sur la partie à afficher.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une configuration de 4 écrans en rectangle, il faudrait donc que l'écran inférieur gauche n'affiche que l'image correspondante jusqu'à la moitié, ensuite l'écran inférieur droit s'occuperait de l'affichage de la partie inférieure droite, etc&lt;br /&gt;
&lt;br /&gt;
En agrandissant le procédé à plus d'écrans, on trouve facilement une méthode de calcul.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet où il s'agira d'être capable de fournir une solution matérielle à la problématique, on s'orientera vers un prototype n'incluant que 4 écrans. Ceci permet à la fois d'éviter un encombrement matériel mais aussi .&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
* 5 Raspberry Pi 3 [https://fr.rs-online.com/web/p/processor-microcontroller-development-kits/8968660/?src=raspberrypi] lien 2 [https://www.mouser.fr/ProductDetail/Adafruit/3055?qs=sGAEpiMZZMuG6%2fXKM6MUaQgA7zSPt2LlznodoAe%252bkgk%3d]&lt;br /&gt;
&lt;br /&gt;
* Un Commutateur (5 Ports +)&lt;br /&gt;
&lt;br /&gt;
* 5 Câbles Ethernet&lt;br /&gt;
&lt;br /&gt;
* 4 Câbles VGA&lt;br /&gt;
&lt;br /&gt;
* 4 Adaptateur VGA-femelle vers HDMI-mâle&lt;br /&gt;
&lt;br /&gt;
* 16 [pack 25] Capteur de contact (1 par côté) [https://fr.rs-online.com/web/p/capteurs-proximites/7985273/] '''Envisagés pour la seconde partie du projet mais non validés pour le moment !'''&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
* 1) Régler le problème de la gestion du flux vidéo par le réseau ainsi qu'au niveau des Raspberry-Pi&lt;br /&gt;
&lt;br /&gt;
'''Hypothèse''': pour une configuration d'écran donnée, on suppose les écrans déjà intelligent et on dispose de leur emplacement relatif.&lt;br /&gt;
&lt;br /&gt;
* 2) Une fois la première version fonctionnelle, s'orienter vers la mise en place du système intelligent&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| Lundi 15/01/18 : 3h30&lt;br /&gt;
Mercredi 17/01/18 : 4h&lt;br /&gt;
| Mercredi 24/01/18 : 4h&lt;br /&gt;
| Mercredi 31/01/18 : 4h&lt;br /&gt;
| Lundi 05/02/18 : 2h&lt;br /&gt;
Mercredi 07/02/18 : 4h&lt;br /&gt;
|&lt;br /&gt;
Mercredi 14/02/18 : 4h&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
===Lundi 15/01/18===&lt;br /&gt;
&lt;br /&gt;
* Première séance ayant pour but de synthétiser l'idée théorique souhaitée par le projet.&lt;br /&gt;
&lt;br /&gt;
On imagine un système d'ensemble d'écrans autonomes mais qui communiquent leur emplacement entre eux, dans le sens où il n'est pas nécessaire de reconfigurer à chaque modification sur l'emplacement des écrans.&lt;br /&gt;
&lt;br /&gt;
Le système est pour ainsi dire évolutif puisqu'à chaque modification, exemple: passage d'un écran géant de 2*2 à 2*3 ou 3*2 (ou plus), les affichages peuvent modifier la zone du flux vidéo à afficher afin de conserver une image sur la totalité des écrans.&lt;br /&gt;
&lt;br /&gt;
De ce fait on peut imaginer des structures plus complexes, cylindriques dans le cas d'un flux d'une caméra à 360° ou plus simplement pour des simulateurs où les écrans seraient inclinés sans pour autant décrire un cercle autour de l'utilisateur.&lt;br /&gt;
&lt;br /&gt;
Cependant, pour des raisons évidentes d'effectif, de temps il est nécessaire de se réduire à une solution moins ambitieuse mais néanmoins acceptable.&lt;br /&gt;
&lt;br /&gt;
===Mercredi 17/01/18===&lt;br /&gt;
&lt;br /&gt;
* Mise en place d'un cahier des charge réalisable dans le temps imparti par rapport à la réponse théorique que l'on souhaiterai apporter au problème.&lt;br /&gt;
&lt;br /&gt;
Suite aux raisons évoquées précédemment, nous allons donc nous orienter vers un système à échelle réduite que nous ferons évoluer progressivement.&lt;br /&gt;
&lt;br /&gt;
Comme prévu nous diffuserons le flux vidéo initial, ''envoyé par Ethernet par une Raspberry Pi à partir d'un fichier stocké sur une clé usb par exemple'', aux 4 Raspberry intégrées aux écrans via un switch donc également par Ethernet (le port HDMI des R-Pi étant uniquement une sortie)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous effectuerons ensuite grâce aux R-Pi la modification du flux en fonction des écrans servant à l'affichage avant de rediriger la partie du flux qui nous intéresse vers les écrans.&lt;br /&gt;
&lt;br /&gt;
*'''Remarque:''' Dans un premier temps, pour une configuration donnée et avec les emplacement des écrans connues, il s'agit uniquement de réaliser la conversion d'affichage.&lt;br /&gt;
&lt;br /&gt;
Le fait de rendre les écrans intelligents n'est cependant pas ignoré et viendra dans un second temps, le choix de la méthode à employer étant encore en suspend. Nous allons cependant effectuer des hypothèses avec des capteurs.&lt;br /&gt;
&lt;br /&gt;
* Soit X et Y les dimensions du flux vidéo&lt;br /&gt;
* Soit U,R,D,L les états des capteurs sur un écran donné (respectivement, Up, Right, Down, Left) (1 pour actifs, 0 pour inactif)&lt;br /&gt;
* Soit I,J les indices des écrans (I = 0/1 et J = 0/1)&lt;br /&gt;
* Soit nb_X et nb_Y respectivement le nombre d'écrans en fonction des coordonnées i.e les dimensions de notre écran géant&lt;br /&gt;
&lt;br /&gt;
La configuration d'écran est la suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma (I,J)'''&lt;br /&gt;
&lt;br /&gt;
0,1 ; 1,1&lt;br /&gt;
&lt;br /&gt;
0,0 ; 1,0&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quel que soit l'écran, le flux qu'il devra recevoir sera situé entre [X1,X2] et [Y1,Y2].&lt;br /&gt;
Évidemment ces valeurs de l'emplacement de l'écran&lt;br /&gt;
&lt;br /&gt;
* Y2 = Y * ( D||U ) * (I+1) / nb_Y&lt;br /&gt;
* Y1 = Y * D * I / nb_Y&lt;br /&gt;
* X1 = X * L * J / nb_X&lt;br /&gt;
* X2 = X * ( L||R ) * (J+1) / nb_X&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 24/01/18===&lt;br /&gt;
Début de la gestion réseau du flux vidéo.&lt;br /&gt;
&lt;br /&gt;
Pour la partie théorique, nous allons donc procéder de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
Une Raspberry s'occupera de diffuser le flux sur le réseau via un commutateur. À partir d'un fichier vidéo interne.&lt;br /&gt;
&lt;br /&gt;
Les autres R-Pi disposeront d'un fichier de configuration qui contient les coordonnées à afficher en fonction de la position de l'écran, dans la première partie ce fichier sera directement implanté avec un contenu propre à chaque R-Pi mais dans la seconde il s'agira de les modifier automatiquement.&lt;br /&gt;
&lt;br /&gt;
Configuration eth0 sur la Raspberry pi : &lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
address 192.168.1.&amp;lt;2+numero_rpi&amp;gt;&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
&lt;br /&gt;
On commencera par créer un fichier fifo pour faire la transmission entre nc et OMXplayer&lt;br /&gt;
&lt;br /&gt;
Lecture du réseau : nc -l -p &amp;lt;port&amp;gt; &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Affichage : omxplayer --crop x1,y1,x2,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
[https://elinux.org/Omxplayer] : Documentation OMX player&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 31/01/18===&lt;br /&gt;
&lt;br /&gt;
Tentatives de communication PC (Source flux) à Raspberry (Écran) via nc : Échec&lt;br /&gt;
&lt;br /&gt;
* [PC source] : | nc &lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 1] : nc -l -p 12345 &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 2] : omxplayer --crop x1,y1,x1,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Avec x1,y1,x2,y2 les coordonnées des coins de la fenêtre à afficher&lt;br /&gt;
&lt;br /&gt;
Problème rencontré : la Raspberry n'arrive pas à obtenir une adresse joignable malgré une connexion directe avec le PC en ethernet&lt;br /&gt;
&lt;br /&gt;
* sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; iface eth0 inet dhcp&lt;br /&gt;
&lt;br /&gt;
* ifdown eth0&lt;br /&gt;
&lt;br /&gt;
* ifup eth0&lt;br /&gt;
&lt;br /&gt;
* ifconfig&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; inet adr:169.254.68.185&lt;br /&gt;
&lt;br /&gt;
Seconde tentative avec VLC en mode Streaming sur le PC source et VLC en écoute de stream avec VLC également : Échec (IP de la source = ?)&lt;br /&gt;
&lt;br /&gt;
Ligne de commande pour VLC de lecture&lt;br /&gt;
&lt;br /&gt;
* vlc -vvv http://IP_SOURCE:8080/PATH --crop X_RESxY_RES+LEFT_CROP+TOP_CROP -f&lt;br /&gt;
&lt;br /&gt;
PATH: paramètre donné lors du lancement du stream sur la machine source&lt;br /&gt;
&lt;br /&gt;
X_RES : Résolution X de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
Y_RES : Résolution Y de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
LEFT_CROP : Largeur de la zone coupée en partant de la gauche (en pixel)&lt;br /&gt;
&lt;br /&gt;
TOP_CROP : Hauteur de la zone coupée en partant du haut (en pixel)&lt;br /&gt;
&lt;br /&gt;
-f : Full screen&lt;br /&gt;
&lt;br /&gt;
* Test avec le mode de stream (une fois le problème résolu) : le lancement de la lecture sous VLC du côté de la raspberry entraîne des pertes considérables au niveau du flux vidéo avec des coupures très fréquentes (écran noir) ainsi qu'une forte consommation des ressources&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;photo 95%&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
===Lundi 05/02/18===&lt;br /&gt;
&lt;br /&gt;
Omxplayer demeure plus adapté puisqu'il n'entraîne pas une sur-consommation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;photo 0-3%&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mercredi 07/02/18===&lt;br /&gt;
&lt;br /&gt;
Envoie avec succès d'un fichier vidéo via netcat du PC source vers la Raspberry&lt;br /&gt;
&lt;br /&gt;
* $ nc -w 3 172.26.145.172 1234 &amp;lt; Downloads/dragons.mp4&lt;br /&gt;
&lt;br /&gt;
Où 172.26.145.172 est l'adresse obtenue par ifconfig sur la Raspberry.&lt;br /&gt;
&lt;br /&gt;
Réception avec :&lt;br /&gt;
&lt;br /&gt;
* $ nc -l -p 1234 &amp;gt; Downloads/test.mp4&lt;br /&gt;
&lt;br /&gt;
Commande de lecture : &lt;br /&gt;
&lt;br /&gt;
* $ omxplayer --aspect-mode stretch --crop X1,Y1,X2,Y2 Downloads/test.mp4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Récupération de la résolution du flux vidéo (ou fichier dans le cas actuel) : exiftool&lt;br /&gt;
&lt;br /&gt;
Nécessite un &amp;quot;exiftool&amp;quot; sur chaque Raspberry&lt;br /&gt;
&lt;br /&gt;
* $ sudo apt-get install exiftool&lt;br /&gt;
&lt;br /&gt;
* $ exiftool &amp;lt;file&amp;gt; | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f1&lt;br /&gt;
&lt;br /&gt;
Observation d'événements particuliers sur des dossiers&lt;br /&gt;
&lt;br /&gt;
* $ apt-get install inotify-tools&lt;br /&gt;
&lt;br /&gt;
Script d'observation et d’exécution d'action sur la création d'un fichier dans un dossier &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# CONFIGURATION&lt;br /&gt;
&lt;br /&gt;
DIR=&amp;quot;~/Downloads&amp;quot;&lt;br /&gt;
EVENTS=&amp;quot;create&amp;quot;&lt;br /&gt;
&lt;br /&gt;
NB_X=1&lt;br /&gt;
NB_Y=1&lt;br /&gt;
X=0&lt;br /&gt;
Y=0&lt;br /&gt;
&lt;br /&gt;
# MAIN&lt;br /&gt;
&lt;br /&gt;
inotifywait -m -e $EVENTS $DIR |&lt;br /&gt;
while read file&lt;br /&gt;
do&lt;br /&gt;
&lt;br /&gt;
        X1=0&lt;br /&gt;
        Y1=0&lt;br /&gt;
&lt;br /&gt;
        X2=exiftool /home/pifou/Downloads/hide-and-seek.mp4 | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f1 | awk '{print $1&amp;quot;*(1+X)/$NB_X&amp;quot;}' | bc&lt;br /&gt;
        Y2=exiftool /home/pifou/Downloads/hide-and-seek.mp4 | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f2 | awk '{print $1&amp;quot;*(1+Y)/$NB_Y&amp;quot;}' | bc&lt;br /&gt;
&lt;br /&gt;
        echo &amp;quot;File recieved : $file&amp;quot;;&lt;br /&gt;
        omxplayer --aspect-mode stretch --crop X1,Y1,X2,Y2 $DIR/$file;&lt;br /&gt;
        PID=$!;&lt;br /&gt;
        wait $PID;&lt;br /&gt;
        rm -f $DIR/$file;&lt;br /&gt;
        echo &amp;quot;File removed $file&amp;quot;;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 14/02/18===&lt;br /&gt;
&lt;br /&gt;
Récupération du temps de lecture (pour la commande wait)&lt;br /&gt;
&lt;br /&gt;
* exiftool &amp;lt;video&amp;gt; | grep -m 1 &amp;quot;Track Duration&amp;quot; | cut -d' ' -f21 | cut -d':' -fX&lt;br /&gt;
&lt;br /&gt;
X=1 -&amp;gt; heures ; 2 -&amp;gt; minutes ; 3 ; secondes&lt;br /&gt;
&lt;br /&gt;
Début de la conception d'une méthode d'acquisition de la position de l'écran relative aux autres.&lt;br /&gt;
&lt;br /&gt;
Un premier problème est présent pour la détection des coins dans une configuration d'écrans plus ou moins aléatoire&lt;br /&gt;
&lt;br /&gt;
Dans le cas de notre prototype à 4 écrans. Qu'ils soient disposés en carré ou en ligne à l'horizontale ou à la verticale, ça ne pose pas de problème puisqu'il suffit de juger à l'état des (futurs) capteurs disposé cependant dans le cas où l'on supprime un écran, on se retrouve avec des incohérences&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=50973</id>
		<title>IMA4 2017/2018 P14</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=50973"/>
				<updated>2018-02-14T18:03:03Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : /* Feuille d'heures */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
* '''Intitulé du projet''' : Proposer une solution permettant d'assembler des écrans de PC afin de créer un écran géant&lt;br /&gt;
&lt;br /&gt;
Le renouvellement de matériel informatique continu entraîne un nombre grandissant d'écrans d'ordinateur qui sont difficilement réutilisables compte tenu de leur petite taille. (17&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Afin de leur donner une seconde vie, ce projet a pour but de construire une plateforme permettant d'assembler ces écrans en un écran géant d'une forme &amp;quot;quelconque&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Exemple d'un cas d'écran carré'''&lt;br /&gt;
[[Fichier:Combinaison_ecrans.jpg]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
Afin de réaliser ce projet, il faudra :&lt;br /&gt;
&lt;br /&gt;
* Ajouter un Raspberry Pi sur chaque écran afin de le rentre &amp;quot;intelligent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Créer une application permettant de prendre un flux vidéo et de le diriger vers l'écran visé.&lt;br /&gt;
&lt;br /&gt;
* Permettre de déplacer facilement les écrans tout en maintenant le flux, que ce soit sur des configurations pleines en 2D ou des configurations plus complexes avec des espaces vides ou en 3D.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
* Le positionnement des écrans et la communication entre ces derniers.&lt;br /&gt;
&lt;br /&gt;
Pour une application telle qu'un écran géant composé de plusieurs écran, il est difficilement envisageable d'utiliser un système de coordonnées GPS pour repérer des écrans qui sont particulièrement proches les uns des autres. &lt;br /&gt;
En revanche il est tout à fait réaliste de penser à un système de capteurs de contact/proximité, disposés sur les bords des écrans pour leur permettre de s’emboîter puis il ne resterait qu'à exploiter les possibilités proposées par les Raspberry Pi ainsi qu'un système de coordonnées réalisé dans ce but pour déterminer où l'écran se situe par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
* La gestion du flux vidéo&lt;br /&gt;
&lt;br /&gt;
Le système sera potentiellement réalisé de sorte que chaque écran soit autonome dans son fonctionnement, une fois sa position relative déterminée au préalable.&lt;br /&gt;
En effet, pour le moment le problème était surtout dans le positionnement des écrans plus que dans la gestion du flux vidéo, à priori.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Est-ce que le système peut continuer de fonctionner si on retire l'un des écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pour pallier au problème d'un retrait d'écran, ou d'un disfonctionnement éventuel localisé, une solution possible est de fournir à chaque écran la totalité du flux vidéo.&lt;br /&gt;
Ceci permet dans un premier temps de s'affranchir d'un traitement vidéo avant distribution mais surtout que les autres écrans puissent fonctionner sans interruption due à un écran en particulier  &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Peut-il y avoir des décalages d'affichage entre les écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Malgré l'absence de possibilités de test pour le moment, on peut néanmoins supposer qu'il n'y ait pas de décalage. &lt;br /&gt;
Chaque écran va recevoir le flux vidéo puis en fonction du positionnement des écrans, et on pourra utiliser le système de coordonnées pour effectuer une &amp;quot;selection&amp;quot; sur la partie à afficher.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une configuration de 4 écrans en rectangle, il faudrait donc que l'écran inférieur gauche n'affiche que l'image correspondante jusqu'à la moitié, ensuite l'écran inférieur droit s'occuperait de l'affichage de la partie inférieure droite, etc&lt;br /&gt;
&lt;br /&gt;
En agrandissant le procédé à plus d'écrans, on trouve facilement une méthode de calcul.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet où il s'agira d'être capable de fournir une solution matérielle à la problématique, on s'orientera vers un prototype n'incluant que 4 écrans. Ceci permet à la fois d'éviter un encombrement matériel mais aussi .&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
* 5 Raspberry Pi 3 [https://fr.rs-online.com/web/p/processor-microcontroller-development-kits/8968660/?src=raspberrypi] lien 2 [https://www.mouser.fr/ProductDetail/Adafruit/3055?qs=sGAEpiMZZMuG6%2fXKM6MUaQgA7zSPt2LlznodoAe%252bkgk%3d]&lt;br /&gt;
&lt;br /&gt;
* Un Commutateur (5 Ports +)&lt;br /&gt;
&lt;br /&gt;
* 5 Câbles Ethernet&lt;br /&gt;
&lt;br /&gt;
* 4 Câbles VGA&lt;br /&gt;
&lt;br /&gt;
* 4 Adaptateur VGA-femelle vers HDMI-mâle&lt;br /&gt;
&lt;br /&gt;
* 16 [pack 25] Capteur de contact (1 par côté) [https://fr.rs-online.com/web/p/capteurs-proximites/7985273/] '''Envisagés pour la seconde partie du projet mais non validés pour le moment !'''&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
* 1) Régler le problème de la gestion du flux vidéo par le réseau ainsi qu'au niveau des Raspberry-Pi&lt;br /&gt;
&lt;br /&gt;
'''Hypothèse''': pour une configuration d'écran donnée, on suppose les écrans déjà intelligent et on dispose de leur emplacement relatif.&lt;br /&gt;
&lt;br /&gt;
* 2) Une fois la première version fonctionnelle, s'orienter vers la mise en place du système intelligent&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| Lundi 15/01/18 : 3h30&lt;br /&gt;
Mercredi 17/01/18 : 4h&lt;br /&gt;
| Mercredi 24/01/18 : 4h&lt;br /&gt;
| Mercredi 31/01/18 : 4h&lt;br /&gt;
| Lundi 05/02/18 : 2h&lt;br /&gt;
Mercredi 07/02/18 : 4h&lt;br /&gt;
|&lt;br /&gt;
Mercredi 14/02/18 : 4h&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
===Lundi 15/01/18===&lt;br /&gt;
&lt;br /&gt;
* Première séance ayant pour but de synthétiser l'idée théorique souhaitée par le projet.&lt;br /&gt;
&lt;br /&gt;
On imagine un système d'ensemble d'écrans autonomes mais qui communiquent leur emplacement entre eux, dans le sens où il n'est pas nécessaire de reconfigurer à chaque modification sur l'emplacement des écrans.&lt;br /&gt;
&lt;br /&gt;
Le système est pour ainsi dire évolutif puisqu'à chaque modification, exemple: passage d'un écran géant de 2*2 à 2*3 ou 3*2 (ou plus), les affichages peuvent modifier la zone du flux vidéo à afficher afin de conserver une image sur la totalité des écrans.&lt;br /&gt;
&lt;br /&gt;
De ce fait on peut imaginer des structures plus complexes, cylindriques dans le cas d'un flux d'une caméra à 360° ou plus simplement pour des simulateurs où les écrans seraient inclinés sans pour autant décrire un cercle autour de l'utilisateur.&lt;br /&gt;
&lt;br /&gt;
Cependant, pour des raisons évidentes d'effectif, de temps il est nécessaire de se réduire à une solution moins ambitieuse mais néanmoins acceptable.&lt;br /&gt;
&lt;br /&gt;
===Mercredi 17/01/18===&lt;br /&gt;
&lt;br /&gt;
* Mise en place d'un cahier des charge réalisable dans le temps imparti par rapport à la réponse théorique que l'on souhaiterai apporter au problème.&lt;br /&gt;
&lt;br /&gt;
Suite aux raisons évoquées précédemment, nous allons donc nous orienter vers un système à échelle réduite que nous ferons évoluer progressivement.&lt;br /&gt;
&lt;br /&gt;
Comme prévu nous diffuserons le flux vidéo initial, ''envoyé par Ethernet par une Raspberry Pi à partir d'un fichier stocké sur une clé usb par exemple'', aux 4 Raspberry intégrées aux écrans via un switch donc également par Ethernet (le port HDMI des R-Pi étant uniquement une sortie)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous effectuerons ensuite grâce aux R-Pi la modification du flux en fonction des écrans servant à l'affichage avant de rediriger la partie du flux qui nous intéresse vers les écrans.&lt;br /&gt;
&lt;br /&gt;
*'''Remarque:''' Dans un premier temps, pour une configuration donnée et avec les emplacement des écrans connues, il s'agit uniquement de réaliser la conversion d'affichage.&lt;br /&gt;
&lt;br /&gt;
Le fait de rendre les écrans intelligents n'est cependant pas ignoré et viendra dans un second temps, le choix de la méthode à employer étant encore en suspend. Nous allons cependant effectuer des hypothèses avec des capteurs.&lt;br /&gt;
&lt;br /&gt;
* Soit X et Y les dimensions du flux vidéo&lt;br /&gt;
* Soit U,R,D,L les états des capteurs sur un écran donné (respectivement, Up, Right, Down, Left) (1 pour actifs, 0 pour inactif)&lt;br /&gt;
* Soit I,J les indices des écrans (I = 0/1 et J = 0/1)&lt;br /&gt;
* Soit nb_X et nb_Y respectivement le nombre d'écrans en fonction des coordonnées i.e les dimensions de notre écran géant&lt;br /&gt;
&lt;br /&gt;
La configuration d'écran est la suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma (I,J)'''&lt;br /&gt;
&lt;br /&gt;
0,1 ; 1,1&lt;br /&gt;
&lt;br /&gt;
0,0 ; 1,0&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quel que soit l'écran, le flux qu'il devra recevoir sera situé entre [X1,X2] et [Y1,Y2].&lt;br /&gt;
Évidemment ces valeurs de l'emplacement de l'écran&lt;br /&gt;
&lt;br /&gt;
* Y2 = Y * ( D||U ) * (I+1) / nb_Y&lt;br /&gt;
* Y1 = Y * D * I / nb_Y&lt;br /&gt;
* X1 = X * L * J / nb_X&lt;br /&gt;
* X2 = X * ( L||R ) * (J+1) / nb_X&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 24/01/18===&lt;br /&gt;
Début de la gestion réseau du flux vidéo.&lt;br /&gt;
&lt;br /&gt;
Pour la partie théorique, nous allons donc procéder de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
Une Raspberry s'occupera de diffuser le flux sur le réseau via un commutateur. À partir d'un fichier vidéo interne.&lt;br /&gt;
&lt;br /&gt;
Les autres R-Pi disposeront d'un fichier de configuration qui contient les coordonnées à afficher en fonction de la position de l'écran, dans la première partie ce fichier sera directement implanté avec un contenu propre à chaque R-Pi mais dans la seconde il s'agira de les modifier automatiquement.&lt;br /&gt;
&lt;br /&gt;
Configuration eth0 sur la Raspberry pi : &lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
address 192.168.1.&amp;lt;2+numero_rpi&amp;gt;&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
&lt;br /&gt;
On commencera par créer un fichier fifo pour faire la transmission entre nc et OMXplayer&lt;br /&gt;
&lt;br /&gt;
Lecture du réseau : nc -l -p &amp;lt;port&amp;gt; &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Affichage : omxplayer --crop x1,y1,x2,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
[https://elinux.org/Omxplayer] : Documentation OMX player&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 31/01/18===&lt;br /&gt;
&lt;br /&gt;
Tentatives de communication PC (Source flux) à Raspberry (Écran) via nc : Échec&lt;br /&gt;
&lt;br /&gt;
* [PC source] : | nc &lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 1] : nc -l -p 12345 &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 2] : omxplayer --crop x1,y1,x1,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Avec x1,y1,x2,y2 les coordonnées des coins de la fenêtre à afficher&lt;br /&gt;
&lt;br /&gt;
Problème rencontré : la Raspberry n'arrive pas à obtenir une adresse joignable malgré une connexion directe avec le PC en ethernet&lt;br /&gt;
&lt;br /&gt;
* sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; iface eth0 inet dhcp&lt;br /&gt;
&lt;br /&gt;
* ifdown eth0&lt;br /&gt;
&lt;br /&gt;
* ifup eth0&lt;br /&gt;
&lt;br /&gt;
* ifconfig&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; inet adr:169.254.68.185&lt;br /&gt;
&lt;br /&gt;
Seconde tentative avec VLC en mode Streaming sur le PC source et VLC en écoute de stream avec VLC également : Échec (IP de la source = ?)&lt;br /&gt;
&lt;br /&gt;
Ligne de commande pour VLC de lecture&lt;br /&gt;
&lt;br /&gt;
* vlc -vvv http://IP_SOURCE:8080/PATH --crop X_RESxY_RES+LEFT_CROP+TOP_CROP -f&lt;br /&gt;
&lt;br /&gt;
PATH: paramètre donné lors du lancement du stream sur la machine source&lt;br /&gt;
&lt;br /&gt;
X_RES : Résolution X de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
Y_RES : Résolution Y de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
LEFT_CROP : Largeur de la zone coupée en partant de la gauche (en pixel)&lt;br /&gt;
&lt;br /&gt;
TOP_CROP : Hauteur de la zone coupée en partant du haut (en pixel)&lt;br /&gt;
&lt;br /&gt;
-f : Full screen&lt;br /&gt;
&lt;br /&gt;
* Test avec le mode de stream (une fois le problème résolu) : le lancement de la lecture sous VLC du côté de la raspberry entraîne des pertes considérables au niveau du flux vidéo avec des coupures très fréquentes (écran noir) ainsi qu'une forte consommation des ressources&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;photo 95%&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
===Lundi 05/02/18===&lt;br /&gt;
&lt;br /&gt;
Omxplayer demeure plus adapté puisqu'il n'entraîne pas une sur-consommation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;photo 0-3%&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mercredi 07/02/18===&lt;br /&gt;
&lt;br /&gt;
Envoie avec succès d'un fichier vidéo via netcat du PC source vers la Raspberry&lt;br /&gt;
&lt;br /&gt;
* $ nc -w 3 172.26.145.172 1234 &amp;lt; Downloads/dragons.mp4&lt;br /&gt;
&lt;br /&gt;
Où 172.26.145.172 est l'adresse obtenue par ifconfig sur la Raspberry.&lt;br /&gt;
&lt;br /&gt;
Réception avec :&lt;br /&gt;
&lt;br /&gt;
* $ nc -l -p 1234 &amp;gt; Downloads/test.mp4&lt;br /&gt;
&lt;br /&gt;
Commande de lecture : &lt;br /&gt;
&lt;br /&gt;
* $ omxplayer --aspect-mode stretch --crop X1,Y1,X2,Y2 Downloads/test.mp4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Récupération de la résolution du flux vidéo (ou fichier dans le cas actuel) : exiftool&lt;br /&gt;
&lt;br /&gt;
Nécessite un &amp;quot;exiftool&amp;quot; sur chaque Raspberry&lt;br /&gt;
&lt;br /&gt;
* $ sudo apt-get install exiftool&lt;br /&gt;
&lt;br /&gt;
* $ exiftool &amp;lt;file&amp;gt; | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f1&lt;br /&gt;
&lt;br /&gt;
Observation d'événements particuliers sur des dossiers&lt;br /&gt;
&lt;br /&gt;
* $ apt-get install inotify-tools&lt;br /&gt;
&lt;br /&gt;
Script d'observation et d’exécution d'action sur la création d'un fichier dans un dossier &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# CONFIGURATION&lt;br /&gt;
&lt;br /&gt;
DIR=&amp;quot;~/Downloads&amp;quot;&lt;br /&gt;
EVENTS=&amp;quot;create&amp;quot;&lt;br /&gt;
&lt;br /&gt;
NB_X=1&lt;br /&gt;
NB_Y=1&lt;br /&gt;
X=0&lt;br /&gt;
Y=0&lt;br /&gt;
&lt;br /&gt;
# MAIN&lt;br /&gt;
&lt;br /&gt;
inotifywait -m -e $EVENTS $DIR |&lt;br /&gt;
while read file&lt;br /&gt;
do&lt;br /&gt;
&lt;br /&gt;
        X1=0&lt;br /&gt;
        Y1=0&lt;br /&gt;
&lt;br /&gt;
        X2=exiftool /home/pifou/Downloads/hide-and-seek.mp4 | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f1 | awk '{print $1&amp;quot;*(1+X)/$NB_X&amp;quot;}' | bc&lt;br /&gt;
        Y2=exiftool /home/pifou/Downloads/hide-and-seek.mp4 | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f2 | awk '{print $1&amp;quot;*(1+Y)/$NB_Y&amp;quot;}' | bc&lt;br /&gt;
&lt;br /&gt;
        echo &amp;quot;File recieved : $file&amp;quot;;&lt;br /&gt;
        omxplayer --aspect-mode stretch --crop X1,Y1,X2,Y2 $DIR/$file;&lt;br /&gt;
        PID=$!;&lt;br /&gt;
        wait $PID;&lt;br /&gt;
        rm -f $DIR/$file;&lt;br /&gt;
        echo &amp;quot;File removed $file&amp;quot;;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 13/02/18===&lt;br /&gt;
&lt;br /&gt;
Récupération du temps de lecture (pour la commande wait)&lt;br /&gt;
&lt;br /&gt;
* exiftool &amp;lt;video&amp;gt; | grep -m 1 &amp;quot;Track Duration&amp;quot; | cut -d' ' -f21 | cut -d':' -fX&lt;br /&gt;
&lt;br /&gt;
X=1 -&amp;gt; heures ; 2 -&amp;gt; minutes ; 3 ; secondes&lt;br /&gt;
&lt;br /&gt;
Début de la conception d'une méthode d'acquisition de la position de l'écran relative aux autres.&lt;br /&gt;
&lt;br /&gt;
Un premier problème est présent pour la détection des coins dans une configuration d'écrans plus ou moins aléatoire&lt;br /&gt;
&lt;br /&gt;
Dans le cas de notre prototype à 4 écrans. Qu'ils soient disposés en carré ou en ligne à l'horizontale ou à la verticale, ça ne pose pas de problème puisqu'il suffit de juger à l'état des (futurs) capteurs disposé cependant dans le cas où l'on supprime un écran, on se retrouve avec des incohérences&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=50972</id>
		<title>IMA4 2017/2018 P14</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=50972"/>
				<updated>2018-02-14T18:02:49Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : /* Feuille d'heures */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
* '''Intitulé du projet''' : Proposer une solution permettant d'assembler des écrans de PC afin de créer un écran géant&lt;br /&gt;
&lt;br /&gt;
Le renouvellement de matériel informatique continu entraîne un nombre grandissant d'écrans d'ordinateur qui sont difficilement réutilisables compte tenu de leur petite taille. (17&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Afin de leur donner une seconde vie, ce projet a pour but de construire une plateforme permettant d'assembler ces écrans en un écran géant d'une forme &amp;quot;quelconque&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Exemple d'un cas d'écran carré'''&lt;br /&gt;
[[Fichier:Combinaison_ecrans.jpg]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
Afin de réaliser ce projet, il faudra :&lt;br /&gt;
&lt;br /&gt;
* Ajouter un Raspberry Pi sur chaque écran afin de le rentre &amp;quot;intelligent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Créer une application permettant de prendre un flux vidéo et de le diriger vers l'écran visé.&lt;br /&gt;
&lt;br /&gt;
* Permettre de déplacer facilement les écrans tout en maintenant le flux, que ce soit sur des configurations pleines en 2D ou des configurations plus complexes avec des espaces vides ou en 3D.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
* Le positionnement des écrans et la communication entre ces derniers.&lt;br /&gt;
&lt;br /&gt;
Pour une application telle qu'un écran géant composé de plusieurs écran, il est difficilement envisageable d'utiliser un système de coordonnées GPS pour repérer des écrans qui sont particulièrement proches les uns des autres. &lt;br /&gt;
En revanche il est tout à fait réaliste de penser à un système de capteurs de contact/proximité, disposés sur les bords des écrans pour leur permettre de s’emboîter puis il ne resterait qu'à exploiter les possibilités proposées par les Raspberry Pi ainsi qu'un système de coordonnées réalisé dans ce but pour déterminer où l'écran se situe par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
* La gestion du flux vidéo&lt;br /&gt;
&lt;br /&gt;
Le système sera potentiellement réalisé de sorte que chaque écran soit autonome dans son fonctionnement, une fois sa position relative déterminée au préalable.&lt;br /&gt;
En effet, pour le moment le problème était surtout dans le positionnement des écrans plus que dans la gestion du flux vidéo, à priori.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Est-ce que le système peut continuer de fonctionner si on retire l'un des écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pour pallier au problème d'un retrait d'écran, ou d'un disfonctionnement éventuel localisé, une solution possible est de fournir à chaque écran la totalité du flux vidéo.&lt;br /&gt;
Ceci permet dans un premier temps de s'affranchir d'un traitement vidéo avant distribution mais surtout que les autres écrans puissent fonctionner sans interruption due à un écran en particulier  &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Peut-il y avoir des décalages d'affichage entre les écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Malgré l'absence de possibilités de test pour le moment, on peut néanmoins supposer qu'il n'y ait pas de décalage. &lt;br /&gt;
Chaque écran va recevoir le flux vidéo puis en fonction du positionnement des écrans, et on pourra utiliser le système de coordonnées pour effectuer une &amp;quot;selection&amp;quot; sur la partie à afficher.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une configuration de 4 écrans en rectangle, il faudrait donc que l'écran inférieur gauche n'affiche que l'image correspondante jusqu'à la moitié, ensuite l'écran inférieur droit s'occuperait de l'affichage de la partie inférieure droite, etc&lt;br /&gt;
&lt;br /&gt;
En agrandissant le procédé à plus d'écrans, on trouve facilement une méthode de calcul.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet où il s'agira d'être capable de fournir une solution matérielle à la problématique, on s'orientera vers un prototype n'incluant que 4 écrans. Ceci permet à la fois d'éviter un encombrement matériel mais aussi .&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
* 5 Raspberry Pi 3 [https://fr.rs-online.com/web/p/processor-microcontroller-development-kits/8968660/?src=raspberrypi] lien 2 [https://www.mouser.fr/ProductDetail/Adafruit/3055?qs=sGAEpiMZZMuG6%2fXKM6MUaQgA7zSPt2LlznodoAe%252bkgk%3d]&lt;br /&gt;
&lt;br /&gt;
* Un Commutateur (5 Ports +)&lt;br /&gt;
&lt;br /&gt;
* 5 Câbles Ethernet&lt;br /&gt;
&lt;br /&gt;
* 4 Câbles VGA&lt;br /&gt;
&lt;br /&gt;
* 4 Adaptateur VGA-femelle vers HDMI-mâle&lt;br /&gt;
&lt;br /&gt;
* 16 [pack 25] Capteur de contact (1 par côté) [https://fr.rs-online.com/web/p/capteurs-proximites/7985273/] '''Envisagés pour la seconde partie du projet mais non validés pour le moment !'''&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
* 1) Régler le problème de la gestion du flux vidéo par le réseau ainsi qu'au niveau des Raspberry-Pi&lt;br /&gt;
&lt;br /&gt;
'''Hypothèse''': pour une configuration d'écran donnée, on suppose les écrans déjà intelligent et on dispose de leur emplacement relatif.&lt;br /&gt;
&lt;br /&gt;
* 2) Une fois la première version fonctionnelle, s'orienter vers la mise en place du système intelligent&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| Lundi 15/01/18 : 3h30&lt;br /&gt;
Mercredi 17/01/18 : 4h&lt;br /&gt;
| Mercredi 24/01/18 : 4h&lt;br /&gt;
| Mercredi 31/01/18 : 4h&lt;br /&gt;
| Lundi 05/02/18 : 2h&lt;br /&gt;
Mercredi 07/02/18 : 4h&lt;br /&gt;
|&lt;br /&gt;
Mercredi 13/02/18 : 4h&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
===Lundi 15/01/18===&lt;br /&gt;
&lt;br /&gt;
* Première séance ayant pour but de synthétiser l'idée théorique souhaitée par le projet.&lt;br /&gt;
&lt;br /&gt;
On imagine un système d'ensemble d'écrans autonomes mais qui communiquent leur emplacement entre eux, dans le sens où il n'est pas nécessaire de reconfigurer à chaque modification sur l'emplacement des écrans.&lt;br /&gt;
&lt;br /&gt;
Le système est pour ainsi dire évolutif puisqu'à chaque modification, exemple: passage d'un écran géant de 2*2 à 2*3 ou 3*2 (ou plus), les affichages peuvent modifier la zone du flux vidéo à afficher afin de conserver une image sur la totalité des écrans.&lt;br /&gt;
&lt;br /&gt;
De ce fait on peut imaginer des structures plus complexes, cylindriques dans le cas d'un flux d'une caméra à 360° ou plus simplement pour des simulateurs où les écrans seraient inclinés sans pour autant décrire un cercle autour de l'utilisateur.&lt;br /&gt;
&lt;br /&gt;
Cependant, pour des raisons évidentes d'effectif, de temps il est nécessaire de se réduire à une solution moins ambitieuse mais néanmoins acceptable.&lt;br /&gt;
&lt;br /&gt;
===Mercredi 17/01/18===&lt;br /&gt;
&lt;br /&gt;
* Mise en place d'un cahier des charge réalisable dans le temps imparti par rapport à la réponse théorique que l'on souhaiterai apporter au problème.&lt;br /&gt;
&lt;br /&gt;
Suite aux raisons évoquées précédemment, nous allons donc nous orienter vers un système à échelle réduite que nous ferons évoluer progressivement.&lt;br /&gt;
&lt;br /&gt;
Comme prévu nous diffuserons le flux vidéo initial, ''envoyé par Ethernet par une Raspberry Pi à partir d'un fichier stocké sur une clé usb par exemple'', aux 4 Raspberry intégrées aux écrans via un switch donc également par Ethernet (le port HDMI des R-Pi étant uniquement une sortie)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous effectuerons ensuite grâce aux R-Pi la modification du flux en fonction des écrans servant à l'affichage avant de rediriger la partie du flux qui nous intéresse vers les écrans.&lt;br /&gt;
&lt;br /&gt;
*'''Remarque:''' Dans un premier temps, pour une configuration donnée et avec les emplacement des écrans connues, il s'agit uniquement de réaliser la conversion d'affichage.&lt;br /&gt;
&lt;br /&gt;
Le fait de rendre les écrans intelligents n'est cependant pas ignoré et viendra dans un second temps, le choix de la méthode à employer étant encore en suspend. Nous allons cependant effectuer des hypothèses avec des capteurs.&lt;br /&gt;
&lt;br /&gt;
* Soit X et Y les dimensions du flux vidéo&lt;br /&gt;
* Soit U,R,D,L les états des capteurs sur un écran donné (respectivement, Up, Right, Down, Left) (1 pour actifs, 0 pour inactif)&lt;br /&gt;
* Soit I,J les indices des écrans (I = 0/1 et J = 0/1)&lt;br /&gt;
* Soit nb_X et nb_Y respectivement le nombre d'écrans en fonction des coordonnées i.e les dimensions de notre écran géant&lt;br /&gt;
&lt;br /&gt;
La configuration d'écran est la suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma (I,J)'''&lt;br /&gt;
&lt;br /&gt;
0,1 ; 1,1&lt;br /&gt;
&lt;br /&gt;
0,0 ; 1,0&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quel que soit l'écran, le flux qu'il devra recevoir sera situé entre [X1,X2] et [Y1,Y2].&lt;br /&gt;
Évidemment ces valeurs de l'emplacement de l'écran&lt;br /&gt;
&lt;br /&gt;
* Y2 = Y * ( D||U ) * (I+1) / nb_Y&lt;br /&gt;
* Y1 = Y * D * I / nb_Y&lt;br /&gt;
* X1 = X * L * J / nb_X&lt;br /&gt;
* X2 = X * ( L||R ) * (J+1) / nb_X&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 24/01/18===&lt;br /&gt;
Début de la gestion réseau du flux vidéo.&lt;br /&gt;
&lt;br /&gt;
Pour la partie théorique, nous allons donc procéder de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
Une Raspberry s'occupera de diffuser le flux sur le réseau via un commutateur. À partir d'un fichier vidéo interne.&lt;br /&gt;
&lt;br /&gt;
Les autres R-Pi disposeront d'un fichier de configuration qui contient les coordonnées à afficher en fonction de la position de l'écran, dans la première partie ce fichier sera directement implanté avec un contenu propre à chaque R-Pi mais dans la seconde il s'agira de les modifier automatiquement.&lt;br /&gt;
&lt;br /&gt;
Configuration eth0 sur la Raspberry pi : &lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
address 192.168.1.&amp;lt;2+numero_rpi&amp;gt;&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
&lt;br /&gt;
On commencera par créer un fichier fifo pour faire la transmission entre nc et OMXplayer&lt;br /&gt;
&lt;br /&gt;
Lecture du réseau : nc -l -p &amp;lt;port&amp;gt; &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Affichage : omxplayer --crop x1,y1,x2,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
[https://elinux.org/Omxplayer] : Documentation OMX player&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 31/01/18===&lt;br /&gt;
&lt;br /&gt;
Tentatives de communication PC (Source flux) à Raspberry (Écran) via nc : Échec&lt;br /&gt;
&lt;br /&gt;
* [PC source] : | nc &lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 1] : nc -l -p 12345 &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 2] : omxplayer --crop x1,y1,x1,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Avec x1,y1,x2,y2 les coordonnées des coins de la fenêtre à afficher&lt;br /&gt;
&lt;br /&gt;
Problème rencontré : la Raspberry n'arrive pas à obtenir une adresse joignable malgré une connexion directe avec le PC en ethernet&lt;br /&gt;
&lt;br /&gt;
* sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; iface eth0 inet dhcp&lt;br /&gt;
&lt;br /&gt;
* ifdown eth0&lt;br /&gt;
&lt;br /&gt;
* ifup eth0&lt;br /&gt;
&lt;br /&gt;
* ifconfig&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; inet adr:169.254.68.185&lt;br /&gt;
&lt;br /&gt;
Seconde tentative avec VLC en mode Streaming sur le PC source et VLC en écoute de stream avec VLC également : Échec (IP de la source = ?)&lt;br /&gt;
&lt;br /&gt;
Ligne de commande pour VLC de lecture&lt;br /&gt;
&lt;br /&gt;
* vlc -vvv http://IP_SOURCE:8080/PATH --crop X_RESxY_RES+LEFT_CROP+TOP_CROP -f&lt;br /&gt;
&lt;br /&gt;
PATH: paramètre donné lors du lancement du stream sur la machine source&lt;br /&gt;
&lt;br /&gt;
X_RES : Résolution X de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
Y_RES : Résolution Y de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
LEFT_CROP : Largeur de la zone coupée en partant de la gauche (en pixel)&lt;br /&gt;
&lt;br /&gt;
TOP_CROP : Hauteur de la zone coupée en partant du haut (en pixel)&lt;br /&gt;
&lt;br /&gt;
-f : Full screen&lt;br /&gt;
&lt;br /&gt;
* Test avec le mode de stream (une fois le problème résolu) : le lancement de la lecture sous VLC du côté de la raspberry entraîne des pertes considérables au niveau du flux vidéo avec des coupures très fréquentes (écran noir) ainsi qu'une forte consommation des ressources&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;photo 95%&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
===Lundi 05/02/18===&lt;br /&gt;
&lt;br /&gt;
Omxplayer demeure plus adapté puisqu'il n'entraîne pas une sur-consommation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;photo 0-3%&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mercredi 07/02/18===&lt;br /&gt;
&lt;br /&gt;
Envoie avec succès d'un fichier vidéo via netcat du PC source vers la Raspberry&lt;br /&gt;
&lt;br /&gt;
* $ nc -w 3 172.26.145.172 1234 &amp;lt; Downloads/dragons.mp4&lt;br /&gt;
&lt;br /&gt;
Où 172.26.145.172 est l'adresse obtenue par ifconfig sur la Raspberry.&lt;br /&gt;
&lt;br /&gt;
Réception avec :&lt;br /&gt;
&lt;br /&gt;
* $ nc -l -p 1234 &amp;gt; Downloads/test.mp4&lt;br /&gt;
&lt;br /&gt;
Commande de lecture : &lt;br /&gt;
&lt;br /&gt;
* $ omxplayer --aspect-mode stretch --crop X1,Y1,X2,Y2 Downloads/test.mp4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Récupération de la résolution du flux vidéo (ou fichier dans le cas actuel) : exiftool&lt;br /&gt;
&lt;br /&gt;
Nécessite un &amp;quot;exiftool&amp;quot; sur chaque Raspberry&lt;br /&gt;
&lt;br /&gt;
* $ sudo apt-get install exiftool&lt;br /&gt;
&lt;br /&gt;
* $ exiftool &amp;lt;file&amp;gt; | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f1&lt;br /&gt;
&lt;br /&gt;
Observation d'événements particuliers sur des dossiers&lt;br /&gt;
&lt;br /&gt;
* $ apt-get install inotify-tools&lt;br /&gt;
&lt;br /&gt;
Script d'observation et d’exécution d'action sur la création d'un fichier dans un dossier &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# CONFIGURATION&lt;br /&gt;
&lt;br /&gt;
DIR=&amp;quot;~/Downloads&amp;quot;&lt;br /&gt;
EVENTS=&amp;quot;create&amp;quot;&lt;br /&gt;
&lt;br /&gt;
NB_X=1&lt;br /&gt;
NB_Y=1&lt;br /&gt;
X=0&lt;br /&gt;
Y=0&lt;br /&gt;
&lt;br /&gt;
# MAIN&lt;br /&gt;
&lt;br /&gt;
inotifywait -m -e $EVENTS $DIR |&lt;br /&gt;
while read file&lt;br /&gt;
do&lt;br /&gt;
&lt;br /&gt;
        X1=0&lt;br /&gt;
        Y1=0&lt;br /&gt;
&lt;br /&gt;
        X2=exiftool /home/pifou/Downloads/hide-and-seek.mp4 | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f1 | awk '{print $1&amp;quot;*(1+X)/$NB_X&amp;quot;}' | bc&lt;br /&gt;
        Y2=exiftool /home/pifou/Downloads/hide-and-seek.mp4 | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f2 | awk '{print $1&amp;quot;*(1+Y)/$NB_Y&amp;quot;}' | bc&lt;br /&gt;
&lt;br /&gt;
        echo &amp;quot;File recieved : $file&amp;quot;;&lt;br /&gt;
        omxplayer --aspect-mode stretch --crop X1,Y1,X2,Y2 $DIR/$file;&lt;br /&gt;
        PID=$!;&lt;br /&gt;
        wait $PID;&lt;br /&gt;
        rm -f $DIR/$file;&lt;br /&gt;
        echo &amp;quot;File removed $file&amp;quot;;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 13/02/18===&lt;br /&gt;
&lt;br /&gt;
Récupération du temps de lecture (pour la commande wait)&lt;br /&gt;
&lt;br /&gt;
* exiftool &amp;lt;video&amp;gt; | grep -m 1 &amp;quot;Track Duration&amp;quot; | cut -d' ' -f21 | cut -d':' -fX&lt;br /&gt;
&lt;br /&gt;
X=1 -&amp;gt; heures ; 2 -&amp;gt; minutes ; 3 ; secondes&lt;br /&gt;
&lt;br /&gt;
Début de la conception d'une méthode d'acquisition de la position de l'écran relative aux autres.&lt;br /&gt;
&lt;br /&gt;
Un premier problème est présent pour la détection des coins dans une configuration d'écrans plus ou moins aléatoire&lt;br /&gt;
&lt;br /&gt;
Dans le cas de notre prototype à 4 écrans. Qu'ils soient disposés en carré ou en ligne à l'horizontale ou à la verticale, ça ne pose pas de problème puisqu'il suffit de juger à l'état des (futurs) capteurs disposé cependant dans le cas où l'on supprime un écran, on se retrouve avec des incohérences&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=50971</id>
		<title>IMA4 2017/2018 P14</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=50971"/>
				<updated>2018-02-14T18:02:29Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : /* Réalisation du Projet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
* '''Intitulé du projet''' : Proposer une solution permettant d'assembler des écrans de PC afin de créer un écran géant&lt;br /&gt;
&lt;br /&gt;
Le renouvellement de matériel informatique continu entraîne un nombre grandissant d'écrans d'ordinateur qui sont difficilement réutilisables compte tenu de leur petite taille. (17&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Afin de leur donner une seconde vie, ce projet a pour but de construire une plateforme permettant d'assembler ces écrans en un écran géant d'une forme &amp;quot;quelconque&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Exemple d'un cas d'écran carré'''&lt;br /&gt;
[[Fichier:Combinaison_ecrans.jpg]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
Afin de réaliser ce projet, il faudra :&lt;br /&gt;
&lt;br /&gt;
* Ajouter un Raspberry Pi sur chaque écran afin de le rentre &amp;quot;intelligent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Créer une application permettant de prendre un flux vidéo et de le diriger vers l'écran visé.&lt;br /&gt;
&lt;br /&gt;
* Permettre de déplacer facilement les écrans tout en maintenant le flux, que ce soit sur des configurations pleines en 2D ou des configurations plus complexes avec des espaces vides ou en 3D.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
* Le positionnement des écrans et la communication entre ces derniers.&lt;br /&gt;
&lt;br /&gt;
Pour une application telle qu'un écran géant composé de plusieurs écran, il est difficilement envisageable d'utiliser un système de coordonnées GPS pour repérer des écrans qui sont particulièrement proches les uns des autres. &lt;br /&gt;
En revanche il est tout à fait réaliste de penser à un système de capteurs de contact/proximité, disposés sur les bords des écrans pour leur permettre de s’emboîter puis il ne resterait qu'à exploiter les possibilités proposées par les Raspberry Pi ainsi qu'un système de coordonnées réalisé dans ce but pour déterminer où l'écran se situe par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
* La gestion du flux vidéo&lt;br /&gt;
&lt;br /&gt;
Le système sera potentiellement réalisé de sorte que chaque écran soit autonome dans son fonctionnement, une fois sa position relative déterminée au préalable.&lt;br /&gt;
En effet, pour le moment le problème était surtout dans le positionnement des écrans plus que dans la gestion du flux vidéo, à priori.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Est-ce que le système peut continuer de fonctionner si on retire l'un des écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pour pallier au problème d'un retrait d'écran, ou d'un disfonctionnement éventuel localisé, une solution possible est de fournir à chaque écran la totalité du flux vidéo.&lt;br /&gt;
Ceci permet dans un premier temps de s'affranchir d'un traitement vidéo avant distribution mais surtout que les autres écrans puissent fonctionner sans interruption due à un écran en particulier  &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Peut-il y avoir des décalages d'affichage entre les écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Malgré l'absence de possibilités de test pour le moment, on peut néanmoins supposer qu'il n'y ait pas de décalage. &lt;br /&gt;
Chaque écran va recevoir le flux vidéo puis en fonction du positionnement des écrans, et on pourra utiliser le système de coordonnées pour effectuer une &amp;quot;selection&amp;quot; sur la partie à afficher.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une configuration de 4 écrans en rectangle, il faudrait donc que l'écran inférieur gauche n'affiche que l'image correspondante jusqu'à la moitié, ensuite l'écran inférieur droit s'occuperait de l'affichage de la partie inférieure droite, etc&lt;br /&gt;
&lt;br /&gt;
En agrandissant le procédé à plus d'écrans, on trouve facilement une méthode de calcul.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet où il s'agira d'être capable de fournir une solution matérielle à la problématique, on s'orientera vers un prototype n'incluant que 4 écrans. Ceci permet à la fois d'éviter un encombrement matériel mais aussi .&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
* 5 Raspberry Pi 3 [https://fr.rs-online.com/web/p/processor-microcontroller-development-kits/8968660/?src=raspberrypi] lien 2 [https://www.mouser.fr/ProductDetail/Adafruit/3055?qs=sGAEpiMZZMuG6%2fXKM6MUaQgA7zSPt2LlznodoAe%252bkgk%3d]&lt;br /&gt;
&lt;br /&gt;
* Un Commutateur (5 Ports +)&lt;br /&gt;
&lt;br /&gt;
* 5 Câbles Ethernet&lt;br /&gt;
&lt;br /&gt;
* 4 Câbles VGA&lt;br /&gt;
&lt;br /&gt;
* 4 Adaptateur VGA-femelle vers HDMI-mâle&lt;br /&gt;
&lt;br /&gt;
* 16 [pack 25] Capteur de contact (1 par côté) [https://fr.rs-online.com/web/p/capteurs-proximites/7985273/] '''Envisagés pour la seconde partie du projet mais non validés pour le moment !'''&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
* 1) Régler le problème de la gestion du flux vidéo par le réseau ainsi qu'au niveau des Raspberry-Pi&lt;br /&gt;
&lt;br /&gt;
'''Hypothèse''': pour une configuration d'écran donnée, on suppose les écrans déjà intelligent et on dispose de leur emplacement relatif.&lt;br /&gt;
&lt;br /&gt;
* 2) Une fois la première version fonctionnelle, s'orienter vers la mise en place du système intelligent&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| Lundi 15/01/18 : 3h30&lt;br /&gt;
Mercredi 17/01/18 : 4h&lt;br /&gt;
| Mercredi 24/01/18 : 4h&lt;br /&gt;
| Mercredi 31/01/18 : 4h&lt;br /&gt;
| Lundi 05/02/18 : 2h&lt;br /&gt;
Mercredi 07/02/18 : 4h&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
===Lundi 15/01/18===&lt;br /&gt;
&lt;br /&gt;
* Première séance ayant pour but de synthétiser l'idée théorique souhaitée par le projet.&lt;br /&gt;
&lt;br /&gt;
On imagine un système d'ensemble d'écrans autonomes mais qui communiquent leur emplacement entre eux, dans le sens où il n'est pas nécessaire de reconfigurer à chaque modification sur l'emplacement des écrans.&lt;br /&gt;
&lt;br /&gt;
Le système est pour ainsi dire évolutif puisqu'à chaque modification, exemple: passage d'un écran géant de 2*2 à 2*3 ou 3*2 (ou plus), les affichages peuvent modifier la zone du flux vidéo à afficher afin de conserver une image sur la totalité des écrans.&lt;br /&gt;
&lt;br /&gt;
De ce fait on peut imaginer des structures plus complexes, cylindriques dans le cas d'un flux d'une caméra à 360° ou plus simplement pour des simulateurs où les écrans seraient inclinés sans pour autant décrire un cercle autour de l'utilisateur.&lt;br /&gt;
&lt;br /&gt;
Cependant, pour des raisons évidentes d'effectif, de temps il est nécessaire de se réduire à une solution moins ambitieuse mais néanmoins acceptable.&lt;br /&gt;
&lt;br /&gt;
===Mercredi 17/01/18===&lt;br /&gt;
&lt;br /&gt;
* Mise en place d'un cahier des charge réalisable dans le temps imparti par rapport à la réponse théorique que l'on souhaiterai apporter au problème.&lt;br /&gt;
&lt;br /&gt;
Suite aux raisons évoquées précédemment, nous allons donc nous orienter vers un système à échelle réduite que nous ferons évoluer progressivement.&lt;br /&gt;
&lt;br /&gt;
Comme prévu nous diffuserons le flux vidéo initial, ''envoyé par Ethernet par une Raspberry Pi à partir d'un fichier stocké sur une clé usb par exemple'', aux 4 Raspberry intégrées aux écrans via un switch donc également par Ethernet (le port HDMI des R-Pi étant uniquement une sortie)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous effectuerons ensuite grâce aux R-Pi la modification du flux en fonction des écrans servant à l'affichage avant de rediriger la partie du flux qui nous intéresse vers les écrans.&lt;br /&gt;
&lt;br /&gt;
*'''Remarque:''' Dans un premier temps, pour une configuration donnée et avec les emplacement des écrans connues, il s'agit uniquement de réaliser la conversion d'affichage.&lt;br /&gt;
&lt;br /&gt;
Le fait de rendre les écrans intelligents n'est cependant pas ignoré et viendra dans un second temps, le choix de la méthode à employer étant encore en suspend. Nous allons cependant effectuer des hypothèses avec des capteurs.&lt;br /&gt;
&lt;br /&gt;
* Soit X et Y les dimensions du flux vidéo&lt;br /&gt;
* Soit U,R,D,L les états des capteurs sur un écran donné (respectivement, Up, Right, Down, Left) (1 pour actifs, 0 pour inactif)&lt;br /&gt;
* Soit I,J les indices des écrans (I = 0/1 et J = 0/1)&lt;br /&gt;
* Soit nb_X et nb_Y respectivement le nombre d'écrans en fonction des coordonnées i.e les dimensions de notre écran géant&lt;br /&gt;
&lt;br /&gt;
La configuration d'écran est la suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma (I,J)'''&lt;br /&gt;
&lt;br /&gt;
0,1 ; 1,1&lt;br /&gt;
&lt;br /&gt;
0,0 ; 1,0&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quel que soit l'écran, le flux qu'il devra recevoir sera situé entre [X1,X2] et [Y1,Y2].&lt;br /&gt;
Évidemment ces valeurs de l'emplacement de l'écran&lt;br /&gt;
&lt;br /&gt;
* Y2 = Y * ( D||U ) * (I+1) / nb_Y&lt;br /&gt;
* Y1 = Y * D * I / nb_Y&lt;br /&gt;
* X1 = X * L * J / nb_X&lt;br /&gt;
* X2 = X * ( L||R ) * (J+1) / nb_X&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 24/01/18===&lt;br /&gt;
Début de la gestion réseau du flux vidéo.&lt;br /&gt;
&lt;br /&gt;
Pour la partie théorique, nous allons donc procéder de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
Une Raspberry s'occupera de diffuser le flux sur le réseau via un commutateur. À partir d'un fichier vidéo interne.&lt;br /&gt;
&lt;br /&gt;
Les autres R-Pi disposeront d'un fichier de configuration qui contient les coordonnées à afficher en fonction de la position de l'écran, dans la première partie ce fichier sera directement implanté avec un contenu propre à chaque R-Pi mais dans la seconde il s'agira de les modifier automatiquement.&lt;br /&gt;
&lt;br /&gt;
Configuration eth0 sur la Raspberry pi : &lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
address 192.168.1.&amp;lt;2+numero_rpi&amp;gt;&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
&lt;br /&gt;
On commencera par créer un fichier fifo pour faire la transmission entre nc et OMXplayer&lt;br /&gt;
&lt;br /&gt;
Lecture du réseau : nc -l -p &amp;lt;port&amp;gt; &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Affichage : omxplayer --crop x1,y1,x2,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
[https://elinux.org/Omxplayer] : Documentation OMX player&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 31/01/18===&lt;br /&gt;
&lt;br /&gt;
Tentatives de communication PC (Source flux) à Raspberry (Écran) via nc : Échec&lt;br /&gt;
&lt;br /&gt;
* [PC source] : | nc &lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 1] : nc -l -p 12345 &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 2] : omxplayer --crop x1,y1,x1,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Avec x1,y1,x2,y2 les coordonnées des coins de la fenêtre à afficher&lt;br /&gt;
&lt;br /&gt;
Problème rencontré : la Raspberry n'arrive pas à obtenir une adresse joignable malgré une connexion directe avec le PC en ethernet&lt;br /&gt;
&lt;br /&gt;
* sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; iface eth0 inet dhcp&lt;br /&gt;
&lt;br /&gt;
* ifdown eth0&lt;br /&gt;
&lt;br /&gt;
* ifup eth0&lt;br /&gt;
&lt;br /&gt;
* ifconfig&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; inet adr:169.254.68.185&lt;br /&gt;
&lt;br /&gt;
Seconde tentative avec VLC en mode Streaming sur le PC source et VLC en écoute de stream avec VLC également : Échec (IP de la source = ?)&lt;br /&gt;
&lt;br /&gt;
Ligne de commande pour VLC de lecture&lt;br /&gt;
&lt;br /&gt;
* vlc -vvv http://IP_SOURCE:8080/PATH --crop X_RESxY_RES+LEFT_CROP+TOP_CROP -f&lt;br /&gt;
&lt;br /&gt;
PATH: paramètre donné lors du lancement du stream sur la machine source&lt;br /&gt;
&lt;br /&gt;
X_RES : Résolution X de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
Y_RES : Résolution Y de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
LEFT_CROP : Largeur de la zone coupée en partant de la gauche (en pixel)&lt;br /&gt;
&lt;br /&gt;
TOP_CROP : Hauteur de la zone coupée en partant du haut (en pixel)&lt;br /&gt;
&lt;br /&gt;
-f : Full screen&lt;br /&gt;
&lt;br /&gt;
* Test avec le mode de stream (une fois le problème résolu) : le lancement de la lecture sous VLC du côté de la raspberry entraîne des pertes considérables au niveau du flux vidéo avec des coupures très fréquentes (écran noir) ainsi qu'une forte consommation des ressources&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;photo 95%&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
===Lundi 05/02/18===&lt;br /&gt;
&lt;br /&gt;
Omxplayer demeure plus adapté puisqu'il n'entraîne pas une sur-consommation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;photo 0-3%&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mercredi 07/02/18===&lt;br /&gt;
&lt;br /&gt;
Envoie avec succès d'un fichier vidéo via netcat du PC source vers la Raspberry&lt;br /&gt;
&lt;br /&gt;
* $ nc -w 3 172.26.145.172 1234 &amp;lt; Downloads/dragons.mp4&lt;br /&gt;
&lt;br /&gt;
Où 172.26.145.172 est l'adresse obtenue par ifconfig sur la Raspberry.&lt;br /&gt;
&lt;br /&gt;
Réception avec :&lt;br /&gt;
&lt;br /&gt;
* $ nc -l -p 1234 &amp;gt; Downloads/test.mp4&lt;br /&gt;
&lt;br /&gt;
Commande de lecture : &lt;br /&gt;
&lt;br /&gt;
* $ omxplayer --aspect-mode stretch --crop X1,Y1,X2,Y2 Downloads/test.mp4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Récupération de la résolution du flux vidéo (ou fichier dans le cas actuel) : exiftool&lt;br /&gt;
&lt;br /&gt;
Nécessite un &amp;quot;exiftool&amp;quot; sur chaque Raspberry&lt;br /&gt;
&lt;br /&gt;
* $ sudo apt-get install exiftool&lt;br /&gt;
&lt;br /&gt;
* $ exiftool &amp;lt;file&amp;gt; | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f1&lt;br /&gt;
&lt;br /&gt;
Observation d'événements particuliers sur des dossiers&lt;br /&gt;
&lt;br /&gt;
* $ apt-get install inotify-tools&lt;br /&gt;
&lt;br /&gt;
Script d'observation et d’exécution d'action sur la création d'un fichier dans un dossier &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# CONFIGURATION&lt;br /&gt;
&lt;br /&gt;
DIR=&amp;quot;~/Downloads&amp;quot;&lt;br /&gt;
EVENTS=&amp;quot;create&amp;quot;&lt;br /&gt;
&lt;br /&gt;
NB_X=1&lt;br /&gt;
NB_Y=1&lt;br /&gt;
X=0&lt;br /&gt;
Y=0&lt;br /&gt;
&lt;br /&gt;
# MAIN&lt;br /&gt;
&lt;br /&gt;
inotifywait -m -e $EVENTS $DIR |&lt;br /&gt;
while read file&lt;br /&gt;
do&lt;br /&gt;
&lt;br /&gt;
        X1=0&lt;br /&gt;
        Y1=0&lt;br /&gt;
&lt;br /&gt;
        X2=exiftool /home/pifou/Downloads/hide-and-seek.mp4 | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f1 | awk '{print $1&amp;quot;*(1+X)/$NB_X&amp;quot;}' | bc&lt;br /&gt;
        Y2=exiftool /home/pifou/Downloads/hide-and-seek.mp4 | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f2 | awk '{print $1&amp;quot;*(1+Y)/$NB_Y&amp;quot;}' | bc&lt;br /&gt;
&lt;br /&gt;
        echo &amp;quot;File recieved : $file&amp;quot;;&lt;br /&gt;
        omxplayer --aspect-mode stretch --crop X1,Y1,X2,Y2 $DIR/$file;&lt;br /&gt;
        PID=$!;&lt;br /&gt;
        wait $PID;&lt;br /&gt;
        rm -f $DIR/$file;&lt;br /&gt;
        echo &amp;quot;File removed $file&amp;quot;;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 13/02/18===&lt;br /&gt;
&lt;br /&gt;
Récupération du temps de lecture (pour la commande wait)&lt;br /&gt;
&lt;br /&gt;
* exiftool &amp;lt;video&amp;gt; | grep -m 1 &amp;quot;Track Duration&amp;quot; | cut -d' ' -f21 | cut -d':' -fX&lt;br /&gt;
&lt;br /&gt;
X=1 -&amp;gt; heures ; 2 -&amp;gt; minutes ; 3 ; secondes&lt;br /&gt;
&lt;br /&gt;
Début de la conception d'une méthode d'acquisition de la position de l'écran relative aux autres.&lt;br /&gt;
&lt;br /&gt;
Un premier problème est présent pour la détection des coins dans une configuration d'écrans plus ou moins aléatoire&lt;br /&gt;
&lt;br /&gt;
Dans le cas de notre prototype à 4 écrans. Qu'ils soient disposés en carré ou en ligne à l'horizontale ou à la verticale, ça ne pose pas de problème puisqu'il suffit de juger à l'état des (futurs) capteurs disposé cependant dans le cas où l'on supprime un écran, on se retrouve avec des incohérences&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=50752</id>
		<title>IMA4 2017/2018 P14</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=50752"/>
				<updated>2018-02-14T14:25:22Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : /* Semaine 5 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
* '''Intitulé du projet''' : Proposer une solution permettant d'assembler des écrans de PC afin de créer un écran géant&lt;br /&gt;
&lt;br /&gt;
Le renouvellement de matériel informatique continu entraîne un nombre grandissant d'écrans d'ordinateur qui sont difficilement réutilisables compte tenu de leur petite taille. (17&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Afin de leur donner une seconde vie, ce projet a pour but de construire une plateforme permettant d'assembler ces écrans en un écran géant d'une forme &amp;quot;quelconque&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Exemple d'un cas d'écran carré'''&lt;br /&gt;
[[Fichier:Combinaison_ecrans.jpg]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
Afin de réaliser ce projet, il faudra :&lt;br /&gt;
&lt;br /&gt;
* Ajouter un Raspberry Pi sur chaque écran afin de le rentre &amp;quot;intelligent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Créer une application permettant de prendre un flux vidéo et de le diriger vers l'écran visé.&lt;br /&gt;
&lt;br /&gt;
* Permettre de déplacer facilement les écrans tout en maintenant le flux, que ce soit sur des configurations pleines en 2D ou des configurations plus complexes avec des espaces vides ou en 3D.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
* Le positionnement des écrans et la communication entre ces derniers.&lt;br /&gt;
&lt;br /&gt;
Pour une application telle qu'un écran géant composé de plusieurs écran, il est difficilement envisageable d'utiliser un système de coordonnées GPS pour repérer des écrans qui sont particulièrement proches les uns des autres. &lt;br /&gt;
En revanche il est tout à fait réaliste de penser à un système de capteurs de contact/proximité, disposés sur les bords des écrans pour leur permettre de s’emboîter puis il ne resterait qu'à exploiter les possibilités proposées par les Raspberry Pi ainsi qu'un système de coordonnées réalisé dans ce but pour déterminer où l'écran se situe par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
* La gestion du flux vidéo&lt;br /&gt;
&lt;br /&gt;
Le système sera potentiellement réalisé de sorte que chaque écran soit autonome dans son fonctionnement, une fois sa position relative déterminée au préalable.&lt;br /&gt;
En effet, pour le moment le problème était surtout dans le positionnement des écrans plus que dans la gestion du flux vidéo, à priori.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Est-ce que le système peut continuer de fonctionner si on retire l'un des écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pour pallier au problème d'un retrait d'écran, ou d'un disfonctionnement éventuel localisé, une solution possible est de fournir à chaque écran la totalité du flux vidéo.&lt;br /&gt;
Ceci permet dans un premier temps de s'affranchir d'un traitement vidéo avant distribution mais surtout que les autres écrans puissent fonctionner sans interruption due à un écran en particulier  &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Peut-il y avoir des décalages d'affichage entre les écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Malgré l'absence de possibilités de test pour le moment, on peut néanmoins supposer qu'il n'y ait pas de décalage. &lt;br /&gt;
Chaque écran va recevoir le flux vidéo puis en fonction du positionnement des écrans, et on pourra utiliser le système de coordonnées pour effectuer une &amp;quot;selection&amp;quot; sur la partie à afficher.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une configuration de 4 écrans en rectangle, il faudrait donc que l'écran inférieur gauche n'affiche que l'image correspondante jusqu'à la moitié, ensuite l'écran inférieur droit s'occuperait de l'affichage de la partie inférieure droite, etc&lt;br /&gt;
&lt;br /&gt;
En agrandissant le procédé à plus d'écrans, on trouve facilement une méthode de calcul.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet où il s'agira d'être capable de fournir une solution matérielle à la problématique, on s'orientera vers un prototype n'incluant que 4 écrans. Ceci permet à la fois d'éviter un encombrement matériel mais aussi .&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
* 5 Raspberry Pi 3 [https://fr.rs-online.com/web/p/processor-microcontroller-development-kits/8968660/?src=raspberrypi] lien 2 [https://www.mouser.fr/ProductDetail/Adafruit/3055?qs=sGAEpiMZZMuG6%2fXKM6MUaQgA7zSPt2LlznodoAe%252bkgk%3d]&lt;br /&gt;
&lt;br /&gt;
* Un Commutateur (5 Ports +)&lt;br /&gt;
&lt;br /&gt;
* 5 Câbles Ethernet&lt;br /&gt;
&lt;br /&gt;
* 4 Câbles VGA&lt;br /&gt;
&lt;br /&gt;
* 4 Adaptateur VGA-femelle vers HDMI-mâle&lt;br /&gt;
&lt;br /&gt;
* 16 [pack 25] Capteur de contact (1 par côté) [https://fr.rs-online.com/web/p/capteurs-proximites/7985273/] '''Envisagés pour la seconde partie du projet mais non validés pour le moment !'''&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
* 1) Régler le problème de la gestion du flux vidéo par le réseau ainsi qu'au niveau des Raspberry-Pi&lt;br /&gt;
&lt;br /&gt;
'''Hypothèse''': pour une configuration d'écran donnée, on suppose les écrans déjà intelligent et on dispose de leur emplacement relatif.&lt;br /&gt;
&lt;br /&gt;
* 2) Une fois la première version fonctionnelle, s'orienter vers la mise en place du système intelligent&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| Lundi 15/01/18 : 3h30&lt;br /&gt;
Mercredi 17/01/18 : 4h&lt;br /&gt;
| Mercredi 24/01/18 : 4h&lt;br /&gt;
| Mercredi 31/01/18 : 4h&lt;br /&gt;
| Lundi 05/02/18 : 2h&lt;br /&gt;
Mercredi 07/02/18 : 4h&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
===Lundi 15/01/18===&lt;br /&gt;
&lt;br /&gt;
* Première séance ayant pour but de synthétiser l'idée théorique souhaitée par le projet.&lt;br /&gt;
&lt;br /&gt;
On imagine un système d'ensemble d'écrans autonomes mais qui communiquent leur emplacement entre eux, dans le sens où il n'est pas nécessaire de reconfigurer à chaque modification sur l'emplacement des écrans.&lt;br /&gt;
&lt;br /&gt;
Le système est pour ainsi dire évolutif puisqu'à chaque modification, exemple: passage d'un écran géant de 2*2 à 2*3 ou 3*2 (ou plus), les affichages peuvent modifier la zone du flux vidéo à afficher afin de conserver une image sur la totalité des écrans.&lt;br /&gt;
&lt;br /&gt;
De ce fait on peut imaginer des structures plus complexes, cylindriques dans le cas d'un flux d'une caméra à 360° ou plus simplement pour des simulateurs où les écrans seraient inclinés sans pour autant décrire un cercle autour de l'utilisateur.&lt;br /&gt;
&lt;br /&gt;
Cependant, pour des raisons évidentes d'effectif, de temps il est nécessaire de se réduire à une solution moins ambitieuse mais néanmoins acceptable.&lt;br /&gt;
&lt;br /&gt;
===Mercredi 17/01/18===&lt;br /&gt;
&lt;br /&gt;
* Mise en place d'un cahier des charge réalisable dans le temps imparti par rapport à la réponse théorique que l'on souhaiterai apporter au problème.&lt;br /&gt;
&lt;br /&gt;
Suite aux raisons évoquées précédemment, nous allons donc nous orienter vers un système à échelle réduite que nous ferons évoluer progressivement.&lt;br /&gt;
&lt;br /&gt;
Comme prévu nous diffuserons le flux vidéo initial, ''envoyé par Ethernet par une Raspberry Pi à partir d'un fichier stocké sur une clé usb par exemple'', aux 4 Raspberry intégrées aux écrans via un switch donc également par Ethernet (le port HDMI des R-Pi étant uniquement une sortie)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous effectuerons ensuite grâce aux R-Pi la modification du flux en fonction des écrans servant à l'affichage avant de rediriger la partie du flux qui nous intéresse vers les écrans.&lt;br /&gt;
&lt;br /&gt;
*'''Remarque:''' Dans un premier temps, pour une configuration donnée et avec les emplacement des écrans connues, il s'agit uniquement de réaliser la conversion d'affichage.&lt;br /&gt;
&lt;br /&gt;
Le fait de rendre les écrans intelligents n'est cependant pas ignoré et viendra dans un second temps, le choix de la méthode à employer étant encore en suspend. Nous allons cependant effectuer des hypothèses avec des capteurs.&lt;br /&gt;
&lt;br /&gt;
* Soit X et Y les dimensions du flux vidéo&lt;br /&gt;
* Soit U,R,D,L les états des capteurs sur un écran donné (respectivement, Up, Right, Down, Left) (1 pour actifs, 0 pour inactif)&lt;br /&gt;
* Soit I,J les indices des écrans (I = 0/1 et J = 0/1)&lt;br /&gt;
* Soit nb_X et nb_Y respectivement le nombre d'écrans en fonction des coordonnées i.e les dimensions de notre écran géant&lt;br /&gt;
&lt;br /&gt;
La configuration d'écran est la suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma (I,J)'''&lt;br /&gt;
&lt;br /&gt;
0,1 ; 1,1&lt;br /&gt;
&lt;br /&gt;
0,0 ; 1,0&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quel que soit l'écran, le flux qu'il devra recevoir sera situé entre [X1,X2] et [Y1,Y2].&lt;br /&gt;
Évidemment ces valeurs de l'emplacement de l'écran&lt;br /&gt;
&lt;br /&gt;
* Y2 = Y * ( D||U ) * (I+1) / nb_Y&lt;br /&gt;
* Y1 = Y * D * I / nb_Y&lt;br /&gt;
* X1 = X * L * J / nb_X&lt;br /&gt;
* X2 = X * ( L||R ) * (J+1) / nb_X&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 24/01/18===&lt;br /&gt;
Début de la gestion réseau du flux vidéo.&lt;br /&gt;
&lt;br /&gt;
Pour la partie théorique, nous allons donc procéder de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
Une Raspberry s'occupera de diffuser le flux sur le réseau via un commutateur. À partir d'un fichier vidéo interne.&lt;br /&gt;
&lt;br /&gt;
Les autres R-Pi disposeront d'un fichier de configuration qui contient les coordonnées à afficher en fonction de la position de l'écran, dans la première partie ce fichier sera directement implanté avec un contenu propre à chaque R-Pi mais dans la seconde il s'agira de les modifier automatiquement.&lt;br /&gt;
&lt;br /&gt;
Configuration eth0 sur la Raspberry pi : &lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
address 192.168.1.&amp;lt;2+numero_rpi&amp;gt;&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
&lt;br /&gt;
On commencera par créer un fichier fifo pour faire la transmission entre nc et OMXplayer&lt;br /&gt;
&lt;br /&gt;
Lecture du réseau : nc -l -p &amp;lt;port&amp;gt; &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Affichage : omxplayer --crop x1,y1,x2,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
[https://elinux.org/Omxplayer] : Documentation OMX player&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 31/01/18===&lt;br /&gt;
&lt;br /&gt;
Tentatives de communication PC (Source flux) à Raspberry (Écran) via nc : Échec&lt;br /&gt;
&lt;br /&gt;
* [PC source] : | nc &lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 1] : nc -l -p 12345 &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 2] : omxplayer --crop x1,y1,x1,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Avec x1,y1,x2,y2 les coordonnées des coins de la fenêtre à afficher&lt;br /&gt;
&lt;br /&gt;
Problème rencontré : la Raspberry n'arrive pas à obtenir une adresse joignable malgré une connexion directe avec le PC en ethernet&lt;br /&gt;
&lt;br /&gt;
* sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; iface eth0 inet dhcp&lt;br /&gt;
&lt;br /&gt;
* ifdown eth0&lt;br /&gt;
&lt;br /&gt;
* ifup eth0&lt;br /&gt;
&lt;br /&gt;
* ifconfig&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; inet adr:169.254.68.185&lt;br /&gt;
&lt;br /&gt;
Seconde tentative avec VLC en mode Streaming sur le PC source et VLC en écoute de stream avec VLC également : Échec (IP de la source = ?)&lt;br /&gt;
&lt;br /&gt;
Ligne de commande pour VLC de lecture&lt;br /&gt;
&lt;br /&gt;
* vlc -vvv http://IP_SOURCE:8080/PATH --crop X_RESxY_RES+LEFT_CROP+TOP_CROP -f&lt;br /&gt;
&lt;br /&gt;
PATH: paramètre donné lors du lancement du stream sur la machine source&lt;br /&gt;
&lt;br /&gt;
X_RES : Résolution X de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
Y_RES : Résolution Y de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
LEFT_CROP : Largeur de la zone coupée en partant de la gauche (en pixel)&lt;br /&gt;
&lt;br /&gt;
TOP_CROP : Hauteur de la zone coupée en partant du haut (en pixel)&lt;br /&gt;
&lt;br /&gt;
-f : Full screen&lt;br /&gt;
&lt;br /&gt;
* Test avec le mode de stream (une fois le problème résolu) : le lancement de la lecture sous VLC du côté de la raspberry entraîne des pertes considérables au niveau du flux vidéo avec des coupures très fréquentes (écran noir) ainsi qu'une forte consommation des ressources&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;photo 95%&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
===Lundi 05/02/18===&lt;br /&gt;
&lt;br /&gt;
Omxplayer demeure plus adapté puisqu'il n'entraîne pas une sur-consommation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;photo 0-3%&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mercredi 07/02/18===&lt;br /&gt;
&lt;br /&gt;
Envoie avec succès d'un fichier vidéo via netcat du PC source vers la Raspberry&lt;br /&gt;
&lt;br /&gt;
* $ nc -w 3 172.26.145.172 1234 &amp;lt; Downloads/dragons.mp4&lt;br /&gt;
&lt;br /&gt;
Où 172.26.145.172 est l'adresse obtenue par ifconfig sur la Raspberry.&lt;br /&gt;
&lt;br /&gt;
Réception avec :&lt;br /&gt;
&lt;br /&gt;
* $ nc -l -p 1234 &amp;gt; Downloads/test.mp4&lt;br /&gt;
&lt;br /&gt;
Commande de lecture : &lt;br /&gt;
&lt;br /&gt;
* $ omxplayer --aspect-mode stretch --crop X1,Y1,X2,Y2 Downloads/test.mp4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Récupération de la résolution du flux vidéo (ou fichier dans le cas actuel) : exiftool&lt;br /&gt;
&lt;br /&gt;
Nécessite un &amp;quot;exiftool&amp;quot; sur chaque Raspberry&lt;br /&gt;
&lt;br /&gt;
* $ sudo apt-get install exiftool&lt;br /&gt;
&lt;br /&gt;
* $ exiftool &amp;lt;file&amp;gt; | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f1&lt;br /&gt;
&lt;br /&gt;
Observation d'événements particuliers sur des dossiers&lt;br /&gt;
&lt;br /&gt;
* $ apt-get install inotify-tools&lt;br /&gt;
&lt;br /&gt;
Script d'observation et d’exécution d'action sur la création d'un fichier dans un dossier &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# CONFIGURATION&lt;br /&gt;
&lt;br /&gt;
DIR=&amp;quot;/home/pifou/Downloads&amp;quot;&lt;br /&gt;
EVENTS=&amp;quot;create&amp;quot;&lt;br /&gt;
&lt;br /&gt;
NB_X=1&lt;br /&gt;
NB_Y=1&lt;br /&gt;
&lt;br /&gt;
# MAIN&lt;br /&gt;
&lt;br /&gt;
inotifywait -m -e $EVENTS $DIR |&lt;br /&gt;
while read file&lt;br /&gt;
do&lt;br /&gt;
&lt;br /&gt;
        X1=0&lt;br /&gt;
        Y1=0&lt;br /&gt;
&lt;br /&gt;
        X2=exiftool /home/pifou/Downloads/hide-and-seek.mp4 | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f1 | awk '{print $1&amp;quot;/$NB_X&amp;quot;}' | bc&lt;br /&gt;
        Y2=exiftool /home/pifou/Downloads/hide-and-seek.mp4 | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f2 | awk '{print $1&amp;quot;/$NB_Y&amp;quot;}' | bc&lt;br /&gt;
&lt;br /&gt;
        echo &amp;quot;File recieved : $file&amp;quot;;&lt;br /&gt;
        omxplayer --aspect-mode stretch --crop X1,Y1,X2,Y2 $DIR/$file;&lt;br /&gt;
        PID=$!;&lt;br /&gt;
        wait $PID;&lt;br /&gt;
        rm -f $DIR/$file;&lt;br /&gt;
        echo &amp;quot;File removed $file&amp;quot;;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
Récupération du temps de lecture (pour la commande wait)&lt;br /&gt;
&lt;br /&gt;
* exiftool &amp;lt;video&amp;gt; | grep -m 1 &amp;quot;Track Duration&amp;quot; | cut -d' ' -f21 | cut -d':' -fX&lt;br /&gt;
&lt;br /&gt;
X=1 -&amp;gt; heures ; 2 -&amp;gt; minutes ; 3 ; secondes&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=50302</id>
		<title>IMA4 2017/2018 P14</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=50302"/>
				<updated>2018-02-07T19:37:25Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : /* Feuille d'heures */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
* '''Intitulé du projet''' : Proposer une solution permettant d'assembler des écrans de PC afin de créer un écran géant&lt;br /&gt;
&lt;br /&gt;
Le renouvellement de matériel informatique continu entraîne un nombre grandissant d'écrans d'ordinateur qui sont difficilement réutilisables compte tenu de leur petite taille. (17&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Afin de leur donner une seconde vie, ce projet a pour but de construire une plateforme permettant d'assembler ces écrans en un écran géant d'une forme &amp;quot;quelconque&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Exemple d'un cas d'écran carré'''&lt;br /&gt;
[[Fichier:Combinaison_ecrans.jpg]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
Afin de réaliser ce projet, il faudra :&lt;br /&gt;
&lt;br /&gt;
* Ajouter un Raspberry Pi sur chaque écran afin de le rentre &amp;quot;intelligent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Créer une application permettant de prendre un flux vidéo et de le diriger vers l'écran visé.&lt;br /&gt;
&lt;br /&gt;
* Permettre de déplacer facilement les écrans tout en maintenant le flux, que ce soit sur des configurations pleines en 2D ou des configurations plus complexes avec des espaces vides ou en 3D.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
* Le positionnement des écrans et la communication entre ces derniers.&lt;br /&gt;
&lt;br /&gt;
Pour une application telle qu'un écran géant composé de plusieurs écran, il est difficilement envisageable d'utiliser un système de coordonnées GPS pour repérer des écrans qui sont particulièrement proches les uns des autres. &lt;br /&gt;
En revanche il est tout à fait réaliste de penser à un système de capteurs de contact/proximité, disposés sur les bords des écrans pour leur permettre de s’emboîter puis il ne resterait qu'à exploiter les possibilités proposées par les Raspberry Pi ainsi qu'un système de coordonnées réalisé dans ce but pour déterminer où l'écran se situe par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
* La gestion du flux vidéo&lt;br /&gt;
&lt;br /&gt;
Le système sera potentiellement réalisé de sorte que chaque écran soit autonome dans son fonctionnement, une fois sa position relative déterminée au préalable.&lt;br /&gt;
En effet, pour le moment le problème était surtout dans le positionnement des écrans plus que dans la gestion du flux vidéo, à priori.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Est-ce que le système peut continuer de fonctionner si on retire l'un des écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pour pallier au problème d'un retrait d'écran, ou d'un disfonctionnement éventuel localisé, une solution possible est de fournir à chaque écran la totalité du flux vidéo.&lt;br /&gt;
Ceci permet dans un premier temps de s'affranchir d'un traitement vidéo avant distribution mais surtout que les autres écrans puissent fonctionner sans interruption due à un écran en particulier  &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Peut-il y avoir des décalages d'affichage entre les écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Malgré l'absence de possibilités de test pour le moment, on peut néanmoins supposer qu'il n'y ait pas de décalage. &lt;br /&gt;
Chaque écran va recevoir le flux vidéo puis en fonction du positionnement des écrans, et on pourra utiliser le système de coordonnées pour effectuer une &amp;quot;selection&amp;quot; sur la partie à afficher.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une configuration de 4 écrans en rectangle, il faudrait donc que l'écran inférieur gauche n'affiche que l'image correspondante jusqu'à la moitié, ensuite l'écran inférieur droit s'occuperait de l'affichage de la partie inférieure droite, etc&lt;br /&gt;
&lt;br /&gt;
En agrandissant le procédé à plus d'écrans, on trouve facilement une méthode de calcul.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet où il s'agira d'être capable de fournir une solution matérielle à la problématique, on s'orientera vers un prototype n'incluant que 4 écrans. Ceci permet à la fois d'éviter un encombrement matériel mais aussi .&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
* 5 Raspberry Pi 3 [https://fr.rs-online.com/web/p/processor-microcontroller-development-kits/8968660/?src=raspberrypi] lien 2 [https://www.mouser.fr/ProductDetail/Adafruit/3055?qs=sGAEpiMZZMuG6%2fXKM6MUaQgA7zSPt2LlznodoAe%252bkgk%3d]&lt;br /&gt;
&lt;br /&gt;
* Un Commutateur (5 Ports +)&lt;br /&gt;
&lt;br /&gt;
* 5 Câbles Ethernet&lt;br /&gt;
&lt;br /&gt;
* 4 Câbles VGA&lt;br /&gt;
&lt;br /&gt;
* 4 Adaptateur VGA-femelle vers HDMI-mâle&lt;br /&gt;
&lt;br /&gt;
* 16 [pack 25] Capteur de contact (1 par côté) [https://fr.rs-online.com/web/p/capteurs-proximites/7985273/] '''Envisagés pour la seconde partie du projet mais non validés pour le moment !'''&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
* 1) Régler le problème de la gestion du flux vidéo par le réseau ainsi qu'au niveau des Raspberry-Pi&lt;br /&gt;
&lt;br /&gt;
'''Hypothèse''': pour une configuration d'écran donnée, on suppose les écrans déjà intelligent et on dispose de leur emplacement relatif.&lt;br /&gt;
&lt;br /&gt;
* 2) Une fois la première version fonctionnelle, s'orienter vers la mise en place du système intelligent&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| Lundi 15/01/18 : 3h30&lt;br /&gt;
Mercredi 17/01/18 : 4h&lt;br /&gt;
| Mercredi 24/01/18 : 4h&lt;br /&gt;
| Mercredi 31/01/18 : 4h&lt;br /&gt;
| Lundi 05/02/18 : 2h&lt;br /&gt;
Mercredi 07/02/18 : 4h&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
===Lundi 15/01/18===&lt;br /&gt;
&lt;br /&gt;
* Première séance ayant pour but de synthétiser l'idée théorique souhaitée par le projet.&lt;br /&gt;
&lt;br /&gt;
On imagine un système d'ensemble d'écrans autonomes mais qui communiquent leur emplacement entre eux, dans le sens où il n'est pas nécessaire de reconfigurer à chaque modification sur l'emplacement des écrans.&lt;br /&gt;
&lt;br /&gt;
Le système est pour ainsi dire évolutif puisqu'à chaque modification, exemple: passage d'un écran géant de 2*2 à 2*3 ou 3*2 (ou plus), les affichages peuvent modifier la zone du flux vidéo à afficher afin de conserver une image sur la totalité des écrans.&lt;br /&gt;
&lt;br /&gt;
De ce fait on peut imaginer des structures plus complexes, cylindriques dans le cas d'un flux d'une caméra à 360° ou plus simplement pour des simulateurs où les écrans seraient inclinés sans pour autant décrire un cercle autour de l'utilisateur.&lt;br /&gt;
&lt;br /&gt;
Cependant, pour des raisons évidentes d'effectif, de temps il est nécessaire de se réduire à une solution moins ambitieuse mais néanmoins acceptable.&lt;br /&gt;
&lt;br /&gt;
===Mercredi 17/01/18===&lt;br /&gt;
&lt;br /&gt;
* Mise en place d'un cahier des charge réalisable dans le temps imparti par rapport à la réponse théorique que l'on souhaiterai apporter au problème.&lt;br /&gt;
&lt;br /&gt;
Suite aux raisons évoquées précédemment, nous allons donc nous orienter vers un système à échelle réduite que nous ferons évoluer progressivement.&lt;br /&gt;
&lt;br /&gt;
Comme prévu nous diffuserons le flux vidéo initial, ''envoyé par Ethernet par une Raspberry Pi à partir d'un fichier stocké sur une clé usb par exemple'', aux 4 Raspberry intégrées aux écrans via un switch donc également par Ethernet (le port HDMI des R-Pi étant uniquement une sortie)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous effectuerons ensuite grâce aux R-Pi la modification du flux en fonction des écrans servant à l'affichage avant de rediriger la partie du flux qui nous intéresse vers les écrans.&lt;br /&gt;
&lt;br /&gt;
*'''Remarque:''' Dans un premier temps, pour une configuration donnée et avec les emplacement des écrans connues, il s'agit uniquement de réaliser la conversion d'affichage.&lt;br /&gt;
&lt;br /&gt;
Le fait de rendre les écrans intelligents n'est cependant pas ignoré et viendra dans un second temps, le choix de la méthode à employer étant encore en suspend. Nous allons cependant effectuer des hypothèses avec des capteurs.&lt;br /&gt;
&lt;br /&gt;
* Soit X et Y les dimensions du flux vidéo&lt;br /&gt;
* Soit U,R,D,L les états des capteurs sur un écran donné (respectivement, Up, Right, Down, Left) (1 pour actifs, 0 pour inactif)&lt;br /&gt;
* Soit I,J les indices des écrans (I = 0/1 et J = 0/1)&lt;br /&gt;
* Soit nb_X et nb_Y respectivement le nombre d'écrans en fonction des coordonnées i.e les dimensions de notre écran géant&lt;br /&gt;
&lt;br /&gt;
La configuration d'écran est la suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma (I,J)'''&lt;br /&gt;
&lt;br /&gt;
0,1 ; 1,1&lt;br /&gt;
&lt;br /&gt;
0,0 ; 1,0&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quel que soit l'écran, le flux qu'il devra recevoir sera situé entre [X1,X2] et [Y1,Y2].&lt;br /&gt;
Évidemment ces valeurs de l'emplacement de l'écran&lt;br /&gt;
&lt;br /&gt;
* Y2 = Y * ( D||U ) * (I+1) / nb_Y&lt;br /&gt;
* Y1 = Y * D * I / nb_Y&lt;br /&gt;
* X1 = X * L * J / nb_X&lt;br /&gt;
* X2 = X * ( L||R ) * (J+1) / nb_X&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 24/01/18===&lt;br /&gt;
Début de la gestion réseau du flux vidéo.&lt;br /&gt;
&lt;br /&gt;
Pour la partie théorique, nous allons donc procéder de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
Une Raspberry s'occupera de diffuser le flux sur le réseau via un commutateur. À partir d'un fichier vidéo interne.&lt;br /&gt;
&lt;br /&gt;
Les autres R-Pi disposeront d'un fichier de configuration qui contient les coordonnées à afficher en fonction de la position de l'écran, dans la première partie ce fichier sera directement implanté avec un contenu propre à chaque R-Pi mais dans la seconde il s'agira de les modifier automatiquement.&lt;br /&gt;
&lt;br /&gt;
Configuration eth0 sur la Raspberry pi : &lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
address 192.168.1.&amp;lt;2+numero_rpi&amp;gt;&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
&lt;br /&gt;
On commencera par créer un fichier fifo pour faire la transmission entre nc et OMXplayer&lt;br /&gt;
&lt;br /&gt;
Lecture du réseau : nc -l -p &amp;lt;port&amp;gt; &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Affichage : omxplayer --crop x1,y1,x2,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
[https://elinux.org/Omxplayer] : Documentation OMX player&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 31/01/18===&lt;br /&gt;
&lt;br /&gt;
Tentatives de communication PC (Source flux) à Raspberry (Écran) via nc : Échec&lt;br /&gt;
&lt;br /&gt;
* [PC source] : | nc &lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 1] : nc -l -p 12345 &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 2] : omxplayer --crop x1,y1,x1,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Avec x1,y1,x2,y2 les coordonnées des coins de la fenêtre à afficher&lt;br /&gt;
&lt;br /&gt;
Problème rencontré : la Raspberry n'arrive pas à obtenir une adresse joignable malgré une connexion directe avec le PC en ethernet&lt;br /&gt;
&lt;br /&gt;
* sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; iface eth0 inet dhcp&lt;br /&gt;
&lt;br /&gt;
* ifdown eth0&lt;br /&gt;
&lt;br /&gt;
* ifup eth0&lt;br /&gt;
&lt;br /&gt;
* ifconfig&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; inet adr:169.254.68.185&lt;br /&gt;
&lt;br /&gt;
Seconde tentative avec VLC en mode Streaming sur le PC source et VLC en écoute de stream avec VLC également : Échec (IP de la source = ?)&lt;br /&gt;
&lt;br /&gt;
Ligne de commande pour VLC de lecture&lt;br /&gt;
&lt;br /&gt;
* vlc -vvv http://IP_SOURCE:8080/PATH --crop X_RESxY_RES+LEFT_CROP+TOP_CROP -f&lt;br /&gt;
&lt;br /&gt;
PATH: paramètre donné lors du lancement du stream sur la machine source&lt;br /&gt;
&lt;br /&gt;
X_RES : Résolution X de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
Y_RES : Résolution Y de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
LEFT_CROP : Largeur de la zone coupée en partant de la gauche (en pixel)&lt;br /&gt;
&lt;br /&gt;
TOP_CROP : Hauteur de la zone coupée en partant du haut (en pixel)&lt;br /&gt;
&lt;br /&gt;
-f : Full screen&lt;br /&gt;
&lt;br /&gt;
* Test avec le mode de stream (une fois le problème résolu) : le lancement de la lecture sous VLC du côté de la raspberry entraîne des pertes considérables au niveau du flux vidéo avec des coupures très fréquentes (écran noir) ainsi qu'une forte consommation des ressources&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;photo 95%&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
===Lundi 05/02/18===&lt;br /&gt;
&lt;br /&gt;
Omxplayer demeure plus adapté puisqu'il n'entraîne pas une sur-consommation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;photo 0-3%&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mercredi 07/02/18===&lt;br /&gt;
&lt;br /&gt;
Envoie avec succès d'un fichier vidéo via netcat du PC source vers la Raspberry&lt;br /&gt;
&lt;br /&gt;
* $ nc -w 3 172.26.145.172 1234 &amp;lt; Downloads/dragons.mp4&lt;br /&gt;
&lt;br /&gt;
Où 172.26.145.172 est l'adresse obtenue par ifconfig sur la Raspberry.&lt;br /&gt;
&lt;br /&gt;
Réception avec :&lt;br /&gt;
&lt;br /&gt;
* $ nc -l -p 1234 &amp;gt; Downloads/test.mp4&lt;br /&gt;
&lt;br /&gt;
Commande de lecture : &lt;br /&gt;
&lt;br /&gt;
* $ omxplayer --aspect-mode stretch --crop X1,Y1,X2,Y2 Downloads/test.mp4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Récupération de la résolution du flux vidéo (ou fichier dans le cas actuel) : exiftool&lt;br /&gt;
&lt;br /&gt;
Nécessite un &amp;quot;exiftool&amp;quot; sur chaque Raspberry&lt;br /&gt;
&lt;br /&gt;
* $ sudo apt-get install exiftool&lt;br /&gt;
&lt;br /&gt;
* $ exiftool &amp;lt;file&amp;gt; | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f1&lt;br /&gt;
&lt;br /&gt;
Observation d'événements particuliers sur des dossiers&lt;br /&gt;
&lt;br /&gt;
* $ apt-get install inotify-tools&lt;br /&gt;
&lt;br /&gt;
Script d'observation et d’exécution d'action sur la création d'un fichier dans un dossier &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# CONFIGURATION&lt;br /&gt;
&lt;br /&gt;
DIR=&amp;quot;/home/pifou/Downloads&amp;quot;&lt;br /&gt;
EVENTS=&amp;quot;create&amp;quot;&lt;br /&gt;
&lt;br /&gt;
NB_X=1&lt;br /&gt;
NB_Y=1&lt;br /&gt;
&lt;br /&gt;
# MAIN&lt;br /&gt;
&lt;br /&gt;
inotifywait -m -e $EVENTS $DIR |&lt;br /&gt;
while read file&lt;br /&gt;
do&lt;br /&gt;
&lt;br /&gt;
        X1=0&lt;br /&gt;
        Y1=0&lt;br /&gt;
&lt;br /&gt;
        X2=exiftool /home/pifou/Downloads/hide-and-seek.mp4 | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f1 | awk '{print $1&amp;quot;/$NB_X&amp;quot;}' | bc&lt;br /&gt;
        Y2=exiftool /home/pifou/Downloads/hide-and-seek.mp4 | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f2 | awk '{print $1&amp;quot;/$NB_Y&amp;quot;}' | bc&lt;br /&gt;
&lt;br /&gt;
        echo &amp;quot;File recieved : $file&amp;quot;;&lt;br /&gt;
        omxplayer --aspect-mode stretch --crop X1,Y1,X2,Y2 $DIR/$file;&lt;br /&gt;
        PID=$!;&lt;br /&gt;
        wait $PID;&lt;br /&gt;
        rm -f $DIR/$file;&lt;br /&gt;
        echo &amp;quot;File removed $file&amp;quot;;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=50263</id>
		<title>IMA4 2017/2018 P14</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=50263"/>
				<updated>2018-02-07T17:44:01Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : /* Mercredi 07/02/18 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
* '''Intitulé du projet''' : Proposer une solution permettant d'assembler des écrans de PC afin de créer un écran géant&lt;br /&gt;
&lt;br /&gt;
Le renouvellement de matériel informatique continu entraîne un nombre grandissant d'écrans d'ordinateur qui sont difficilement réutilisables compte tenu de leur petite taille. (17&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Afin de leur donner une seconde vie, ce projet a pour but de construire une plateforme permettant d'assembler ces écrans en un écran géant d'une forme &amp;quot;quelconque&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Exemple d'un cas d'écran carré'''&lt;br /&gt;
[[Fichier:Combinaison_ecrans.jpg]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
Afin de réaliser ce projet, il faudra :&lt;br /&gt;
&lt;br /&gt;
* Ajouter un Raspberry Pi sur chaque écran afin de le rentre &amp;quot;intelligent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Créer une application permettant de prendre un flux vidéo et de le diriger vers l'écran visé.&lt;br /&gt;
&lt;br /&gt;
* Permettre de déplacer facilement les écrans tout en maintenant le flux, que ce soit sur des configurations pleines en 2D ou des configurations plus complexes avec des espaces vides ou en 3D.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
* Le positionnement des écrans et la communication entre ces derniers.&lt;br /&gt;
&lt;br /&gt;
Pour une application telle qu'un écran géant composé de plusieurs écran, il est difficilement envisageable d'utiliser un système de coordonnées GPS pour repérer des écrans qui sont particulièrement proches les uns des autres. &lt;br /&gt;
En revanche il est tout à fait réaliste de penser à un système de capteurs de contact/proximité, disposés sur les bords des écrans pour leur permettre de s’emboîter puis il ne resterait qu'à exploiter les possibilités proposées par les Raspberry Pi ainsi qu'un système de coordonnées réalisé dans ce but pour déterminer où l'écran se situe par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
* La gestion du flux vidéo&lt;br /&gt;
&lt;br /&gt;
Le système sera potentiellement réalisé de sorte que chaque écran soit autonome dans son fonctionnement, une fois sa position relative déterminée au préalable.&lt;br /&gt;
En effet, pour le moment le problème était surtout dans le positionnement des écrans plus que dans la gestion du flux vidéo, à priori.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Est-ce que le système peut continuer de fonctionner si on retire l'un des écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pour pallier au problème d'un retrait d'écran, ou d'un disfonctionnement éventuel localisé, une solution possible est de fournir à chaque écran la totalité du flux vidéo.&lt;br /&gt;
Ceci permet dans un premier temps de s'affranchir d'un traitement vidéo avant distribution mais surtout que les autres écrans puissent fonctionner sans interruption due à un écran en particulier  &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Peut-il y avoir des décalages d'affichage entre les écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Malgré l'absence de possibilités de test pour le moment, on peut néanmoins supposer qu'il n'y ait pas de décalage. &lt;br /&gt;
Chaque écran va recevoir le flux vidéo puis en fonction du positionnement des écrans, et on pourra utiliser le système de coordonnées pour effectuer une &amp;quot;selection&amp;quot; sur la partie à afficher.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une configuration de 4 écrans en rectangle, il faudrait donc que l'écran inférieur gauche n'affiche que l'image correspondante jusqu'à la moitié, ensuite l'écran inférieur droit s'occuperait de l'affichage de la partie inférieure droite, etc&lt;br /&gt;
&lt;br /&gt;
En agrandissant le procédé à plus d'écrans, on trouve facilement une méthode de calcul.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet où il s'agira d'être capable de fournir une solution matérielle à la problématique, on s'orientera vers un prototype n'incluant que 4 écrans. Ceci permet à la fois d'éviter un encombrement matériel mais aussi .&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
* 5 Raspberry Pi 3 [https://fr.rs-online.com/web/p/processor-microcontroller-development-kits/8968660/?src=raspberrypi] lien 2 [https://www.mouser.fr/ProductDetail/Adafruit/3055?qs=sGAEpiMZZMuG6%2fXKM6MUaQgA7zSPt2LlznodoAe%252bkgk%3d]&lt;br /&gt;
&lt;br /&gt;
* Un Commutateur (5 Ports +)&lt;br /&gt;
&lt;br /&gt;
* 5 Câbles Ethernet&lt;br /&gt;
&lt;br /&gt;
* 4 Câbles VGA&lt;br /&gt;
&lt;br /&gt;
* 4 Adaptateur VGA-femelle vers HDMI-mâle&lt;br /&gt;
&lt;br /&gt;
* 16 [pack 25] Capteur de contact (1 par côté) [https://fr.rs-online.com/web/p/capteurs-proximites/7985273/] '''Envisagés pour la seconde partie du projet mais non validés pour le moment !'''&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
* 1) Régler le problème de la gestion du flux vidéo par le réseau ainsi qu'au niveau des Raspberry-Pi&lt;br /&gt;
&lt;br /&gt;
'''Hypothèse''': pour une configuration d'écran donnée, on suppose les écrans déjà intelligent et on dispose de leur emplacement relatif.&lt;br /&gt;
&lt;br /&gt;
* 2) Une fois la première version fonctionnelle, s'orienter vers la mise en place du système intelligent&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| Lundi 15/01/18 : 3h30&lt;br /&gt;
Mercredi 17/01/18 : 4h&lt;br /&gt;
| Mercredi 24/01/18 : 4h&lt;br /&gt;
| Mercredi 31/01/18 : 4h&lt;br /&gt;
| Lundi 05/02/18 : 2h&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
===Lundi 15/01/18===&lt;br /&gt;
&lt;br /&gt;
* Première séance ayant pour but de synthétiser l'idée théorique souhaitée par le projet.&lt;br /&gt;
&lt;br /&gt;
On imagine un système d'ensemble d'écrans autonomes mais qui communiquent leur emplacement entre eux, dans le sens où il n'est pas nécessaire de reconfigurer à chaque modification sur l'emplacement des écrans.&lt;br /&gt;
&lt;br /&gt;
Le système est pour ainsi dire évolutif puisqu'à chaque modification, exemple: passage d'un écran géant de 2*2 à 2*3 ou 3*2 (ou plus), les affichages peuvent modifier la zone du flux vidéo à afficher afin de conserver une image sur la totalité des écrans.&lt;br /&gt;
&lt;br /&gt;
De ce fait on peut imaginer des structures plus complexes, cylindriques dans le cas d'un flux d'une caméra à 360° ou plus simplement pour des simulateurs où les écrans seraient inclinés sans pour autant décrire un cercle autour de l'utilisateur.&lt;br /&gt;
&lt;br /&gt;
Cependant, pour des raisons évidentes d'effectif, de temps il est nécessaire de se réduire à une solution moins ambitieuse mais néanmoins acceptable.&lt;br /&gt;
&lt;br /&gt;
===Mercredi 17/01/18===&lt;br /&gt;
&lt;br /&gt;
* Mise en place d'un cahier des charge réalisable dans le temps imparti par rapport à la réponse théorique que l'on souhaiterai apporter au problème.&lt;br /&gt;
&lt;br /&gt;
Suite aux raisons évoquées précédemment, nous allons donc nous orienter vers un système à échelle réduite que nous ferons évoluer progressivement.&lt;br /&gt;
&lt;br /&gt;
Comme prévu nous diffuserons le flux vidéo initial, ''envoyé par Ethernet par une Raspberry Pi à partir d'un fichier stocké sur une clé usb par exemple'', aux 4 Raspberry intégrées aux écrans via un switch donc également par Ethernet (le port HDMI des R-Pi étant uniquement une sortie)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous effectuerons ensuite grâce aux R-Pi la modification du flux en fonction des écrans servant à l'affichage avant de rediriger la partie du flux qui nous intéresse vers les écrans.&lt;br /&gt;
&lt;br /&gt;
*'''Remarque:''' Dans un premier temps, pour une configuration donnée et avec les emplacement des écrans connues, il s'agit uniquement de réaliser la conversion d'affichage.&lt;br /&gt;
&lt;br /&gt;
Le fait de rendre les écrans intelligents n'est cependant pas ignoré et viendra dans un second temps, le choix de la méthode à employer étant encore en suspend. Nous allons cependant effectuer des hypothèses avec des capteurs.&lt;br /&gt;
&lt;br /&gt;
* Soit X et Y les dimensions du flux vidéo&lt;br /&gt;
* Soit U,R,D,L les états des capteurs sur un écran donné (respectivement, Up, Right, Down, Left) (1 pour actifs, 0 pour inactif)&lt;br /&gt;
* Soit I,J les indices des écrans (I = 0/1 et J = 0/1)&lt;br /&gt;
* Soit nb_X et nb_Y respectivement le nombre d'écrans en fonction des coordonnées i.e les dimensions de notre écran géant&lt;br /&gt;
&lt;br /&gt;
La configuration d'écran est la suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma (I,J)'''&lt;br /&gt;
&lt;br /&gt;
0,1 ; 1,1&lt;br /&gt;
&lt;br /&gt;
0,0 ; 1,0&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quel que soit l'écran, le flux qu'il devra recevoir sera situé entre [X1,X2] et [Y1,Y2].&lt;br /&gt;
Évidemment ces valeurs de l'emplacement de l'écran&lt;br /&gt;
&lt;br /&gt;
* Y2 = Y * ( D||U ) * (I+1) / nb_Y&lt;br /&gt;
* Y1 = Y * D * I / nb_Y&lt;br /&gt;
* X1 = X * L * J / nb_X&lt;br /&gt;
* X2 = X * ( L||R ) * (J+1) / nb_X&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 24/01/18===&lt;br /&gt;
Début de la gestion réseau du flux vidéo.&lt;br /&gt;
&lt;br /&gt;
Pour la partie théorique, nous allons donc procéder de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
Une Raspberry s'occupera de diffuser le flux sur le réseau via un commutateur. À partir d'un fichier vidéo interne.&lt;br /&gt;
&lt;br /&gt;
Les autres R-Pi disposeront d'un fichier de configuration qui contient les coordonnées à afficher en fonction de la position de l'écran, dans la première partie ce fichier sera directement implanté avec un contenu propre à chaque R-Pi mais dans la seconde il s'agira de les modifier automatiquement.&lt;br /&gt;
&lt;br /&gt;
Configuration eth0 sur la Raspberry pi : &lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
address 192.168.1.&amp;lt;2+numero_rpi&amp;gt;&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
&lt;br /&gt;
On commencera par créer un fichier fifo pour faire la transmission entre nc et OMXplayer&lt;br /&gt;
&lt;br /&gt;
Lecture du réseau : nc -l -p &amp;lt;port&amp;gt; &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Affichage : omxplayer --crop x1,y1,x2,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
[https://elinux.org/Omxplayer] : Documentation OMX player&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 31/01/18===&lt;br /&gt;
&lt;br /&gt;
Tentatives de communication PC (Source flux) à Raspberry (Écran) via nc : Échec&lt;br /&gt;
&lt;br /&gt;
* [PC source] : | nc &lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 1] : nc -l -p 12345 &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 2] : omxplayer --crop x1,y1,x1,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Avec x1,y1,x2,y2 les coordonnées des coins de la fenêtre à afficher&lt;br /&gt;
&lt;br /&gt;
Problème rencontré : la Raspberry n'arrive pas à obtenir une adresse joignable malgré une connexion directe avec le PC en ethernet&lt;br /&gt;
&lt;br /&gt;
* sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; iface eth0 inet dhcp&lt;br /&gt;
&lt;br /&gt;
* ifdown eth0&lt;br /&gt;
&lt;br /&gt;
* ifup eth0&lt;br /&gt;
&lt;br /&gt;
* ifconfig&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; inet adr:169.254.68.185&lt;br /&gt;
&lt;br /&gt;
Seconde tentative avec VLC en mode Streaming sur le PC source et VLC en écoute de stream avec VLC également : Échec (IP de la source = ?)&lt;br /&gt;
&lt;br /&gt;
Ligne de commande pour VLC de lecture&lt;br /&gt;
&lt;br /&gt;
* vlc -vvv http://IP_SOURCE:8080/PATH --crop X_RESxY_RES+LEFT_CROP+TOP_CROP -f&lt;br /&gt;
&lt;br /&gt;
PATH: paramètre donné lors du lancement du stream sur la machine source&lt;br /&gt;
&lt;br /&gt;
X_RES : Résolution X de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
Y_RES : Résolution Y de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
LEFT_CROP : Largeur de la zone coupée en partant de la gauche (en pixel)&lt;br /&gt;
&lt;br /&gt;
TOP_CROP : Hauteur de la zone coupée en partant du haut (en pixel)&lt;br /&gt;
&lt;br /&gt;
-f : Full screen&lt;br /&gt;
&lt;br /&gt;
* Test avec le mode de stream (une fois le problème résolu) : le lancement de la lecture sous VLC du côté de la raspberry entraîne des pertes considérables au niveau du flux vidéo avec des coupures très fréquentes (écran noir) ainsi qu'une forte consommation des ressources&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;photo 95%&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
===Lundi 05/02/18===&lt;br /&gt;
&lt;br /&gt;
Omxplayer demeure plus adapté puisqu'il n'entraîne pas une sur-consommation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;photo 0-3%&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mercredi 07/02/18===&lt;br /&gt;
&lt;br /&gt;
Envoie avec succès d'un fichier vidéo via netcat du PC source vers la Raspberry&lt;br /&gt;
&lt;br /&gt;
* $ nc -w 3 172.26.145.172 1234 &amp;lt; Downloads/dragons.mp4&lt;br /&gt;
&lt;br /&gt;
Où 172.26.145.172 est l'adresse obtenue par ifconfig sur la Raspberry.&lt;br /&gt;
&lt;br /&gt;
Réception avec :&lt;br /&gt;
&lt;br /&gt;
* $ nc -l -p 1234 &amp;gt; Downloads/test.mp4&lt;br /&gt;
&lt;br /&gt;
Commande de lecture : &lt;br /&gt;
&lt;br /&gt;
* $ omxplayer --aspect-mode stretch --crop X1,Y1,X2,Y2 Downloads/test.mp4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Récupération de la résolution du flux vidéo (ou fichier dans le cas actuel) : exiftool&lt;br /&gt;
&lt;br /&gt;
Nécessite un &amp;quot;exiftool&amp;quot; sur chaque Raspberry&lt;br /&gt;
&lt;br /&gt;
* $ sudo apt-get install exiftool&lt;br /&gt;
&lt;br /&gt;
* $ exiftool &amp;lt;file&amp;gt; | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f1&lt;br /&gt;
&lt;br /&gt;
Observation d'événements particuliers sur des dossiers&lt;br /&gt;
&lt;br /&gt;
* $ apt-get install inotify-tools&lt;br /&gt;
&lt;br /&gt;
Script d'observation et d’exécution d'action sur la création d'un fichier dans un dossier &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# CONFIGURATION&lt;br /&gt;
&lt;br /&gt;
DIR=&amp;quot;/home/pifou/Downloads&amp;quot;&lt;br /&gt;
EVENTS=&amp;quot;create&amp;quot;&lt;br /&gt;
&lt;br /&gt;
NB_X=1&lt;br /&gt;
NB_Y=1&lt;br /&gt;
&lt;br /&gt;
# MAIN&lt;br /&gt;
&lt;br /&gt;
inotifywait -m -e $EVENTS $DIR |&lt;br /&gt;
while read file&lt;br /&gt;
do&lt;br /&gt;
&lt;br /&gt;
        X1=0&lt;br /&gt;
        Y1=0&lt;br /&gt;
&lt;br /&gt;
        X2=exiftool /home/pifou/Downloads/hide-and-seek.mp4 | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f1 | awk '{print $1&amp;quot;/$NB_X&amp;quot;}' | bc&lt;br /&gt;
        Y2=exiftool /home/pifou/Downloads/hide-and-seek.mp4 | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f2 | awk '{print $1&amp;quot;/$NB_Y&amp;quot;}' | bc&lt;br /&gt;
&lt;br /&gt;
        echo &amp;quot;File recieved : $file&amp;quot;;&lt;br /&gt;
        omxplayer --aspect-mode stretch --crop X1,Y1,X2,Y2 $DIR/$file;&lt;br /&gt;
        PID=$!;&lt;br /&gt;
        wait $PID;&lt;br /&gt;
        rm -f $DIR/$file;&lt;br /&gt;
        echo &amp;quot;File removed $file&amp;quot;;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=50262</id>
		<title>IMA4 2017/2018 P14</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=50262"/>
				<updated>2018-02-07T17:43:20Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : /* Mercredi 07/02/18 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
* '''Intitulé du projet''' : Proposer une solution permettant d'assembler des écrans de PC afin de créer un écran géant&lt;br /&gt;
&lt;br /&gt;
Le renouvellement de matériel informatique continu entraîne un nombre grandissant d'écrans d'ordinateur qui sont difficilement réutilisables compte tenu de leur petite taille. (17&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Afin de leur donner une seconde vie, ce projet a pour but de construire une plateforme permettant d'assembler ces écrans en un écran géant d'une forme &amp;quot;quelconque&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Exemple d'un cas d'écran carré'''&lt;br /&gt;
[[Fichier:Combinaison_ecrans.jpg]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
Afin de réaliser ce projet, il faudra :&lt;br /&gt;
&lt;br /&gt;
* Ajouter un Raspberry Pi sur chaque écran afin de le rentre &amp;quot;intelligent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Créer une application permettant de prendre un flux vidéo et de le diriger vers l'écran visé.&lt;br /&gt;
&lt;br /&gt;
* Permettre de déplacer facilement les écrans tout en maintenant le flux, que ce soit sur des configurations pleines en 2D ou des configurations plus complexes avec des espaces vides ou en 3D.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
* Le positionnement des écrans et la communication entre ces derniers.&lt;br /&gt;
&lt;br /&gt;
Pour une application telle qu'un écran géant composé de plusieurs écran, il est difficilement envisageable d'utiliser un système de coordonnées GPS pour repérer des écrans qui sont particulièrement proches les uns des autres. &lt;br /&gt;
En revanche il est tout à fait réaliste de penser à un système de capteurs de contact/proximité, disposés sur les bords des écrans pour leur permettre de s’emboîter puis il ne resterait qu'à exploiter les possibilités proposées par les Raspberry Pi ainsi qu'un système de coordonnées réalisé dans ce but pour déterminer où l'écran se situe par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
* La gestion du flux vidéo&lt;br /&gt;
&lt;br /&gt;
Le système sera potentiellement réalisé de sorte que chaque écran soit autonome dans son fonctionnement, une fois sa position relative déterminée au préalable.&lt;br /&gt;
En effet, pour le moment le problème était surtout dans le positionnement des écrans plus que dans la gestion du flux vidéo, à priori.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Est-ce que le système peut continuer de fonctionner si on retire l'un des écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pour pallier au problème d'un retrait d'écran, ou d'un disfonctionnement éventuel localisé, une solution possible est de fournir à chaque écran la totalité du flux vidéo.&lt;br /&gt;
Ceci permet dans un premier temps de s'affranchir d'un traitement vidéo avant distribution mais surtout que les autres écrans puissent fonctionner sans interruption due à un écran en particulier  &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Peut-il y avoir des décalages d'affichage entre les écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Malgré l'absence de possibilités de test pour le moment, on peut néanmoins supposer qu'il n'y ait pas de décalage. &lt;br /&gt;
Chaque écran va recevoir le flux vidéo puis en fonction du positionnement des écrans, et on pourra utiliser le système de coordonnées pour effectuer une &amp;quot;selection&amp;quot; sur la partie à afficher.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une configuration de 4 écrans en rectangle, il faudrait donc que l'écran inférieur gauche n'affiche que l'image correspondante jusqu'à la moitié, ensuite l'écran inférieur droit s'occuperait de l'affichage de la partie inférieure droite, etc&lt;br /&gt;
&lt;br /&gt;
En agrandissant le procédé à plus d'écrans, on trouve facilement une méthode de calcul.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet où il s'agira d'être capable de fournir une solution matérielle à la problématique, on s'orientera vers un prototype n'incluant que 4 écrans. Ceci permet à la fois d'éviter un encombrement matériel mais aussi .&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
* 5 Raspberry Pi 3 [https://fr.rs-online.com/web/p/processor-microcontroller-development-kits/8968660/?src=raspberrypi] lien 2 [https://www.mouser.fr/ProductDetail/Adafruit/3055?qs=sGAEpiMZZMuG6%2fXKM6MUaQgA7zSPt2LlznodoAe%252bkgk%3d]&lt;br /&gt;
&lt;br /&gt;
* Un Commutateur (5 Ports +)&lt;br /&gt;
&lt;br /&gt;
* 5 Câbles Ethernet&lt;br /&gt;
&lt;br /&gt;
* 4 Câbles VGA&lt;br /&gt;
&lt;br /&gt;
* 4 Adaptateur VGA-femelle vers HDMI-mâle&lt;br /&gt;
&lt;br /&gt;
* 16 [pack 25] Capteur de contact (1 par côté) [https://fr.rs-online.com/web/p/capteurs-proximites/7985273/] '''Envisagés pour la seconde partie du projet mais non validés pour le moment !'''&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
* 1) Régler le problème de la gestion du flux vidéo par le réseau ainsi qu'au niveau des Raspberry-Pi&lt;br /&gt;
&lt;br /&gt;
'''Hypothèse''': pour une configuration d'écran donnée, on suppose les écrans déjà intelligent et on dispose de leur emplacement relatif.&lt;br /&gt;
&lt;br /&gt;
* 2) Une fois la première version fonctionnelle, s'orienter vers la mise en place du système intelligent&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| Lundi 15/01/18 : 3h30&lt;br /&gt;
Mercredi 17/01/18 : 4h&lt;br /&gt;
| Mercredi 24/01/18 : 4h&lt;br /&gt;
| Mercredi 31/01/18 : 4h&lt;br /&gt;
| Lundi 05/02/18 : 2h&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
===Lundi 15/01/18===&lt;br /&gt;
&lt;br /&gt;
* Première séance ayant pour but de synthétiser l'idée théorique souhaitée par le projet.&lt;br /&gt;
&lt;br /&gt;
On imagine un système d'ensemble d'écrans autonomes mais qui communiquent leur emplacement entre eux, dans le sens où il n'est pas nécessaire de reconfigurer à chaque modification sur l'emplacement des écrans.&lt;br /&gt;
&lt;br /&gt;
Le système est pour ainsi dire évolutif puisqu'à chaque modification, exemple: passage d'un écran géant de 2*2 à 2*3 ou 3*2 (ou plus), les affichages peuvent modifier la zone du flux vidéo à afficher afin de conserver une image sur la totalité des écrans.&lt;br /&gt;
&lt;br /&gt;
De ce fait on peut imaginer des structures plus complexes, cylindriques dans le cas d'un flux d'une caméra à 360° ou plus simplement pour des simulateurs où les écrans seraient inclinés sans pour autant décrire un cercle autour de l'utilisateur.&lt;br /&gt;
&lt;br /&gt;
Cependant, pour des raisons évidentes d'effectif, de temps il est nécessaire de se réduire à une solution moins ambitieuse mais néanmoins acceptable.&lt;br /&gt;
&lt;br /&gt;
===Mercredi 17/01/18===&lt;br /&gt;
&lt;br /&gt;
* Mise en place d'un cahier des charge réalisable dans le temps imparti par rapport à la réponse théorique que l'on souhaiterai apporter au problème.&lt;br /&gt;
&lt;br /&gt;
Suite aux raisons évoquées précédemment, nous allons donc nous orienter vers un système à échelle réduite que nous ferons évoluer progressivement.&lt;br /&gt;
&lt;br /&gt;
Comme prévu nous diffuserons le flux vidéo initial, ''envoyé par Ethernet par une Raspberry Pi à partir d'un fichier stocké sur une clé usb par exemple'', aux 4 Raspberry intégrées aux écrans via un switch donc également par Ethernet (le port HDMI des R-Pi étant uniquement une sortie)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous effectuerons ensuite grâce aux R-Pi la modification du flux en fonction des écrans servant à l'affichage avant de rediriger la partie du flux qui nous intéresse vers les écrans.&lt;br /&gt;
&lt;br /&gt;
*'''Remarque:''' Dans un premier temps, pour une configuration donnée et avec les emplacement des écrans connues, il s'agit uniquement de réaliser la conversion d'affichage.&lt;br /&gt;
&lt;br /&gt;
Le fait de rendre les écrans intelligents n'est cependant pas ignoré et viendra dans un second temps, le choix de la méthode à employer étant encore en suspend. Nous allons cependant effectuer des hypothèses avec des capteurs.&lt;br /&gt;
&lt;br /&gt;
* Soit X et Y les dimensions du flux vidéo&lt;br /&gt;
* Soit U,R,D,L les états des capteurs sur un écran donné (respectivement, Up, Right, Down, Left) (1 pour actifs, 0 pour inactif)&lt;br /&gt;
* Soit I,J les indices des écrans (I = 0/1 et J = 0/1)&lt;br /&gt;
* Soit nb_X et nb_Y respectivement le nombre d'écrans en fonction des coordonnées i.e les dimensions de notre écran géant&lt;br /&gt;
&lt;br /&gt;
La configuration d'écran est la suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma (I,J)'''&lt;br /&gt;
&lt;br /&gt;
0,1 ; 1,1&lt;br /&gt;
&lt;br /&gt;
0,0 ; 1,0&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quel que soit l'écran, le flux qu'il devra recevoir sera situé entre [X1,X2] et [Y1,Y2].&lt;br /&gt;
Évidemment ces valeurs de l'emplacement de l'écran&lt;br /&gt;
&lt;br /&gt;
* Y2 = Y * ( D||U ) * (I+1) / nb_Y&lt;br /&gt;
* Y1 = Y * D * I / nb_Y&lt;br /&gt;
* X1 = X * L * J / nb_X&lt;br /&gt;
* X2 = X * ( L||R ) * (J+1) / nb_X&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 24/01/18===&lt;br /&gt;
Début de la gestion réseau du flux vidéo.&lt;br /&gt;
&lt;br /&gt;
Pour la partie théorique, nous allons donc procéder de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
Une Raspberry s'occupera de diffuser le flux sur le réseau via un commutateur. À partir d'un fichier vidéo interne.&lt;br /&gt;
&lt;br /&gt;
Les autres R-Pi disposeront d'un fichier de configuration qui contient les coordonnées à afficher en fonction de la position de l'écran, dans la première partie ce fichier sera directement implanté avec un contenu propre à chaque R-Pi mais dans la seconde il s'agira de les modifier automatiquement.&lt;br /&gt;
&lt;br /&gt;
Configuration eth0 sur la Raspberry pi : &lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
address 192.168.1.&amp;lt;2+numero_rpi&amp;gt;&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
&lt;br /&gt;
On commencera par créer un fichier fifo pour faire la transmission entre nc et OMXplayer&lt;br /&gt;
&lt;br /&gt;
Lecture du réseau : nc -l -p &amp;lt;port&amp;gt; &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Affichage : omxplayer --crop x1,y1,x2,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
[https://elinux.org/Omxplayer] : Documentation OMX player&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 31/01/18===&lt;br /&gt;
&lt;br /&gt;
Tentatives de communication PC (Source flux) à Raspberry (Écran) via nc : Échec&lt;br /&gt;
&lt;br /&gt;
* [PC source] : | nc &lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 1] : nc -l -p 12345 &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 2] : omxplayer --crop x1,y1,x1,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Avec x1,y1,x2,y2 les coordonnées des coins de la fenêtre à afficher&lt;br /&gt;
&lt;br /&gt;
Problème rencontré : la Raspberry n'arrive pas à obtenir une adresse joignable malgré une connexion directe avec le PC en ethernet&lt;br /&gt;
&lt;br /&gt;
* sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; iface eth0 inet dhcp&lt;br /&gt;
&lt;br /&gt;
* ifdown eth0&lt;br /&gt;
&lt;br /&gt;
* ifup eth0&lt;br /&gt;
&lt;br /&gt;
* ifconfig&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; inet adr:169.254.68.185&lt;br /&gt;
&lt;br /&gt;
Seconde tentative avec VLC en mode Streaming sur le PC source et VLC en écoute de stream avec VLC également : Échec (IP de la source = ?)&lt;br /&gt;
&lt;br /&gt;
Ligne de commande pour VLC de lecture&lt;br /&gt;
&lt;br /&gt;
* vlc -vvv http://IP_SOURCE:8080/PATH --crop X_RESxY_RES+LEFT_CROP+TOP_CROP -f&lt;br /&gt;
&lt;br /&gt;
PATH: paramètre donné lors du lancement du stream sur la machine source&lt;br /&gt;
&lt;br /&gt;
X_RES : Résolution X de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
Y_RES : Résolution Y de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
LEFT_CROP : Largeur de la zone coupée en partant de la gauche (en pixel)&lt;br /&gt;
&lt;br /&gt;
TOP_CROP : Hauteur de la zone coupée en partant du haut (en pixel)&lt;br /&gt;
&lt;br /&gt;
-f : Full screen&lt;br /&gt;
&lt;br /&gt;
* Test avec le mode de stream (une fois le problème résolu) : le lancement de la lecture sous VLC du côté de la raspberry entraîne des pertes considérables au niveau du flux vidéo avec des coupures très fréquentes (écran noir) ainsi qu'une forte consommation des ressources&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;photo 95%&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
===Lundi 05/02/18===&lt;br /&gt;
&lt;br /&gt;
Omxplayer demeure plus adapté puisqu'il n'entraîne pas une sur-consommation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;photo 0-3%&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mercredi 07/02/18===&lt;br /&gt;
&lt;br /&gt;
Envoie avec succès d'un fichier vidéo via netcat du PC source vers la Raspberry&lt;br /&gt;
&lt;br /&gt;
* $ nc -w 3 172.26.145.172 1234 &amp;lt; Downloads/dragons.mp4&lt;br /&gt;
&lt;br /&gt;
Où 172.26.145.172 est l'adresse obtenue par ifconfig sur la Raspberry.&lt;br /&gt;
&lt;br /&gt;
Réception avec :&lt;br /&gt;
&lt;br /&gt;
* $ nc -l -p 1234 &amp;gt; Downloads/test.mp4&lt;br /&gt;
&lt;br /&gt;
Commande de lecture : &lt;br /&gt;
&lt;br /&gt;
* $ omxplayer --aspect-mode stretch --crop X1,Y1,X2,Y2 Downloads/test.mp4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Récupération de la résolution du flux vidéo (ou fichier dans le cas actuel) : exiftool&lt;br /&gt;
&lt;br /&gt;
Nécessite un &amp;quot;sudo apt-get install exiftool&amp;quot; sur chaque Raspberry&lt;br /&gt;
&lt;br /&gt;
* $ exiftool &amp;lt;file&amp;gt; | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f1&lt;br /&gt;
&lt;br /&gt;
Observation d'événements particuliers sur des dossiers&lt;br /&gt;
&lt;br /&gt;
* $ apt-get install inotify-tools&lt;br /&gt;
&lt;br /&gt;
Script d'observation et d’exécution d'action sur la création d'un fichier dans un dossier &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# CONFIGURATION&lt;br /&gt;
&lt;br /&gt;
DIR=&amp;quot;/home/pifou/Downloads&amp;quot;&lt;br /&gt;
EVENTS=&amp;quot;create&amp;quot;&lt;br /&gt;
&lt;br /&gt;
NB_X=1&lt;br /&gt;
NB_Y=1&lt;br /&gt;
&lt;br /&gt;
# MAIN&lt;br /&gt;
&lt;br /&gt;
inotifywait -m -e $EVENTS $DIR |&lt;br /&gt;
while read file&lt;br /&gt;
do&lt;br /&gt;
&lt;br /&gt;
        X1=0&lt;br /&gt;
        Y1=0&lt;br /&gt;
&lt;br /&gt;
        X2=exiftool /home/pifou/Downloads/hide-and-seek.mp4 | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f1 | awk '{print $1&amp;quot;/$NB_X&amp;quot;}' | bc&lt;br /&gt;
        Y2=exiftool /home/pifou/Downloads/hide-and-seek.mp4 | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f2 | awk '{print $1&amp;quot;/$NB_Y&amp;quot;}' | bc&lt;br /&gt;
&lt;br /&gt;
        echo &amp;quot;File recieved : $file&amp;quot;;&lt;br /&gt;
        omxplayer --aspect-mode stretch --crop X1,Y1,X2,Y2 $DIR/$file;&lt;br /&gt;
        PID=$!;&lt;br /&gt;
        wait $PID;&lt;br /&gt;
        rm -f $DIR/$file;&lt;br /&gt;
        echo &amp;quot;File removed $file&amp;quot;;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=50233</id>
		<title>IMA4 2017/2018 P14</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=50233"/>
				<updated>2018-02-07T17:02:51Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : /* Mercredi 07/02/18 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
* '''Intitulé du projet''' : Proposer une solution permettant d'assembler des écrans de PC afin de créer un écran géant&lt;br /&gt;
&lt;br /&gt;
Le renouvellement de matériel informatique continu entraîne un nombre grandissant d'écrans d'ordinateur qui sont difficilement réutilisables compte tenu de leur petite taille. (17&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Afin de leur donner une seconde vie, ce projet a pour but de construire une plateforme permettant d'assembler ces écrans en un écran géant d'une forme &amp;quot;quelconque&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Exemple d'un cas d'écran carré'''&lt;br /&gt;
[[Fichier:Combinaison_ecrans.jpg]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
Afin de réaliser ce projet, il faudra :&lt;br /&gt;
&lt;br /&gt;
* Ajouter un Raspberry Pi sur chaque écran afin de le rentre &amp;quot;intelligent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Créer une application permettant de prendre un flux vidéo et de le diriger vers l'écran visé.&lt;br /&gt;
&lt;br /&gt;
* Permettre de déplacer facilement les écrans tout en maintenant le flux, que ce soit sur des configurations pleines en 2D ou des configurations plus complexes avec des espaces vides ou en 3D.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
* Le positionnement des écrans et la communication entre ces derniers.&lt;br /&gt;
&lt;br /&gt;
Pour une application telle qu'un écran géant composé de plusieurs écran, il est difficilement envisageable d'utiliser un système de coordonnées GPS pour repérer des écrans qui sont particulièrement proches les uns des autres. &lt;br /&gt;
En revanche il est tout à fait réaliste de penser à un système de capteurs de contact/proximité, disposés sur les bords des écrans pour leur permettre de s’emboîter puis il ne resterait qu'à exploiter les possibilités proposées par les Raspberry Pi ainsi qu'un système de coordonnées réalisé dans ce but pour déterminer où l'écran se situe par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
* La gestion du flux vidéo&lt;br /&gt;
&lt;br /&gt;
Le système sera potentiellement réalisé de sorte que chaque écran soit autonome dans son fonctionnement, une fois sa position relative déterminée au préalable.&lt;br /&gt;
En effet, pour le moment le problème était surtout dans le positionnement des écrans plus que dans la gestion du flux vidéo, à priori.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Est-ce que le système peut continuer de fonctionner si on retire l'un des écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pour pallier au problème d'un retrait d'écran, ou d'un disfonctionnement éventuel localisé, une solution possible est de fournir à chaque écran la totalité du flux vidéo.&lt;br /&gt;
Ceci permet dans un premier temps de s'affranchir d'un traitement vidéo avant distribution mais surtout que les autres écrans puissent fonctionner sans interruption due à un écran en particulier  &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Peut-il y avoir des décalages d'affichage entre les écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Malgré l'absence de possibilités de test pour le moment, on peut néanmoins supposer qu'il n'y ait pas de décalage. &lt;br /&gt;
Chaque écran va recevoir le flux vidéo puis en fonction du positionnement des écrans, et on pourra utiliser le système de coordonnées pour effectuer une &amp;quot;selection&amp;quot; sur la partie à afficher.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une configuration de 4 écrans en rectangle, il faudrait donc que l'écran inférieur gauche n'affiche que l'image correspondante jusqu'à la moitié, ensuite l'écran inférieur droit s'occuperait de l'affichage de la partie inférieure droite, etc&lt;br /&gt;
&lt;br /&gt;
En agrandissant le procédé à plus d'écrans, on trouve facilement une méthode de calcul.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet où il s'agira d'être capable de fournir une solution matérielle à la problématique, on s'orientera vers un prototype n'incluant que 4 écrans. Ceci permet à la fois d'éviter un encombrement matériel mais aussi .&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
* 5 Raspberry Pi 3 [https://fr.rs-online.com/web/p/processor-microcontroller-development-kits/8968660/?src=raspberrypi] lien 2 [https://www.mouser.fr/ProductDetail/Adafruit/3055?qs=sGAEpiMZZMuG6%2fXKM6MUaQgA7zSPt2LlznodoAe%252bkgk%3d]&lt;br /&gt;
&lt;br /&gt;
* Un Commutateur (5 Ports +)&lt;br /&gt;
&lt;br /&gt;
* 5 Câbles Ethernet&lt;br /&gt;
&lt;br /&gt;
* 4 Câbles VGA&lt;br /&gt;
&lt;br /&gt;
* 4 Adaptateur VGA-femelle vers HDMI-mâle&lt;br /&gt;
&lt;br /&gt;
* 16 [pack 25] Capteur de contact (1 par côté) [https://fr.rs-online.com/web/p/capteurs-proximites/7985273/] '''Envisagés pour la seconde partie du projet mais non validés pour le moment !'''&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
* 1) Régler le problème de la gestion du flux vidéo par le réseau ainsi qu'au niveau des Raspberry-Pi&lt;br /&gt;
&lt;br /&gt;
'''Hypothèse''': pour une configuration d'écran donnée, on suppose les écrans déjà intelligent et on dispose de leur emplacement relatif.&lt;br /&gt;
&lt;br /&gt;
* 2) Une fois la première version fonctionnelle, s'orienter vers la mise en place du système intelligent&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| Lundi 15/01/18 : 3h30&lt;br /&gt;
Mercredi 17/01/18 : 4h&lt;br /&gt;
| Mercredi 24/01/18 : 4h&lt;br /&gt;
| Mercredi 31/01/18 : 4h&lt;br /&gt;
| Lundi 05/02/18 : 2h&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
===Lundi 15/01/18===&lt;br /&gt;
&lt;br /&gt;
* Première séance ayant pour but de synthétiser l'idée théorique souhaitée par le projet.&lt;br /&gt;
&lt;br /&gt;
On imagine un système d'ensemble d'écrans autonomes mais qui communiquent leur emplacement entre eux, dans le sens où il n'est pas nécessaire de reconfigurer à chaque modification sur l'emplacement des écrans.&lt;br /&gt;
&lt;br /&gt;
Le système est pour ainsi dire évolutif puisqu'à chaque modification, exemple: passage d'un écran géant de 2*2 à 2*3 ou 3*2 (ou plus), les affichages peuvent modifier la zone du flux vidéo à afficher afin de conserver une image sur la totalité des écrans.&lt;br /&gt;
&lt;br /&gt;
De ce fait on peut imaginer des structures plus complexes, cylindriques dans le cas d'un flux d'une caméra à 360° ou plus simplement pour des simulateurs où les écrans seraient inclinés sans pour autant décrire un cercle autour de l'utilisateur.&lt;br /&gt;
&lt;br /&gt;
Cependant, pour des raisons évidentes d'effectif, de temps il est nécessaire de se réduire à une solution moins ambitieuse mais néanmoins acceptable.&lt;br /&gt;
&lt;br /&gt;
===Mercredi 17/01/18===&lt;br /&gt;
&lt;br /&gt;
* Mise en place d'un cahier des charge réalisable dans le temps imparti par rapport à la réponse théorique que l'on souhaiterai apporter au problème.&lt;br /&gt;
&lt;br /&gt;
Suite aux raisons évoquées précédemment, nous allons donc nous orienter vers un système à échelle réduite que nous ferons évoluer progressivement.&lt;br /&gt;
&lt;br /&gt;
Comme prévu nous diffuserons le flux vidéo initial, ''envoyé par Ethernet par une Raspberry Pi à partir d'un fichier stocké sur une clé usb par exemple'', aux 4 Raspberry intégrées aux écrans via un switch donc également par Ethernet (le port HDMI des R-Pi étant uniquement une sortie)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous effectuerons ensuite grâce aux R-Pi la modification du flux en fonction des écrans servant à l'affichage avant de rediriger la partie du flux qui nous intéresse vers les écrans.&lt;br /&gt;
&lt;br /&gt;
*'''Remarque:''' Dans un premier temps, pour une configuration donnée et avec les emplacement des écrans connues, il s'agit uniquement de réaliser la conversion d'affichage.&lt;br /&gt;
&lt;br /&gt;
Le fait de rendre les écrans intelligents n'est cependant pas ignoré et viendra dans un second temps, le choix de la méthode à employer étant encore en suspend. Nous allons cependant effectuer des hypothèses avec des capteurs.&lt;br /&gt;
&lt;br /&gt;
* Soit X et Y les dimensions du flux vidéo&lt;br /&gt;
* Soit U,R,D,L les états des capteurs sur un écran donné (respectivement, Up, Right, Down, Left) (1 pour actifs, 0 pour inactif)&lt;br /&gt;
* Soit I,J les indices des écrans (I = 0/1 et J = 0/1)&lt;br /&gt;
* Soit nb_X et nb_Y respectivement le nombre d'écrans en fonction des coordonnées i.e les dimensions de notre écran géant&lt;br /&gt;
&lt;br /&gt;
La configuration d'écran est la suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma (I,J)'''&lt;br /&gt;
&lt;br /&gt;
0,1 ; 1,1&lt;br /&gt;
&lt;br /&gt;
0,0 ; 1,0&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quel que soit l'écran, le flux qu'il devra recevoir sera situé entre [X1,X2] et [Y1,Y2].&lt;br /&gt;
Évidemment ces valeurs de l'emplacement de l'écran&lt;br /&gt;
&lt;br /&gt;
* Y2 = Y * ( D||U ) * (I+1) / nb_Y&lt;br /&gt;
* Y1 = Y * D * I / nb_Y&lt;br /&gt;
* X1 = X * L * J / nb_X&lt;br /&gt;
* X2 = X * ( L||R ) * (J+1) / nb_X&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 24/01/18===&lt;br /&gt;
Début de la gestion réseau du flux vidéo.&lt;br /&gt;
&lt;br /&gt;
Pour la partie théorique, nous allons donc procéder de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
Une Raspberry s'occupera de diffuser le flux sur le réseau via un commutateur. À partir d'un fichier vidéo interne.&lt;br /&gt;
&lt;br /&gt;
Les autres R-Pi disposeront d'un fichier de configuration qui contient les coordonnées à afficher en fonction de la position de l'écran, dans la première partie ce fichier sera directement implanté avec un contenu propre à chaque R-Pi mais dans la seconde il s'agira de les modifier automatiquement.&lt;br /&gt;
&lt;br /&gt;
Configuration eth0 sur la Raspberry pi : &lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
address 192.168.1.&amp;lt;2+numero_rpi&amp;gt;&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
&lt;br /&gt;
On commencera par créer un fichier fifo pour faire la transmission entre nc et OMXplayer&lt;br /&gt;
&lt;br /&gt;
Lecture du réseau : nc -l -p &amp;lt;port&amp;gt; &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Affichage : omxplayer --crop x1,y1,x2,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
[https://elinux.org/Omxplayer] : Documentation OMX player&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 31/01/18===&lt;br /&gt;
&lt;br /&gt;
Tentatives de communication PC (Source flux) à Raspberry (Écran) via nc : Échec&lt;br /&gt;
&lt;br /&gt;
* [PC source] : | nc &lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 1] : nc -l -p 12345 &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 2] : omxplayer --crop x1,y1,x1,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Avec x1,y1,x2,y2 les coordonnées des coins de la fenêtre à afficher&lt;br /&gt;
&lt;br /&gt;
Problème rencontré : la Raspberry n'arrive pas à obtenir une adresse joignable malgré une connexion directe avec le PC en ethernet&lt;br /&gt;
&lt;br /&gt;
* sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; iface eth0 inet dhcp&lt;br /&gt;
&lt;br /&gt;
* ifdown eth0&lt;br /&gt;
&lt;br /&gt;
* ifup eth0&lt;br /&gt;
&lt;br /&gt;
* ifconfig&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; inet adr:169.254.68.185&lt;br /&gt;
&lt;br /&gt;
Seconde tentative avec VLC en mode Streaming sur le PC source et VLC en écoute de stream avec VLC également : Échec (IP de la source = ?)&lt;br /&gt;
&lt;br /&gt;
Ligne de commande pour VLC de lecture&lt;br /&gt;
&lt;br /&gt;
* vlc -vvv http://IP_SOURCE:8080/PATH --crop X_RESxY_RES+LEFT_CROP+TOP_CROP -f&lt;br /&gt;
&lt;br /&gt;
PATH: paramètre donné lors du lancement du stream sur la machine source&lt;br /&gt;
&lt;br /&gt;
X_RES : Résolution X de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
Y_RES : Résolution Y de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
LEFT_CROP : Largeur de la zone coupée en partant de la gauche (en pixel)&lt;br /&gt;
&lt;br /&gt;
TOP_CROP : Hauteur de la zone coupée en partant du haut (en pixel)&lt;br /&gt;
&lt;br /&gt;
-f : Full screen&lt;br /&gt;
&lt;br /&gt;
* Test avec le mode de stream (une fois le problème résolu) : le lancement de la lecture sous VLC du côté de la raspberry entraîne des pertes considérables au niveau du flux vidéo avec des coupures très fréquentes (écran noir) ainsi qu'une forte consommation des ressources&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;photo 95%&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
===Lundi 05/02/18===&lt;br /&gt;
&lt;br /&gt;
Omxplayer demeure plus adapté puisqu'il n'entraîne pas une sur-consommation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;photo 0-3%&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mercredi 07/02/18===&lt;br /&gt;
&lt;br /&gt;
Envoie avec succès d'un fichier vidéo via netcat du PC source vers la Raspberry&lt;br /&gt;
&lt;br /&gt;
* $ nc -w 3 172.26.145.172 1234 &amp;lt; Downloads/dragons.mp4&lt;br /&gt;
&lt;br /&gt;
Où 172.26.145.172 est l'adresse obtenue par ifconfig sur la Raspberry.&lt;br /&gt;
&lt;br /&gt;
Réception avec :&lt;br /&gt;
&lt;br /&gt;
* $ nc -l -p 1234 &amp;gt; Downloads/test.mp4&lt;br /&gt;
&lt;br /&gt;
Commande de lecture : &lt;br /&gt;
&lt;br /&gt;
* $ omxplayer --aspect-mode stretch --crop X1,Y1,X2,Y2 Downloads/test.mp4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Récupération de la résolution du flux vidéo (ou fichier dans le cas actuel) : exiftool&lt;br /&gt;
&lt;br /&gt;
Nécessite un &amp;quot;sudo apt-get install exiftool&amp;quot; sur chaque Raspberry&lt;br /&gt;
&lt;br /&gt;
* $ exiftool &amp;lt;file&amp;gt; | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Script d'observation et d’exécution d'action sur la création d'un fichier dans un dossier &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# CONFIGURATION&lt;br /&gt;
&lt;br /&gt;
DIR=&amp;quot;/home/pifou/Downloads&amp;quot;&lt;br /&gt;
EVENTS=&amp;quot;create&amp;quot;&lt;br /&gt;
&lt;br /&gt;
NB_X=1&lt;br /&gt;
NB_Y=1&lt;br /&gt;
&lt;br /&gt;
# MAIN&lt;br /&gt;
&lt;br /&gt;
inotifywait -m -e $EVENTS $DIR |&lt;br /&gt;
while read file&lt;br /&gt;
do&lt;br /&gt;
&lt;br /&gt;
        X1=0&lt;br /&gt;
        Y1=0&lt;br /&gt;
&lt;br /&gt;
        X2=exiftool /home/pifou/Downloads/hide-and-seek.mp4 | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f1 | awk '{print $1&amp;quot;/$NB_X&amp;quot;}' | bc&lt;br /&gt;
        Y2=exiftool /home/pifou/Downloads/hide-and-seek.mp4 | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f2 | awk '{print $1&amp;quot;/$NB_Y&amp;quot;}' | bc&lt;br /&gt;
&lt;br /&gt;
        echo &amp;quot;File recieved : $file&amp;quot;;&lt;br /&gt;
        omxplayer --aspect-mode stretch --crop X1,Y1,X2,Y2 $DIR/$file;&lt;br /&gt;
        PID=$!;&lt;br /&gt;
        wait $PID;&lt;br /&gt;
        rm -f $DIR/$file;&lt;br /&gt;
        echo &amp;quot;File removed $file&amp;quot;;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=50231</id>
		<title>IMA4 2017/2018 P14</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=50231"/>
				<updated>2018-02-07T16:54:37Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : /* Mercredi 07/02/18 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
* '''Intitulé du projet''' : Proposer une solution permettant d'assembler des écrans de PC afin de créer un écran géant&lt;br /&gt;
&lt;br /&gt;
Le renouvellement de matériel informatique continu entraîne un nombre grandissant d'écrans d'ordinateur qui sont difficilement réutilisables compte tenu de leur petite taille. (17&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Afin de leur donner une seconde vie, ce projet a pour but de construire une plateforme permettant d'assembler ces écrans en un écran géant d'une forme &amp;quot;quelconque&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Exemple d'un cas d'écran carré'''&lt;br /&gt;
[[Fichier:Combinaison_ecrans.jpg]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
Afin de réaliser ce projet, il faudra :&lt;br /&gt;
&lt;br /&gt;
* Ajouter un Raspberry Pi sur chaque écran afin de le rentre &amp;quot;intelligent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Créer une application permettant de prendre un flux vidéo et de le diriger vers l'écran visé.&lt;br /&gt;
&lt;br /&gt;
* Permettre de déplacer facilement les écrans tout en maintenant le flux, que ce soit sur des configurations pleines en 2D ou des configurations plus complexes avec des espaces vides ou en 3D.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
* Le positionnement des écrans et la communication entre ces derniers.&lt;br /&gt;
&lt;br /&gt;
Pour une application telle qu'un écran géant composé de plusieurs écran, il est difficilement envisageable d'utiliser un système de coordonnées GPS pour repérer des écrans qui sont particulièrement proches les uns des autres. &lt;br /&gt;
En revanche il est tout à fait réaliste de penser à un système de capteurs de contact/proximité, disposés sur les bords des écrans pour leur permettre de s’emboîter puis il ne resterait qu'à exploiter les possibilités proposées par les Raspberry Pi ainsi qu'un système de coordonnées réalisé dans ce but pour déterminer où l'écran se situe par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
* La gestion du flux vidéo&lt;br /&gt;
&lt;br /&gt;
Le système sera potentiellement réalisé de sorte que chaque écran soit autonome dans son fonctionnement, une fois sa position relative déterminée au préalable.&lt;br /&gt;
En effet, pour le moment le problème était surtout dans le positionnement des écrans plus que dans la gestion du flux vidéo, à priori.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Est-ce que le système peut continuer de fonctionner si on retire l'un des écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pour pallier au problème d'un retrait d'écran, ou d'un disfonctionnement éventuel localisé, une solution possible est de fournir à chaque écran la totalité du flux vidéo.&lt;br /&gt;
Ceci permet dans un premier temps de s'affranchir d'un traitement vidéo avant distribution mais surtout que les autres écrans puissent fonctionner sans interruption due à un écran en particulier  &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Peut-il y avoir des décalages d'affichage entre les écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Malgré l'absence de possibilités de test pour le moment, on peut néanmoins supposer qu'il n'y ait pas de décalage. &lt;br /&gt;
Chaque écran va recevoir le flux vidéo puis en fonction du positionnement des écrans, et on pourra utiliser le système de coordonnées pour effectuer une &amp;quot;selection&amp;quot; sur la partie à afficher.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une configuration de 4 écrans en rectangle, il faudrait donc que l'écran inférieur gauche n'affiche que l'image correspondante jusqu'à la moitié, ensuite l'écran inférieur droit s'occuperait de l'affichage de la partie inférieure droite, etc&lt;br /&gt;
&lt;br /&gt;
En agrandissant le procédé à plus d'écrans, on trouve facilement une méthode de calcul.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet où il s'agira d'être capable de fournir une solution matérielle à la problématique, on s'orientera vers un prototype n'incluant que 4 écrans. Ceci permet à la fois d'éviter un encombrement matériel mais aussi .&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
* 5 Raspberry Pi 3 [https://fr.rs-online.com/web/p/processor-microcontroller-development-kits/8968660/?src=raspberrypi] lien 2 [https://www.mouser.fr/ProductDetail/Adafruit/3055?qs=sGAEpiMZZMuG6%2fXKM6MUaQgA7zSPt2LlznodoAe%252bkgk%3d]&lt;br /&gt;
&lt;br /&gt;
* Un Commutateur (5 Ports +)&lt;br /&gt;
&lt;br /&gt;
* 5 Câbles Ethernet&lt;br /&gt;
&lt;br /&gt;
* 4 Câbles VGA&lt;br /&gt;
&lt;br /&gt;
* 4 Adaptateur VGA-femelle vers HDMI-mâle&lt;br /&gt;
&lt;br /&gt;
* 16 [pack 25] Capteur de contact (1 par côté) [https://fr.rs-online.com/web/p/capteurs-proximites/7985273/] '''Envisagés pour la seconde partie du projet mais non validés pour le moment !'''&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
* 1) Régler le problème de la gestion du flux vidéo par le réseau ainsi qu'au niveau des Raspberry-Pi&lt;br /&gt;
&lt;br /&gt;
'''Hypothèse''': pour une configuration d'écran donnée, on suppose les écrans déjà intelligent et on dispose de leur emplacement relatif.&lt;br /&gt;
&lt;br /&gt;
* 2) Une fois la première version fonctionnelle, s'orienter vers la mise en place du système intelligent&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| Lundi 15/01/18 : 3h30&lt;br /&gt;
Mercredi 17/01/18 : 4h&lt;br /&gt;
| Mercredi 24/01/18 : 4h&lt;br /&gt;
| Mercredi 31/01/18 : 4h&lt;br /&gt;
| Lundi 05/02/18 : 2h&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
===Lundi 15/01/18===&lt;br /&gt;
&lt;br /&gt;
* Première séance ayant pour but de synthétiser l'idée théorique souhaitée par le projet.&lt;br /&gt;
&lt;br /&gt;
On imagine un système d'ensemble d'écrans autonomes mais qui communiquent leur emplacement entre eux, dans le sens où il n'est pas nécessaire de reconfigurer à chaque modification sur l'emplacement des écrans.&lt;br /&gt;
&lt;br /&gt;
Le système est pour ainsi dire évolutif puisqu'à chaque modification, exemple: passage d'un écran géant de 2*2 à 2*3 ou 3*2 (ou plus), les affichages peuvent modifier la zone du flux vidéo à afficher afin de conserver une image sur la totalité des écrans.&lt;br /&gt;
&lt;br /&gt;
De ce fait on peut imaginer des structures plus complexes, cylindriques dans le cas d'un flux d'une caméra à 360° ou plus simplement pour des simulateurs où les écrans seraient inclinés sans pour autant décrire un cercle autour de l'utilisateur.&lt;br /&gt;
&lt;br /&gt;
Cependant, pour des raisons évidentes d'effectif, de temps il est nécessaire de se réduire à une solution moins ambitieuse mais néanmoins acceptable.&lt;br /&gt;
&lt;br /&gt;
===Mercredi 17/01/18===&lt;br /&gt;
&lt;br /&gt;
* Mise en place d'un cahier des charge réalisable dans le temps imparti par rapport à la réponse théorique que l'on souhaiterai apporter au problème.&lt;br /&gt;
&lt;br /&gt;
Suite aux raisons évoquées précédemment, nous allons donc nous orienter vers un système à échelle réduite que nous ferons évoluer progressivement.&lt;br /&gt;
&lt;br /&gt;
Comme prévu nous diffuserons le flux vidéo initial, ''envoyé par Ethernet par une Raspberry Pi à partir d'un fichier stocké sur une clé usb par exemple'', aux 4 Raspberry intégrées aux écrans via un switch donc également par Ethernet (le port HDMI des R-Pi étant uniquement une sortie)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous effectuerons ensuite grâce aux R-Pi la modification du flux en fonction des écrans servant à l'affichage avant de rediriger la partie du flux qui nous intéresse vers les écrans.&lt;br /&gt;
&lt;br /&gt;
*'''Remarque:''' Dans un premier temps, pour une configuration donnée et avec les emplacement des écrans connues, il s'agit uniquement de réaliser la conversion d'affichage.&lt;br /&gt;
&lt;br /&gt;
Le fait de rendre les écrans intelligents n'est cependant pas ignoré et viendra dans un second temps, le choix de la méthode à employer étant encore en suspend. Nous allons cependant effectuer des hypothèses avec des capteurs.&lt;br /&gt;
&lt;br /&gt;
* Soit X et Y les dimensions du flux vidéo&lt;br /&gt;
* Soit U,R,D,L les états des capteurs sur un écran donné (respectivement, Up, Right, Down, Left) (1 pour actifs, 0 pour inactif)&lt;br /&gt;
* Soit I,J les indices des écrans (I = 0/1 et J = 0/1)&lt;br /&gt;
* Soit nb_X et nb_Y respectivement le nombre d'écrans en fonction des coordonnées i.e les dimensions de notre écran géant&lt;br /&gt;
&lt;br /&gt;
La configuration d'écran est la suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma (I,J)'''&lt;br /&gt;
&lt;br /&gt;
0,1 ; 1,1&lt;br /&gt;
&lt;br /&gt;
0,0 ; 1,0&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quel que soit l'écran, le flux qu'il devra recevoir sera situé entre [X1,X2] et [Y1,Y2].&lt;br /&gt;
Évidemment ces valeurs de l'emplacement de l'écran&lt;br /&gt;
&lt;br /&gt;
* Y2 = Y * ( D||U ) * (I+1) / nb_Y&lt;br /&gt;
* Y1 = Y * D * I / nb_Y&lt;br /&gt;
* X1 = X * L * J / nb_X&lt;br /&gt;
* X2 = X * ( L||R ) * (J+1) / nb_X&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 24/01/18===&lt;br /&gt;
Début de la gestion réseau du flux vidéo.&lt;br /&gt;
&lt;br /&gt;
Pour la partie théorique, nous allons donc procéder de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
Une Raspberry s'occupera de diffuser le flux sur le réseau via un commutateur. À partir d'un fichier vidéo interne.&lt;br /&gt;
&lt;br /&gt;
Les autres R-Pi disposeront d'un fichier de configuration qui contient les coordonnées à afficher en fonction de la position de l'écran, dans la première partie ce fichier sera directement implanté avec un contenu propre à chaque R-Pi mais dans la seconde il s'agira de les modifier automatiquement.&lt;br /&gt;
&lt;br /&gt;
Configuration eth0 sur la Raspberry pi : &lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
address 192.168.1.&amp;lt;2+numero_rpi&amp;gt;&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
&lt;br /&gt;
On commencera par créer un fichier fifo pour faire la transmission entre nc et OMXplayer&lt;br /&gt;
&lt;br /&gt;
Lecture du réseau : nc -l -p &amp;lt;port&amp;gt; &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Affichage : omxplayer --crop x1,y1,x2,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
[https://elinux.org/Omxplayer] : Documentation OMX player&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 31/01/18===&lt;br /&gt;
&lt;br /&gt;
Tentatives de communication PC (Source flux) à Raspberry (Écran) via nc : Échec&lt;br /&gt;
&lt;br /&gt;
* [PC source] : | nc &lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 1] : nc -l -p 12345 &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 2] : omxplayer --crop x1,y1,x1,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Avec x1,y1,x2,y2 les coordonnées des coins de la fenêtre à afficher&lt;br /&gt;
&lt;br /&gt;
Problème rencontré : la Raspberry n'arrive pas à obtenir une adresse joignable malgré une connexion directe avec le PC en ethernet&lt;br /&gt;
&lt;br /&gt;
* sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; iface eth0 inet dhcp&lt;br /&gt;
&lt;br /&gt;
* ifdown eth0&lt;br /&gt;
&lt;br /&gt;
* ifup eth0&lt;br /&gt;
&lt;br /&gt;
* ifconfig&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; inet adr:169.254.68.185&lt;br /&gt;
&lt;br /&gt;
Seconde tentative avec VLC en mode Streaming sur le PC source et VLC en écoute de stream avec VLC également : Échec (IP de la source = ?)&lt;br /&gt;
&lt;br /&gt;
Ligne de commande pour VLC de lecture&lt;br /&gt;
&lt;br /&gt;
* vlc -vvv http://IP_SOURCE:8080/PATH --crop X_RESxY_RES+LEFT_CROP+TOP_CROP -f&lt;br /&gt;
&lt;br /&gt;
PATH: paramètre donné lors du lancement du stream sur la machine source&lt;br /&gt;
&lt;br /&gt;
X_RES : Résolution X de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
Y_RES : Résolution Y de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
LEFT_CROP : Largeur de la zone coupée en partant de la gauche (en pixel)&lt;br /&gt;
&lt;br /&gt;
TOP_CROP : Hauteur de la zone coupée en partant du haut (en pixel)&lt;br /&gt;
&lt;br /&gt;
-f : Full screen&lt;br /&gt;
&lt;br /&gt;
* Test avec le mode de stream (une fois le problème résolu) : le lancement de la lecture sous VLC du côté de la raspberry entraîne des pertes considérables au niveau du flux vidéo avec des coupures très fréquentes (écran noir) ainsi qu'une forte consommation des ressources&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;photo 95%&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
===Lundi 05/02/18===&lt;br /&gt;
&lt;br /&gt;
Omxplayer demeure plus adapté puisqu'il n'entraîne pas une sur-consommation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;photo 0-3%&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mercredi 07/02/18===&lt;br /&gt;
&lt;br /&gt;
Envoie avec succès d'un fichier vidéo via netcat du PC source vers la Raspberry&lt;br /&gt;
&lt;br /&gt;
* $ nc -w 3 172.26.145.172 1234 &amp;lt; Downloads/dragons.mp4&lt;br /&gt;
&lt;br /&gt;
Où 172.26.145.172 est l'adresse obtenue par ifconfig sur la Raspberry.&lt;br /&gt;
&lt;br /&gt;
Réception avec :&lt;br /&gt;
&lt;br /&gt;
* $ nc -l -p 1234 &amp;gt; Downloads/test.mp4&lt;br /&gt;
&lt;br /&gt;
Commande de lecture : &lt;br /&gt;
&lt;br /&gt;
* $ omxplayer --aspect-mode stretch --crop X1,Y1,X2,Y2 Downloads/test.mp4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Récupération de la résolution du flux vidéo (ou fichier dans le cas actuel) : exiftool&lt;br /&gt;
&lt;br /&gt;
Nécessite un &amp;quot;sudo apt-get install exiftool&amp;quot; sur chaque Raspberry&lt;br /&gt;
&lt;br /&gt;
* $ exiftool &amp;lt;file&amp;gt; | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Script d'observation et d’exécution d'action sur la création d'un fichier dans un dossier &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# CONFIGURATION&lt;br /&gt;
&lt;br /&gt;
DIR=&amp;quot;/home/pifou/Downloads&amp;quot;&lt;br /&gt;
EVENTS=&amp;quot;create&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# MAIN&lt;br /&gt;
&lt;br /&gt;
inotifywait -m -e $EVENTS $DIR |&lt;br /&gt;
while read file&lt;br /&gt;
do&lt;br /&gt;
&lt;br /&gt;
        X1=0&lt;br /&gt;
        Y1=0&lt;br /&gt;
&lt;br /&gt;
        X2=exiftool $DIR/$file | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f1&lt;br /&gt;
        Y2=exiftool $DIR/$file | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f2&lt;br /&gt;
&lt;br /&gt;
        echo &amp;quot;File recieved : $file&amp;quot;;&lt;br /&gt;
        omxplayer --aspect-mode stretch --crop X1,Y1,X2,Y2 $DIR/$file;&lt;br /&gt;
        PID=$!;&lt;br /&gt;
        wait $PID;&lt;br /&gt;
        rm -f $DIR/$file;&lt;br /&gt;
        echo &amp;quot;File removed $file&amp;quot;;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=50229</id>
		<title>IMA4 2017/2018 P14</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=50229"/>
				<updated>2018-02-07T16:49:38Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : /* Mercredi 07/02/18 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
* '''Intitulé du projet''' : Proposer une solution permettant d'assembler des écrans de PC afin de créer un écran géant&lt;br /&gt;
&lt;br /&gt;
Le renouvellement de matériel informatique continu entraîne un nombre grandissant d'écrans d'ordinateur qui sont difficilement réutilisables compte tenu de leur petite taille. (17&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Afin de leur donner une seconde vie, ce projet a pour but de construire une plateforme permettant d'assembler ces écrans en un écran géant d'une forme &amp;quot;quelconque&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Exemple d'un cas d'écran carré'''&lt;br /&gt;
[[Fichier:Combinaison_ecrans.jpg]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
Afin de réaliser ce projet, il faudra :&lt;br /&gt;
&lt;br /&gt;
* Ajouter un Raspberry Pi sur chaque écran afin de le rentre &amp;quot;intelligent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Créer une application permettant de prendre un flux vidéo et de le diriger vers l'écran visé.&lt;br /&gt;
&lt;br /&gt;
* Permettre de déplacer facilement les écrans tout en maintenant le flux, que ce soit sur des configurations pleines en 2D ou des configurations plus complexes avec des espaces vides ou en 3D.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
* Le positionnement des écrans et la communication entre ces derniers.&lt;br /&gt;
&lt;br /&gt;
Pour une application telle qu'un écran géant composé de plusieurs écran, il est difficilement envisageable d'utiliser un système de coordonnées GPS pour repérer des écrans qui sont particulièrement proches les uns des autres. &lt;br /&gt;
En revanche il est tout à fait réaliste de penser à un système de capteurs de contact/proximité, disposés sur les bords des écrans pour leur permettre de s’emboîter puis il ne resterait qu'à exploiter les possibilités proposées par les Raspberry Pi ainsi qu'un système de coordonnées réalisé dans ce but pour déterminer où l'écran se situe par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
* La gestion du flux vidéo&lt;br /&gt;
&lt;br /&gt;
Le système sera potentiellement réalisé de sorte que chaque écran soit autonome dans son fonctionnement, une fois sa position relative déterminée au préalable.&lt;br /&gt;
En effet, pour le moment le problème était surtout dans le positionnement des écrans plus que dans la gestion du flux vidéo, à priori.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Est-ce que le système peut continuer de fonctionner si on retire l'un des écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pour pallier au problème d'un retrait d'écran, ou d'un disfonctionnement éventuel localisé, une solution possible est de fournir à chaque écran la totalité du flux vidéo.&lt;br /&gt;
Ceci permet dans un premier temps de s'affranchir d'un traitement vidéo avant distribution mais surtout que les autres écrans puissent fonctionner sans interruption due à un écran en particulier  &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Peut-il y avoir des décalages d'affichage entre les écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Malgré l'absence de possibilités de test pour le moment, on peut néanmoins supposer qu'il n'y ait pas de décalage. &lt;br /&gt;
Chaque écran va recevoir le flux vidéo puis en fonction du positionnement des écrans, et on pourra utiliser le système de coordonnées pour effectuer une &amp;quot;selection&amp;quot; sur la partie à afficher.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une configuration de 4 écrans en rectangle, il faudrait donc que l'écran inférieur gauche n'affiche que l'image correspondante jusqu'à la moitié, ensuite l'écran inférieur droit s'occuperait de l'affichage de la partie inférieure droite, etc&lt;br /&gt;
&lt;br /&gt;
En agrandissant le procédé à plus d'écrans, on trouve facilement une méthode de calcul.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet où il s'agira d'être capable de fournir une solution matérielle à la problématique, on s'orientera vers un prototype n'incluant que 4 écrans. Ceci permet à la fois d'éviter un encombrement matériel mais aussi .&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
* 5 Raspberry Pi 3 [https://fr.rs-online.com/web/p/processor-microcontroller-development-kits/8968660/?src=raspberrypi] lien 2 [https://www.mouser.fr/ProductDetail/Adafruit/3055?qs=sGAEpiMZZMuG6%2fXKM6MUaQgA7zSPt2LlznodoAe%252bkgk%3d]&lt;br /&gt;
&lt;br /&gt;
* Un Commutateur (5 Ports +)&lt;br /&gt;
&lt;br /&gt;
* 5 Câbles Ethernet&lt;br /&gt;
&lt;br /&gt;
* 4 Câbles VGA&lt;br /&gt;
&lt;br /&gt;
* 4 Adaptateur VGA-femelle vers HDMI-mâle&lt;br /&gt;
&lt;br /&gt;
* 16 [pack 25] Capteur de contact (1 par côté) [https://fr.rs-online.com/web/p/capteurs-proximites/7985273/] '''Envisagés pour la seconde partie du projet mais non validés pour le moment !'''&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
* 1) Régler le problème de la gestion du flux vidéo par le réseau ainsi qu'au niveau des Raspberry-Pi&lt;br /&gt;
&lt;br /&gt;
'''Hypothèse''': pour une configuration d'écran donnée, on suppose les écrans déjà intelligent et on dispose de leur emplacement relatif.&lt;br /&gt;
&lt;br /&gt;
* 2) Une fois la première version fonctionnelle, s'orienter vers la mise en place du système intelligent&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| Lundi 15/01/18 : 3h30&lt;br /&gt;
Mercredi 17/01/18 : 4h&lt;br /&gt;
| Mercredi 24/01/18 : 4h&lt;br /&gt;
| Mercredi 31/01/18 : 4h&lt;br /&gt;
| Lundi 05/02/18 : 2h&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
===Lundi 15/01/18===&lt;br /&gt;
&lt;br /&gt;
* Première séance ayant pour but de synthétiser l'idée théorique souhaitée par le projet.&lt;br /&gt;
&lt;br /&gt;
On imagine un système d'ensemble d'écrans autonomes mais qui communiquent leur emplacement entre eux, dans le sens où il n'est pas nécessaire de reconfigurer à chaque modification sur l'emplacement des écrans.&lt;br /&gt;
&lt;br /&gt;
Le système est pour ainsi dire évolutif puisqu'à chaque modification, exemple: passage d'un écran géant de 2*2 à 2*3 ou 3*2 (ou plus), les affichages peuvent modifier la zone du flux vidéo à afficher afin de conserver une image sur la totalité des écrans.&lt;br /&gt;
&lt;br /&gt;
De ce fait on peut imaginer des structures plus complexes, cylindriques dans le cas d'un flux d'une caméra à 360° ou plus simplement pour des simulateurs où les écrans seraient inclinés sans pour autant décrire un cercle autour de l'utilisateur.&lt;br /&gt;
&lt;br /&gt;
Cependant, pour des raisons évidentes d'effectif, de temps il est nécessaire de se réduire à une solution moins ambitieuse mais néanmoins acceptable.&lt;br /&gt;
&lt;br /&gt;
===Mercredi 17/01/18===&lt;br /&gt;
&lt;br /&gt;
* Mise en place d'un cahier des charge réalisable dans le temps imparti par rapport à la réponse théorique que l'on souhaiterai apporter au problème.&lt;br /&gt;
&lt;br /&gt;
Suite aux raisons évoquées précédemment, nous allons donc nous orienter vers un système à échelle réduite que nous ferons évoluer progressivement.&lt;br /&gt;
&lt;br /&gt;
Comme prévu nous diffuserons le flux vidéo initial, ''envoyé par Ethernet par une Raspberry Pi à partir d'un fichier stocké sur une clé usb par exemple'', aux 4 Raspberry intégrées aux écrans via un switch donc également par Ethernet (le port HDMI des R-Pi étant uniquement une sortie)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous effectuerons ensuite grâce aux R-Pi la modification du flux en fonction des écrans servant à l'affichage avant de rediriger la partie du flux qui nous intéresse vers les écrans.&lt;br /&gt;
&lt;br /&gt;
*'''Remarque:''' Dans un premier temps, pour une configuration donnée et avec les emplacement des écrans connues, il s'agit uniquement de réaliser la conversion d'affichage.&lt;br /&gt;
&lt;br /&gt;
Le fait de rendre les écrans intelligents n'est cependant pas ignoré et viendra dans un second temps, le choix de la méthode à employer étant encore en suspend. Nous allons cependant effectuer des hypothèses avec des capteurs.&lt;br /&gt;
&lt;br /&gt;
* Soit X et Y les dimensions du flux vidéo&lt;br /&gt;
* Soit U,R,D,L les états des capteurs sur un écran donné (respectivement, Up, Right, Down, Left) (1 pour actifs, 0 pour inactif)&lt;br /&gt;
* Soit I,J les indices des écrans (I = 0/1 et J = 0/1)&lt;br /&gt;
* Soit nb_X et nb_Y respectivement le nombre d'écrans en fonction des coordonnées i.e les dimensions de notre écran géant&lt;br /&gt;
&lt;br /&gt;
La configuration d'écran est la suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma (I,J)'''&lt;br /&gt;
&lt;br /&gt;
0,1 ; 1,1&lt;br /&gt;
&lt;br /&gt;
0,0 ; 1,0&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quel que soit l'écran, le flux qu'il devra recevoir sera situé entre [X1,X2] et [Y1,Y2].&lt;br /&gt;
Évidemment ces valeurs de l'emplacement de l'écran&lt;br /&gt;
&lt;br /&gt;
* Y2 = Y * ( D||U ) * (I+1) / nb_Y&lt;br /&gt;
* Y1 = Y * D * I / nb_Y&lt;br /&gt;
* X1 = X * L * J / nb_X&lt;br /&gt;
* X2 = X * ( L||R ) * (J+1) / nb_X&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 24/01/18===&lt;br /&gt;
Début de la gestion réseau du flux vidéo.&lt;br /&gt;
&lt;br /&gt;
Pour la partie théorique, nous allons donc procéder de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
Une Raspberry s'occupera de diffuser le flux sur le réseau via un commutateur. À partir d'un fichier vidéo interne.&lt;br /&gt;
&lt;br /&gt;
Les autres R-Pi disposeront d'un fichier de configuration qui contient les coordonnées à afficher en fonction de la position de l'écran, dans la première partie ce fichier sera directement implanté avec un contenu propre à chaque R-Pi mais dans la seconde il s'agira de les modifier automatiquement.&lt;br /&gt;
&lt;br /&gt;
Configuration eth0 sur la Raspberry pi : &lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
address 192.168.1.&amp;lt;2+numero_rpi&amp;gt;&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
&lt;br /&gt;
On commencera par créer un fichier fifo pour faire la transmission entre nc et OMXplayer&lt;br /&gt;
&lt;br /&gt;
Lecture du réseau : nc -l -p &amp;lt;port&amp;gt; &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Affichage : omxplayer --crop x1,y1,x2,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
[https://elinux.org/Omxplayer] : Documentation OMX player&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 31/01/18===&lt;br /&gt;
&lt;br /&gt;
Tentatives de communication PC (Source flux) à Raspberry (Écran) via nc : Échec&lt;br /&gt;
&lt;br /&gt;
* [PC source] : | nc &lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 1] : nc -l -p 12345 &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 2] : omxplayer --crop x1,y1,x1,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Avec x1,y1,x2,y2 les coordonnées des coins de la fenêtre à afficher&lt;br /&gt;
&lt;br /&gt;
Problème rencontré : la Raspberry n'arrive pas à obtenir une adresse joignable malgré une connexion directe avec le PC en ethernet&lt;br /&gt;
&lt;br /&gt;
* sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; iface eth0 inet dhcp&lt;br /&gt;
&lt;br /&gt;
* ifdown eth0&lt;br /&gt;
&lt;br /&gt;
* ifup eth0&lt;br /&gt;
&lt;br /&gt;
* ifconfig&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; inet adr:169.254.68.185&lt;br /&gt;
&lt;br /&gt;
Seconde tentative avec VLC en mode Streaming sur le PC source et VLC en écoute de stream avec VLC également : Échec (IP de la source = ?)&lt;br /&gt;
&lt;br /&gt;
Ligne de commande pour VLC de lecture&lt;br /&gt;
&lt;br /&gt;
* vlc -vvv http://IP_SOURCE:8080/PATH --crop X_RESxY_RES+LEFT_CROP+TOP_CROP -f&lt;br /&gt;
&lt;br /&gt;
PATH: paramètre donné lors du lancement du stream sur la machine source&lt;br /&gt;
&lt;br /&gt;
X_RES : Résolution X de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
Y_RES : Résolution Y de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
LEFT_CROP : Largeur de la zone coupée en partant de la gauche (en pixel)&lt;br /&gt;
&lt;br /&gt;
TOP_CROP : Hauteur de la zone coupée en partant du haut (en pixel)&lt;br /&gt;
&lt;br /&gt;
-f : Full screen&lt;br /&gt;
&lt;br /&gt;
* Test avec le mode de stream (une fois le problème résolu) : le lancement de la lecture sous VLC du côté de la raspberry entraîne des pertes considérables au niveau du flux vidéo avec des coupures très fréquentes (écran noir) ainsi qu'une forte consommation des ressources&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;photo 95%&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
===Lundi 05/02/18===&lt;br /&gt;
&lt;br /&gt;
Omxplayer demeure plus adapté puisqu'il n'entraîne pas une sur-consommation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;photo 0-3%&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mercredi 07/02/18===&lt;br /&gt;
&lt;br /&gt;
Envoie avec succès d'un fichier vidéo via netcat du PC source vers la Raspberry&lt;br /&gt;
&lt;br /&gt;
* $ nc -w 3 172.26.145.172 1234 &amp;lt; Downloads/dragons.mp4&lt;br /&gt;
&lt;br /&gt;
Où 172.26.145.172 est l'adresse obtenue par ifconfig sur la Raspberry.&lt;br /&gt;
&lt;br /&gt;
Réception avec :&lt;br /&gt;
&lt;br /&gt;
* $ nc -l -p 1234 &amp;gt; Downloads/test.mp4&lt;br /&gt;
&lt;br /&gt;
Commande de lecture : &lt;br /&gt;
&lt;br /&gt;
* $ omxplayer --aspect-mode stretch --crop X1,Y1,X2,Y2 Downloads/test.mp4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Récupération de la résolution du flux vidéo (ou fichier dans le cas actuel) : exiftool&lt;br /&gt;
&lt;br /&gt;
Nécessite un &amp;quot;sudo apt-get install exiftool&amp;quot; sur chaque Raspberry&lt;br /&gt;
&lt;br /&gt;
* $ exiftool &amp;lt;file&amp;gt; | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Script d'observation et d’exécution d'action sur la création d'un fichier dans un dossier &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# CONFIGURATION&lt;br /&gt;
&lt;br /&gt;
DIR=&amp;quot;path&amp;quot;&lt;br /&gt;
EVENTS=&amp;quot;create&amp;quot;&lt;br /&gt;
&lt;br /&gt;
X1=0&lt;br /&gt;
Y1=0&lt;br /&gt;
&lt;br /&gt;
X2=exiftool /home/pifou/Downloads/dragons.mp4 | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f1&lt;br /&gt;
Y2=exiftool /home/pifou/Downloads/dragons.mp4 | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f2&lt;br /&gt;
&lt;br /&gt;
# MAIN&lt;br /&gt;
&lt;br /&gt;
inotifywait -m -e $EVENTS $DIR |&lt;br /&gt;
while read file&lt;br /&gt;
do&lt;br /&gt;
        echo &amp;quot;File recieved : $file&amp;quot;;&lt;br /&gt;
        omxplayer --aspect-mode stretch --crop X1,Y1,X2,Y2 $file&lt;br /&gt;
        rm -f $DIR/$file;&lt;br /&gt;
        echo &amp;quot;File removed $file&amp;quot;;&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=50179</id>
		<title>IMA4 2017/2018 P14</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=50179"/>
				<updated>2018-02-07T16:05:13Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : /* Mercredi 07/02/18 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
* '''Intitulé du projet''' : Proposer une solution permettant d'assembler des écrans de PC afin de créer un écran géant&lt;br /&gt;
&lt;br /&gt;
Le renouvellement de matériel informatique continu entraîne un nombre grandissant d'écrans d'ordinateur qui sont difficilement réutilisables compte tenu de leur petite taille. (17&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Afin de leur donner une seconde vie, ce projet a pour but de construire une plateforme permettant d'assembler ces écrans en un écran géant d'une forme &amp;quot;quelconque&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Exemple d'un cas d'écran carré'''&lt;br /&gt;
[[Fichier:Combinaison_ecrans.jpg]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
Afin de réaliser ce projet, il faudra :&lt;br /&gt;
&lt;br /&gt;
* Ajouter un Raspberry Pi sur chaque écran afin de le rentre &amp;quot;intelligent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Créer une application permettant de prendre un flux vidéo et de le diriger vers l'écran visé.&lt;br /&gt;
&lt;br /&gt;
* Permettre de déplacer facilement les écrans tout en maintenant le flux, que ce soit sur des configurations pleines en 2D ou des configurations plus complexes avec des espaces vides ou en 3D.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
* Le positionnement des écrans et la communication entre ces derniers.&lt;br /&gt;
&lt;br /&gt;
Pour une application telle qu'un écran géant composé de plusieurs écran, il est difficilement envisageable d'utiliser un système de coordonnées GPS pour repérer des écrans qui sont particulièrement proches les uns des autres. &lt;br /&gt;
En revanche il est tout à fait réaliste de penser à un système de capteurs de contact/proximité, disposés sur les bords des écrans pour leur permettre de s’emboîter puis il ne resterait qu'à exploiter les possibilités proposées par les Raspberry Pi ainsi qu'un système de coordonnées réalisé dans ce but pour déterminer où l'écran se situe par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
* La gestion du flux vidéo&lt;br /&gt;
&lt;br /&gt;
Le système sera potentiellement réalisé de sorte que chaque écran soit autonome dans son fonctionnement, une fois sa position relative déterminée au préalable.&lt;br /&gt;
En effet, pour le moment le problème était surtout dans le positionnement des écrans plus que dans la gestion du flux vidéo, à priori.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Est-ce que le système peut continuer de fonctionner si on retire l'un des écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pour pallier au problème d'un retrait d'écran, ou d'un disfonctionnement éventuel localisé, une solution possible est de fournir à chaque écran la totalité du flux vidéo.&lt;br /&gt;
Ceci permet dans un premier temps de s'affranchir d'un traitement vidéo avant distribution mais surtout que les autres écrans puissent fonctionner sans interruption due à un écran en particulier  &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Peut-il y avoir des décalages d'affichage entre les écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Malgré l'absence de possibilités de test pour le moment, on peut néanmoins supposer qu'il n'y ait pas de décalage. &lt;br /&gt;
Chaque écran va recevoir le flux vidéo puis en fonction du positionnement des écrans, et on pourra utiliser le système de coordonnées pour effectuer une &amp;quot;selection&amp;quot; sur la partie à afficher.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une configuration de 4 écrans en rectangle, il faudrait donc que l'écran inférieur gauche n'affiche que l'image correspondante jusqu'à la moitié, ensuite l'écran inférieur droit s'occuperait de l'affichage de la partie inférieure droite, etc&lt;br /&gt;
&lt;br /&gt;
En agrandissant le procédé à plus d'écrans, on trouve facilement une méthode de calcul.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet où il s'agira d'être capable de fournir une solution matérielle à la problématique, on s'orientera vers un prototype n'incluant que 4 écrans. Ceci permet à la fois d'éviter un encombrement matériel mais aussi .&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
* 5 Raspberry Pi 3 [https://fr.rs-online.com/web/p/processor-microcontroller-development-kits/8968660/?src=raspberrypi] lien 2 [https://www.mouser.fr/ProductDetail/Adafruit/3055?qs=sGAEpiMZZMuG6%2fXKM6MUaQgA7zSPt2LlznodoAe%252bkgk%3d]&lt;br /&gt;
&lt;br /&gt;
* Un Commutateur (5 Ports +)&lt;br /&gt;
&lt;br /&gt;
* 5 Câbles Ethernet&lt;br /&gt;
&lt;br /&gt;
* 4 Câbles VGA&lt;br /&gt;
&lt;br /&gt;
* 4 Adaptateur VGA-femelle vers HDMI-mâle&lt;br /&gt;
&lt;br /&gt;
* 16 [pack 25] Capteur de contact (1 par côté) [https://fr.rs-online.com/web/p/capteurs-proximites/7985273/] '''Envisagés pour la seconde partie du projet mais non validés pour le moment !'''&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
* 1) Régler le problème de la gestion du flux vidéo par le réseau ainsi qu'au niveau des Raspberry-Pi&lt;br /&gt;
&lt;br /&gt;
'''Hypothèse''': pour une configuration d'écran donnée, on suppose les écrans déjà intelligent et on dispose de leur emplacement relatif.&lt;br /&gt;
&lt;br /&gt;
* 2) Une fois la première version fonctionnelle, s'orienter vers la mise en place du système intelligent&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| Lundi 15/01/18 : 3h30&lt;br /&gt;
Mercredi 17/01/18 : 4h&lt;br /&gt;
| Mercredi 24/01/18 : 4h&lt;br /&gt;
| Mercredi 31/01/18 : 4h&lt;br /&gt;
| Lundi 05/02/18 : 2h&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
===Lundi 15/01/18===&lt;br /&gt;
&lt;br /&gt;
* Première séance ayant pour but de synthétiser l'idée théorique souhaitée par le projet.&lt;br /&gt;
&lt;br /&gt;
On imagine un système d'ensemble d'écrans autonomes mais qui communiquent leur emplacement entre eux, dans le sens où il n'est pas nécessaire de reconfigurer à chaque modification sur l'emplacement des écrans.&lt;br /&gt;
&lt;br /&gt;
Le système est pour ainsi dire évolutif puisqu'à chaque modification, exemple: passage d'un écran géant de 2*2 à 2*3 ou 3*2 (ou plus), les affichages peuvent modifier la zone du flux vidéo à afficher afin de conserver une image sur la totalité des écrans.&lt;br /&gt;
&lt;br /&gt;
De ce fait on peut imaginer des structures plus complexes, cylindriques dans le cas d'un flux d'une caméra à 360° ou plus simplement pour des simulateurs où les écrans seraient inclinés sans pour autant décrire un cercle autour de l'utilisateur.&lt;br /&gt;
&lt;br /&gt;
Cependant, pour des raisons évidentes d'effectif, de temps il est nécessaire de se réduire à une solution moins ambitieuse mais néanmoins acceptable.&lt;br /&gt;
&lt;br /&gt;
===Mercredi 17/01/18===&lt;br /&gt;
&lt;br /&gt;
* Mise en place d'un cahier des charge réalisable dans le temps imparti par rapport à la réponse théorique que l'on souhaiterai apporter au problème.&lt;br /&gt;
&lt;br /&gt;
Suite aux raisons évoquées précédemment, nous allons donc nous orienter vers un système à échelle réduite que nous ferons évoluer progressivement.&lt;br /&gt;
&lt;br /&gt;
Comme prévu nous diffuserons le flux vidéo initial, ''envoyé par Ethernet par une Raspberry Pi à partir d'un fichier stocké sur une clé usb par exemple'', aux 4 Raspberry intégrées aux écrans via un switch donc également par Ethernet (le port HDMI des R-Pi étant uniquement une sortie)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous effectuerons ensuite grâce aux R-Pi la modification du flux en fonction des écrans servant à l'affichage avant de rediriger la partie du flux qui nous intéresse vers les écrans.&lt;br /&gt;
&lt;br /&gt;
*'''Remarque:''' Dans un premier temps, pour une configuration donnée et avec les emplacement des écrans connues, il s'agit uniquement de réaliser la conversion d'affichage.&lt;br /&gt;
&lt;br /&gt;
Le fait de rendre les écrans intelligents n'est cependant pas ignoré et viendra dans un second temps, le choix de la méthode à employer étant encore en suspend. Nous allons cependant effectuer des hypothèses avec des capteurs.&lt;br /&gt;
&lt;br /&gt;
* Soit X et Y les dimensions du flux vidéo&lt;br /&gt;
* Soit U,R,D,L les états des capteurs sur un écran donné (respectivement, Up, Right, Down, Left) (1 pour actifs, 0 pour inactif)&lt;br /&gt;
* Soit I,J les indices des écrans (I = 0/1 et J = 0/1)&lt;br /&gt;
* Soit nb_X et nb_Y respectivement le nombre d'écrans en fonction des coordonnées i.e les dimensions de notre écran géant&lt;br /&gt;
&lt;br /&gt;
La configuration d'écran est la suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma (I,J)'''&lt;br /&gt;
&lt;br /&gt;
0,1 ; 1,1&lt;br /&gt;
&lt;br /&gt;
0,0 ; 1,0&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quel que soit l'écran, le flux qu'il devra recevoir sera situé entre [X1,X2] et [Y1,Y2].&lt;br /&gt;
Évidemment ces valeurs de l'emplacement de l'écran&lt;br /&gt;
&lt;br /&gt;
* Y2 = Y * ( D||U ) * (I+1) / nb_Y&lt;br /&gt;
* Y1 = Y * D * I / nb_Y&lt;br /&gt;
* X1 = X * L * J / nb_X&lt;br /&gt;
* X2 = X * ( L||R ) * (J+1) / nb_X&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 24/01/18===&lt;br /&gt;
Début de la gestion réseau du flux vidéo.&lt;br /&gt;
&lt;br /&gt;
Pour la partie théorique, nous allons donc procéder de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
Une Raspberry s'occupera de diffuser le flux sur le réseau via un commutateur. À partir d'un fichier vidéo interne.&lt;br /&gt;
&lt;br /&gt;
Les autres R-Pi disposeront d'un fichier de configuration qui contient les coordonnées à afficher en fonction de la position de l'écran, dans la première partie ce fichier sera directement implanté avec un contenu propre à chaque R-Pi mais dans la seconde il s'agira de les modifier automatiquement.&lt;br /&gt;
&lt;br /&gt;
Configuration eth0 sur la Raspberry pi : &lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
address 192.168.1.&amp;lt;2+numero_rpi&amp;gt;&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
&lt;br /&gt;
On commencera par créer un fichier fifo pour faire la transmission entre nc et OMXplayer&lt;br /&gt;
&lt;br /&gt;
Lecture du réseau : nc -l -p &amp;lt;port&amp;gt; &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Affichage : omxplayer --crop x1,y1,x2,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
[https://elinux.org/Omxplayer] : Documentation OMX player&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 31/01/18===&lt;br /&gt;
&lt;br /&gt;
Tentatives de communication PC (Source flux) à Raspberry (Écran) via nc : Échec&lt;br /&gt;
&lt;br /&gt;
* [PC source] : | nc &lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 1] : nc -l -p 12345 &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 2] : omxplayer --crop x1,y1,x1,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Avec x1,y1,x2,y2 les coordonnées des coins de la fenêtre à afficher&lt;br /&gt;
&lt;br /&gt;
Problème rencontré : la Raspberry n'arrive pas à obtenir une adresse joignable malgré une connexion directe avec le PC en ethernet&lt;br /&gt;
&lt;br /&gt;
* sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; iface eth0 inet dhcp&lt;br /&gt;
&lt;br /&gt;
* ifdown eth0&lt;br /&gt;
&lt;br /&gt;
* ifup eth0&lt;br /&gt;
&lt;br /&gt;
* ifconfig&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; inet adr:169.254.68.185&lt;br /&gt;
&lt;br /&gt;
Seconde tentative avec VLC en mode Streaming sur le PC source et VLC en écoute de stream avec VLC également : Échec (IP de la source = ?)&lt;br /&gt;
&lt;br /&gt;
Ligne de commande pour VLC de lecture&lt;br /&gt;
&lt;br /&gt;
* vlc -vvv http://IP_SOURCE:8080/PATH --crop X_RESxY_RES+LEFT_CROP+TOP_CROP -f&lt;br /&gt;
&lt;br /&gt;
PATH: paramètre donné lors du lancement du stream sur la machine source&lt;br /&gt;
&lt;br /&gt;
X_RES : Résolution X de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
Y_RES : Résolution Y de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
LEFT_CROP : Largeur de la zone coupée en partant de la gauche (en pixel)&lt;br /&gt;
&lt;br /&gt;
TOP_CROP : Hauteur de la zone coupée en partant du haut (en pixel)&lt;br /&gt;
&lt;br /&gt;
-f : Full screen&lt;br /&gt;
&lt;br /&gt;
* Test avec le mode de stream (une fois le problème résolu) : le lancement de la lecture sous VLC du côté de la raspberry entraîne des pertes considérables au niveau du flux vidéo avec des coupures très fréquentes (écran noir) ainsi qu'une forte consommation des ressources&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;photo 95%&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
===Lundi 05/02/18===&lt;br /&gt;
&lt;br /&gt;
Omxplayer demeure plus adapté puisqu'il n'entraîne pas une sur-consommation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;photo 0-3%&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mercredi 07/02/18===&lt;br /&gt;
&lt;br /&gt;
Envoie avec succès d'un fichier vidéo via netcat du PC source vers la Raspberry&lt;br /&gt;
&lt;br /&gt;
* $ nc -w 3 172.26.145.172 1234 &amp;lt; Downloads/dragons.mp4&lt;br /&gt;
&lt;br /&gt;
Où 172.26.145.172 est l'adresse obtenue par ifconfig sur la Raspberry.&lt;br /&gt;
&lt;br /&gt;
Réception avec :&lt;br /&gt;
&lt;br /&gt;
* $ nc -l -p 1234 &amp;gt; Downloads/test.mp4&lt;br /&gt;
&lt;br /&gt;
Commande de lecture : &lt;br /&gt;
&lt;br /&gt;
* $ omxplayer --aspect-mode stretch --crop X1,Y1,X2,Y2 Downloads/test.mp4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Récupération de la résolution du flux vidéo (ou fichier dans le cas actuel) : exiftool&lt;br /&gt;
&lt;br /&gt;
Nécessite un &amp;quot;sudo apt-get install exiftool&amp;quot; sur chaque Raspberry&lt;br /&gt;
&lt;br /&gt;
* $ exiftool &amp;lt;file&amp;gt; | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Script d'observation et d’exécution d'action sur la création d'un fichier dans un dossier&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# CONFIGURATION&lt;br /&gt;
&lt;br /&gt;
DIR=&amp;quot;path&amp;quot;&lt;br /&gt;
EVENTS=&amp;quot;create&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# MAIN&lt;br /&gt;
&lt;br /&gt;
inotifywait -m -e $EVENTS --timefmt '%Y-%m-%d %H:%M:%S' --format '%$&lt;br /&gt;
while read date time file&lt;br /&gt;
do&lt;br /&gt;
        echo &amp;quot;$date $time Fichier recu: $file&amp;quot;;&lt;br /&gt;
        rm -rf $DIR/$file;&lt;br /&gt;
        ls $DIR;&lt;br /&gt;
        echo &amp;quot;Has $file been removed ?&amp;quot;;&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=50176</id>
		<title>IMA4 2017/2018 P14</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=50176"/>
				<updated>2018-02-07T16:04:50Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : /* Mercredi 07/02/18 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
* '''Intitulé du projet''' : Proposer une solution permettant d'assembler des écrans de PC afin de créer un écran géant&lt;br /&gt;
&lt;br /&gt;
Le renouvellement de matériel informatique continu entraîne un nombre grandissant d'écrans d'ordinateur qui sont difficilement réutilisables compte tenu de leur petite taille. (17&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Afin de leur donner une seconde vie, ce projet a pour but de construire une plateforme permettant d'assembler ces écrans en un écran géant d'une forme &amp;quot;quelconque&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Exemple d'un cas d'écran carré'''&lt;br /&gt;
[[Fichier:Combinaison_ecrans.jpg]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
Afin de réaliser ce projet, il faudra :&lt;br /&gt;
&lt;br /&gt;
* Ajouter un Raspberry Pi sur chaque écran afin de le rentre &amp;quot;intelligent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Créer une application permettant de prendre un flux vidéo et de le diriger vers l'écran visé.&lt;br /&gt;
&lt;br /&gt;
* Permettre de déplacer facilement les écrans tout en maintenant le flux, que ce soit sur des configurations pleines en 2D ou des configurations plus complexes avec des espaces vides ou en 3D.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
* Le positionnement des écrans et la communication entre ces derniers.&lt;br /&gt;
&lt;br /&gt;
Pour une application telle qu'un écran géant composé de plusieurs écran, il est difficilement envisageable d'utiliser un système de coordonnées GPS pour repérer des écrans qui sont particulièrement proches les uns des autres. &lt;br /&gt;
En revanche il est tout à fait réaliste de penser à un système de capteurs de contact/proximité, disposés sur les bords des écrans pour leur permettre de s’emboîter puis il ne resterait qu'à exploiter les possibilités proposées par les Raspberry Pi ainsi qu'un système de coordonnées réalisé dans ce but pour déterminer où l'écran se situe par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
* La gestion du flux vidéo&lt;br /&gt;
&lt;br /&gt;
Le système sera potentiellement réalisé de sorte que chaque écran soit autonome dans son fonctionnement, une fois sa position relative déterminée au préalable.&lt;br /&gt;
En effet, pour le moment le problème était surtout dans le positionnement des écrans plus que dans la gestion du flux vidéo, à priori.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Est-ce que le système peut continuer de fonctionner si on retire l'un des écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pour pallier au problème d'un retrait d'écran, ou d'un disfonctionnement éventuel localisé, une solution possible est de fournir à chaque écran la totalité du flux vidéo.&lt;br /&gt;
Ceci permet dans un premier temps de s'affranchir d'un traitement vidéo avant distribution mais surtout que les autres écrans puissent fonctionner sans interruption due à un écran en particulier  &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Peut-il y avoir des décalages d'affichage entre les écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Malgré l'absence de possibilités de test pour le moment, on peut néanmoins supposer qu'il n'y ait pas de décalage. &lt;br /&gt;
Chaque écran va recevoir le flux vidéo puis en fonction du positionnement des écrans, et on pourra utiliser le système de coordonnées pour effectuer une &amp;quot;selection&amp;quot; sur la partie à afficher.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une configuration de 4 écrans en rectangle, il faudrait donc que l'écran inférieur gauche n'affiche que l'image correspondante jusqu'à la moitié, ensuite l'écran inférieur droit s'occuperait de l'affichage de la partie inférieure droite, etc&lt;br /&gt;
&lt;br /&gt;
En agrandissant le procédé à plus d'écrans, on trouve facilement une méthode de calcul.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet où il s'agira d'être capable de fournir une solution matérielle à la problématique, on s'orientera vers un prototype n'incluant que 4 écrans. Ceci permet à la fois d'éviter un encombrement matériel mais aussi .&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
* 5 Raspberry Pi 3 [https://fr.rs-online.com/web/p/processor-microcontroller-development-kits/8968660/?src=raspberrypi] lien 2 [https://www.mouser.fr/ProductDetail/Adafruit/3055?qs=sGAEpiMZZMuG6%2fXKM6MUaQgA7zSPt2LlznodoAe%252bkgk%3d]&lt;br /&gt;
&lt;br /&gt;
* Un Commutateur (5 Ports +)&lt;br /&gt;
&lt;br /&gt;
* 5 Câbles Ethernet&lt;br /&gt;
&lt;br /&gt;
* 4 Câbles VGA&lt;br /&gt;
&lt;br /&gt;
* 4 Adaptateur VGA-femelle vers HDMI-mâle&lt;br /&gt;
&lt;br /&gt;
* 16 [pack 25] Capteur de contact (1 par côté) [https://fr.rs-online.com/web/p/capteurs-proximites/7985273/] '''Envisagés pour la seconde partie du projet mais non validés pour le moment !'''&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
* 1) Régler le problème de la gestion du flux vidéo par le réseau ainsi qu'au niveau des Raspberry-Pi&lt;br /&gt;
&lt;br /&gt;
'''Hypothèse''': pour une configuration d'écran donnée, on suppose les écrans déjà intelligent et on dispose de leur emplacement relatif.&lt;br /&gt;
&lt;br /&gt;
* 2) Une fois la première version fonctionnelle, s'orienter vers la mise en place du système intelligent&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| Lundi 15/01/18 : 3h30&lt;br /&gt;
Mercredi 17/01/18 : 4h&lt;br /&gt;
| Mercredi 24/01/18 : 4h&lt;br /&gt;
| Mercredi 31/01/18 : 4h&lt;br /&gt;
| Lundi 05/02/18 : 2h&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
===Lundi 15/01/18===&lt;br /&gt;
&lt;br /&gt;
* Première séance ayant pour but de synthétiser l'idée théorique souhaitée par le projet.&lt;br /&gt;
&lt;br /&gt;
On imagine un système d'ensemble d'écrans autonomes mais qui communiquent leur emplacement entre eux, dans le sens où il n'est pas nécessaire de reconfigurer à chaque modification sur l'emplacement des écrans.&lt;br /&gt;
&lt;br /&gt;
Le système est pour ainsi dire évolutif puisqu'à chaque modification, exemple: passage d'un écran géant de 2*2 à 2*3 ou 3*2 (ou plus), les affichages peuvent modifier la zone du flux vidéo à afficher afin de conserver une image sur la totalité des écrans.&lt;br /&gt;
&lt;br /&gt;
De ce fait on peut imaginer des structures plus complexes, cylindriques dans le cas d'un flux d'une caméra à 360° ou plus simplement pour des simulateurs où les écrans seraient inclinés sans pour autant décrire un cercle autour de l'utilisateur.&lt;br /&gt;
&lt;br /&gt;
Cependant, pour des raisons évidentes d'effectif, de temps il est nécessaire de se réduire à une solution moins ambitieuse mais néanmoins acceptable.&lt;br /&gt;
&lt;br /&gt;
===Mercredi 17/01/18===&lt;br /&gt;
&lt;br /&gt;
* Mise en place d'un cahier des charge réalisable dans le temps imparti par rapport à la réponse théorique que l'on souhaiterai apporter au problème.&lt;br /&gt;
&lt;br /&gt;
Suite aux raisons évoquées précédemment, nous allons donc nous orienter vers un système à échelle réduite que nous ferons évoluer progressivement.&lt;br /&gt;
&lt;br /&gt;
Comme prévu nous diffuserons le flux vidéo initial, ''envoyé par Ethernet par une Raspberry Pi à partir d'un fichier stocké sur une clé usb par exemple'', aux 4 Raspberry intégrées aux écrans via un switch donc également par Ethernet (le port HDMI des R-Pi étant uniquement une sortie)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous effectuerons ensuite grâce aux R-Pi la modification du flux en fonction des écrans servant à l'affichage avant de rediriger la partie du flux qui nous intéresse vers les écrans.&lt;br /&gt;
&lt;br /&gt;
*'''Remarque:''' Dans un premier temps, pour une configuration donnée et avec les emplacement des écrans connues, il s'agit uniquement de réaliser la conversion d'affichage.&lt;br /&gt;
&lt;br /&gt;
Le fait de rendre les écrans intelligents n'est cependant pas ignoré et viendra dans un second temps, le choix de la méthode à employer étant encore en suspend. Nous allons cependant effectuer des hypothèses avec des capteurs.&lt;br /&gt;
&lt;br /&gt;
* Soit X et Y les dimensions du flux vidéo&lt;br /&gt;
* Soit U,R,D,L les états des capteurs sur un écran donné (respectivement, Up, Right, Down, Left) (1 pour actifs, 0 pour inactif)&lt;br /&gt;
* Soit I,J les indices des écrans (I = 0/1 et J = 0/1)&lt;br /&gt;
* Soit nb_X et nb_Y respectivement le nombre d'écrans en fonction des coordonnées i.e les dimensions de notre écran géant&lt;br /&gt;
&lt;br /&gt;
La configuration d'écran est la suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma (I,J)'''&lt;br /&gt;
&lt;br /&gt;
0,1 ; 1,1&lt;br /&gt;
&lt;br /&gt;
0,0 ; 1,0&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quel que soit l'écran, le flux qu'il devra recevoir sera situé entre [X1,X2] et [Y1,Y2].&lt;br /&gt;
Évidemment ces valeurs de l'emplacement de l'écran&lt;br /&gt;
&lt;br /&gt;
* Y2 = Y * ( D||U ) * (I+1) / nb_Y&lt;br /&gt;
* Y1 = Y * D * I / nb_Y&lt;br /&gt;
* X1 = X * L * J / nb_X&lt;br /&gt;
* X2 = X * ( L||R ) * (J+1) / nb_X&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 24/01/18===&lt;br /&gt;
Début de la gestion réseau du flux vidéo.&lt;br /&gt;
&lt;br /&gt;
Pour la partie théorique, nous allons donc procéder de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
Une Raspberry s'occupera de diffuser le flux sur le réseau via un commutateur. À partir d'un fichier vidéo interne.&lt;br /&gt;
&lt;br /&gt;
Les autres R-Pi disposeront d'un fichier de configuration qui contient les coordonnées à afficher en fonction de la position de l'écran, dans la première partie ce fichier sera directement implanté avec un contenu propre à chaque R-Pi mais dans la seconde il s'agira de les modifier automatiquement.&lt;br /&gt;
&lt;br /&gt;
Configuration eth0 sur la Raspberry pi : &lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
address 192.168.1.&amp;lt;2+numero_rpi&amp;gt;&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
&lt;br /&gt;
On commencera par créer un fichier fifo pour faire la transmission entre nc et OMXplayer&lt;br /&gt;
&lt;br /&gt;
Lecture du réseau : nc -l -p &amp;lt;port&amp;gt; &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Affichage : omxplayer --crop x1,y1,x2,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
[https://elinux.org/Omxplayer] : Documentation OMX player&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 31/01/18===&lt;br /&gt;
&lt;br /&gt;
Tentatives de communication PC (Source flux) à Raspberry (Écran) via nc : Échec&lt;br /&gt;
&lt;br /&gt;
* [PC source] : | nc &lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 1] : nc -l -p 12345 &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 2] : omxplayer --crop x1,y1,x1,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Avec x1,y1,x2,y2 les coordonnées des coins de la fenêtre à afficher&lt;br /&gt;
&lt;br /&gt;
Problème rencontré : la Raspberry n'arrive pas à obtenir une adresse joignable malgré une connexion directe avec le PC en ethernet&lt;br /&gt;
&lt;br /&gt;
* sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; iface eth0 inet dhcp&lt;br /&gt;
&lt;br /&gt;
* ifdown eth0&lt;br /&gt;
&lt;br /&gt;
* ifup eth0&lt;br /&gt;
&lt;br /&gt;
* ifconfig&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; inet adr:169.254.68.185&lt;br /&gt;
&lt;br /&gt;
Seconde tentative avec VLC en mode Streaming sur le PC source et VLC en écoute de stream avec VLC également : Échec (IP de la source = ?)&lt;br /&gt;
&lt;br /&gt;
Ligne de commande pour VLC de lecture&lt;br /&gt;
&lt;br /&gt;
* vlc -vvv http://IP_SOURCE:8080/PATH --crop X_RESxY_RES+LEFT_CROP+TOP_CROP -f&lt;br /&gt;
&lt;br /&gt;
PATH: paramètre donné lors du lancement du stream sur la machine source&lt;br /&gt;
&lt;br /&gt;
X_RES : Résolution X de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
Y_RES : Résolution Y de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
LEFT_CROP : Largeur de la zone coupée en partant de la gauche (en pixel)&lt;br /&gt;
&lt;br /&gt;
TOP_CROP : Hauteur de la zone coupée en partant du haut (en pixel)&lt;br /&gt;
&lt;br /&gt;
-f : Full screen&lt;br /&gt;
&lt;br /&gt;
* Test avec le mode de stream (une fois le problème résolu) : le lancement de la lecture sous VLC du côté de la raspberry entraîne des pertes considérables au niveau du flux vidéo avec des coupures très fréquentes (écran noir) ainsi qu'une forte consommation des ressources&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;photo 95%&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
===Lundi 05/02/18===&lt;br /&gt;
&lt;br /&gt;
Omxplayer demeure plus adapté puisqu'il n'entraîne pas une sur-consommation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;photo 0-3%&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mercredi 07/02/18===&lt;br /&gt;
&lt;br /&gt;
Envoie avec succès d'un fichier vidéo via netcat du PC source vers la Raspberry&lt;br /&gt;
&lt;br /&gt;
* $ nc -w 3 172.26.145.172 1234 &amp;lt; Downloads/dragons.mp4&lt;br /&gt;
&lt;br /&gt;
Où 172.26.145.172 est l'adresse obtenue par ifconfig sur la Raspberry.&lt;br /&gt;
&lt;br /&gt;
Réception avec :&lt;br /&gt;
&lt;br /&gt;
* $ nc -l -p 1234 &amp;gt; Downloads/test.mp4&lt;br /&gt;
&lt;br /&gt;
Commande de lecture : &lt;br /&gt;
&lt;br /&gt;
* $ omxplayer --aspect-mode stretch --crop X1,Y1,X2,Y2 Downloads/test.mp4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Récupération de la résolution du flux vidéo (ou fichier dans le cas actuel) : exiftool&lt;br /&gt;
&lt;br /&gt;
Nécessite un &amp;quot;sudo apt-get install exiftool&amp;quot; sur chaque Raspberry&lt;br /&gt;
&lt;br /&gt;
* $ exiftool &amp;lt;file&amp;gt; | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Script d'observation et d’exécution d'action sur la création d'un fichier dans un dossier&lt;br /&gt;
&lt;br /&gt;
{{boîte déroulante&lt;br /&gt;
| titre = Code du script&lt;br /&gt;
| contenu = &lt;br /&gt;
&amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# CONFIGURATION&lt;br /&gt;
&lt;br /&gt;
DIR=&amp;quot;path&amp;quot;&lt;br /&gt;
EVENTS=&amp;quot;create&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# MAIN&lt;br /&gt;
&lt;br /&gt;
inotifywait -m -e $EVENTS --timefmt '%Y-%m-%d %H:%M:%S' --format '%$&lt;br /&gt;
while read date time file&lt;br /&gt;
do&lt;br /&gt;
        echo &amp;quot;$date $time Fichier recu: $file&amp;quot;;&lt;br /&gt;
        rm -rf $DIR/$file;&lt;br /&gt;
        ls $DIR;&lt;br /&gt;
        echo &amp;quot;Has $file been removed ?&amp;quot;;&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Mod%C3%A8le:Bo%C3%AEte_d%C3%A9roulante/fin&amp;diff=50174</id>
		<title>Modèle:Boîte déroulante/fin</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Mod%C3%A8le:Bo%C3%AEte_d%C3%A9roulante/fin&amp;diff=50174"/>
				<updated>2018-02-07T16:04:17Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# CONFIGURATION&lt;br /&gt;
&lt;br /&gt;
DIR=&amp;quot;path&amp;quot;&lt;br /&gt;
EVENTS=&amp;quot;create&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# MAIN&lt;br /&gt;
&lt;br /&gt;
inotifywait -m -e $EVENTS --timefmt '%Y-%m-%d %H:%M:%S' --format '%$&lt;br /&gt;
while read date time file&lt;br /&gt;
do&lt;br /&gt;
        echo &amp;quot;$date $time Fichier recu: $file&amp;quot;;&lt;br /&gt;
        rm -rf $DIR/$file;&lt;br /&gt;
        ls $DIR;&lt;br /&gt;
        echo &amp;quot;Has $file been removed ?&amp;quot;;&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Mod%C3%A8le:Bo%C3%AEte_d%C3%A9roulante/fin&amp;diff=50172</id>
		<title>Modèle:Boîte déroulante/fin</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Mod%C3%A8le:Bo%C3%AEte_d%C3%A9roulante/fin&amp;diff=50172"/>
				<updated>2018-02-07T16:03:39Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : Page créée avec « #!/bin/sh  # CONFIGURATION  DIR=&amp;quot;path&amp;quot; EVENTS=&amp;quot;create&amp;quot;  # MAIN  inotifywait -m -e $EVENTS --timefmt '%Y-%m-%d %H:%M:%S' --format '%$ while read date time file do         e... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# CONFIGURATION&lt;br /&gt;
&lt;br /&gt;
DIR=&amp;quot;path&amp;quot;&lt;br /&gt;
EVENTS=&amp;quot;create&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# MAIN&lt;br /&gt;
&lt;br /&gt;
inotifywait -m -e $EVENTS --timefmt '%Y-%m-%d %H:%M:%S' --format '%$&lt;br /&gt;
while read date time file&lt;br /&gt;
do&lt;br /&gt;
        echo &amp;quot;$date $time Fichier recu: $file&amp;quot;;&lt;br /&gt;
        rm -rf $DIR/$file;&lt;br /&gt;
        ls $DIR;&lt;br /&gt;
        echo &amp;quot;Has $file been removed ?&amp;quot;;&lt;br /&gt;
done&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=50171</id>
		<title>IMA4 2017/2018 P14</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=50171"/>
				<updated>2018-02-07T16:03:32Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : /* Mercredi 07/02/18 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
* '''Intitulé du projet''' : Proposer une solution permettant d'assembler des écrans de PC afin de créer un écran géant&lt;br /&gt;
&lt;br /&gt;
Le renouvellement de matériel informatique continu entraîne un nombre grandissant d'écrans d'ordinateur qui sont difficilement réutilisables compte tenu de leur petite taille. (17&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Afin de leur donner une seconde vie, ce projet a pour but de construire une plateforme permettant d'assembler ces écrans en un écran géant d'une forme &amp;quot;quelconque&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Exemple d'un cas d'écran carré'''&lt;br /&gt;
[[Fichier:Combinaison_ecrans.jpg]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
Afin de réaliser ce projet, il faudra :&lt;br /&gt;
&lt;br /&gt;
* Ajouter un Raspberry Pi sur chaque écran afin de le rentre &amp;quot;intelligent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Créer une application permettant de prendre un flux vidéo et de le diriger vers l'écran visé.&lt;br /&gt;
&lt;br /&gt;
* Permettre de déplacer facilement les écrans tout en maintenant le flux, que ce soit sur des configurations pleines en 2D ou des configurations plus complexes avec des espaces vides ou en 3D.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
* Le positionnement des écrans et la communication entre ces derniers.&lt;br /&gt;
&lt;br /&gt;
Pour une application telle qu'un écran géant composé de plusieurs écran, il est difficilement envisageable d'utiliser un système de coordonnées GPS pour repérer des écrans qui sont particulièrement proches les uns des autres. &lt;br /&gt;
En revanche il est tout à fait réaliste de penser à un système de capteurs de contact/proximité, disposés sur les bords des écrans pour leur permettre de s’emboîter puis il ne resterait qu'à exploiter les possibilités proposées par les Raspberry Pi ainsi qu'un système de coordonnées réalisé dans ce but pour déterminer où l'écran se situe par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
* La gestion du flux vidéo&lt;br /&gt;
&lt;br /&gt;
Le système sera potentiellement réalisé de sorte que chaque écran soit autonome dans son fonctionnement, une fois sa position relative déterminée au préalable.&lt;br /&gt;
En effet, pour le moment le problème était surtout dans le positionnement des écrans plus que dans la gestion du flux vidéo, à priori.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Est-ce que le système peut continuer de fonctionner si on retire l'un des écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pour pallier au problème d'un retrait d'écran, ou d'un disfonctionnement éventuel localisé, une solution possible est de fournir à chaque écran la totalité du flux vidéo.&lt;br /&gt;
Ceci permet dans un premier temps de s'affranchir d'un traitement vidéo avant distribution mais surtout que les autres écrans puissent fonctionner sans interruption due à un écran en particulier  &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Peut-il y avoir des décalages d'affichage entre les écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Malgré l'absence de possibilités de test pour le moment, on peut néanmoins supposer qu'il n'y ait pas de décalage. &lt;br /&gt;
Chaque écran va recevoir le flux vidéo puis en fonction du positionnement des écrans, et on pourra utiliser le système de coordonnées pour effectuer une &amp;quot;selection&amp;quot; sur la partie à afficher.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une configuration de 4 écrans en rectangle, il faudrait donc que l'écran inférieur gauche n'affiche que l'image correspondante jusqu'à la moitié, ensuite l'écran inférieur droit s'occuperait de l'affichage de la partie inférieure droite, etc&lt;br /&gt;
&lt;br /&gt;
En agrandissant le procédé à plus d'écrans, on trouve facilement une méthode de calcul.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet où il s'agira d'être capable de fournir une solution matérielle à la problématique, on s'orientera vers un prototype n'incluant que 4 écrans. Ceci permet à la fois d'éviter un encombrement matériel mais aussi .&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
* 5 Raspberry Pi 3 [https://fr.rs-online.com/web/p/processor-microcontroller-development-kits/8968660/?src=raspberrypi] lien 2 [https://www.mouser.fr/ProductDetail/Adafruit/3055?qs=sGAEpiMZZMuG6%2fXKM6MUaQgA7zSPt2LlznodoAe%252bkgk%3d]&lt;br /&gt;
&lt;br /&gt;
* Un Commutateur (5 Ports +)&lt;br /&gt;
&lt;br /&gt;
* 5 Câbles Ethernet&lt;br /&gt;
&lt;br /&gt;
* 4 Câbles VGA&lt;br /&gt;
&lt;br /&gt;
* 4 Adaptateur VGA-femelle vers HDMI-mâle&lt;br /&gt;
&lt;br /&gt;
* 16 [pack 25] Capteur de contact (1 par côté) [https://fr.rs-online.com/web/p/capteurs-proximites/7985273/] '''Envisagés pour la seconde partie du projet mais non validés pour le moment !'''&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
* 1) Régler le problème de la gestion du flux vidéo par le réseau ainsi qu'au niveau des Raspberry-Pi&lt;br /&gt;
&lt;br /&gt;
'''Hypothèse''': pour une configuration d'écran donnée, on suppose les écrans déjà intelligent et on dispose de leur emplacement relatif.&lt;br /&gt;
&lt;br /&gt;
* 2) Une fois la première version fonctionnelle, s'orienter vers la mise en place du système intelligent&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| Lundi 15/01/18 : 3h30&lt;br /&gt;
Mercredi 17/01/18 : 4h&lt;br /&gt;
| Mercredi 24/01/18 : 4h&lt;br /&gt;
| Mercredi 31/01/18 : 4h&lt;br /&gt;
| Lundi 05/02/18 : 2h&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
===Lundi 15/01/18===&lt;br /&gt;
&lt;br /&gt;
* Première séance ayant pour but de synthétiser l'idée théorique souhaitée par le projet.&lt;br /&gt;
&lt;br /&gt;
On imagine un système d'ensemble d'écrans autonomes mais qui communiquent leur emplacement entre eux, dans le sens où il n'est pas nécessaire de reconfigurer à chaque modification sur l'emplacement des écrans.&lt;br /&gt;
&lt;br /&gt;
Le système est pour ainsi dire évolutif puisqu'à chaque modification, exemple: passage d'un écran géant de 2*2 à 2*3 ou 3*2 (ou plus), les affichages peuvent modifier la zone du flux vidéo à afficher afin de conserver une image sur la totalité des écrans.&lt;br /&gt;
&lt;br /&gt;
De ce fait on peut imaginer des structures plus complexes, cylindriques dans le cas d'un flux d'une caméra à 360° ou plus simplement pour des simulateurs où les écrans seraient inclinés sans pour autant décrire un cercle autour de l'utilisateur.&lt;br /&gt;
&lt;br /&gt;
Cependant, pour des raisons évidentes d'effectif, de temps il est nécessaire de se réduire à une solution moins ambitieuse mais néanmoins acceptable.&lt;br /&gt;
&lt;br /&gt;
===Mercredi 17/01/18===&lt;br /&gt;
&lt;br /&gt;
* Mise en place d'un cahier des charge réalisable dans le temps imparti par rapport à la réponse théorique que l'on souhaiterai apporter au problème.&lt;br /&gt;
&lt;br /&gt;
Suite aux raisons évoquées précédemment, nous allons donc nous orienter vers un système à échelle réduite que nous ferons évoluer progressivement.&lt;br /&gt;
&lt;br /&gt;
Comme prévu nous diffuserons le flux vidéo initial, ''envoyé par Ethernet par une Raspberry Pi à partir d'un fichier stocké sur une clé usb par exemple'', aux 4 Raspberry intégrées aux écrans via un switch donc également par Ethernet (le port HDMI des R-Pi étant uniquement une sortie)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous effectuerons ensuite grâce aux R-Pi la modification du flux en fonction des écrans servant à l'affichage avant de rediriger la partie du flux qui nous intéresse vers les écrans.&lt;br /&gt;
&lt;br /&gt;
*'''Remarque:''' Dans un premier temps, pour une configuration donnée et avec les emplacement des écrans connues, il s'agit uniquement de réaliser la conversion d'affichage.&lt;br /&gt;
&lt;br /&gt;
Le fait de rendre les écrans intelligents n'est cependant pas ignoré et viendra dans un second temps, le choix de la méthode à employer étant encore en suspend. Nous allons cependant effectuer des hypothèses avec des capteurs.&lt;br /&gt;
&lt;br /&gt;
* Soit X et Y les dimensions du flux vidéo&lt;br /&gt;
* Soit U,R,D,L les états des capteurs sur un écran donné (respectivement, Up, Right, Down, Left) (1 pour actifs, 0 pour inactif)&lt;br /&gt;
* Soit I,J les indices des écrans (I = 0/1 et J = 0/1)&lt;br /&gt;
* Soit nb_X et nb_Y respectivement le nombre d'écrans en fonction des coordonnées i.e les dimensions de notre écran géant&lt;br /&gt;
&lt;br /&gt;
La configuration d'écran est la suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma (I,J)'''&lt;br /&gt;
&lt;br /&gt;
0,1 ; 1,1&lt;br /&gt;
&lt;br /&gt;
0,0 ; 1,0&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quel que soit l'écran, le flux qu'il devra recevoir sera situé entre [X1,X2] et [Y1,Y2].&lt;br /&gt;
Évidemment ces valeurs de l'emplacement de l'écran&lt;br /&gt;
&lt;br /&gt;
* Y2 = Y * ( D||U ) * (I+1) / nb_Y&lt;br /&gt;
* Y1 = Y * D * I / nb_Y&lt;br /&gt;
* X1 = X * L * J / nb_X&lt;br /&gt;
* X2 = X * ( L||R ) * (J+1) / nb_X&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 24/01/18===&lt;br /&gt;
Début de la gestion réseau du flux vidéo.&lt;br /&gt;
&lt;br /&gt;
Pour la partie théorique, nous allons donc procéder de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
Une Raspberry s'occupera de diffuser le flux sur le réseau via un commutateur. À partir d'un fichier vidéo interne.&lt;br /&gt;
&lt;br /&gt;
Les autres R-Pi disposeront d'un fichier de configuration qui contient les coordonnées à afficher en fonction de la position de l'écran, dans la première partie ce fichier sera directement implanté avec un contenu propre à chaque R-Pi mais dans la seconde il s'agira de les modifier automatiquement.&lt;br /&gt;
&lt;br /&gt;
Configuration eth0 sur la Raspberry pi : &lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
address 192.168.1.&amp;lt;2+numero_rpi&amp;gt;&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
&lt;br /&gt;
On commencera par créer un fichier fifo pour faire la transmission entre nc et OMXplayer&lt;br /&gt;
&lt;br /&gt;
Lecture du réseau : nc -l -p &amp;lt;port&amp;gt; &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Affichage : omxplayer --crop x1,y1,x2,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
[https://elinux.org/Omxplayer] : Documentation OMX player&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 31/01/18===&lt;br /&gt;
&lt;br /&gt;
Tentatives de communication PC (Source flux) à Raspberry (Écran) via nc : Échec&lt;br /&gt;
&lt;br /&gt;
* [PC source] : | nc &lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 1] : nc -l -p 12345 &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 2] : omxplayer --crop x1,y1,x1,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Avec x1,y1,x2,y2 les coordonnées des coins de la fenêtre à afficher&lt;br /&gt;
&lt;br /&gt;
Problème rencontré : la Raspberry n'arrive pas à obtenir une adresse joignable malgré une connexion directe avec le PC en ethernet&lt;br /&gt;
&lt;br /&gt;
* sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; iface eth0 inet dhcp&lt;br /&gt;
&lt;br /&gt;
* ifdown eth0&lt;br /&gt;
&lt;br /&gt;
* ifup eth0&lt;br /&gt;
&lt;br /&gt;
* ifconfig&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; inet adr:169.254.68.185&lt;br /&gt;
&lt;br /&gt;
Seconde tentative avec VLC en mode Streaming sur le PC source et VLC en écoute de stream avec VLC également : Échec (IP de la source = ?)&lt;br /&gt;
&lt;br /&gt;
Ligne de commande pour VLC de lecture&lt;br /&gt;
&lt;br /&gt;
* vlc -vvv http://IP_SOURCE:8080/PATH --crop X_RESxY_RES+LEFT_CROP+TOP_CROP -f&lt;br /&gt;
&lt;br /&gt;
PATH: paramètre donné lors du lancement du stream sur la machine source&lt;br /&gt;
&lt;br /&gt;
X_RES : Résolution X de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
Y_RES : Résolution Y de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
LEFT_CROP : Largeur de la zone coupée en partant de la gauche (en pixel)&lt;br /&gt;
&lt;br /&gt;
TOP_CROP : Hauteur de la zone coupée en partant du haut (en pixel)&lt;br /&gt;
&lt;br /&gt;
-f : Full screen&lt;br /&gt;
&lt;br /&gt;
* Test avec le mode de stream (une fois le problème résolu) : le lancement de la lecture sous VLC du côté de la raspberry entraîne des pertes considérables au niveau du flux vidéo avec des coupures très fréquentes (écran noir) ainsi qu'une forte consommation des ressources&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;photo 95%&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
===Lundi 05/02/18===&lt;br /&gt;
&lt;br /&gt;
Omxplayer demeure plus adapté puisqu'il n'entraîne pas une sur-consommation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;photo 0-3%&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mercredi 07/02/18===&lt;br /&gt;
&lt;br /&gt;
Envoie avec succès d'un fichier vidéo via netcat du PC source vers la Raspberry&lt;br /&gt;
&lt;br /&gt;
* $ nc -w 3 172.26.145.172 1234 &amp;lt; Downloads/dragons.mp4&lt;br /&gt;
&lt;br /&gt;
Où 172.26.145.172 est l'adresse obtenue par ifconfig sur la Raspberry.&lt;br /&gt;
&lt;br /&gt;
Réception avec :&lt;br /&gt;
&lt;br /&gt;
* $ nc -l -p 1234 &amp;gt; Downloads/test.mp4&lt;br /&gt;
&lt;br /&gt;
Commande de lecture : &lt;br /&gt;
&lt;br /&gt;
* $ omxplayer --aspect-mode stretch --crop X1,Y1,X2,Y2 Downloads/test.mp4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Récupération de la résolution du flux vidéo (ou fichier dans le cas actuel) : exiftool&lt;br /&gt;
&lt;br /&gt;
Nécessite un &amp;quot;sudo apt-get install exiftool&amp;quot; sur chaque Raspberry&lt;br /&gt;
&lt;br /&gt;
* $ exiftool &amp;lt;file&amp;gt; | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Script d'observation et d’exécution d'action sur la création d'un fichier dans un dossier&lt;br /&gt;
&lt;br /&gt;
{{boîte déroulante&lt;br /&gt;
| titre = Code du script&lt;br /&gt;
| contenu = &amp;lt;pre&amp;gt;#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# CONFIGURATION&lt;br /&gt;
&lt;br /&gt;
DIR=&amp;quot;path&amp;quot;&lt;br /&gt;
EVENTS=&amp;quot;create&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# MAIN&lt;br /&gt;
&lt;br /&gt;
inotifywait -m -e $EVENTS --timefmt '%Y-%m-%d %H:%M:%S' --format '%$&lt;br /&gt;
while read date time file&lt;br /&gt;
do&lt;br /&gt;
        echo &amp;quot;$date $time Fichier recu: $file&amp;quot;;&lt;br /&gt;
        rm -rf $DIR/$file;&lt;br /&gt;
        ls $DIR;&lt;br /&gt;
        echo &amp;quot;Has $file been removed ?&amp;quot;;&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=50161</id>
		<title>IMA4 2017/2018 P14</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=50161"/>
				<updated>2018-02-07T15:56:08Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : /* Semaine 4 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
* '''Intitulé du projet''' : Proposer une solution permettant d'assembler des écrans de PC afin de créer un écran géant&lt;br /&gt;
&lt;br /&gt;
Le renouvellement de matériel informatique continu entraîne un nombre grandissant d'écrans d'ordinateur qui sont difficilement réutilisables compte tenu de leur petite taille. (17&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Afin de leur donner une seconde vie, ce projet a pour but de construire une plateforme permettant d'assembler ces écrans en un écran géant d'une forme &amp;quot;quelconque&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Exemple d'un cas d'écran carré'''&lt;br /&gt;
[[Fichier:Combinaison_ecrans.jpg]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
Afin de réaliser ce projet, il faudra :&lt;br /&gt;
&lt;br /&gt;
* Ajouter un Raspberry Pi sur chaque écran afin de le rentre &amp;quot;intelligent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Créer une application permettant de prendre un flux vidéo et de le diriger vers l'écran visé.&lt;br /&gt;
&lt;br /&gt;
* Permettre de déplacer facilement les écrans tout en maintenant le flux, que ce soit sur des configurations pleines en 2D ou des configurations plus complexes avec des espaces vides ou en 3D.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
* Le positionnement des écrans et la communication entre ces derniers.&lt;br /&gt;
&lt;br /&gt;
Pour une application telle qu'un écran géant composé de plusieurs écran, il est difficilement envisageable d'utiliser un système de coordonnées GPS pour repérer des écrans qui sont particulièrement proches les uns des autres. &lt;br /&gt;
En revanche il est tout à fait réaliste de penser à un système de capteurs de contact/proximité, disposés sur les bords des écrans pour leur permettre de s’emboîter puis il ne resterait qu'à exploiter les possibilités proposées par les Raspberry Pi ainsi qu'un système de coordonnées réalisé dans ce but pour déterminer où l'écran se situe par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
* La gestion du flux vidéo&lt;br /&gt;
&lt;br /&gt;
Le système sera potentiellement réalisé de sorte que chaque écran soit autonome dans son fonctionnement, une fois sa position relative déterminée au préalable.&lt;br /&gt;
En effet, pour le moment le problème était surtout dans le positionnement des écrans plus que dans la gestion du flux vidéo, à priori.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Est-ce que le système peut continuer de fonctionner si on retire l'un des écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pour pallier au problème d'un retrait d'écran, ou d'un disfonctionnement éventuel localisé, une solution possible est de fournir à chaque écran la totalité du flux vidéo.&lt;br /&gt;
Ceci permet dans un premier temps de s'affranchir d'un traitement vidéo avant distribution mais surtout que les autres écrans puissent fonctionner sans interruption due à un écran en particulier  &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Peut-il y avoir des décalages d'affichage entre les écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Malgré l'absence de possibilités de test pour le moment, on peut néanmoins supposer qu'il n'y ait pas de décalage. &lt;br /&gt;
Chaque écran va recevoir le flux vidéo puis en fonction du positionnement des écrans, et on pourra utiliser le système de coordonnées pour effectuer une &amp;quot;selection&amp;quot; sur la partie à afficher.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une configuration de 4 écrans en rectangle, il faudrait donc que l'écran inférieur gauche n'affiche que l'image correspondante jusqu'à la moitié, ensuite l'écran inférieur droit s'occuperait de l'affichage de la partie inférieure droite, etc&lt;br /&gt;
&lt;br /&gt;
En agrandissant le procédé à plus d'écrans, on trouve facilement une méthode de calcul.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet où il s'agira d'être capable de fournir une solution matérielle à la problématique, on s'orientera vers un prototype n'incluant que 4 écrans. Ceci permet à la fois d'éviter un encombrement matériel mais aussi .&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
* 5 Raspberry Pi 3 [https://fr.rs-online.com/web/p/processor-microcontroller-development-kits/8968660/?src=raspberrypi] lien 2 [https://www.mouser.fr/ProductDetail/Adafruit/3055?qs=sGAEpiMZZMuG6%2fXKM6MUaQgA7zSPt2LlznodoAe%252bkgk%3d]&lt;br /&gt;
&lt;br /&gt;
* Un Commutateur (5 Ports +)&lt;br /&gt;
&lt;br /&gt;
* 5 Câbles Ethernet&lt;br /&gt;
&lt;br /&gt;
* 4 Câbles VGA&lt;br /&gt;
&lt;br /&gt;
* 4 Adaptateur VGA-femelle vers HDMI-mâle&lt;br /&gt;
&lt;br /&gt;
* 16 [pack 25] Capteur de contact (1 par côté) [https://fr.rs-online.com/web/p/capteurs-proximites/7985273/] '''Envisagés pour la seconde partie du projet mais non validés pour le moment !'''&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
* 1) Régler le problème de la gestion du flux vidéo par le réseau ainsi qu'au niveau des Raspberry-Pi&lt;br /&gt;
&lt;br /&gt;
'''Hypothèse''': pour une configuration d'écran donnée, on suppose les écrans déjà intelligent et on dispose de leur emplacement relatif.&lt;br /&gt;
&lt;br /&gt;
* 2) Une fois la première version fonctionnelle, s'orienter vers la mise en place du système intelligent&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| Lundi 15/01/18 : 3h30&lt;br /&gt;
Mercredi 17/01/18 : 4h&lt;br /&gt;
| Mercredi 24/01/18 : 4h&lt;br /&gt;
| Mercredi 31/01/18 : 4h&lt;br /&gt;
| Lundi 05/02/18 : 2h&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
===Lundi 15/01/18===&lt;br /&gt;
&lt;br /&gt;
* Première séance ayant pour but de synthétiser l'idée théorique souhaitée par le projet.&lt;br /&gt;
&lt;br /&gt;
On imagine un système d'ensemble d'écrans autonomes mais qui communiquent leur emplacement entre eux, dans le sens où il n'est pas nécessaire de reconfigurer à chaque modification sur l'emplacement des écrans.&lt;br /&gt;
&lt;br /&gt;
Le système est pour ainsi dire évolutif puisqu'à chaque modification, exemple: passage d'un écran géant de 2*2 à 2*3 ou 3*2 (ou plus), les affichages peuvent modifier la zone du flux vidéo à afficher afin de conserver une image sur la totalité des écrans.&lt;br /&gt;
&lt;br /&gt;
De ce fait on peut imaginer des structures plus complexes, cylindriques dans le cas d'un flux d'une caméra à 360° ou plus simplement pour des simulateurs où les écrans seraient inclinés sans pour autant décrire un cercle autour de l'utilisateur.&lt;br /&gt;
&lt;br /&gt;
Cependant, pour des raisons évidentes d'effectif, de temps il est nécessaire de se réduire à une solution moins ambitieuse mais néanmoins acceptable.&lt;br /&gt;
&lt;br /&gt;
===Mercredi 17/01/18===&lt;br /&gt;
&lt;br /&gt;
* Mise en place d'un cahier des charge réalisable dans le temps imparti par rapport à la réponse théorique que l'on souhaiterai apporter au problème.&lt;br /&gt;
&lt;br /&gt;
Suite aux raisons évoquées précédemment, nous allons donc nous orienter vers un système à échelle réduite que nous ferons évoluer progressivement.&lt;br /&gt;
&lt;br /&gt;
Comme prévu nous diffuserons le flux vidéo initial, ''envoyé par Ethernet par une Raspberry Pi à partir d'un fichier stocké sur une clé usb par exemple'', aux 4 Raspberry intégrées aux écrans via un switch donc également par Ethernet (le port HDMI des R-Pi étant uniquement une sortie)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous effectuerons ensuite grâce aux R-Pi la modification du flux en fonction des écrans servant à l'affichage avant de rediriger la partie du flux qui nous intéresse vers les écrans.&lt;br /&gt;
&lt;br /&gt;
*'''Remarque:''' Dans un premier temps, pour une configuration donnée et avec les emplacement des écrans connues, il s'agit uniquement de réaliser la conversion d'affichage.&lt;br /&gt;
&lt;br /&gt;
Le fait de rendre les écrans intelligents n'est cependant pas ignoré et viendra dans un second temps, le choix de la méthode à employer étant encore en suspend. Nous allons cependant effectuer des hypothèses avec des capteurs.&lt;br /&gt;
&lt;br /&gt;
* Soit X et Y les dimensions du flux vidéo&lt;br /&gt;
* Soit U,R,D,L les états des capteurs sur un écran donné (respectivement, Up, Right, Down, Left) (1 pour actifs, 0 pour inactif)&lt;br /&gt;
* Soit I,J les indices des écrans (I = 0/1 et J = 0/1)&lt;br /&gt;
* Soit nb_X et nb_Y respectivement le nombre d'écrans en fonction des coordonnées i.e les dimensions de notre écran géant&lt;br /&gt;
&lt;br /&gt;
La configuration d'écran est la suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma (I,J)'''&lt;br /&gt;
&lt;br /&gt;
0,1 ; 1,1&lt;br /&gt;
&lt;br /&gt;
0,0 ; 1,0&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quel que soit l'écran, le flux qu'il devra recevoir sera situé entre [X1,X2] et [Y1,Y2].&lt;br /&gt;
Évidemment ces valeurs de l'emplacement de l'écran&lt;br /&gt;
&lt;br /&gt;
* Y2 = Y * ( D||U ) * (I+1) / nb_Y&lt;br /&gt;
* Y1 = Y * D * I / nb_Y&lt;br /&gt;
* X1 = X * L * J / nb_X&lt;br /&gt;
* X2 = X * ( L||R ) * (J+1) / nb_X&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 24/01/18===&lt;br /&gt;
Début de la gestion réseau du flux vidéo.&lt;br /&gt;
&lt;br /&gt;
Pour la partie théorique, nous allons donc procéder de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
Une Raspberry s'occupera de diffuser le flux sur le réseau via un commutateur. À partir d'un fichier vidéo interne.&lt;br /&gt;
&lt;br /&gt;
Les autres R-Pi disposeront d'un fichier de configuration qui contient les coordonnées à afficher en fonction de la position de l'écran, dans la première partie ce fichier sera directement implanté avec un contenu propre à chaque R-Pi mais dans la seconde il s'agira de les modifier automatiquement.&lt;br /&gt;
&lt;br /&gt;
Configuration eth0 sur la Raspberry pi : &lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
address 192.168.1.&amp;lt;2+numero_rpi&amp;gt;&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
&lt;br /&gt;
On commencera par créer un fichier fifo pour faire la transmission entre nc et OMXplayer&lt;br /&gt;
&lt;br /&gt;
Lecture du réseau : nc -l -p &amp;lt;port&amp;gt; &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Affichage : omxplayer --crop x1,y1,x2,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
[https://elinux.org/Omxplayer] : Documentation OMX player&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 31/01/18===&lt;br /&gt;
&lt;br /&gt;
Tentatives de communication PC (Source flux) à Raspberry (Écran) via nc : Échec&lt;br /&gt;
&lt;br /&gt;
* [PC source] : | nc &lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 1] : nc -l -p 12345 &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 2] : omxplayer --crop x1,y1,x1,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Avec x1,y1,x2,y2 les coordonnées des coins de la fenêtre à afficher&lt;br /&gt;
&lt;br /&gt;
Problème rencontré : la Raspberry n'arrive pas à obtenir une adresse joignable malgré une connexion directe avec le PC en ethernet&lt;br /&gt;
&lt;br /&gt;
* sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; iface eth0 inet dhcp&lt;br /&gt;
&lt;br /&gt;
* ifdown eth0&lt;br /&gt;
&lt;br /&gt;
* ifup eth0&lt;br /&gt;
&lt;br /&gt;
* ifconfig&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; inet adr:169.254.68.185&lt;br /&gt;
&lt;br /&gt;
Seconde tentative avec VLC en mode Streaming sur le PC source et VLC en écoute de stream avec VLC également : Échec (IP de la source = ?)&lt;br /&gt;
&lt;br /&gt;
Ligne de commande pour VLC de lecture&lt;br /&gt;
&lt;br /&gt;
* vlc -vvv http://IP_SOURCE:8080/PATH --crop X_RESxY_RES+LEFT_CROP+TOP_CROP -f&lt;br /&gt;
&lt;br /&gt;
PATH: paramètre donné lors du lancement du stream sur la machine source&lt;br /&gt;
&lt;br /&gt;
X_RES : Résolution X de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
Y_RES : Résolution Y de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
LEFT_CROP : Largeur de la zone coupée en partant de la gauche (en pixel)&lt;br /&gt;
&lt;br /&gt;
TOP_CROP : Hauteur de la zone coupée en partant du haut (en pixel)&lt;br /&gt;
&lt;br /&gt;
-f : Full screen&lt;br /&gt;
&lt;br /&gt;
* Test avec le mode de stream (une fois le problème résolu) : le lancement de la lecture sous VLC du côté de la raspberry entraîne des pertes considérables au niveau du flux vidéo avec des coupures très fréquentes (écran noir) ainsi qu'une forte consommation des ressources&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;photo 95%&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
===Lundi 05/02/18===&lt;br /&gt;
&lt;br /&gt;
Omxplayer demeure plus adapté puisqu'il n'entraîne pas une sur-consommation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;photo 0-3%&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mercredi 07/02/18===&lt;br /&gt;
&lt;br /&gt;
Envoie avec succès d'un fichier vidéo via netcat du PC source vers la Raspberry&lt;br /&gt;
&lt;br /&gt;
* $ nc -w 3 172.26.145.172 1234 &amp;lt; Downloads/dragons.mp4&lt;br /&gt;
&lt;br /&gt;
Où 172.26.145.172 est l'adresse obtenue par ifconfig sur la Raspberry.&lt;br /&gt;
&lt;br /&gt;
Réception avec :&lt;br /&gt;
&lt;br /&gt;
* $ nc -l -p 1234 &amp;gt; Downloads/test.mp4&lt;br /&gt;
&lt;br /&gt;
Commande de lecture : &lt;br /&gt;
&lt;br /&gt;
* $ omxplayer --aspect-mode stretch --crop X1,Y1,X2,Y2 Downloads/test.mp4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Récupération de la résolution du flux vidéo (ou fichier dans le cas actuel) : exiftool&lt;br /&gt;
&lt;br /&gt;
Nécessite un &amp;quot;sudo apt-get install exiftool&amp;quot; sur chaque Raspberry&lt;br /&gt;
&lt;br /&gt;
* $ exiftool &amp;lt;file&amp;gt; | grep &amp;quot;Image Size&amp;quot; | cut -d' ' -f25 | cut -dx -f1&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Discussion:Projets_IMA4_SC_%26_SA_2017/2018&amp;diff=50049</id>
		<title>Discussion:Projets IMA4 SC &amp; SA 2017/2018</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Discussion:Projets_IMA4_SC_%26_SA_2017/2018&amp;diff=50049"/>
				<updated>2018-02-07T14:10:51Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : /* Fiche de présence */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==  Notes sur les projets ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Projet || Analyse du projet || Retour sur l'analyse || Matériel || Mi-parcours || Wiki terminé || Rapport || Vidéo&lt;br /&gt;
|-&lt;br /&gt;
| P1 [[IMA4 2017/2018 P1|Automatisation de la production de bière]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Présentation sans supports, bonne analyse de la concurrence. Par contre le scénario d'usage est à revoir en précisant l'usage pour le particulier.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Le scénario est précisé mais aucune réponse aux questions difficiles &amp;quot;gestion des températures et procédure d'entretien&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Rien.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P3 [[IMA4 2017/2018 P3|Sécurisation de l'Internet des Objets par surveillance globale]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Présentation focalisée sur les réseaux de neurones. Exercice mal compris (pas d'introduction du contexte, pas de scénario d'usage).&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Toujours pas d'analyse de la concurrence, ni de scénario d'usage. Pas de réponse aux questions difficiles &amp;quot;quel est le matériel ? quel est le protocole ? quelles sont les entrées du réseau de neurones ?&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Une liste mais il manque des références vers les fournisseurs agréés (voir page de l'an dernier).&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P4 [[IMA4 2017/2018 P4|Développement d'un module d'énergie pour Internet des Objets]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Exercice correctement réalisé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Pas de réponse aux questions difficiles &amp;quot;Architecture de la source d'énergie (nombre de chemins d'énergie ?)&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Rien.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P5 [[IMA4 2017/2018 P5|Réseau de capteurs de pollution]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt; Présentation focalisée sur la création du site Web. Effort fait pour rédiger un scénario d'usage.&amp;lt;/font&amp;gt; &lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt; Réponses aux questions mais l'analyse de la consommation est imprécise. &amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt; Du matériel listé dans la page Wiki mais à reporter en bas de la page des projets de cette année avec des références valides.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P6 [[IMA4 2017/2018 P6|Réseau LoRaWAN]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Exercice correctement réalisé. Scénario d'usage à préciser sur la partie réseau de capteurs.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt; Scénario d'usage non précisé. Pas de réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt; Du matériel listé mais sans référence, êtes-vous sur que le matériel n'a pas besoin d'être acheté ?&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P7 [[IMA4 2017/2018 P7|Brique pour apprentissage informatique]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt; Pas de support. Exercice très bien réalisé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Pas de réponse aux questions difficiles &amp;quot;quelle alimentation ? comment faire pour différencier les briques ? comment les briques vont-elles communiquer ? quelle sécurité vis-à-vis des enfants ?&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Pas de liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P10 [[IMA4 2017/2018 P10|Portage de RIOT-OS sur MSP430 pour IOT]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt; Rien à signaler (juste une confusion entre le MSP430 et le CC430).&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt; Questions difficiles évacuées. &amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt; Du matériel listé mais sans référence.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P12 [[IMA4 2017/2018 P12|Système d'ostéophonie pour magicien]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Un peu rapide, exercice réalisé. &amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Pas d'analyse de la concurrence. Peu d'effort de rédaction. Des coquilles. Une réponse rapide à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt; Du matériel listé mais pas forcément exhaustif et sans référence valide.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P14 [[IMA4 2017/2018 P14|Ecran géant modulaire]]&lt;br /&gt;
| Doublant&lt;br /&gt;
| Doublant&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Page Wiki vide, pas de liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P15 [[IMA4 2017/2018 P15|Balle vibrante connectée pour enfants sourd]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Présentation acceptable mais avec des supports non soignés. Pas d'analyse de la concurrence, pas de scénario d'usage.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;L'analyse de la concurrence et le scénario d'usage ont été ajoutés. Par contre pas de réponse aux questions difficiles &amp;quot;quelle sera l'autonomie de la balle et quel sera le système de rechargement ?&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Pas de liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P16 [[IMA4 2017/2018 P16|Sous-chaussure chauffante pour docker]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Présentation acceptable mais avec des supports non soignés. Trouver des concurrents indirects. Une histoire mais pas de scénario d'usage.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Page Wiki modifiée après la présentation. Une réponse incomplète à la question difficile. Trop de coquilles pour ce niveau d'études.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Pas de liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P17 [[IMA4 2017/2018 P17|Safe Watch]]&lt;br /&gt;
| Doublant&lt;br /&gt;
| Doublant&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune modification de la page Wiki depuis début octobre.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P18 [[IMA4 2017/2018 P18|Mandala électronique]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Supports très textuels, pas de scénario d'usage mais une rédaction sur l'intérêt psychologique, pas vraiment de partie &amp;quot;concurrents&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Un effort pour trouver des &amp;quot;concurrents&amp;quot;, pas de réponses aux questions difficiles &amp;quot;combien de LEDs ? quelle alimentation pour quelle autonomie&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Pas de liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P19 [[IMA4 2017/2018 P19|Bijou électronique]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Bonne présentation orale. Utilisation du bluetooth peu convainquant. Pas de scénario d'usage. Un &amp;quot;concurrent&amp;quot; trouvé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Concept de scénario d'usage non compris. Une réponse à la question difficile très rapide et non convaincante.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Une liste de matériel dans la page Wiki mais à insérer dans le tableau en bas de la page principale. Pas de référence (voir sur la page de l'an passé).&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P20 [[IMA4 2017/2018 P20|Solution de messagerie à base de conteneurs]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Support assez corrects, sujet non entièrement compris, scénario d'usage minimal.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Un problème dans le scénario d'usage : les conteneurs doivent être lancés sur un serveur. Une réponse acceptable à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas de matériel particulier.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P22 [[IMA4 2017/2018 P22|Horloge numérique DCF77, serveur de temps et ludique]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Analyse très correcte.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P23 [[IMA4 2017/2018 P23|Table de bar connectée]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Présentation trop impécise, pas vraiment de scénario d'usage. Par contre des concurrents ont été présentés.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Un scénario d'usage éloigné de la future utilisation. Trop de coquilles dans ce scénario. Réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Une liste du matériel mais pas dans la page principale. Pas de référence (voir page de l'an passé).&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P25 [[IMA4 2017/2018 P25|Essaim de robots]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Analyse très correcte. Un concurrent assez peu en rapport avec les essaims de robots mais dans la ligne des dispositifs de déminage.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas de question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Liste du matériel. Préciser pour le chassis.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P30 [[IMA4 2017/2018 P30|Contrôle d'une caméra WiFi.]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Objectif mal expliqué. Exercice réalisé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Mieux définir l'objectif suite à la visite en entreprise. Pas de réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P32 [[IMA4 2017/2018 P32|Tribute to Peter Vogel]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Excellente présentation et excellent travail préparatoire, Scénario d'usage à préciser, trouver des concurrents.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P35 [[IMA4 2017/2018 P35|Manette de jeu vidéo pour personne en situation de handicap]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Exercice réussi. Cependant précisez les acteurs dans le scénario d'usage.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Pas de modification du scénario. Pas de réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Rien à redire sur la liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P39 [[IMA4 2017/2018 P39|Musique des plantes]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Analyse très correcte.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Réponses aux questions difficiles.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P40 [[IMA4 2017/2018 P40|Exploration du réseau d'anonymisation Tor]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Sujet se prêtant peu à l'exercice mais très bonne présentation. Sujet travaillé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas vraiment de question, la suggestion est noté dans la page Wiki.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas de matériel à commander.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P42 [[IMA4 2017/2018 P42|Automatisation de l'assemblage de LEGO]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Analyse très correcte.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Pas de réponse aux questions difficiles &amp;quot;Comment démarrer l'imprimante à distance ? Comment sera calibrée la plaque d’impression ?&lt;br /&gt;
Comment la plaque va se fixer sur le sol ? &amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P44 [[IMA4 2017/2018 P44|Reconnaissance d’objets via Traitement d’image]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Le projet ne semble pas encore avoir été sérieusement étudié.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Net effort de documentation de la page Wiki. Pas de réponse directe à la question difficile sur la Kinect mais une discussion sur le problème posé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P49 [[IMA4 2017/2018 P49|Suivi de la qualité de l’air]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Contexte mal présenté, sujet flou. Scénario d'usage à préciser. Pas de contact avec les encadrants avant la présentation.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Page de Wiki vide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P50 [[IMA4 2017/2018 P50|Etage commande de Centaure]]&lt;br /&gt;
| Doublant&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Page de Wiki assez vide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P60 [[IMA4 2017/2018 P60|Commande de niveaux d’eau]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Présentation très correcte.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Pas de réponse à la question difficile. Page Wiki un peu vide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas de matériel à commander.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P64 [[IMA4 2017/2018 P64|Simulation Labview et mise en réseau Modbus d’un ascenseur]]&lt;br /&gt;
| Doublant&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Wiki avec quelques informations sur le travail accompli depuis fin novembre : étude sur modbus et labview. Quelques coquilles.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P65 [[IMA4 2017/2018 P65|Exosquelette pour apprentissage]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Présentation sans support. Trouver des concurrents indirects. Pas de scénario d'usage.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Page Wiki vide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P66 [[IMA4 2017/2018 P66|Coupe de France de robotique]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Analyse très correcte.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Page Wiki bien tenue. Ajoutez des illustrations.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Quelques éléments sur le matériel dans la page Wiki mais aucune liste avec références.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P67 [[IMA4 2017/2018 P67|Scanner 3D DIY]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Exercice bien réalisé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Page Wiki très complète. Ajoutez des illustrations.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Une liste probablement pas exhaustive.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P68 [[IMA4 2017/2018 P68|Générateur de chronogrammes d'ordonnancement]]&lt;br /&gt;
| Doublant&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Page Wiki vide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas de matériel à commander.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| PP1 [[IMA4 2017/2018 Pré-projet 1|Robot hexapode pour escalier]]&lt;br /&gt;
| Erasmus &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Fiche de présence ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Projet !! Elèves !! Séance 1 (17/01) !! Séance 2 (24/01) !! Séance 3 (31/01) !! Séance 4 (7/02) !! Séance 5 (14/02) !! Séance 6 (21/02) !! Séance 7 (7/03) !! Séance 8 (14/03) !! Séance 9 (21/03) !! Séance 10 (28/03) !! Séance 11 (4/04) !! Séance 12 (11/04) !! Séance 13 (18/04)&lt;br /&gt;
|-&lt;br /&gt;
| P1 [[IMA4 2017/2018 P1|Automatisation de la production de bière]]&lt;br /&gt;
|Quentin Boëns / Henri Carlier&lt;br /&gt;
|E304 &lt;br /&gt;
|E304/305&lt;br /&gt;
|E304&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| P3 [[IMA4 2017/2018 P3|Sécurisation de l'Internet des Objets par surveillance globale]]&lt;br /&gt;
|Ji Yang&lt;br /&gt;
|E306&lt;br /&gt;
|E303&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle &amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P4 [[IMA4 2017/2018 P4|Développement d'un module d'énergie pour Internet des Objets]]&lt;br /&gt;
| Alexis Viscogliosi / Abass Ayoub &lt;br /&gt;
|C008&lt;br /&gt;
|C008&lt;br /&gt;
|E304 &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Alexis Viscogliosi Absent excusé pour entretien stage&amp;lt;/font&amp;gt;&lt;br /&gt;
|C008&lt;br /&gt;
|-&lt;br /&gt;
| P5 [[IMA4 2017/2018 P5|Réseau de capteurs de pollution]]&lt;br /&gt;
| Paul Ribeiro / Mehanna Naïf&lt;br /&gt;
|E303&lt;br /&gt;
|E301&lt;br /&gt;
|A204 &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Absents &amp;lt;/font&amp;gt;&lt;br /&gt;
|E301&lt;br /&gt;
|-&lt;br /&gt;
| P6 [[IMA4 2017/2018 P6|Réseau LoRaWAN]]&lt;br /&gt;
|  Antoine Gosse&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306 &lt;br /&gt;
|-&lt;br /&gt;
| P7 [[IMA4 2017/2018 P7|Brique pour apprentissage informatique]]&lt;br /&gt;
| Maëva Delaporte / Simon Blas&lt;br /&gt;
| E304 &amp;lt;br/&amp;gt;&lt;br /&gt;
| E304 &amp;lt;br/&amp;gt;&lt;br /&gt;
| E304 &amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P10 [[IMA4 2017/2018 P10|Portage de RIOT-OS sur MSP430 pour IOT]]&lt;br /&gt;
| Baptiste Cartier&lt;br /&gt;
| E306&lt;br /&gt;
| E301&lt;br /&gt;
| E306&lt;br /&gt;
|-&lt;br /&gt;
| P12 [[IMA4 2017/2018 P12|Système d'ostéophonie pour magicien]]&lt;br /&gt;
| Amine El Messaoudi / Simon Feutrier&lt;br /&gt;
| E301&lt;br /&gt;
| C201&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle &amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P14 [[IMA4 2017/2018 P14|Ecran géant modulaire]]&lt;br /&gt;
| Jade Dupont&lt;br /&gt;
|E304 &lt;br /&gt;
|E304 &lt;br /&gt;
|E304 &lt;br /&gt;
|E304 &lt;br /&gt;
|-&lt;br /&gt;
| P15 [[IMA4 2017/2018 P15|Balle vibrante connectée pour enfants sourd]]&lt;br /&gt;
| Thomas Cunin / Thibault Cattelain&lt;br /&gt;
| E304&lt;br /&gt;
| B306/E304&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle (E304 - A305)&amp;lt;/font&amp;gt;&lt;br /&gt;
| E301&lt;br /&gt;
|-&lt;br /&gt;
| P16 [[IMA4 2017/2018 P16|Sous-chaussure chauffante pour docker]]&lt;br /&gt;
| Rémi Mairesse / Gustave Roux&lt;br /&gt;
| E304&lt;br /&gt;
| E301&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle &amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P17 [[IMA4 2017/2018 P17|Safe Watch]]&lt;br /&gt;
| Oumaima Naanaa&lt;br /&gt;
|E302&lt;br /&gt;
|E304&lt;br /&gt;
|E304&lt;br /&gt;
|E304&lt;br /&gt;
|-&lt;br /&gt;
| P18 [[IMA4 2017/2018 P18|Mandala électronique]]&lt;br /&gt;
| Lirui Zhang / Lihe Zhang&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle &amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P19 [[IMA4 2017/2018 P19|Bijou électronique]]&lt;br /&gt;
| Lijie Yao / Keren Qiang&lt;br /&gt;
| E303&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
|-&lt;br /&gt;
| P20 [[IMA4 2017/2018 P20|Solution de messagerie à base de conteneurs]]&lt;br /&gt;
| Maxime Creteur / Gao Fan&lt;br /&gt;
|E303&lt;br /&gt;
|E301&lt;br /&gt;
|A204 &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Absents &amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P22 [[IMA4 2017/2018 P22|Horloge numérique DCF77, serveur de temps et ludique]]&lt;br /&gt;
| Amaury Knockaert / Fabrice Taingland&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
| E304/E302&lt;br /&gt;
|-&lt;br /&gt;
| P23 [[IMA4 2017/2018 P23|Table de bar connectée]]&lt;br /&gt;
| Matthieu Delobelle&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E303 - C201&lt;br /&gt;
|-&lt;br /&gt;
| P25 [[IMA4 2017/2018 P25|Essaim de robots]]&lt;br /&gt;
| Benjamin Canu / Ganix Etcheguibel&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
|-&lt;br /&gt;
| P30 [[IMA4 2017/2018 P30|Contrôle d'une caméra WiFi.]]&lt;br /&gt;
| Taky Djeraba / Thomas Hubert&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle &amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P32 [[IMA4 2017/2018 P32|Tribute to Peter Vogel]]&lt;br /&gt;
| Jean-Baptiste Watine / Antoine Untereiner&lt;br /&gt;
| E306/C201&lt;br /&gt;
| E301&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle (C201) &amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P35 [[IMA4 2017/2018 P35|Manette de jeu vidéo pour personne en situation de handicap]]&lt;br /&gt;
| Transley Gracias / Camille Saad&lt;br /&gt;
| E306 &lt;br /&gt;
| E306 &lt;br /&gt;
| E305&lt;br /&gt;
| E306&lt;br /&gt;
|-&lt;br /&gt;
| P39 [[IMA4 2017/2018 P39|Musique des plantes]]&lt;br /&gt;
| Xavier Chenot / Rodolphe Toin&lt;br /&gt;
| E306 &lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
|-&lt;br /&gt;
| P40 [[IMA4 2017/2018 P40|Exploration du réseau d'anonymisation Tor]]&lt;br /&gt;
| Antoine Duquenoy / Anthony Durot&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
|-&lt;br /&gt;
| P42 [[IMA4 2017/2018 P42|Automatisation de l'assemblage de LEGO]]&lt;br /&gt;
| Eloi Zalczer / Justine Senellart&lt;br /&gt;
|E302/E306&lt;br /&gt;
|E302/E306&lt;br /&gt;
|E304/E302&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| P44 [[IMA4 2017/2018 P44|Reconnaissance d’objets via Traitement d’image]]&lt;br /&gt;
| Damien Narbais / Zoé Briois&lt;br /&gt;
| E306&lt;br /&gt;
| E301&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle (E301)&amp;lt;/font&amp;gt;&lt;br /&gt;
| E304 + 17h réunion C00X&lt;br /&gt;
|-&lt;br /&gt;
| P49 [[IMA4 2017/2018 P49|Suivi de la qualité de l’air]]&lt;br /&gt;
| Hugo Delbroucq / Nicolas Havard &lt;br /&gt;
| E301&lt;br /&gt;
| INRIA&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle &amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P50 [[IMA4 2017/2018 P50|Etage commande de Centaure]]&lt;br /&gt;
|-&lt;br /&gt;
| P60 [[IMA4 2017/2018 P60|Commande de niveaux d’eau]]&lt;br /&gt;
| Claire Vandamme / Alexandra Villa &lt;br /&gt;
|C008&lt;br /&gt;
|C008&lt;br /&gt;
|Hors Polytech/B106&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle &amp;lt;/font&amp;gt; &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Absentes &amp;lt;/font&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
| P64 [[IMA4 2017/2018 P64|Simulation Labview et mise en réseau Modbus d’un ascenseur]]&lt;br /&gt;
|-&lt;br /&gt;
| P65 [[IMA4 2017/2018 P65|Exosquelette pour apprentissage]]&lt;br /&gt;
| Florian Le Foll&lt;br /&gt;
| E301&lt;br /&gt;
| E301&lt;br /&gt;
|&amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt; Pas de salle &amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P66 [[IMA4 2017/2018 P66|Coupe de France de robotique]]&lt;br /&gt;
| Carval Amaury&lt;br /&gt;
| fabricarium &lt;br /&gt;
| fabricarium puis Hors Polytech&lt;br /&gt;
| E304&lt;br /&gt;
|-&lt;br /&gt;
| P67 [[IMA4 2017/2018 P67|Scanner 3D DIY]]&lt;br /&gt;
| Erwan Dufresne&lt;br /&gt;
| E302/E306&lt;br /&gt;
| E301&lt;br /&gt;
| E304&lt;br /&gt;
|-&lt;br /&gt;
| P68 [[IMA4 2017/2018 P68|Générateur de chronogrammes d'ordonnancement]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=49761</id>
		<title>IMA4 2017/2018 P14</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=49761"/>
				<updated>2018-02-05T14:59:45Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : /* Réalisation du Projet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
* '''Intitulé du projet''' : Proposer une solution permettant d'assembler des écrans de PC afin de créer un écran géant&lt;br /&gt;
&lt;br /&gt;
Le renouvellement de matériel informatique continu entraîne un nombre grandissant d'écrans d'ordinateur qui sont difficilement réutilisables compte tenu de leur petite taille. (17&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Afin de leur donner une seconde vie, ce projet a pour but de construire une plateforme permettant d'assembler ces écrans en un écran géant d'une forme &amp;quot;quelconque&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Exemple d'un cas d'écran carré'''&lt;br /&gt;
[[Fichier:Combinaison_ecrans.jpg]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
Afin de réaliser ce projet, il faudra :&lt;br /&gt;
&lt;br /&gt;
* Ajouter un Raspberry Pi sur chaque écran afin de le rentre &amp;quot;intelligent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Créer une application permettant de prendre un flux vidéo et de le diriger vers l'écran visé.&lt;br /&gt;
&lt;br /&gt;
* Permettre de déplacer facilement les écrans tout en maintenant le flux, que ce soit sur des configurations pleines en 2D ou des configurations plus complexes avec des espaces vides ou en 3D.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
* Le positionnement des écrans et la communication entre ces derniers.&lt;br /&gt;
&lt;br /&gt;
Pour une application telle qu'un écran géant composé de plusieurs écran, il est difficilement envisageable d'utiliser un système de coordonnées GPS pour repérer des écrans qui sont particulièrement proches les uns des autres. &lt;br /&gt;
En revanche il est tout à fait réaliste de penser à un système de capteurs de contact/proximité, disposés sur les bords des écrans pour leur permettre de s’emboîter puis il ne resterait qu'à exploiter les possibilités proposées par les Raspberry Pi ainsi qu'un système de coordonnées réalisé dans ce but pour déterminer où l'écran se situe par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
* La gestion du flux vidéo&lt;br /&gt;
&lt;br /&gt;
Le système sera potentiellement réalisé de sorte que chaque écran soit autonome dans son fonctionnement, une fois sa position relative déterminée au préalable.&lt;br /&gt;
En effet, pour le moment le problème était surtout dans le positionnement des écrans plus que dans la gestion du flux vidéo, à priori.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Est-ce que le système peut continuer de fonctionner si on retire l'un des écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pour pallier au problème d'un retrait d'écran, ou d'un disfonctionnement éventuel localisé, une solution possible est de fournir à chaque écran la totalité du flux vidéo.&lt;br /&gt;
Ceci permet dans un premier temps de s'affranchir d'un traitement vidéo avant distribution mais surtout que les autres écrans puissent fonctionner sans interruption due à un écran en particulier  &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Peut-il y avoir des décalages d'affichage entre les écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Malgré l'absence de possibilités de test pour le moment, on peut néanmoins supposer qu'il n'y ait pas de décalage. &lt;br /&gt;
Chaque écran va recevoir le flux vidéo puis en fonction du positionnement des écrans, et on pourra utiliser le système de coordonnées pour effectuer une &amp;quot;selection&amp;quot; sur la partie à afficher.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une configuration de 4 écrans en rectangle, il faudrait donc que l'écran inférieur gauche n'affiche que l'image correspondante jusqu'à la moitié, ensuite l'écran inférieur droit s'occuperait de l'affichage de la partie inférieure droite, etc&lt;br /&gt;
&lt;br /&gt;
En agrandissant le procédé à plus d'écrans, on trouve facilement une méthode de calcul.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet où il s'agira d'être capable de fournir une solution matérielle à la problématique, on s'orientera vers un prototype n'incluant que 4 écrans. Ceci permet à la fois d'éviter un encombrement matériel mais aussi .&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
* 5 Raspberry Pi 3 [https://fr.rs-online.com/web/p/processor-microcontroller-development-kits/8968660/?src=raspberrypi] lien 2 [https://www.mouser.fr/ProductDetail/Adafruit/3055?qs=sGAEpiMZZMuG6%2fXKM6MUaQgA7zSPt2LlznodoAe%252bkgk%3d]&lt;br /&gt;
&lt;br /&gt;
* Un Commutateur (5 Ports +)&lt;br /&gt;
&lt;br /&gt;
* 5 Câbles Ethernet&lt;br /&gt;
&lt;br /&gt;
* 4 Câbles VGA&lt;br /&gt;
&lt;br /&gt;
* 4 Adaptateur VGA-femelle vers HDMI-mâle&lt;br /&gt;
&lt;br /&gt;
* 16 [pack 25] Capteur de contact (1 par côté) [https://fr.rs-online.com/web/p/capteurs-proximites/7985273/] '''Envisagés pour la seconde partie du projet mais non validés pour le moment !'''&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
* 1) Régler le problème de la gestion du flux vidéo par le réseau ainsi qu'au niveau des Raspberry-Pi&lt;br /&gt;
&lt;br /&gt;
'''Hypothèse''': pour une configuration d'écran donnée, on suppose les écrans déjà intelligent et on dispose de leur emplacement relatif.&lt;br /&gt;
&lt;br /&gt;
* 2) Une fois la première version fonctionnelle, s'orienter vers la mise en place du système intelligent&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| Lundi 15/01/18 : 3h30&lt;br /&gt;
Mercredi 17/01/18 : 4h&lt;br /&gt;
| Mercredi 24/01/18 : 4h&lt;br /&gt;
| Mercredi 31/01/18 : 4h&lt;br /&gt;
| Lundi 05/02/18 : 2h&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
===Lundi 15/01/18===&lt;br /&gt;
&lt;br /&gt;
* Première séance ayant pour but de synthétiser l'idée théorique souhaitée par le projet.&lt;br /&gt;
&lt;br /&gt;
On imagine un système d'ensemble d'écrans autonomes mais qui communiquent leur emplacement entre eux, dans le sens où il n'est pas nécessaire de reconfigurer à chaque modification sur l'emplacement des écrans.&lt;br /&gt;
&lt;br /&gt;
Le système est pour ainsi dire évolutif puisqu'à chaque modification, exemple: passage d'un écran géant de 2*2 à 2*3 ou 3*2 (ou plus), les affichages peuvent modifier la zone du flux vidéo à afficher afin de conserver une image sur la totalité des écrans.&lt;br /&gt;
&lt;br /&gt;
De ce fait on peut imaginer des structures plus complexes, cylindriques dans le cas d'un flux d'une caméra à 360° ou plus simplement pour des simulateurs où les écrans seraient inclinés sans pour autant décrire un cercle autour de l'utilisateur.&lt;br /&gt;
&lt;br /&gt;
Cependant, pour des raisons évidentes d'effectif, de temps il est nécessaire de se réduire à une solution moins ambitieuse mais néanmoins acceptable.&lt;br /&gt;
&lt;br /&gt;
===Mercredi 17/01/18===&lt;br /&gt;
&lt;br /&gt;
* Mise en place d'un cahier des charge réalisable dans le temps imparti par rapport à la réponse théorique que l'on souhaiterai apporter au problème.&lt;br /&gt;
&lt;br /&gt;
Suite aux raisons évoquées précédemment, nous allons donc nous orienter vers un système à échelle réduite que nous ferons évoluer progressivement.&lt;br /&gt;
&lt;br /&gt;
Comme prévu nous diffuserons le flux vidéo initial, ''envoyé par Ethernet par une Raspberry Pi à partir d'un fichier stocké sur une clé usb par exemple'', aux 4 Raspberry intégrées aux écrans via un switch donc également par Ethernet (le port HDMI des R-Pi étant uniquement une sortie)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous effectuerons ensuite grâce aux R-Pi la modification du flux en fonction des écrans servant à l'affichage avant de rediriger la partie du flux qui nous intéresse vers les écrans.&lt;br /&gt;
&lt;br /&gt;
*'''Remarque:''' Dans un premier temps, pour une configuration donnée et avec les emplacement des écrans connues, il s'agit uniquement de réaliser la conversion d'affichage.&lt;br /&gt;
&lt;br /&gt;
Le fait de rendre les écrans intelligents n'est cependant pas ignoré et viendra dans un second temps, le choix de la méthode à employer étant encore en suspend. Nous allons cependant effectuer des hypothèses avec des capteurs.&lt;br /&gt;
&lt;br /&gt;
* Soit X et Y les dimensions du flux vidéo&lt;br /&gt;
* Soit U,R,D,L les états des capteurs sur un écran donné (respectivement, Up, Right, Down, Left) (1 pour actifs, 0 pour inactif)&lt;br /&gt;
* Soit I,J les indices des écrans (I = 0/1 et J = 0/1)&lt;br /&gt;
* Soit nb_X et nb_Y respectivement le nombre d'écrans en fonction des coordonnées i.e les dimensions de notre écran géant&lt;br /&gt;
&lt;br /&gt;
La configuration d'écran est la suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma (I,J)'''&lt;br /&gt;
&lt;br /&gt;
0,1 ; 1,1&lt;br /&gt;
&lt;br /&gt;
0,0 ; 1,0&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quel que soit l'écran, le flux qu'il devra recevoir sera situé entre [X1,X2] et [Y1,Y2].&lt;br /&gt;
Évidemment ces valeurs de l'emplacement de l'écran&lt;br /&gt;
&lt;br /&gt;
* Y2 = Y * ( D||U ) * (I+1) / nb_Y&lt;br /&gt;
* Y1 = Y * D * I / nb_Y&lt;br /&gt;
* X1 = X * L * J / nb_X&lt;br /&gt;
* X2 = X * ( L||R ) * (J+1) / nb_X&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 24/01/18===&lt;br /&gt;
Début de la gestion réseau du flux vidéo.&lt;br /&gt;
&lt;br /&gt;
Pour la partie théorique, nous allons donc procéder de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
Une Raspberry s'occupera de diffuser le flux sur le réseau via un commutateur. À partir d'un fichier vidéo interne.&lt;br /&gt;
&lt;br /&gt;
Les autres R-Pi disposeront d'un fichier de configuration qui contient les coordonnées à afficher en fonction de la position de l'écran, dans la première partie ce fichier sera directement implanté avec un contenu propre à chaque R-Pi mais dans la seconde il s'agira de les modifier automatiquement.&lt;br /&gt;
&lt;br /&gt;
Configuration eth0 sur la Raspberry pi : &lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
address 192.168.1.&amp;lt;2+numero_rpi&amp;gt;&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
&lt;br /&gt;
On commencera par créer un fichier fifo pour faire la transmission entre nc et OMXplayer&lt;br /&gt;
&lt;br /&gt;
Lecture du réseau : nc -l -p &amp;lt;port&amp;gt; &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Affichage : omxplayer --crop x1,y1,x2,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
[https://elinux.org/Omxplayer] : Documentation OMX player&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 31/01/18===&lt;br /&gt;
&lt;br /&gt;
Tentatives de communication PC (Source flux) à Raspberry (Écran) via nc : Échec&lt;br /&gt;
&lt;br /&gt;
* [PC source] : | nc &lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 1] : nc -l -p 12345 &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 2] : omxplayer --crop x1,y1,x1,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Avec x1,y1,x2,y2 les coordonnées des coins de la fenêtre à afficher&lt;br /&gt;
&lt;br /&gt;
Problème rencontré : la Raspberry n'arrive pas à obtenir une adresse joignable malgré une connexion directe avec le PC en ethernet&lt;br /&gt;
&lt;br /&gt;
* sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; iface eth0 inet dhcp&lt;br /&gt;
&lt;br /&gt;
* ifdown eth0&lt;br /&gt;
&lt;br /&gt;
* ifup eth0&lt;br /&gt;
&lt;br /&gt;
* ifconfig&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; inet adr:169.254.68.185&lt;br /&gt;
&lt;br /&gt;
Seconde tentative avec VLC en mode Streaming sur le PC source et VLC en écoute de stream avec VLC également : Échec (IP de la source = ?)&lt;br /&gt;
&lt;br /&gt;
Ligne de commande pour VLC de lecture&lt;br /&gt;
&lt;br /&gt;
* vlc -vvv http://IP_SOURCE:8080/PATH --crop X_RESxY_RES+LEFT_CROP+TOP_CROP -f&lt;br /&gt;
&lt;br /&gt;
PATH: paramètre donné lors du lancement du stream sur la machine source&lt;br /&gt;
&lt;br /&gt;
X_RES : Résolution X de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
Y_RES : Résolution Y de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
LEFT_CROP : Largeur de la zone coupée en partant de la gauche (en pixel)&lt;br /&gt;
&lt;br /&gt;
TOP_CROP : Hauteur de la zone coupée en partant du haut (en pixel)&lt;br /&gt;
&lt;br /&gt;
-f : Full screen&lt;br /&gt;
&lt;br /&gt;
* Test avec le mode de stream (une fois le problème résolu) : le lancement de la lecture sous VLC du côté de la raspberry entraîne des pertes considérables au niveau du flux vidéo avec des coupures très fréquentes (écran noir) ainsi qu'une forte consommation des ressources&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;photo 95%&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
===Lundi 05/02/18===&lt;br /&gt;
&lt;br /&gt;
* cependant omxplayer demeure plus adapté puisqu'il n'entraîne pas une sur-consommation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;photo 0-3%&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=49755</id>
		<title>IMA4 2017/2018 P14</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=49755"/>
				<updated>2018-02-05T14:34:39Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : /* Feuille d'heures */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
* '''Intitulé du projet''' : Proposer une solution permettant d'assembler des écrans de PC afin de créer un écran géant&lt;br /&gt;
&lt;br /&gt;
Le renouvellement de matériel informatique continu entraîne un nombre grandissant d'écrans d'ordinateur qui sont difficilement réutilisables compte tenu de leur petite taille. (17&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Afin de leur donner une seconde vie, ce projet a pour but de construire une plateforme permettant d'assembler ces écrans en un écran géant d'une forme &amp;quot;quelconque&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Exemple d'un cas d'écran carré'''&lt;br /&gt;
[[Fichier:Combinaison_ecrans.jpg]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
Afin de réaliser ce projet, il faudra :&lt;br /&gt;
&lt;br /&gt;
* Ajouter un Raspberry Pi sur chaque écran afin de le rentre &amp;quot;intelligent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Créer une application permettant de prendre un flux vidéo et de le diriger vers l'écran visé.&lt;br /&gt;
&lt;br /&gt;
* Permettre de déplacer facilement les écrans tout en maintenant le flux, que ce soit sur des configurations pleines en 2D ou des configurations plus complexes avec des espaces vides ou en 3D.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
* Le positionnement des écrans et la communication entre ces derniers.&lt;br /&gt;
&lt;br /&gt;
Pour une application telle qu'un écran géant composé de plusieurs écran, il est difficilement envisageable d'utiliser un système de coordonnées GPS pour repérer des écrans qui sont particulièrement proches les uns des autres. &lt;br /&gt;
En revanche il est tout à fait réaliste de penser à un système de capteurs de contact/proximité, disposés sur les bords des écrans pour leur permettre de s’emboîter puis il ne resterait qu'à exploiter les possibilités proposées par les Raspberry Pi ainsi qu'un système de coordonnées réalisé dans ce but pour déterminer où l'écran se situe par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
* La gestion du flux vidéo&lt;br /&gt;
&lt;br /&gt;
Le système sera potentiellement réalisé de sorte que chaque écran soit autonome dans son fonctionnement, une fois sa position relative déterminée au préalable.&lt;br /&gt;
En effet, pour le moment le problème était surtout dans le positionnement des écrans plus que dans la gestion du flux vidéo, à priori.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Est-ce que le système peut continuer de fonctionner si on retire l'un des écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pour pallier au problème d'un retrait d'écran, ou d'un disfonctionnement éventuel localisé, une solution possible est de fournir à chaque écran la totalité du flux vidéo.&lt;br /&gt;
Ceci permet dans un premier temps de s'affranchir d'un traitement vidéo avant distribution mais surtout que les autres écrans puissent fonctionner sans interruption due à un écran en particulier  &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Peut-il y avoir des décalages d'affichage entre les écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Malgré l'absence de possibilités de test pour le moment, on peut néanmoins supposer qu'il n'y ait pas de décalage. &lt;br /&gt;
Chaque écran va recevoir le flux vidéo puis en fonction du positionnement des écrans, et on pourra utiliser le système de coordonnées pour effectuer une &amp;quot;selection&amp;quot; sur la partie à afficher.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une configuration de 4 écrans en rectangle, il faudrait donc que l'écran inférieur gauche n'affiche que l'image correspondante jusqu'à la moitié, ensuite l'écran inférieur droit s'occuperait de l'affichage de la partie inférieure droite, etc&lt;br /&gt;
&lt;br /&gt;
En agrandissant le procédé à plus d'écrans, on trouve facilement une méthode de calcul.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet où il s'agira d'être capable de fournir une solution matérielle à la problématique, on s'orientera vers un prototype n'incluant que 4 écrans. Ceci permet à la fois d'éviter un encombrement matériel mais aussi .&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
* 5 Raspberry Pi 3 [https://fr.rs-online.com/web/p/processor-microcontroller-development-kits/8968660/?src=raspberrypi] lien 2 [https://www.mouser.fr/ProductDetail/Adafruit/3055?qs=sGAEpiMZZMuG6%2fXKM6MUaQgA7zSPt2LlznodoAe%252bkgk%3d]&lt;br /&gt;
&lt;br /&gt;
* Un Commutateur (5 Ports +)&lt;br /&gt;
&lt;br /&gt;
* 5 Câbles Ethernet&lt;br /&gt;
&lt;br /&gt;
* 4 Câbles VGA&lt;br /&gt;
&lt;br /&gt;
* 4 Adaptateur VGA-femelle vers HDMI-mâle&lt;br /&gt;
&lt;br /&gt;
* 16 [pack 25] Capteur de contact (1 par côté) [https://fr.rs-online.com/web/p/capteurs-proximites/7985273/] '''Envisagés pour la seconde partie du projet mais non validés pour le moment !'''&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
* 1) Régler le problème de la gestion du flux vidéo par le réseau ainsi qu'au niveau des Raspberry-Pi&lt;br /&gt;
&lt;br /&gt;
'''Hypothèse''': pour une configuration d'écran donnée, on suppose les écrans déjà intelligent et on dispose de leur emplacement relatif.&lt;br /&gt;
&lt;br /&gt;
* 2) Une fois la première version fonctionnelle, s'orienter vers la mise en place du système intelligent&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| Lundi 15/01/18 : 3h30&lt;br /&gt;
Mercredi 17/01/18 : 4h&lt;br /&gt;
| Mercredi 24/01/18 : 4h&lt;br /&gt;
| Mercredi 31/01/18 : 4h&lt;br /&gt;
| Lundi 05/02/18 : 2h&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
===Lundi 15/01/18===&lt;br /&gt;
&lt;br /&gt;
* Première séance ayant pour but de synthétiser l'idée théorique souhaitée par le projet.&lt;br /&gt;
&lt;br /&gt;
On imagine un système d'ensemble d'écrans autonomes mais qui communiquent leur emplacement entre eux, dans le sens où il n'est pas nécessaire de reconfigurer à chaque modification sur l'emplacement des écrans.&lt;br /&gt;
&lt;br /&gt;
Le système est pour ainsi dire évolutif puisqu'à chaque modification, exemple: passage d'un écran géant de 2*2 à 2*3 ou 3*2 (ou plus), les affichages peuvent modifier la zone du flux vidéo à afficher afin de conserver une image sur la totalité des écrans.&lt;br /&gt;
&lt;br /&gt;
De ce fait on peut imaginer des structures plus complexes, cylindriques dans le cas d'un flux d'une caméra à 360° ou plus simplement pour des simulateurs où les écrans seraient inclinés sans pour autant décrire un cercle autour de l'utilisateur.&lt;br /&gt;
&lt;br /&gt;
Cependant, pour des raisons évidentes d'effectif, de temps il est nécessaire de se réduire à une solution moins ambitieuse mais néanmoins acceptable.&lt;br /&gt;
&lt;br /&gt;
===Mercredi 17/01/18===&lt;br /&gt;
&lt;br /&gt;
* Mise en place d'un cahier des charge réalisable dans le temps imparti par rapport à la réponse théorique que l'on souhaiterai apporter au problème.&lt;br /&gt;
&lt;br /&gt;
Suite aux raisons évoquées précédemment, nous allons donc nous orienter vers un système à échelle réduite que nous ferons évoluer progressivement.&lt;br /&gt;
&lt;br /&gt;
Comme prévu nous diffuserons le flux vidéo initial, ''envoyé par Ethernet par une Raspberry Pi à partir d'un fichier stocké sur une clé usb par exemple'', aux 4 Raspberry intégrées aux écrans via un switch donc également par Ethernet (le port HDMI des R-Pi étant uniquement une sortie)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous effectuerons ensuite grâce aux R-Pi la modification du flux en fonction des écrans servant à l'affichage avant de rediriger la partie du flux qui nous intéresse vers les écrans.&lt;br /&gt;
&lt;br /&gt;
*'''Remarque:''' Dans un premier temps, pour une configuration donnée et avec les emplacement des écrans connues, il s'agit uniquement de réaliser la conversion d'affichage.&lt;br /&gt;
&lt;br /&gt;
Le fait de rendre les écrans intelligents n'est cependant pas ignoré et viendra dans un second temps, le choix de la méthode à employer étant encore en suspend. Nous allons cependant effectuer des hypothèses avec des capteurs.&lt;br /&gt;
&lt;br /&gt;
* Soit X et Y les dimensions du flux vidéo&lt;br /&gt;
* Soit U,R,D,L les états des capteurs sur un écran donné (respectivement, Up, Right, Down, Left) (1 pour actifs, 0 pour inactif)&lt;br /&gt;
* Soit I,J les indices des écrans (I = 0/1 et J = 0/1)&lt;br /&gt;
* Soit nb_X et nb_Y respectivement le nombre d'écrans en fonction des coordonnées i.e les dimensions de notre écran géant&lt;br /&gt;
&lt;br /&gt;
La configuration d'écran est la suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma (I,J)'''&lt;br /&gt;
&lt;br /&gt;
0,1 ; 1,1&lt;br /&gt;
&lt;br /&gt;
0,0 ; 1,0&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quel que soit l'écran, le flux qu'il devra recevoir sera situé entre [X1,X2] et [Y1,Y2].&lt;br /&gt;
Évidemment ces valeurs de l'emplacement de l'écran&lt;br /&gt;
&lt;br /&gt;
* Y2 = Y * ( D||U ) * (I+1) / nb_Y&lt;br /&gt;
* Y1 = Y * D * I / nb_Y&lt;br /&gt;
* X1 = X * L * J / nb_X&lt;br /&gt;
* X2 = X * ( L||R ) * (J+1) / nb_X&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 24/01/18===&lt;br /&gt;
Début de la gestion réseau du flux vidéo.&lt;br /&gt;
&lt;br /&gt;
Pour la partie théorique, nous allons donc procéder de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
Une Raspberry s'occupera de diffuser le flux sur le réseau via un commutateur. À partir d'un fichier vidéo interne.&lt;br /&gt;
&lt;br /&gt;
Les autres R-Pi disposeront d'un fichier de configuration qui contient les coordonnées à afficher en fonction de la position de l'écran, dans la première partie ce fichier sera directement implanté avec un contenu propre à chaque R-Pi mais dans la seconde il s'agira de les modifier automatiquement.&lt;br /&gt;
&lt;br /&gt;
Configuration eth0 sur la Raspberry pi : &lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
address 192.168.1.&amp;lt;2+numero_rpi&amp;gt;&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
&lt;br /&gt;
On commencera par créer un fichier fifo pour faire la transmission entre nc et OMXplayer&lt;br /&gt;
&lt;br /&gt;
Lecture du réseau : nc -l -p &amp;lt;port&amp;gt; &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Affichage : omxplayer --win x1,y1,x2,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
[https://elinux.org/Omxplayer] : Documentation OMX player&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 31/01/18===&lt;br /&gt;
&lt;br /&gt;
Tentatives de communication PC (Source flux) à Raspberry (Écran) via nc : Échec&lt;br /&gt;
&lt;br /&gt;
* [PC source] : | nc &lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 1] : nc -l -p 12345 &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 2] : omxplayer --crop x1,y1,x1,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Avec x1,y1,x2,y2 les coordonnées des coins de la fenêtre à afficher&lt;br /&gt;
&lt;br /&gt;
Problème rencontré : la Raspberry n'arrive pas à obtenir une adresse joignable malgré une connexion directe avec le PC en ethernet&lt;br /&gt;
&lt;br /&gt;
* sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; iface eth0 inet dhcp&lt;br /&gt;
&lt;br /&gt;
* ifdown eth0&lt;br /&gt;
&lt;br /&gt;
* ifup eth0&lt;br /&gt;
&lt;br /&gt;
* ifconfig&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; inet adr:169.254.68.185&lt;br /&gt;
&lt;br /&gt;
Seconde tentative avec VLC en mode Streaming sur le PC source et VLC en écoute de stream avec VLC également : Échec (IP de la source = ?)&lt;br /&gt;
&lt;br /&gt;
Ligne de commande pour VLC de lecture&lt;br /&gt;
&lt;br /&gt;
* vlc -vvv http://IP_SOURCE:8080/PATH --crop X_RESxY_RES+LEFT_CROP+TOP_CROP -f&lt;br /&gt;
&lt;br /&gt;
PATH: paramètre donné lors du lancement du stream sur la machine source&lt;br /&gt;
&lt;br /&gt;
X_RES : Résolution X de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
Y_RES : Résolution Y de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
LEFT_CROP : Largeur de la zone coupée en partant de la gauche (en pixel)&lt;br /&gt;
&lt;br /&gt;
TOP_CROP : Hauteur de la zone coupée en partant du haut (en pixel)&lt;br /&gt;
&lt;br /&gt;
-f : Full screen&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=49517</id>
		<title>IMA4 2017/2018 P14</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=49517"/>
				<updated>2018-01-31T17:40:12Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : /* Mercredi 31/01/18 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
* '''Intitulé du projet''' : Proposer une solution permettant d'assembler des écrans de PC afin de créer un écran géant&lt;br /&gt;
&lt;br /&gt;
Le renouvellement de matériel informatique continu entraîne un nombre grandissant d'écrans d'ordinateur qui sont difficilement réutilisables compte tenu de leur petite taille. (17&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Afin de leur donner une seconde vie, ce projet a pour but de construire une plateforme permettant d'assembler ces écrans en un écran géant d'une forme &amp;quot;quelconque&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Exemple d'un cas d'écran carré'''&lt;br /&gt;
[[Fichier:Combinaison_ecrans.jpg]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
Afin de réaliser ce projet, il faudra :&lt;br /&gt;
&lt;br /&gt;
* Ajouter un Raspberry Pi sur chaque écran afin de le rentre &amp;quot;intelligent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Créer une application permettant de prendre un flux vidéo et de le diriger vers l'écran visé.&lt;br /&gt;
&lt;br /&gt;
* Permettre de déplacer facilement les écrans tout en maintenant le flux, que ce soit sur des configurations pleines en 2D ou des configurations plus complexes avec des espaces vides ou en 3D.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
* Le positionnement des écrans et la communication entre ces derniers.&lt;br /&gt;
&lt;br /&gt;
Pour une application telle qu'un écran géant composé de plusieurs écran, il est difficilement envisageable d'utiliser un système de coordonnées GPS pour repérer des écrans qui sont particulièrement proches les uns des autres. &lt;br /&gt;
En revanche il est tout à fait réaliste de penser à un système de capteurs de contact/proximité, disposés sur les bords des écrans pour leur permettre de s’emboîter puis il ne resterait qu'à exploiter les possibilités proposées par les Raspberry Pi ainsi qu'un système de coordonnées réalisé dans ce but pour déterminer où l'écran se situe par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
* La gestion du flux vidéo&lt;br /&gt;
&lt;br /&gt;
Le système sera potentiellement réalisé de sorte que chaque écran soit autonome dans son fonctionnement, une fois sa position relative déterminée au préalable.&lt;br /&gt;
En effet, pour le moment le problème était surtout dans le positionnement des écrans plus que dans la gestion du flux vidéo, à priori.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Est-ce que le système peut continuer de fonctionner si on retire l'un des écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pour pallier au problème d'un retrait d'écran, ou d'un disfonctionnement éventuel localisé, une solution possible est de fournir à chaque écran la totalité du flux vidéo.&lt;br /&gt;
Ceci permet dans un premier temps de s'affranchir d'un traitement vidéo avant distribution mais surtout que les autres écrans puissent fonctionner sans interruption due à un écran en particulier  &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Peut-il y avoir des décalages d'affichage entre les écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Malgré l'absence de possibilités de test pour le moment, on peut néanmoins supposer qu'il n'y ait pas de décalage. &lt;br /&gt;
Chaque écran va recevoir le flux vidéo puis en fonction du positionnement des écrans, et on pourra utiliser le système de coordonnées pour effectuer une &amp;quot;selection&amp;quot; sur la partie à afficher.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une configuration de 4 écrans en rectangle, il faudrait donc que l'écran inférieur gauche n'affiche que l'image correspondante jusqu'à la moitié, ensuite l'écran inférieur droit s'occuperait de l'affichage de la partie inférieure droite, etc&lt;br /&gt;
&lt;br /&gt;
En agrandissant le procédé à plus d'écrans, on trouve facilement une méthode de calcul.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet où il s'agira d'être capable de fournir une solution matérielle à la problématique, on s'orientera vers un prototype n'incluant que 4 écrans. Ceci permet à la fois d'éviter un encombrement matériel mais aussi .&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
* 5 Raspberry Pi 3 [https://fr.rs-online.com/web/p/processor-microcontroller-development-kits/8968660/?src=raspberrypi] lien 2 [https://www.mouser.fr/ProductDetail/Adafruit/3055?qs=sGAEpiMZZMuG6%2fXKM6MUaQgA7zSPt2LlznodoAe%252bkgk%3d]&lt;br /&gt;
&lt;br /&gt;
* Un Commutateur (5 Ports +)&lt;br /&gt;
&lt;br /&gt;
* 5 Câbles Ethernet&lt;br /&gt;
&lt;br /&gt;
* 4 Câbles VGA&lt;br /&gt;
&lt;br /&gt;
* 4 Adaptateur VGA-femelle vers HDMI-mâle&lt;br /&gt;
&lt;br /&gt;
* 16 [pack 25] Capteur de contact (1 par côté) [https://fr.rs-online.com/web/p/capteurs-proximites/7985273/] '''Envisagés pour la seconde partie du projet mais non validés pour le moment !'''&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
* 1) Régler le problème de la gestion du flux vidéo par le réseau ainsi qu'au niveau des Raspberry-Pi&lt;br /&gt;
&lt;br /&gt;
'''Hypothèse''': pour une configuration d'écran donnée, on suppose les écrans déjà intelligent et on dispose de leur emplacement relatif.&lt;br /&gt;
&lt;br /&gt;
* 2) Une fois la première version fonctionnelle, s'orienter vers la mise en place du système intelligent&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| Lundi 15/01/18 : 3h30&lt;br /&gt;
Mercredi 17/01/18 : 4h&lt;br /&gt;
| Mercredi 24/01/18 : 4h&lt;br /&gt;
| Mercredi 31/01/18 : 4h&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
===Lundi 15/01/18===&lt;br /&gt;
&lt;br /&gt;
* Première séance ayant pour but de synthétiser l'idée théorique souhaitée par le projet.&lt;br /&gt;
&lt;br /&gt;
On imagine un système d'ensemble d'écrans autonomes mais qui communiquent leur emplacement entre eux, dans le sens où il n'est pas nécessaire de reconfigurer à chaque modification sur l'emplacement des écrans.&lt;br /&gt;
&lt;br /&gt;
Le système est pour ainsi dire évolutif puisqu'à chaque modification, exemple: passage d'un écran géant de 2*2 à 2*3 ou 3*2 (ou plus), les affichages peuvent modifier la zone du flux vidéo à afficher afin de conserver une image sur la totalité des écrans.&lt;br /&gt;
&lt;br /&gt;
De ce fait on peut imaginer des structures plus complexes, cylindriques dans le cas d'un flux d'une caméra à 360° ou plus simplement pour des simulateurs où les écrans seraient inclinés sans pour autant décrire un cercle autour de l'utilisateur.&lt;br /&gt;
&lt;br /&gt;
Cependant, pour des raisons évidentes d'effectif, de temps il est nécessaire de se réduire à une solution moins ambitieuse mais néanmoins acceptable.&lt;br /&gt;
&lt;br /&gt;
===Mercredi 17/01/18===&lt;br /&gt;
&lt;br /&gt;
* Mise en place d'un cahier des charge réalisable dans le temps imparti par rapport à la réponse théorique que l'on souhaiterai apporter au problème.&lt;br /&gt;
&lt;br /&gt;
Suite aux raisons évoquées précédemment, nous allons donc nous orienter vers un système à échelle réduite que nous ferons évoluer progressivement.&lt;br /&gt;
&lt;br /&gt;
Comme prévu nous diffuserons le flux vidéo initial, ''envoyé par Ethernet par une Raspberry Pi à partir d'un fichier stocké sur une clé usb par exemple'', aux 4 Raspberry intégrées aux écrans via un switch donc également par Ethernet (le port HDMI des R-Pi étant uniquement une sortie)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous effectuerons ensuite grâce aux R-Pi la modification du flux en fonction des écrans servant à l'affichage avant de rediriger la partie du flux qui nous intéresse vers les écrans.&lt;br /&gt;
&lt;br /&gt;
*'''Remarque:''' Dans un premier temps, pour une configuration donnée et avec les emplacement des écrans connues, il s'agit uniquement de réaliser la conversion d'affichage.&lt;br /&gt;
&lt;br /&gt;
Le fait de rendre les écrans intelligents n'est cependant pas ignoré et viendra dans un second temps, le choix de la méthode à employer étant encore en suspend. Nous allons cependant effectuer des hypothèses avec des capteurs.&lt;br /&gt;
&lt;br /&gt;
* Soit X et Y les dimensions du flux vidéo&lt;br /&gt;
* Soit U,R,D,L les états des capteurs sur un écran donné (respectivement, Up, Right, Down, Left) (1 pour actifs, 0 pour inactif)&lt;br /&gt;
* Soit I,J les indices des écrans (I = 0/1 et J = 0/1)&lt;br /&gt;
* Soit nb_X et nb_Y respectivement le nombre d'écrans en fonction des coordonnées i.e les dimensions de notre écran géant&lt;br /&gt;
&lt;br /&gt;
La configuration d'écran est la suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma (I,J)'''&lt;br /&gt;
&lt;br /&gt;
0,1 ; 1,1&lt;br /&gt;
&lt;br /&gt;
0,0 ; 1,0&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quel que soit l'écran, le flux qu'il devra recevoir sera situé entre [X1,X2] et [Y1,Y2].&lt;br /&gt;
Évidemment ces valeurs de l'emplacement de l'écran&lt;br /&gt;
&lt;br /&gt;
* Y2 = Y * ( D||U ) * (I+1) / nb_Y&lt;br /&gt;
* Y1 = Y * D * I / nb_Y&lt;br /&gt;
* X1 = X * L * J / nb_X&lt;br /&gt;
* X2 = X * ( L||R ) * (J+1) / nb_X&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 24/01/18===&lt;br /&gt;
Début de la gestion réseau du flux vidéo.&lt;br /&gt;
&lt;br /&gt;
Pour la partie théorique, nous allons donc procéder de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
Une Raspberry s'occupera de diffuser le flux sur le réseau via un commutateur. À partir d'un fichier vidéo interne.&lt;br /&gt;
&lt;br /&gt;
Les autres R-Pi disposeront d'un fichier de configuration qui contient les coordonnées à afficher en fonction de la position de l'écran, dans la première partie ce fichier sera directement implanté avec un contenu propre à chaque R-Pi mais dans la seconde il s'agira de les modifier automatiquement.&lt;br /&gt;
&lt;br /&gt;
Configuration eth0 sur la Raspberry pi : &lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
address 192.168.1.&amp;lt;2+numero_rpi&amp;gt;&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
&lt;br /&gt;
On commencera par créer un fichier fifo pour faire la transmission entre nc et OMXplayer&lt;br /&gt;
&lt;br /&gt;
Lecture du réseau : nc -l -p &amp;lt;port&amp;gt; &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Affichage : omxplayer --win x1,y1,x2,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
[https://elinux.org/Omxplayer] : Documentation OMX player&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 31/01/18===&lt;br /&gt;
&lt;br /&gt;
Tentatives de communication PC (Source flux) à Raspberry (Écran) via nc : Échec&lt;br /&gt;
&lt;br /&gt;
* [PC source] : | nc &lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 1] : nc -l -p 12345 &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 2] : omxplayer --crop x1,y1,x1,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Avec x1,y1,x2,y2 les coordonnées des coins de la fenêtre à afficher&lt;br /&gt;
&lt;br /&gt;
Problème rencontré : la Raspberry n'arrive pas à obtenir une adresse joignable malgré une connexion directe avec le PC en ethernet&lt;br /&gt;
&lt;br /&gt;
* sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; iface eth0 inet dhcp&lt;br /&gt;
&lt;br /&gt;
* ifdown eth0&lt;br /&gt;
&lt;br /&gt;
* ifup eth0&lt;br /&gt;
&lt;br /&gt;
* ifconfig&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; inet adr:169.254.68.185&lt;br /&gt;
&lt;br /&gt;
Seconde tentative avec VLC en mode Streaming sur le PC source et VLC en écoute de stream avec VLC également : Échec (IP de la source = ?)&lt;br /&gt;
&lt;br /&gt;
Ligne de commande pour VLC de lecture&lt;br /&gt;
&lt;br /&gt;
* vlc -vvv http://IP_SOURCE:8080/PATH --crop X_RESxY_RES+LEFT_CROP+TOP_CROP -f&lt;br /&gt;
&lt;br /&gt;
PATH: paramètre donné lors du lancement du stream sur la machine source&lt;br /&gt;
&lt;br /&gt;
X_RES : Résolution X de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
Y_RES : Résolution Y de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
LEFT_CROP : Largeur de la zone coupée en partant de la gauche (en pixel)&lt;br /&gt;
&lt;br /&gt;
TOP_CROP : Hauteur de la zone coupée en partant du haut (en pixel)&lt;br /&gt;
&lt;br /&gt;
-f : Full screen&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=49516</id>
		<title>IMA4 2017/2018 P14</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=49516"/>
				<updated>2018-01-31T17:29:10Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : /* Mercredi 31/01/18 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
* '''Intitulé du projet''' : Proposer une solution permettant d'assembler des écrans de PC afin de créer un écran géant&lt;br /&gt;
&lt;br /&gt;
Le renouvellement de matériel informatique continu entraîne un nombre grandissant d'écrans d'ordinateur qui sont difficilement réutilisables compte tenu de leur petite taille. (17&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Afin de leur donner une seconde vie, ce projet a pour but de construire une plateforme permettant d'assembler ces écrans en un écran géant d'une forme &amp;quot;quelconque&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Exemple d'un cas d'écran carré'''&lt;br /&gt;
[[Fichier:Combinaison_ecrans.jpg]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
Afin de réaliser ce projet, il faudra :&lt;br /&gt;
&lt;br /&gt;
* Ajouter un Raspberry Pi sur chaque écran afin de le rentre &amp;quot;intelligent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Créer une application permettant de prendre un flux vidéo et de le diriger vers l'écran visé.&lt;br /&gt;
&lt;br /&gt;
* Permettre de déplacer facilement les écrans tout en maintenant le flux, que ce soit sur des configurations pleines en 2D ou des configurations plus complexes avec des espaces vides ou en 3D.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
* Le positionnement des écrans et la communication entre ces derniers.&lt;br /&gt;
&lt;br /&gt;
Pour une application telle qu'un écran géant composé de plusieurs écran, il est difficilement envisageable d'utiliser un système de coordonnées GPS pour repérer des écrans qui sont particulièrement proches les uns des autres. &lt;br /&gt;
En revanche il est tout à fait réaliste de penser à un système de capteurs de contact/proximité, disposés sur les bords des écrans pour leur permettre de s’emboîter puis il ne resterait qu'à exploiter les possibilités proposées par les Raspberry Pi ainsi qu'un système de coordonnées réalisé dans ce but pour déterminer où l'écran se situe par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
* La gestion du flux vidéo&lt;br /&gt;
&lt;br /&gt;
Le système sera potentiellement réalisé de sorte que chaque écran soit autonome dans son fonctionnement, une fois sa position relative déterminée au préalable.&lt;br /&gt;
En effet, pour le moment le problème était surtout dans le positionnement des écrans plus que dans la gestion du flux vidéo, à priori.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Est-ce que le système peut continuer de fonctionner si on retire l'un des écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pour pallier au problème d'un retrait d'écran, ou d'un disfonctionnement éventuel localisé, une solution possible est de fournir à chaque écran la totalité du flux vidéo.&lt;br /&gt;
Ceci permet dans un premier temps de s'affranchir d'un traitement vidéo avant distribution mais surtout que les autres écrans puissent fonctionner sans interruption due à un écran en particulier  &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Peut-il y avoir des décalages d'affichage entre les écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Malgré l'absence de possibilités de test pour le moment, on peut néanmoins supposer qu'il n'y ait pas de décalage. &lt;br /&gt;
Chaque écran va recevoir le flux vidéo puis en fonction du positionnement des écrans, et on pourra utiliser le système de coordonnées pour effectuer une &amp;quot;selection&amp;quot; sur la partie à afficher.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une configuration de 4 écrans en rectangle, il faudrait donc que l'écran inférieur gauche n'affiche que l'image correspondante jusqu'à la moitié, ensuite l'écran inférieur droit s'occuperait de l'affichage de la partie inférieure droite, etc&lt;br /&gt;
&lt;br /&gt;
En agrandissant le procédé à plus d'écrans, on trouve facilement une méthode de calcul.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet où il s'agira d'être capable de fournir une solution matérielle à la problématique, on s'orientera vers un prototype n'incluant que 4 écrans. Ceci permet à la fois d'éviter un encombrement matériel mais aussi .&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
* 5 Raspberry Pi 3 [https://fr.rs-online.com/web/p/processor-microcontroller-development-kits/8968660/?src=raspberrypi] lien 2 [https://www.mouser.fr/ProductDetail/Adafruit/3055?qs=sGAEpiMZZMuG6%2fXKM6MUaQgA7zSPt2LlznodoAe%252bkgk%3d]&lt;br /&gt;
&lt;br /&gt;
* Un Commutateur (5 Ports +)&lt;br /&gt;
&lt;br /&gt;
* 5 Câbles Ethernet&lt;br /&gt;
&lt;br /&gt;
* 4 Câbles VGA&lt;br /&gt;
&lt;br /&gt;
* 4 Adaptateur VGA-femelle vers HDMI-mâle&lt;br /&gt;
&lt;br /&gt;
* 16 [pack 25] Capteur de contact (1 par côté) [https://fr.rs-online.com/web/p/capteurs-proximites/7985273/] '''Envisagés pour la seconde partie du projet mais non validés pour le moment !'''&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
* 1) Régler le problème de la gestion du flux vidéo par le réseau ainsi qu'au niveau des Raspberry-Pi&lt;br /&gt;
&lt;br /&gt;
'''Hypothèse''': pour une configuration d'écran donnée, on suppose les écrans déjà intelligent et on dispose de leur emplacement relatif.&lt;br /&gt;
&lt;br /&gt;
* 2) Une fois la première version fonctionnelle, s'orienter vers la mise en place du système intelligent&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| Lundi 15/01/18 : 3h30&lt;br /&gt;
Mercredi 17/01/18 : 4h&lt;br /&gt;
| Mercredi 24/01/18 : 4h&lt;br /&gt;
| Mercredi 31/01/18 : 4h&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
===Lundi 15/01/18===&lt;br /&gt;
&lt;br /&gt;
* Première séance ayant pour but de synthétiser l'idée théorique souhaitée par le projet.&lt;br /&gt;
&lt;br /&gt;
On imagine un système d'ensemble d'écrans autonomes mais qui communiquent leur emplacement entre eux, dans le sens où il n'est pas nécessaire de reconfigurer à chaque modification sur l'emplacement des écrans.&lt;br /&gt;
&lt;br /&gt;
Le système est pour ainsi dire évolutif puisqu'à chaque modification, exemple: passage d'un écran géant de 2*2 à 2*3 ou 3*2 (ou plus), les affichages peuvent modifier la zone du flux vidéo à afficher afin de conserver une image sur la totalité des écrans.&lt;br /&gt;
&lt;br /&gt;
De ce fait on peut imaginer des structures plus complexes, cylindriques dans le cas d'un flux d'une caméra à 360° ou plus simplement pour des simulateurs où les écrans seraient inclinés sans pour autant décrire un cercle autour de l'utilisateur.&lt;br /&gt;
&lt;br /&gt;
Cependant, pour des raisons évidentes d'effectif, de temps il est nécessaire de se réduire à une solution moins ambitieuse mais néanmoins acceptable.&lt;br /&gt;
&lt;br /&gt;
===Mercredi 17/01/18===&lt;br /&gt;
&lt;br /&gt;
* Mise en place d'un cahier des charge réalisable dans le temps imparti par rapport à la réponse théorique que l'on souhaiterai apporter au problème.&lt;br /&gt;
&lt;br /&gt;
Suite aux raisons évoquées précédemment, nous allons donc nous orienter vers un système à échelle réduite que nous ferons évoluer progressivement.&lt;br /&gt;
&lt;br /&gt;
Comme prévu nous diffuserons le flux vidéo initial, ''envoyé par Ethernet par une Raspberry Pi à partir d'un fichier stocké sur une clé usb par exemple'', aux 4 Raspberry intégrées aux écrans via un switch donc également par Ethernet (le port HDMI des R-Pi étant uniquement une sortie)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous effectuerons ensuite grâce aux R-Pi la modification du flux en fonction des écrans servant à l'affichage avant de rediriger la partie du flux qui nous intéresse vers les écrans.&lt;br /&gt;
&lt;br /&gt;
*'''Remarque:''' Dans un premier temps, pour une configuration donnée et avec les emplacement des écrans connues, il s'agit uniquement de réaliser la conversion d'affichage.&lt;br /&gt;
&lt;br /&gt;
Le fait de rendre les écrans intelligents n'est cependant pas ignoré et viendra dans un second temps, le choix de la méthode à employer étant encore en suspend. Nous allons cependant effectuer des hypothèses avec des capteurs.&lt;br /&gt;
&lt;br /&gt;
* Soit X et Y les dimensions du flux vidéo&lt;br /&gt;
* Soit U,R,D,L les états des capteurs sur un écran donné (respectivement, Up, Right, Down, Left) (1 pour actifs, 0 pour inactif)&lt;br /&gt;
* Soit I,J les indices des écrans (I = 0/1 et J = 0/1)&lt;br /&gt;
* Soit nb_X et nb_Y respectivement le nombre d'écrans en fonction des coordonnées i.e les dimensions de notre écran géant&lt;br /&gt;
&lt;br /&gt;
La configuration d'écran est la suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma (I,J)'''&lt;br /&gt;
&lt;br /&gt;
0,1 ; 1,1&lt;br /&gt;
&lt;br /&gt;
0,0 ; 1,0&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quel que soit l'écran, le flux qu'il devra recevoir sera situé entre [X1,X2] et [Y1,Y2].&lt;br /&gt;
Évidemment ces valeurs de l'emplacement de l'écran&lt;br /&gt;
&lt;br /&gt;
* Y2 = Y * ( D||U ) * (I+1) / nb_Y&lt;br /&gt;
* Y1 = Y * D * I / nb_Y&lt;br /&gt;
* X1 = X * L * J / nb_X&lt;br /&gt;
* X2 = X * ( L||R ) * (J+1) / nb_X&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 24/01/18===&lt;br /&gt;
Début de la gestion réseau du flux vidéo.&lt;br /&gt;
&lt;br /&gt;
Pour la partie théorique, nous allons donc procéder de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
Une Raspberry s'occupera de diffuser le flux sur le réseau via un commutateur. À partir d'un fichier vidéo interne.&lt;br /&gt;
&lt;br /&gt;
Les autres R-Pi disposeront d'un fichier de configuration qui contient les coordonnées à afficher en fonction de la position de l'écran, dans la première partie ce fichier sera directement implanté avec un contenu propre à chaque R-Pi mais dans la seconde il s'agira de les modifier automatiquement.&lt;br /&gt;
&lt;br /&gt;
Configuration eth0 sur la Raspberry pi : &lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
address 192.168.1.&amp;lt;2+numero_rpi&amp;gt;&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
&lt;br /&gt;
On commencera par créer un fichier fifo pour faire la transmission entre nc et OMXplayer&lt;br /&gt;
&lt;br /&gt;
Lecture du réseau : nc -l -p &amp;lt;port&amp;gt; &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Affichage : omxplayer --win x1,y1,x2,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
[https://elinux.org/Omxplayer] : Documentation OMX player&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 31/01/18===&lt;br /&gt;
&lt;br /&gt;
Tentatives de communication PC (Source flux) à Raspberry (Écran) via nc : Échec&lt;br /&gt;
&lt;br /&gt;
* [PC source] : | nc &lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 1] : nc -l -p 12345 &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 2] : omxplayer --crop x1,y1,x1,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Avec x1,y1,x2,y2 les coordonnées des coins de la fenêtre à afficher&lt;br /&gt;
&lt;br /&gt;
Problème rencontré : la Raspberry n'arrive pas à obtenir une adresse joignable malgré une connexion directe avec le PC en ethernet&lt;br /&gt;
&lt;br /&gt;
* sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; iface eth0 inet dhcp&lt;br /&gt;
&lt;br /&gt;
* ifdown eth0&lt;br /&gt;
&lt;br /&gt;
* ifup eth0&lt;br /&gt;
&lt;br /&gt;
* ifconfig&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; inet adr:169.254.68.185&lt;br /&gt;
&lt;br /&gt;
Seconde tentative avec VLC en mode Streaming sur le PC source et VLC en écoute de stream avec VLC également : Échec (IP de la source = ?)&lt;br /&gt;
&lt;br /&gt;
Ligne de commande pour VLC &lt;br /&gt;
&lt;br /&gt;
* vlc INPUT --crop X_RESxY_RES+LEFT_CROP+TOP_CROP -f&lt;br /&gt;
&lt;br /&gt;
X_RES : Résolution X de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
Y_RES : Résolution Y de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
LEFT_CROP : Largeur de la zone coupée en partant de la gauche (en pixel)&lt;br /&gt;
&lt;br /&gt;
TOP_CROP : Hauteur de la zone coupée en partant du haut (en pixel)&lt;br /&gt;
&lt;br /&gt;
-f : Full screen&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=49515</id>
		<title>IMA4 2017/2018 P14</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=49515"/>
				<updated>2018-01-31T17:28:42Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : /* Mercredi 31/01/18 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
* '''Intitulé du projet''' : Proposer une solution permettant d'assembler des écrans de PC afin de créer un écran géant&lt;br /&gt;
&lt;br /&gt;
Le renouvellement de matériel informatique continu entraîne un nombre grandissant d'écrans d'ordinateur qui sont difficilement réutilisables compte tenu de leur petite taille. (17&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Afin de leur donner une seconde vie, ce projet a pour but de construire une plateforme permettant d'assembler ces écrans en un écran géant d'une forme &amp;quot;quelconque&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Exemple d'un cas d'écran carré'''&lt;br /&gt;
[[Fichier:Combinaison_ecrans.jpg]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
Afin de réaliser ce projet, il faudra :&lt;br /&gt;
&lt;br /&gt;
* Ajouter un Raspberry Pi sur chaque écran afin de le rentre &amp;quot;intelligent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Créer une application permettant de prendre un flux vidéo et de le diriger vers l'écran visé.&lt;br /&gt;
&lt;br /&gt;
* Permettre de déplacer facilement les écrans tout en maintenant le flux, que ce soit sur des configurations pleines en 2D ou des configurations plus complexes avec des espaces vides ou en 3D.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
* Le positionnement des écrans et la communication entre ces derniers.&lt;br /&gt;
&lt;br /&gt;
Pour une application telle qu'un écran géant composé de plusieurs écran, il est difficilement envisageable d'utiliser un système de coordonnées GPS pour repérer des écrans qui sont particulièrement proches les uns des autres. &lt;br /&gt;
En revanche il est tout à fait réaliste de penser à un système de capteurs de contact/proximité, disposés sur les bords des écrans pour leur permettre de s’emboîter puis il ne resterait qu'à exploiter les possibilités proposées par les Raspberry Pi ainsi qu'un système de coordonnées réalisé dans ce but pour déterminer où l'écran se situe par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
* La gestion du flux vidéo&lt;br /&gt;
&lt;br /&gt;
Le système sera potentiellement réalisé de sorte que chaque écran soit autonome dans son fonctionnement, une fois sa position relative déterminée au préalable.&lt;br /&gt;
En effet, pour le moment le problème était surtout dans le positionnement des écrans plus que dans la gestion du flux vidéo, à priori.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Est-ce que le système peut continuer de fonctionner si on retire l'un des écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pour pallier au problème d'un retrait d'écran, ou d'un disfonctionnement éventuel localisé, une solution possible est de fournir à chaque écran la totalité du flux vidéo.&lt;br /&gt;
Ceci permet dans un premier temps de s'affranchir d'un traitement vidéo avant distribution mais surtout que les autres écrans puissent fonctionner sans interruption due à un écran en particulier  &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Peut-il y avoir des décalages d'affichage entre les écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Malgré l'absence de possibilités de test pour le moment, on peut néanmoins supposer qu'il n'y ait pas de décalage. &lt;br /&gt;
Chaque écran va recevoir le flux vidéo puis en fonction du positionnement des écrans, et on pourra utiliser le système de coordonnées pour effectuer une &amp;quot;selection&amp;quot; sur la partie à afficher.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une configuration de 4 écrans en rectangle, il faudrait donc que l'écran inférieur gauche n'affiche que l'image correspondante jusqu'à la moitié, ensuite l'écran inférieur droit s'occuperait de l'affichage de la partie inférieure droite, etc&lt;br /&gt;
&lt;br /&gt;
En agrandissant le procédé à plus d'écrans, on trouve facilement une méthode de calcul.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet où il s'agira d'être capable de fournir une solution matérielle à la problématique, on s'orientera vers un prototype n'incluant que 4 écrans. Ceci permet à la fois d'éviter un encombrement matériel mais aussi .&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
* 5 Raspberry Pi 3 [https://fr.rs-online.com/web/p/processor-microcontroller-development-kits/8968660/?src=raspberrypi] lien 2 [https://www.mouser.fr/ProductDetail/Adafruit/3055?qs=sGAEpiMZZMuG6%2fXKM6MUaQgA7zSPt2LlznodoAe%252bkgk%3d]&lt;br /&gt;
&lt;br /&gt;
* Un Commutateur (5 Ports +)&lt;br /&gt;
&lt;br /&gt;
* 5 Câbles Ethernet&lt;br /&gt;
&lt;br /&gt;
* 4 Câbles VGA&lt;br /&gt;
&lt;br /&gt;
* 4 Adaptateur VGA-femelle vers HDMI-mâle&lt;br /&gt;
&lt;br /&gt;
* 16 [pack 25] Capteur de contact (1 par côté) [https://fr.rs-online.com/web/p/capteurs-proximites/7985273/] '''Envisagés pour la seconde partie du projet mais non validés pour le moment !'''&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
* 1) Régler le problème de la gestion du flux vidéo par le réseau ainsi qu'au niveau des Raspberry-Pi&lt;br /&gt;
&lt;br /&gt;
'''Hypothèse''': pour une configuration d'écran donnée, on suppose les écrans déjà intelligent et on dispose de leur emplacement relatif.&lt;br /&gt;
&lt;br /&gt;
* 2) Une fois la première version fonctionnelle, s'orienter vers la mise en place du système intelligent&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| Lundi 15/01/18 : 3h30&lt;br /&gt;
Mercredi 17/01/18 : 4h&lt;br /&gt;
| Mercredi 24/01/18 : 4h&lt;br /&gt;
| Mercredi 31/01/18 : 4h&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
===Lundi 15/01/18===&lt;br /&gt;
&lt;br /&gt;
* Première séance ayant pour but de synthétiser l'idée théorique souhaitée par le projet.&lt;br /&gt;
&lt;br /&gt;
On imagine un système d'ensemble d'écrans autonomes mais qui communiquent leur emplacement entre eux, dans le sens où il n'est pas nécessaire de reconfigurer à chaque modification sur l'emplacement des écrans.&lt;br /&gt;
&lt;br /&gt;
Le système est pour ainsi dire évolutif puisqu'à chaque modification, exemple: passage d'un écran géant de 2*2 à 2*3 ou 3*2 (ou plus), les affichages peuvent modifier la zone du flux vidéo à afficher afin de conserver une image sur la totalité des écrans.&lt;br /&gt;
&lt;br /&gt;
De ce fait on peut imaginer des structures plus complexes, cylindriques dans le cas d'un flux d'une caméra à 360° ou plus simplement pour des simulateurs où les écrans seraient inclinés sans pour autant décrire un cercle autour de l'utilisateur.&lt;br /&gt;
&lt;br /&gt;
Cependant, pour des raisons évidentes d'effectif, de temps il est nécessaire de se réduire à une solution moins ambitieuse mais néanmoins acceptable.&lt;br /&gt;
&lt;br /&gt;
===Mercredi 17/01/18===&lt;br /&gt;
&lt;br /&gt;
* Mise en place d'un cahier des charge réalisable dans le temps imparti par rapport à la réponse théorique que l'on souhaiterai apporter au problème.&lt;br /&gt;
&lt;br /&gt;
Suite aux raisons évoquées précédemment, nous allons donc nous orienter vers un système à échelle réduite que nous ferons évoluer progressivement.&lt;br /&gt;
&lt;br /&gt;
Comme prévu nous diffuserons le flux vidéo initial, ''envoyé par Ethernet par une Raspberry Pi à partir d'un fichier stocké sur une clé usb par exemple'', aux 4 Raspberry intégrées aux écrans via un switch donc également par Ethernet (le port HDMI des R-Pi étant uniquement une sortie)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous effectuerons ensuite grâce aux R-Pi la modification du flux en fonction des écrans servant à l'affichage avant de rediriger la partie du flux qui nous intéresse vers les écrans.&lt;br /&gt;
&lt;br /&gt;
*'''Remarque:''' Dans un premier temps, pour une configuration donnée et avec les emplacement des écrans connues, il s'agit uniquement de réaliser la conversion d'affichage.&lt;br /&gt;
&lt;br /&gt;
Le fait de rendre les écrans intelligents n'est cependant pas ignoré et viendra dans un second temps, le choix de la méthode à employer étant encore en suspend. Nous allons cependant effectuer des hypothèses avec des capteurs.&lt;br /&gt;
&lt;br /&gt;
* Soit X et Y les dimensions du flux vidéo&lt;br /&gt;
* Soit U,R,D,L les états des capteurs sur un écran donné (respectivement, Up, Right, Down, Left) (1 pour actifs, 0 pour inactif)&lt;br /&gt;
* Soit I,J les indices des écrans (I = 0/1 et J = 0/1)&lt;br /&gt;
* Soit nb_X et nb_Y respectivement le nombre d'écrans en fonction des coordonnées i.e les dimensions de notre écran géant&lt;br /&gt;
&lt;br /&gt;
La configuration d'écran est la suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma (I,J)'''&lt;br /&gt;
&lt;br /&gt;
0,1 ; 1,1&lt;br /&gt;
&lt;br /&gt;
0,0 ; 1,0&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quel que soit l'écran, le flux qu'il devra recevoir sera situé entre [X1,X2] et [Y1,Y2].&lt;br /&gt;
Évidemment ces valeurs de l'emplacement de l'écran&lt;br /&gt;
&lt;br /&gt;
* Y2 = Y * ( D||U ) * (I+1) / nb_Y&lt;br /&gt;
* Y1 = Y * D * I / nb_Y&lt;br /&gt;
* X1 = X * L * J / nb_X&lt;br /&gt;
* X2 = X * ( L||R ) * (J+1) / nb_X&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 24/01/18===&lt;br /&gt;
Début de la gestion réseau du flux vidéo.&lt;br /&gt;
&lt;br /&gt;
Pour la partie théorique, nous allons donc procéder de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
Une Raspberry s'occupera de diffuser le flux sur le réseau via un commutateur. À partir d'un fichier vidéo interne.&lt;br /&gt;
&lt;br /&gt;
Les autres R-Pi disposeront d'un fichier de configuration qui contient les coordonnées à afficher en fonction de la position de l'écran, dans la première partie ce fichier sera directement implanté avec un contenu propre à chaque R-Pi mais dans la seconde il s'agira de les modifier automatiquement.&lt;br /&gt;
&lt;br /&gt;
Configuration eth0 sur la Raspberry pi : &lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
address 192.168.1.&amp;lt;2+numero_rpi&amp;gt;&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
&lt;br /&gt;
On commencera par créer un fichier fifo pour faire la transmission entre nc et OMXplayer&lt;br /&gt;
&lt;br /&gt;
Lecture du réseau : nc -l -p &amp;lt;port&amp;gt; &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Affichage : omxplayer --win x1,y1,x2,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
[https://elinux.org/Omxplayer] : Documentation OMX player&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 31/01/18===&lt;br /&gt;
&lt;br /&gt;
Tentatives de communication PC (Source flux) à Raspberry (Écran) via nc : Échec&lt;br /&gt;
&lt;br /&gt;
* [PC source] : | nc &lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 1] : nc -l -p 12345 &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 2] : omxplayer --crop x1,y1,x1,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Avec x1,y1,x2,y2 les coordonnées des coins de la fenêtre à afficher&lt;br /&gt;
&lt;br /&gt;
Problème rencontré : la Raspberry n'arrive pas à obtenir une adresse joignable malgré une connexion directe avec le PC en ethernet&lt;br /&gt;
&lt;br /&gt;
* sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; iface eth0 inet dhcp&lt;br /&gt;
&lt;br /&gt;
* ifdown eth0&lt;br /&gt;
&lt;br /&gt;
* ifup eth0&lt;br /&gt;
&lt;br /&gt;
* ifconfig&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; inet adr:169.254.68.185&lt;br /&gt;
&lt;br /&gt;
Seconde tentative avec VLC en mode Streaming sur le PC source et VLC en écoute de stream avec VLC également : Échec (IP de la source = ?)&lt;br /&gt;
&lt;br /&gt;
* vlc INPUT --crop X_RESxY_RES+LEFT_CROP+TOP_CROP -f&lt;br /&gt;
&lt;br /&gt;
X_RES : Résolution X de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
Y_RES : Résolution Y de l'affichage (en pixel)&lt;br /&gt;
&lt;br /&gt;
LEFT_CROP : Largeur de la zone coupée en partant de la gauche (en pixel)&lt;br /&gt;
&lt;br /&gt;
TOP_CROP : Hauteur de la zone coupée en partant du haut (en pixel)&lt;br /&gt;
&lt;br /&gt;
-f : Full screen&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=49514</id>
		<title>IMA4 2017/2018 P14</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=49514"/>
				<updated>2018-01-31T17:27:36Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : /* Mercredi 31/01/18 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
* '''Intitulé du projet''' : Proposer une solution permettant d'assembler des écrans de PC afin de créer un écran géant&lt;br /&gt;
&lt;br /&gt;
Le renouvellement de matériel informatique continu entraîne un nombre grandissant d'écrans d'ordinateur qui sont difficilement réutilisables compte tenu de leur petite taille. (17&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Afin de leur donner une seconde vie, ce projet a pour but de construire une plateforme permettant d'assembler ces écrans en un écran géant d'une forme &amp;quot;quelconque&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Exemple d'un cas d'écran carré'''&lt;br /&gt;
[[Fichier:Combinaison_ecrans.jpg]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
Afin de réaliser ce projet, il faudra :&lt;br /&gt;
&lt;br /&gt;
* Ajouter un Raspberry Pi sur chaque écran afin de le rentre &amp;quot;intelligent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Créer une application permettant de prendre un flux vidéo et de le diriger vers l'écran visé.&lt;br /&gt;
&lt;br /&gt;
* Permettre de déplacer facilement les écrans tout en maintenant le flux, que ce soit sur des configurations pleines en 2D ou des configurations plus complexes avec des espaces vides ou en 3D.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
* Le positionnement des écrans et la communication entre ces derniers.&lt;br /&gt;
&lt;br /&gt;
Pour une application telle qu'un écran géant composé de plusieurs écran, il est difficilement envisageable d'utiliser un système de coordonnées GPS pour repérer des écrans qui sont particulièrement proches les uns des autres. &lt;br /&gt;
En revanche il est tout à fait réaliste de penser à un système de capteurs de contact/proximité, disposés sur les bords des écrans pour leur permettre de s’emboîter puis il ne resterait qu'à exploiter les possibilités proposées par les Raspberry Pi ainsi qu'un système de coordonnées réalisé dans ce but pour déterminer où l'écran se situe par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
* La gestion du flux vidéo&lt;br /&gt;
&lt;br /&gt;
Le système sera potentiellement réalisé de sorte que chaque écran soit autonome dans son fonctionnement, une fois sa position relative déterminée au préalable.&lt;br /&gt;
En effet, pour le moment le problème était surtout dans le positionnement des écrans plus que dans la gestion du flux vidéo, à priori.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Est-ce que le système peut continuer de fonctionner si on retire l'un des écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pour pallier au problème d'un retrait d'écran, ou d'un disfonctionnement éventuel localisé, une solution possible est de fournir à chaque écran la totalité du flux vidéo.&lt;br /&gt;
Ceci permet dans un premier temps de s'affranchir d'un traitement vidéo avant distribution mais surtout que les autres écrans puissent fonctionner sans interruption due à un écran en particulier  &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Peut-il y avoir des décalages d'affichage entre les écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Malgré l'absence de possibilités de test pour le moment, on peut néanmoins supposer qu'il n'y ait pas de décalage. &lt;br /&gt;
Chaque écran va recevoir le flux vidéo puis en fonction du positionnement des écrans, et on pourra utiliser le système de coordonnées pour effectuer une &amp;quot;selection&amp;quot; sur la partie à afficher.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une configuration de 4 écrans en rectangle, il faudrait donc que l'écran inférieur gauche n'affiche que l'image correspondante jusqu'à la moitié, ensuite l'écran inférieur droit s'occuperait de l'affichage de la partie inférieure droite, etc&lt;br /&gt;
&lt;br /&gt;
En agrandissant le procédé à plus d'écrans, on trouve facilement une méthode de calcul.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet où il s'agira d'être capable de fournir une solution matérielle à la problématique, on s'orientera vers un prototype n'incluant que 4 écrans. Ceci permet à la fois d'éviter un encombrement matériel mais aussi .&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
* 5 Raspberry Pi 3 [https://fr.rs-online.com/web/p/processor-microcontroller-development-kits/8968660/?src=raspberrypi] lien 2 [https://www.mouser.fr/ProductDetail/Adafruit/3055?qs=sGAEpiMZZMuG6%2fXKM6MUaQgA7zSPt2LlznodoAe%252bkgk%3d]&lt;br /&gt;
&lt;br /&gt;
* Un Commutateur (5 Ports +)&lt;br /&gt;
&lt;br /&gt;
* 5 Câbles Ethernet&lt;br /&gt;
&lt;br /&gt;
* 4 Câbles VGA&lt;br /&gt;
&lt;br /&gt;
* 4 Adaptateur VGA-femelle vers HDMI-mâle&lt;br /&gt;
&lt;br /&gt;
* 16 [pack 25] Capteur de contact (1 par côté) [https://fr.rs-online.com/web/p/capteurs-proximites/7985273/] '''Envisagés pour la seconde partie du projet mais non validés pour le moment !'''&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
* 1) Régler le problème de la gestion du flux vidéo par le réseau ainsi qu'au niveau des Raspberry-Pi&lt;br /&gt;
&lt;br /&gt;
'''Hypothèse''': pour une configuration d'écran donnée, on suppose les écrans déjà intelligent et on dispose de leur emplacement relatif.&lt;br /&gt;
&lt;br /&gt;
* 2) Une fois la première version fonctionnelle, s'orienter vers la mise en place du système intelligent&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| Lundi 15/01/18 : 3h30&lt;br /&gt;
Mercredi 17/01/18 : 4h&lt;br /&gt;
| Mercredi 24/01/18 : 4h&lt;br /&gt;
| Mercredi 31/01/18 : 4h&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
===Lundi 15/01/18===&lt;br /&gt;
&lt;br /&gt;
* Première séance ayant pour but de synthétiser l'idée théorique souhaitée par le projet.&lt;br /&gt;
&lt;br /&gt;
On imagine un système d'ensemble d'écrans autonomes mais qui communiquent leur emplacement entre eux, dans le sens où il n'est pas nécessaire de reconfigurer à chaque modification sur l'emplacement des écrans.&lt;br /&gt;
&lt;br /&gt;
Le système est pour ainsi dire évolutif puisqu'à chaque modification, exemple: passage d'un écran géant de 2*2 à 2*3 ou 3*2 (ou plus), les affichages peuvent modifier la zone du flux vidéo à afficher afin de conserver une image sur la totalité des écrans.&lt;br /&gt;
&lt;br /&gt;
De ce fait on peut imaginer des structures plus complexes, cylindriques dans le cas d'un flux d'une caméra à 360° ou plus simplement pour des simulateurs où les écrans seraient inclinés sans pour autant décrire un cercle autour de l'utilisateur.&lt;br /&gt;
&lt;br /&gt;
Cependant, pour des raisons évidentes d'effectif, de temps il est nécessaire de se réduire à une solution moins ambitieuse mais néanmoins acceptable.&lt;br /&gt;
&lt;br /&gt;
===Mercredi 17/01/18===&lt;br /&gt;
&lt;br /&gt;
* Mise en place d'un cahier des charge réalisable dans le temps imparti par rapport à la réponse théorique que l'on souhaiterai apporter au problème.&lt;br /&gt;
&lt;br /&gt;
Suite aux raisons évoquées précédemment, nous allons donc nous orienter vers un système à échelle réduite que nous ferons évoluer progressivement.&lt;br /&gt;
&lt;br /&gt;
Comme prévu nous diffuserons le flux vidéo initial, ''envoyé par Ethernet par une Raspberry Pi à partir d'un fichier stocké sur une clé usb par exemple'', aux 4 Raspberry intégrées aux écrans via un switch donc également par Ethernet (le port HDMI des R-Pi étant uniquement une sortie)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous effectuerons ensuite grâce aux R-Pi la modification du flux en fonction des écrans servant à l'affichage avant de rediriger la partie du flux qui nous intéresse vers les écrans.&lt;br /&gt;
&lt;br /&gt;
*'''Remarque:''' Dans un premier temps, pour une configuration donnée et avec les emplacement des écrans connues, il s'agit uniquement de réaliser la conversion d'affichage.&lt;br /&gt;
&lt;br /&gt;
Le fait de rendre les écrans intelligents n'est cependant pas ignoré et viendra dans un second temps, le choix de la méthode à employer étant encore en suspend. Nous allons cependant effectuer des hypothèses avec des capteurs.&lt;br /&gt;
&lt;br /&gt;
* Soit X et Y les dimensions du flux vidéo&lt;br /&gt;
* Soit U,R,D,L les états des capteurs sur un écran donné (respectivement, Up, Right, Down, Left) (1 pour actifs, 0 pour inactif)&lt;br /&gt;
* Soit I,J les indices des écrans (I = 0/1 et J = 0/1)&lt;br /&gt;
* Soit nb_X et nb_Y respectivement le nombre d'écrans en fonction des coordonnées i.e les dimensions de notre écran géant&lt;br /&gt;
&lt;br /&gt;
La configuration d'écran est la suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma (I,J)'''&lt;br /&gt;
&lt;br /&gt;
0,1 ; 1,1&lt;br /&gt;
&lt;br /&gt;
0,0 ; 1,0&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quel que soit l'écran, le flux qu'il devra recevoir sera situé entre [X1,X2] et [Y1,Y2].&lt;br /&gt;
Évidemment ces valeurs de l'emplacement de l'écran&lt;br /&gt;
&lt;br /&gt;
* Y2 = Y * ( D||U ) * (I+1) / nb_Y&lt;br /&gt;
* Y1 = Y * D * I / nb_Y&lt;br /&gt;
* X1 = X * L * J / nb_X&lt;br /&gt;
* X2 = X * ( L||R ) * (J+1) / nb_X&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 24/01/18===&lt;br /&gt;
Début de la gestion réseau du flux vidéo.&lt;br /&gt;
&lt;br /&gt;
Pour la partie théorique, nous allons donc procéder de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
Une Raspberry s'occupera de diffuser le flux sur le réseau via un commutateur. À partir d'un fichier vidéo interne.&lt;br /&gt;
&lt;br /&gt;
Les autres R-Pi disposeront d'un fichier de configuration qui contient les coordonnées à afficher en fonction de la position de l'écran, dans la première partie ce fichier sera directement implanté avec un contenu propre à chaque R-Pi mais dans la seconde il s'agira de les modifier automatiquement.&lt;br /&gt;
&lt;br /&gt;
Configuration eth0 sur la Raspberry pi : &lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
address 192.168.1.&amp;lt;2+numero_rpi&amp;gt;&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
&lt;br /&gt;
On commencera par créer un fichier fifo pour faire la transmission entre nc et OMXplayer&lt;br /&gt;
&lt;br /&gt;
Lecture du réseau : nc -l -p &amp;lt;port&amp;gt; &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Affichage : omxplayer --win x1,y1,x2,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
[https://elinux.org/Omxplayer] : Documentation OMX player&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 31/01/18===&lt;br /&gt;
&lt;br /&gt;
Tentatives de communication PC (Source flux) à Raspberry (Écran) via nc : Échec&lt;br /&gt;
&lt;br /&gt;
* [PC source] : | nc &lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 1] : nc -l -p 12345 &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 2] : omxplayer --crop x1,y1,x1,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Avec x1,y1,x2,y2 les coordonnées des coins de la fenêtre à afficher&lt;br /&gt;
&lt;br /&gt;
Problème rencontré : la Raspberry n'arrive pas à obtenir une adresse joignable malgré une connexion directe avec le PC en ethernet&lt;br /&gt;
&lt;br /&gt;
* sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; iface eth0 inet dhcp&lt;br /&gt;
&lt;br /&gt;
* ifdown eth0&lt;br /&gt;
&lt;br /&gt;
* ifup eth0&lt;br /&gt;
&lt;br /&gt;
* ifconfig&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; inet adr:169.254.68.185&lt;br /&gt;
&lt;br /&gt;
Seconde tentative avec VLC en mode Streaming sur le PC source et VLC en écoute de stream avec VLC également&lt;br /&gt;
&lt;br /&gt;
* vlc INPUT --crop X_RESxY_RES+LEFT_CROP+TOP_CROP -f&lt;br /&gt;
&lt;br /&gt;
X_RES : Résolution X de l'affichage (en pixel)&lt;br /&gt;
Y_RES : Résolution Y de l'affichage (en pixel)&lt;br /&gt;
LEFT_CROP : Largeur de la zone coupée en partant de la gauche (en pixel)&lt;br /&gt;
TOP_CROP : Hauteur de la zone coupée en partant du haut (en pixel)&lt;br /&gt;
-f : Full screen&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=49475</id>
		<title>IMA4 2017/2018 P14</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=49475"/>
				<updated>2018-01-31T16:25:40Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : /* Mercredi 24/01/18 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
* '''Intitulé du projet''' : Proposer une solution permettant d'assembler des écrans de PC afin de créer un écran géant&lt;br /&gt;
&lt;br /&gt;
Le renouvellement de matériel informatique continu entraîne un nombre grandissant d'écrans d'ordinateur qui sont difficilement réutilisables compte tenu de leur petite taille. (17&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Afin de leur donner une seconde vie, ce projet a pour but de construire une plateforme permettant d'assembler ces écrans en un écran géant d'une forme &amp;quot;quelconque&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Exemple d'un cas d'écran carré'''&lt;br /&gt;
[[Fichier:Combinaison_ecrans.jpg]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
Afin de réaliser ce projet, il faudra :&lt;br /&gt;
&lt;br /&gt;
* Ajouter un Raspberry Pi sur chaque écran afin de le rentre &amp;quot;intelligent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Créer une application permettant de prendre un flux vidéo et de le diriger vers l'écran visé.&lt;br /&gt;
&lt;br /&gt;
* Permettre de déplacer facilement les écrans tout en maintenant le flux, que ce soit sur des configurations pleines en 2D ou des configurations plus complexes avec des espaces vides ou en 3D.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
* Le positionnement des écrans et la communication entre ces derniers.&lt;br /&gt;
&lt;br /&gt;
Pour une application telle qu'un écran géant composé de plusieurs écran, il est difficilement envisageable d'utiliser un système de coordonnées GPS pour repérer des écrans qui sont particulièrement proches les uns des autres. &lt;br /&gt;
En revanche il est tout à fait réaliste de penser à un système de capteurs de contact/proximité, disposés sur les bords des écrans pour leur permettre de s’emboîter puis il ne resterait qu'à exploiter les possibilités proposées par les Raspberry Pi ainsi qu'un système de coordonnées réalisé dans ce but pour déterminer où l'écran se situe par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
* La gestion du flux vidéo&lt;br /&gt;
&lt;br /&gt;
Le système sera potentiellement réalisé de sorte que chaque écran soit autonome dans son fonctionnement, une fois sa position relative déterminée au préalable.&lt;br /&gt;
En effet, pour le moment le problème était surtout dans le positionnement des écrans plus que dans la gestion du flux vidéo, à priori.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Est-ce que le système peut continuer de fonctionner si on retire l'un des écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pour pallier au problème d'un retrait d'écran, ou d'un disfonctionnement éventuel localisé, une solution possible est de fournir à chaque écran la totalité du flux vidéo.&lt;br /&gt;
Ceci permet dans un premier temps de s'affranchir d'un traitement vidéo avant distribution mais surtout que les autres écrans puissent fonctionner sans interruption due à un écran en particulier  &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Peut-il y avoir des décalages d'affichage entre les écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Malgré l'absence de possibilités de test pour le moment, on peut néanmoins supposer qu'il n'y ait pas de décalage. &lt;br /&gt;
Chaque écran va recevoir le flux vidéo puis en fonction du positionnement des écrans, et on pourra utiliser le système de coordonnées pour effectuer une &amp;quot;selection&amp;quot; sur la partie à afficher.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une configuration de 4 écrans en rectangle, il faudrait donc que l'écran inférieur gauche n'affiche que l'image correspondante jusqu'à la moitié, ensuite l'écran inférieur droit s'occuperait de l'affichage de la partie inférieure droite, etc&lt;br /&gt;
&lt;br /&gt;
En agrandissant le procédé à plus d'écrans, on trouve facilement une méthode de calcul.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet où il s'agira d'être capable de fournir une solution matérielle à la problématique, on s'orientera vers un prototype n'incluant que 4 écrans. Ceci permet à la fois d'éviter un encombrement matériel mais aussi .&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
* 5 Raspberry Pi 3 [https://fr.rs-online.com/web/p/processor-microcontroller-development-kits/8968660/?src=raspberrypi] lien 2 [https://www.mouser.fr/ProductDetail/Adafruit/3055?qs=sGAEpiMZZMuG6%2fXKM6MUaQgA7zSPt2LlznodoAe%252bkgk%3d]&lt;br /&gt;
&lt;br /&gt;
* Un Commutateur (5 Ports +)&lt;br /&gt;
&lt;br /&gt;
* 5 Câbles Ethernet&lt;br /&gt;
&lt;br /&gt;
* 4 Câbles VGA&lt;br /&gt;
&lt;br /&gt;
* 4 Adaptateur VGA-femelle vers HDMI-mâle&lt;br /&gt;
&lt;br /&gt;
* 16 [pack 25] Capteur de contact (1 par côté) [https://fr.rs-online.com/web/p/capteurs-proximites/7985273/] '''Envisagés pour la seconde partie du projet mais non validés pour le moment !'''&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
* 1) Régler le problème de la gestion du flux vidéo par le réseau ainsi qu'au niveau des Raspberry-Pi&lt;br /&gt;
&lt;br /&gt;
'''Hypothèse''': pour une configuration d'écran donnée, on suppose les écrans déjà intelligent et on dispose de leur emplacement relatif.&lt;br /&gt;
&lt;br /&gt;
* 2) Une fois la première version fonctionnelle, s'orienter vers la mise en place du système intelligent&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| Lundi 15/01/18 : 3h30&lt;br /&gt;
Mercredi 17/01/18 : 4h&lt;br /&gt;
| Mercredi 24/01/18 : 4h&lt;br /&gt;
| Mercredi 31/01/18 : 4h&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
===Lundi 15/01/18===&lt;br /&gt;
&lt;br /&gt;
* Première séance ayant pour but de synthétiser l'idée théorique souhaitée par le projet.&lt;br /&gt;
&lt;br /&gt;
On imagine un système d'ensemble d'écrans autonomes mais qui communiquent leur emplacement entre eux, dans le sens où il n'est pas nécessaire de reconfigurer à chaque modification sur l'emplacement des écrans.&lt;br /&gt;
&lt;br /&gt;
Le système est pour ainsi dire évolutif puisqu'à chaque modification, exemple: passage d'un écran géant de 2*2 à 2*3 ou 3*2 (ou plus), les affichages peuvent modifier la zone du flux vidéo à afficher afin de conserver une image sur la totalité des écrans.&lt;br /&gt;
&lt;br /&gt;
De ce fait on peut imaginer des structures plus complexes, cylindriques dans le cas d'un flux d'une caméra à 360° ou plus simplement pour des simulateurs où les écrans seraient inclinés sans pour autant décrire un cercle autour de l'utilisateur.&lt;br /&gt;
&lt;br /&gt;
Cependant, pour des raisons évidentes d'effectif, de temps il est nécessaire de se réduire à une solution moins ambitieuse mais néanmoins acceptable.&lt;br /&gt;
&lt;br /&gt;
===Mercredi 17/01/18===&lt;br /&gt;
&lt;br /&gt;
* Mise en place d'un cahier des charge réalisable dans le temps imparti par rapport à la réponse théorique que l'on souhaiterai apporter au problème.&lt;br /&gt;
&lt;br /&gt;
Suite aux raisons évoquées précédemment, nous allons donc nous orienter vers un système à échelle réduite que nous ferons évoluer progressivement.&lt;br /&gt;
&lt;br /&gt;
Comme prévu nous diffuserons le flux vidéo initial, ''envoyé par Ethernet par une Raspberry Pi à partir d'un fichier stocké sur une clé usb par exemple'', aux 4 Raspberry intégrées aux écrans via un switch donc également par Ethernet (le port HDMI des R-Pi étant uniquement une sortie)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous effectuerons ensuite grâce aux R-Pi la modification du flux en fonction des écrans servant à l'affichage avant de rediriger la partie du flux qui nous intéresse vers les écrans.&lt;br /&gt;
&lt;br /&gt;
*'''Remarque:''' Dans un premier temps, pour une configuration donnée et avec les emplacement des écrans connues, il s'agit uniquement de réaliser la conversion d'affichage.&lt;br /&gt;
&lt;br /&gt;
Le fait de rendre les écrans intelligents n'est cependant pas ignoré et viendra dans un second temps, le choix de la méthode à employer étant encore en suspend. Nous allons cependant effectuer des hypothèses avec des capteurs.&lt;br /&gt;
&lt;br /&gt;
* Soit X et Y les dimensions du flux vidéo&lt;br /&gt;
* Soit U,R,D,L les états des capteurs sur un écran donné (respectivement, Up, Right, Down, Left) (1 pour actifs, 0 pour inactif)&lt;br /&gt;
* Soit I,J les indices des écrans (I = 0/1 et J = 0/1)&lt;br /&gt;
* Soit nb_X et nb_Y respectivement le nombre d'écrans en fonction des coordonnées i.e les dimensions de notre écran géant&lt;br /&gt;
&lt;br /&gt;
La configuration d'écran est la suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma (I,J)'''&lt;br /&gt;
&lt;br /&gt;
0,1 ; 1,1&lt;br /&gt;
&lt;br /&gt;
0,0 ; 1,0&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quel que soit l'écran, le flux qu'il devra recevoir sera situé entre [X1,X2] et [Y1,Y2].&lt;br /&gt;
Évidemment ces valeurs de l'emplacement de l'écran&lt;br /&gt;
&lt;br /&gt;
* Y2 = Y * ( D||U ) * (I+1) / nb_Y&lt;br /&gt;
* Y1 = Y * D * I / nb_Y&lt;br /&gt;
* X1 = X * L * J / nb_X&lt;br /&gt;
* X2 = X * ( L||R ) * (J+1) / nb_X&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 24/01/18===&lt;br /&gt;
Début de la gestion réseau du flux vidéo.&lt;br /&gt;
&lt;br /&gt;
Pour la partie théorique, nous allons donc procéder de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
Une Raspberry s'occupera de diffuser le flux sur le réseau via un commutateur. À partir d'un fichier vidéo interne.&lt;br /&gt;
&lt;br /&gt;
Les autres R-Pi disposeront d'un fichier de configuration qui contient les coordonnées à afficher en fonction de la position de l'écran, dans la première partie ce fichier sera directement implanté avec un contenu propre à chaque R-Pi mais dans la seconde il s'agira de les modifier automatiquement.&lt;br /&gt;
&lt;br /&gt;
Configuration eth0 sur la Raspberry pi : &lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
address 192.168.1.&amp;lt;2+numero_rpi&amp;gt;&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
&lt;br /&gt;
On commencera par créer un fichier fifo pour faire la transmission entre nc et OMXplayer&lt;br /&gt;
&lt;br /&gt;
Lecture du réseau : nc -l -p &amp;lt;port&amp;gt; &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Affichage : omxplayer --win x1,y1,x2,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
[https://elinux.org/Omxplayer] : Documentation OMX player&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 31/01/18===&lt;br /&gt;
&lt;br /&gt;
Tentatives de communication PC (Source flux) à Raspberry (Écran) via nc : Échec&lt;br /&gt;
&lt;br /&gt;
* [PC source] : | nc &lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 1] : nc -l -p 12345 &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 2] : omxplayer --crop x1,y1,x1,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Avec x1,y1,x2,y2 les coordonnées des coins de la fenêtre à afficher&lt;br /&gt;
&lt;br /&gt;
Problème rencontré : la Raspberry n'arrive pas à obtenir une adresse joignable malgré une connexion directe avec le PC en ethernet&lt;br /&gt;
&lt;br /&gt;
* sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; iface eth0 inet dhcp&lt;br /&gt;
&lt;br /&gt;
* ifdown eth0&lt;br /&gt;
&lt;br /&gt;
* ifup eth0&lt;br /&gt;
&lt;br /&gt;
* ifconfig&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; inet adr:169.254.68.185&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=49473</id>
		<title>IMA4 2017/2018 P14</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=49473"/>
				<updated>2018-01-31T16:24:59Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : /* Mercredi 31/01/18 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
* '''Intitulé du projet''' : Proposer une solution permettant d'assembler des écrans de PC afin de créer un écran géant&lt;br /&gt;
&lt;br /&gt;
Le renouvellement de matériel informatique continu entraîne un nombre grandissant d'écrans d'ordinateur qui sont difficilement réutilisables compte tenu de leur petite taille. (17&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Afin de leur donner une seconde vie, ce projet a pour but de construire une plateforme permettant d'assembler ces écrans en un écran géant d'une forme &amp;quot;quelconque&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Exemple d'un cas d'écran carré'''&lt;br /&gt;
[[Fichier:Combinaison_ecrans.jpg]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
Afin de réaliser ce projet, il faudra :&lt;br /&gt;
&lt;br /&gt;
* Ajouter un Raspberry Pi sur chaque écran afin de le rentre &amp;quot;intelligent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Créer une application permettant de prendre un flux vidéo et de le diriger vers l'écran visé.&lt;br /&gt;
&lt;br /&gt;
* Permettre de déplacer facilement les écrans tout en maintenant le flux, que ce soit sur des configurations pleines en 2D ou des configurations plus complexes avec des espaces vides ou en 3D.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
* Le positionnement des écrans et la communication entre ces derniers.&lt;br /&gt;
&lt;br /&gt;
Pour une application telle qu'un écran géant composé de plusieurs écran, il est difficilement envisageable d'utiliser un système de coordonnées GPS pour repérer des écrans qui sont particulièrement proches les uns des autres. &lt;br /&gt;
En revanche il est tout à fait réaliste de penser à un système de capteurs de contact/proximité, disposés sur les bords des écrans pour leur permettre de s’emboîter puis il ne resterait qu'à exploiter les possibilités proposées par les Raspberry Pi ainsi qu'un système de coordonnées réalisé dans ce but pour déterminer où l'écran se situe par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
* La gestion du flux vidéo&lt;br /&gt;
&lt;br /&gt;
Le système sera potentiellement réalisé de sorte que chaque écran soit autonome dans son fonctionnement, une fois sa position relative déterminée au préalable.&lt;br /&gt;
En effet, pour le moment le problème était surtout dans le positionnement des écrans plus que dans la gestion du flux vidéo, à priori.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Est-ce que le système peut continuer de fonctionner si on retire l'un des écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pour pallier au problème d'un retrait d'écran, ou d'un disfonctionnement éventuel localisé, une solution possible est de fournir à chaque écran la totalité du flux vidéo.&lt;br /&gt;
Ceci permet dans un premier temps de s'affranchir d'un traitement vidéo avant distribution mais surtout que les autres écrans puissent fonctionner sans interruption due à un écran en particulier  &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Peut-il y avoir des décalages d'affichage entre les écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Malgré l'absence de possibilités de test pour le moment, on peut néanmoins supposer qu'il n'y ait pas de décalage. &lt;br /&gt;
Chaque écran va recevoir le flux vidéo puis en fonction du positionnement des écrans, et on pourra utiliser le système de coordonnées pour effectuer une &amp;quot;selection&amp;quot; sur la partie à afficher.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une configuration de 4 écrans en rectangle, il faudrait donc que l'écran inférieur gauche n'affiche que l'image correspondante jusqu'à la moitié, ensuite l'écran inférieur droit s'occuperait de l'affichage de la partie inférieure droite, etc&lt;br /&gt;
&lt;br /&gt;
En agrandissant le procédé à plus d'écrans, on trouve facilement une méthode de calcul.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet où il s'agira d'être capable de fournir une solution matérielle à la problématique, on s'orientera vers un prototype n'incluant que 4 écrans. Ceci permet à la fois d'éviter un encombrement matériel mais aussi .&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
* 5 Raspberry Pi 3 [https://fr.rs-online.com/web/p/processor-microcontroller-development-kits/8968660/?src=raspberrypi] lien 2 [https://www.mouser.fr/ProductDetail/Adafruit/3055?qs=sGAEpiMZZMuG6%2fXKM6MUaQgA7zSPt2LlznodoAe%252bkgk%3d]&lt;br /&gt;
&lt;br /&gt;
* Un Commutateur (5 Ports +)&lt;br /&gt;
&lt;br /&gt;
* 5 Câbles Ethernet&lt;br /&gt;
&lt;br /&gt;
* 4 Câbles VGA&lt;br /&gt;
&lt;br /&gt;
* 4 Adaptateur VGA-femelle vers HDMI-mâle&lt;br /&gt;
&lt;br /&gt;
* 16 [pack 25] Capteur de contact (1 par côté) [https://fr.rs-online.com/web/p/capteurs-proximites/7985273/] '''Envisagés pour la seconde partie du projet mais non validés pour le moment !'''&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
* 1) Régler le problème de la gestion du flux vidéo par le réseau ainsi qu'au niveau des Raspberry-Pi&lt;br /&gt;
&lt;br /&gt;
'''Hypothèse''': pour une configuration d'écran donnée, on suppose les écrans déjà intelligent et on dispose de leur emplacement relatif.&lt;br /&gt;
&lt;br /&gt;
* 2) Une fois la première version fonctionnelle, s'orienter vers la mise en place du système intelligent&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| Lundi 15/01/18 : 3h30&lt;br /&gt;
Mercredi 17/01/18 : 4h&lt;br /&gt;
| Mercredi 24/01/18 : 4h&lt;br /&gt;
| Mercredi 31/01/18 : 4h&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
===Lundi 15/01/18===&lt;br /&gt;
&lt;br /&gt;
* Première séance ayant pour but de synthétiser l'idée théorique souhaitée par le projet.&lt;br /&gt;
&lt;br /&gt;
On imagine un système d'ensemble d'écrans autonomes mais qui communiquent leur emplacement entre eux, dans le sens où il n'est pas nécessaire de reconfigurer à chaque modification sur l'emplacement des écrans.&lt;br /&gt;
&lt;br /&gt;
Le système est pour ainsi dire évolutif puisqu'à chaque modification, exemple: passage d'un écran géant de 2*2 à 2*3 ou 3*2 (ou plus), les affichages peuvent modifier la zone du flux vidéo à afficher afin de conserver une image sur la totalité des écrans.&lt;br /&gt;
&lt;br /&gt;
De ce fait on peut imaginer des structures plus complexes, cylindriques dans le cas d'un flux d'une caméra à 360° ou plus simplement pour des simulateurs où les écrans seraient inclinés sans pour autant décrire un cercle autour de l'utilisateur.&lt;br /&gt;
&lt;br /&gt;
Cependant, pour des raisons évidentes d'effectif, de temps il est nécessaire de se réduire à une solution moins ambitieuse mais néanmoins acceptable.&lt;br /&gt;
&lt;br /&gt;
===Mercredi 17/01/18===&lt;br /&gt;
&lt;br /&gt;
* Mise en place d'un cahier des charge réalisable dans le temps imparti par rapport à la réponse théorique que l'on souhaiterai apporter au problème.&lt;br /&gt;
&lt;br /&gt;
Suite aux raisons évoquées précédemment, nous allons donc nous orienter vers un système à échelle réduite que nous ferons évoluer progressivement.&lt;br /&gt;
&lt;br /&gt;
Comme prévu nous diffuserons le flux vidéo initial, ''envoyé par Ethernet par une Raspberry Pi à partir d'un fichier stocké sur une clé usb par exemple'', aux 4 Raspberry intégrées aux écrans via un switch donc également par Ethernet (le port HDMI des R-Pi étant uniquement une sortie)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous effectuerons ensuite grâce aux R-Pi la modification du flux en fonction des écrans servant à l'affichage avant de rediriger la partie du flux qui nous intéresse vers les écrans.&lt;br /&gt;
&lt;br /&gt;
*'''Remarque:''' Dans un premier temps, pour une configuration donnée et avec les emplacement des écrans connues, il s'agit uniquement de réaliser la conversion d'affichage.&lt;br /&gt;
&lt;br /&gt;
Le fait de rendre les écrans intelligents n'est cependant pas ignoré et viendra dans un second temps, le choix de la méthode à employer étant encore en suspend. Nous allons cependant effectuer des hypothèses avec des capteurs.&lt;br /&gt;
&lt;br /&gt;
* Soit X et Y les dimensions du flux vidéo&lt;br /&gt;
* Soit U,R,D,L les états des capteurs sur un écran donné (respectivement, Up, Right, Down, Left) (1 pour actifs, 0 pour inactif)&lt;br /&gt;
* Soit I,J les indices des écrans (I = 0/1 et J = 0/1)&lt;br /&gt;
* Soit nb_X et nb_Y respectivement le nombre d'écrans en fonction des coordonnées i.e les dimensions de notre écran géant&lt;br /&gt;
&lt;br /&gt;
La configuration d'écran est la suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma (I,J)'''&lt;br /&gt;
&lt;br /&gt;
0,1 ; 1,1&lt;br /&gt;
&lt;br /&gt;
0,0 ; 1,0&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quel que soit l'écran, le flux qu'il devra recevoir sera situé entre [X1,X2] et [Y1,Y2].&lt;br /&gt;
Évidemment ces valeurs de l'emplacement de l'écran&lt;br /&gt;
&lt;br /&gt;
* Y2 = Y * ( D||U ) * (I+1) / nb_Y&lt;br /&gt;
* Y1 = Y * D * I / nb_Y&lt;br /&gt;
* X1 = X * L * J / nb_X&lt;br /&gt;
* X2 = X * ( L||R ) * (J+1) / nb_X&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 24/01/18===&lt;br /&gt;
Début de la gestion réseau du flux vidéo.&lt;br /&gt;
&lt;br /&gt;
Pour la partie théorique, nous allons donc procéder de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
Une Raspberry s'occupera de diffuser le flux sur le réseau via un commutateur. À partir d'un fichier vidéo interne.&lt;br /&gt;
&lt;br /&gt;
Les autres R-Pi disposeront d'un fichier de configuration qui contient les coordonnées à afficher en fonction de la position de l'écran, dans la première partie ce fichier sera directement implanté avec un contenu propre à chaque R-Pi mais dans la seconde il s'agira de les modifier automatiquement.&lt;br /&gt;
&lt;br /&gt;
Configuration eth0 sur la Raspberry pi : &lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
address 192.168.1.&amp;lt;2+numero_rpi&amp;gt;&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
&lt;br /&gt;
On commencera par créer un fichier fifo pour faire la transmission entre nc et OMXplayer&lt;br /&gt;
&lt;br /&gt;
Lecture du réseau : nc -l -p &amp;lt;port&amp;gt; &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Affichage : omxplayer --win x1,y1,x2,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 31/01/18===&lt;br /&gt;
&lt;br /&gt;
Tentatives de communication PC (Source flux) à Raspberry (Écran) via nc : Échec&lt;br /&gt;
&lt;br /&gt;
* [PC source] : | nc &lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 1] : nc -l -p 12345 &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 2] : omxplayer --crop x1,y1,x1,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Avec x1,y1,x2,y2 les coordonnées des coins de la fenêtre à afficher&lt;br /&gt;
&lt;br /&gt;
Problème rencontré : la Raspberry n'arrive pas à obtenir une adresse joignable malgré une connexion directe avec le PC en ethernet&lt;br /&gt;
&lt;br /&gt;
* sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; iface eth0 inet dhcp&lt;br /&gt;
&lt;br /&gt;
* ifdown eth0&lt;br /&gt;
&lt;br /&gt;
* ifup eth0&lt;br /&gt;
&lt;br /&gt;
* ifconfig&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; inet adr:169.254.68.185&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=49448</id>
		<title>IMA4 2017/2018 P14</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=49448"/>
				<updated>2018-01-31T15:49:10Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : /* Feuille d'heures */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
* '''Intitulé du projet''' : Proposer une solution permettant d'assembler des écrans de PC afin de créer un écran géant&lt;br /&gt;
&lt;br /&gt;
Le renouvellement de matériel informatique continu entraîne un nombre grandissant d'écrans d'ordinateur qui sont difficilement réutilisables compte tenu de leur petite taille. (17&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Afin de leur donner une seconde vie, ce projet a pour but de construire une plateforme permettant d'assembler ces écrans en un écran géant d'une forme &amp;quot;quelconque&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Exemple d'un cas d'écran carré'''&lt;br /&gt;
[[Fichier:Combinaison_ecrans.jpg]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
Afin de réaliser ce projet, il faudra :&lt;br /&gt;
&lt;br /&gt;
* Ajouter un Raspberry Pi sur chaque écran afin de le rentre &amp;quot;intelligent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Créer une application permettant de prendre un flux vidéo et de le diriger vers l'écran visé.&lt;br /&gt;
&lt;br /&gt;
* Permettre de déplacer facilement les écrans tout en maintenant le flux, que ce soit sur des configurations pleines en 2D ou des configurations plus complexes avec des espaces vides ou en 3D.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
* Le positionnement des écrans et la communication entre ces derniers.&lt;br /&gt;
&lt;br /&gt;
Pour une application telle qu'un écran géant composé de plusieurs écran, il est difficilement envisageable d'utiliser un système de coordonnées GPS pour repérer des écrans qui sont particulièrement proches les uns des autres. &lt;br /&gt;
En revanche il est tout à fait réaliste de penser à un système de capteurs de contact/proximité, disposés sur les bords des écrans pour leur permettre de s’emboîter puis il ne resterait qu'à exploiter les possibilités proposées par les Raspberry Pi ainsi qu'un système de coordonnées réalisé dans ce but pour déterminer où l'écran se situe par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
* La gestion du flux vidéo&lt;br /&gt;
&lt;br /&gt;
Le système sera potentiellement réalisé de sorte que chaque écran soit autonome dans son fonctionnement, une fois sa position relative déterminée au préalable.&lt;br /&gt;
En effet, pour le moment le problème était surtout dans le positionnement des écrans plus que dans la gestion du flux vidéo, à priori.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Est-ce que le système peut continuer de fonctionner si on retire l'un des écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pour pallier au problème d'un retrait d'écran, ou d'un disfonctionnement éventuel localisé, une solution possible est de fournir à chaque écran la totalité du flux vidéo.&lt;br /&gt;
Ceci permet dans un premier temps de s'affranchir d'un traitement vidéo avant distribution mais surtout que les autres écrans puissent fonctionner sans interruption due à un écran en particulier  &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Peut-il y avoir des décalages d'affichage entre les écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Malgré l'absence de possibilités de test pour le moment, on peut néanmoins supposer qu'il n'y ait pas de décalage. &lt;br /&gt;
Chaque écran va recevoir le flux vidéo puis en fonction du positionnement des écrans, et on pourra utiliser le système de coordonnées pour effectuer une &amp;quot;selection&amp;quot; sur la partie à afficher.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une configuration de 4 écrans en rectangle, il faudrait donc que l'écran inférieur gauche n'affiche que l'image correspondante jusqu'à la moitié, ensuite l'écran inférieur droit s'occuperait de l'affichage de la partie inférieure droite, etc&lt;br /&gt;
&lt;br /&gt;
En agrandissant le procédé à plus d'écrans, on trouve facilement une méthode de calcul.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet où il s'agira d'être capable de fournir une solution matérielle à la problématique, on s'orientera vers un prototype n'incluant que 4 écrans. Ceci permet à la fois d'éviter un encombrement matériel mais aussi .&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
* 5 Raspberry Pi 3 [https://fr.rs-online.com/web/p/processor-microcontroller-development-kits/8968660/?src=raspberrypi] lien 2 [https://www.mouser.fr/ProductDetail/Adafruit/3055?qs=sGAEpiMZZMuG6%2fXKM6MUaQgA7zSPt2LlznodoAe%252bkgk%3d]&lt;br /&gt;
&lt;br /&gt;
* Un Commutateur (5 Ports +)&lt;br /&gt;
&lt;br /&gt;
* 5 Câbles Ethernet&lt;br /&gt;
&lt;br /&gt;
* 4 Câbles VGA&lt;br /&gt;
&lt;br /&gt;
* 4 Adaptateur VGA-femelle vers HDMI-mâle&lt;br /&gt;
&lt;br /&gt;
* 16 [pack 25] Capteur de contact (1 par côté) [https://fr.rs-online.com/web/p/capteurs-proximites/7985273/] '''Envisagés pour la seconde partie du projet mais non validés pour le moment !'''&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
* 1) Régler le problème de la gestion du flux vidéo par le réseau ainsi qu'au niveau des Raspberry-Pi&lt;br /&gt;
&lt;br /&gt;
'''Hypothèse''': pour une configuration d'écran donnée, on suppose les écrans déjà intelligent et on dispose de leur emplacement relatif.&lt;br /&gt;
&lt;br /&gt;
* 2) Une fois la première version fonctionnelle, s'orienter vers la mise en place du système intelligent&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| Lundi 15/01/18 : 3h30&lt;br /&gt;
Mercredi 17/01/18 : 4h&lt;br /&gt;
| Mercredi 24/01/18 : 4h&lt;br /&gt;
| Mercredi 31/01/18 : 4h&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
===Lundi 15/01/18===&lt;br /&gt;
&lt;br /&gt;
* Première séance ayant pour but de synthétiser l'idée théorique souhaitée par le projet.&lt;br /&gt;
&lt;br /&gt;
On imagine un système d'ensemble d'écrans autonomes mais qui communiquent leur emplacement entre eux, dans le sens où il n'est pas nécessaire de reconfigurer à chaque modification sur l'emplacement des écrans.&lt;br /&gt;
&lt;br /&gt;
Le système est pour ainsi dire évolutif puisqu'à chaque modification, exemple: passage d'un écran géant de 2*2 à 2*3 ou 3*2 (ou plus), les affichages peuvent modifier la zone du flux vidéo à afficher afin de conserver une image sur la totalité des écrans.&lt;br /&gt;
&lt;br /&gt;
De ce fait on peut imaginer des structures plus complexes, cylindriques dans le cas d'un flux d'une caméra à 360° ou plus simplement pour des simulateurs où les écrans seraient inclinés sans pour autant décrire un cercle autour de l'utilisateur.&lt;br /&gt;
&lt;br /&gt;
Cependant, pour des raisons évidentes d'effectif, de temps il est nécessaire de se réduire à une solution moins ambitieuse mais néanmoins acceptable.&lt;br /&gt;
&lt;br /&gt;
===Mercredi 17/01/18===&lt;br /&gt;
&lt;br /&gt;
* Mise en place d'un cahier des charge réalisable dans le temps imparti par rapport à la réponse théorique que l'on souhaiterai apporter au problème.&lt;br /&gt;
&lt;br /&gt;
Suite aux raisons évoquées précédemment, nous allons donc nous orienter vers un système à échelle réduite que nous ferons évoluer progressivement.&lt;br /&gt;
&lt;br /&gt;
Comme prévu nous diffuserons le flux vidéo initial, ''envoyé par Ethernet par une Raspberry Pi à partir d'un fichier stocké sur une clé usb par exemple'', aux 4 Raspberry intégrées aux écrans via un switch donc également par Ethernet (le port HDMI des R-Pi étant uniquement une sortie)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous effectuerons ensuite grâce aux R-Pi la modification du flux en fonction des écrans servant à l'affichage avant de rediriger la partie du flux qui nous intéresse vers les écrans.&lt;br /&gt;
&lt;br /&gt;
*'''Remarque:''' Dans un premier temps, pour une configuration donnée et avec les emplacement des écrans connues, il s'agit uniquement de réaliser la conversion d'affichage.&lt;br /&gt;
&lt;br /&gt;
Le fait de rendre les écrans intelligents n'est cependant pas ignoré et viendra dans un second temps, le choix de la méthode à employer étant encore en suspend. Nous allons cependant effectuer des hypothèses avec des capteurs.&lt;br /&gt;
&lt;br /&gt;
* Soit X et Y les dimensions du flux vidéo&lt;br /&gt;
* Soit U,R,D,L les états des capteurs sur un écran donné (respectivement, Up, Right, Down, Left) (1 pour actifs, 0 pour inactif)&lt;br /&gt;
* Soit I,J les indices des écrans (I = 0/1 et J = 0/1)&lt;br /&gt;
* Soit nb_X et nb_Y respectivement le nombre d'écrans en fonction des coordonnées i.e les dimensions de notre écran géant&lt;br /&gt;
&lt;br /&gt;
La configuration d'écran est la suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma (I,J)'''&lt;br /&gt;
&lt;br /&gt;
0,1 ; 1,1&lt;br /&gt;
&lt;br /&gt;
0,0 ; 1,0&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quel que soit l'écran, le flux qu'il devra recevoir sera situé entre [X1,X2] et [Y1,Y2].&lt;br /&gt;
Évidemment ces valeurs de l'emplacement de l'écran&lt;br /&gt;
&lt;br /&gt;
* Y2 = Y * ( D||U ) * (I+1) / nb_Y&lt;br /&gt;
* Y1 = Y * D * I / nb_Y&lt;br /&gt;
* X1 = X * L * J / nb_X&lt;br /&gt;
* X2 = X * ( L||R ) * (J+1) / nb_X&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 24/01/18===&lt;br /&gt;
Début de la gestion réseau du flux vidéo.&lt;br /&gt;
&lt;br /&gt;
Pour la partie théorique, nous allons donc procéder de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
Une Raspberry s'occupera de diffuser le flux sur le réseau via un commutateur. À partir d'un fichier vidéo interne.&lt;br /&gt;
&lt;br /&gt;
Les autres R-Pi disposeront d'un fichier de configuration qui contient les coordonnées à afficher en fonction de la position de l'écran, dans la première partie ce fichier sera directement implanté avec un contenu propre à chaque R-Pi mais dans la seconde il s'agira de les modifier automatiquement.&lt;br /&gt;
&lt;br /&gt;
Configuration eth0 sur la Raspberry pi : &lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
address 192.168.1.&amp;lt;2+numero_rpi&amp;gt;&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
&lt;br /&gt;
On commencera par créer un fichier fifo pour faire la transmission entre nc et OMXplayer&lt;br /&gt;
&lt;br /&gt;
Lecture du réseau : nc -l -p &amp;lt;port&amp;gt; &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Affichage : omxplayer --win x1,y1,x2,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 31/01/18===&lt;br /&gt;
&lt;br /&gt;
Tentatives de communication PC (Source flux) à Raspberry (Écran) via nc : Échec&lt;br /&gt;
&lt;br /&gt;
* [PC source] : &lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 1] : nc -l -p 12345 &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 2] : omxplayer -o hdmi --crop x1,y1,x1,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Avec x1,y1,x2,y2 les coordonnées des coins de la fenêtre à afficher&lt;br /&gt;
&lt;br /&gt;
Problème rencontré : la Raspberry n'arrive pas à obtenir une adresse joignable malgré une connexion directe avec le PC en ethernet&lt;br /&gt;
&lt;br /&gt;
* sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; iface eth0 inet dhcp&lt;br /&gt;
&lt;br /&gt;
* ifdown eth0&lt;br /&gt;
&lt;br /&gt;
* ifup eth0&lt;br /&gt;
&lt;br /&gt;
* ifconfig&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; inet adr:169.254.68.185&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=49447</id>
		<title>IMA4 2017/2018 P14</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=49447"/>
				<updated>2018-01-31T15:47:10Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : /* Mercredi 31/01/18 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
* '''Intitulé du projet''' : Proposer une solution permettant d'assembler des écrans de PC afin de créer un écran géant&lt;br /&gt;
&lt;br /&gt;
Le renouvellement de matériel informatique continu entraîne un nombre grandissant d'écrans d'ordinateur qui sont difficilement réutilisables compte tenu de leur petite taille. (17&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Afin de leur donner une seconde vie, ce projet a pour but de construire une plateforme permettant d'assembler ces écrans en un écran géant d'une forme &amp;quot;quelconque&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Exemple d'un cas d'écran carré'''&lt;br /&gt;
[[Fichier:Combinaison_ecrans.jpg]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
Afin de réaliser ce projet, il faudra :&lt;br /&gt;
&lt;br /&gt;
* Ajouter un Raspberry Pi sur chaque écran afin de le rentre &amp;quot;intelligent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Créer une application permettant de prendre un flux vidéo et de le diriger vers l'écran visé.&lt;br /&gt;
&lt;br /&gt;
* Permettre de déplacer facilement les écrans tout en maintenant le flux, que ce soit sur des configurations pleines en 2D ou des configurations plus complexes avec des espaces vides ou en 3D.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
* Le positionnement des écrans et la communication entre ces derniers.&lt;br /&gt;
&lt;br /&gt;
Pour une application telle qu'un écran géant composé de plusieurs écran, il est difficilement envisageable d'utiliser un système de coordonnées GPS pour repérer des écrans qui sont particulièrement proches les uns des autres. &lt;br /&gt;
En revanche il est tout à fait réaliste de penser à un système de capteurs de contact/proximité, disposés sur les bords des écrans pour leur permettre de s’emboîter puis il ne resterait qu'à exploiter les possibilités proposées par les Raspberry Pi ainsi qu'un système de coordonnées réalisé dans ce but pour déterminer où l'écran se situe par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
* La gestion du flux vidéo&lt;br /&gt;
&lt;br /&gt;
Le système sera potentiellement réalisé de sorte que chaque écran soit autonome dans son fonctionnement, une fois sa position relative déterminée au préalable.&lt;br /&gt;
En effet, pour le moment le problème était surtout dans le positionnement des écrans plus que dans la gestion du flux vidéo, à priori.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Est-ce que le système peut continuer de fonctionner si on retire l'un des écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pour pallier au problème d'un retrait d'écran, ou d'un disfonctionnement éventuel localisé, une solution possible est de fournir à chaque écran la totalité du flux vidéo.&lt;br /&gt;
Ceci permet dans un premier temps de s'affranchir d'un traitement vidéo avant distribution mais surtout que les autres écrans puissent fonctionner sans interruption due à un écran en particulier  &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Peut-il y avoir des décalages d'affichage entre les écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Malgré l'absence de possibilités de test pour le moment, on peut néanmoins supposer qu'il n'y ait pas de décalage. &lt;br /&gt;
Chaque écran va recevoir le flux vidéo puis en fonction du positionnement des écrans, et on pourra utiliser le système de coordonnées pour effectuer une &amp;quot;selection&amp;quot; sur la partie à afficher.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une configuration de 4 écrans en rectangle, il faudrait donc que l'écran inférieur gauche n'affiche que l'image correspondante jusqu'à la moitié, ensuite l'écran inférieur droit s'occuperait de l'affichage de la partie inférieure droite, etc&lt;br /&gt;
&lt;br /&gt;
En agrandissant le procédé à plus d'écrans, on trouve facilement une méthode de calcul.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet où il s'agira d'être capable de fournir une solution matérielle à la problématique, on s'orientera vers un prototype n'incluant que 4 écrans. Ceci permet à la fois d'éviter un encombrement matériel mais aussi .&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
* 5 Raspberry Pi 3 [https://fr.rs-online.com/web/p/processor-microcontroller-development-kits/8968660/?src=raspberrypi] lien 2 [https://www.mouser.fr/ProductDetail/Adafruit/3055?qs=sGAEpiMZZMuG6%2fXKM6MUaQgA7zSPt2LlznodoAe%252bkgk%3d]&lt;br /&gt;
&lt;br /&gt;
* Un Commutateur (5 Ports +)&lt;br /&gt;
&lt;br /&gt;
* 5 Câbles Ethernet&lt;br /&gt;
&lt;br /&gt;
* 4 Câbles VGA&lt;br /&gt;
&lt;br /&gt;
* 4 Adaptateur VGA-femelle vers HDMI-mâle&lt;br /&gt;
&lt;br /&gt;
* 16 [pack 25] Capteur de contact (1 par côté) [https://fr.rs-online.com/web/p/capteurs-proximites/7985273/] '''Envisagés pour la seconde partie du projet mais non validés pour le moment !'''&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
* 1) Régler le problème de la gestion du flux vidéo par le réseau ainsi qu'au niveau des Raspberry-Pi&lt;br /&gt;
&lt;br /&gt;
'''Hypothèse''': pour une configuration d'écran donnée, on suppose les écrans déjà intelligent et on dispose de leur emplacement relatif.&lt;br /&gt;
&lt;br /&gt;
* 2) Une fois la première version fonctionnelle, s'orienter vers la mise en place du système intelligent&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| Lundi 15/01/18 : 3h30&lt;br /&gt;
Mercredi 17/01/18 : 4h&lt;br /&gt;
| Mercredi 24/01/18 : 4h&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
===Lundi 15/01/18===&lt;br /&gt;
&lt;br /&gt;
* Première séance ayant pour but de synthétiser l'idée théorique souhaitée par le projet.&lt;br /&gt;
&lt;br /&gt;
On imagine un système d'ensemble d'écrans autonomes mais qui communiquent leur emplacement entre eux, dans le sens où il n'est pas nécessaire de reconfigurer à chaque modification sur l'emplacement des écrans.&lt;br /&gt;
&lt;br /&gt;
Le système est pour ainsi dire évolutif puisqu'à chaque modification, exemple: passage d'un écran géant de 2*2 à 2*3 ou 3*2 (ou plus), les affichages peuvent modifier la zone du flux vidéo à afficher afin de conserver une image sur la totalité des écrans.&lt;br /&gt;
&lt;br /&gt;
De ce fait on peut imaginer des structures plus complexes, cylindriques dans le cas d'un flux d'une caméra à 360° ou plus simplement pour des simulateurs où les écrans seraient inclinés sans pour autant décrire un cercle autour de l'utilisateur.&lt;br /&gt;
&lt;br /&gt;
Cependant, pour des raisons évidentes d'effectif, de temps il est nécessaire de se réduire à une solution moins ambitieuse mais néanmoins acceptable.&lt;br /&gt;
&lt;br /&gt;
===Mercredi 17/01/18===&lt;br /&gt;
&lt;br /&gt;
* Mise en place d'un cahier des charge réalisable dans le temps imparti par rapport à la réponse théorique que l'on souhaiterai apporter au problème.&lt;br /&gt;
&lt;br /&gt;
Suite aux raisons évoquées précédemment, nous allons donc nous orienter vers un système à échelle réduite que nous ferons évoluer progressivement.&lt;br /&gt;
&lt;br /&gt;
Comme prévu nous diffuserons le flux vidéo initial, ''envoyé par Ethernet par une Raspberry Pi à partir d'un fichier stocké sur une clé usb par exemple'', aux 4 Raspberry intégrées aux écrans via un switch donc également par Ethernet (le port HDMI des R-Pi étant uniquement une sortie)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous effectuerons ensuite grâce aux R-Pi la modification du flux en fonction des écrans servant à l'affichage avant de rediriger la partie du flux qui nous intéresse vers les écrans.&lt;br /&gt;
&lt;br /&gt;
*'''Remarque:''' Dans un premier temps, pour une configuration donnée et avec les emplacement des écrans connues, il s'agit uniquement de réaliser la conversion d'affichage.&lt;br /&gt;
&lt;br /&gt;
Le fait de rendre les écrans intelligents n'est cependant pas ignoré et viendra dans un second temps, le choix de la méthode à employer étant encore en suspend. Nous allons cependant effectuer des hypothèses avec des capteurs.&lt;br /&gt;
&lt;br /&gt;
* Soit X et Y les dimensions du flux vidéo&lt;br /&gt;
* Soit U,R,D,L les états des capteurs sur un écran donné (respectivement, Up, Right, Down, Left) (1 pour actifs, 0 pour inactif)&lt;br /&gt;
* Soit I,J les indices des écrans (I = 0/1 et J = 0/1)&lt;br /&gt;
* Soit nb_X et nb_Y respectivement le nombre d'écrans en fonction des coordonnées i.e les dimensions de notre écran géant&lt;br /&gt;
&lt;br /&gt;
La configuration d'écran est la suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma (I,J)'''&lt;br /&gt;
&lt;br /&gt;
0,1 ; 1,1&lt;br /&gt;
&lt;br /&gt;
0,0 ; 1,0&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quel que soit l'écran, le flux qu'il devra recevoir sera situé entre [X1,X2] et [Y1,Y2].&lt;br /&gt;
Évidemment ces valeurs de l'emplacement de l'écran&lt;br /&gt;
&lt;br /&gt;
* Y2 = Y * ( D||U ) * (I+1) / nb_Y&lt;br /&gt;
* Y1 = Y * D * I / nb_Y&lt;br /&gt;
* X1 = X * L * J / nb_X&lt;br /&gt;
* X2 = X * ( L||R ) * (J+1) / nb_X&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 24/01/18===&lt;br /&gt;
Début de la gestion réseau du flux vidéo.&lt;br /&gt;
&lt;br /&gt;
Pour la partie théorique, nous allons donc procéder de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
Une Raspberry s'occupera de diffuser le flux sur le réseau via un commutateur. À partir d'un fichier vidéo interne.&lt;br /&gt;
&lt;br /&gt;
Les autres R-Pi disposeront d'un fichier de configuration qui contient les coordonnées à afficher en fonction de la position de l'écran, dans la première partie ce fichier sera directement implanté avec un contenu propre à chaque R-Pi mais dans la seconde il s'agira de les modifier automatiquement.&lt;br /&gt;
&lt;br /&gt;
Configuration eth0 sur la Raspberry pi : &lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
address 192.168.1.&amp;lt;2+numero_rpi&amp;gt;&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
&lt;br /&gt;
On commencera par créer un fichier fifo pour faire la transmission entre nc et OMXplayer&lt;br /&gt;
&lt;br /&gt;
Lecture du réseau : nc -l -p &amp;lt;port&amp;gt; &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Affichage : omxplayer --win x1,y1,x2,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 31/01/18===&lt;br /&gt;
&lt;br /&gt;
Tentatives de communication PC (Source flux) à Raspberry (Écran) via nc : Échec&lt;br /&gt;
&lt;br /&gt;
* [PC source] : &lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 1] : nc -l -p 12345 &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
* [Raspberry Écran - Terminal 2] : omxplayer -o hdmi --crop x1,y1,x1,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Avec x1,y1,x2,y2 les coordonnées des coins de la fenêtre à afficher&lt;br /&gt;
&lt;br /&gt;
Problème rencontré : la Raspberry n'arrive pas à obtenir une adresse joignable malgré une connexion directe avec le PC en ethernet&lt;br /&gt;
&lt;br /&gt;
* sudo nano /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; iface eth0 inet dhcp&lt;br /&gt;
&lt;br /&gt;
* ifdown eth0&lt;br /&gt;
&lt;br /&gt;
* ifup eth0&lt;br /&gt;
&lt;br /&gt;
* ifconfig&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; inet adr:169.254.68.185&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=49404</id>
		<title>IMA4 2017/2018 P14</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=49404"/>
				<updated>2018-01-31T13:59:43Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : /* Réalisation du Projet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
* '''Intitulé du projet''' : Proposer une solution permettant d'assembler des écrans de PC afin de créer un écran géant&lt;br /&gt;
&lt;br /&gt;
Le renouvellement de matériel informatique continu entraîne un nombre grandissant d'écrans d'ordinateur qui sont difficilement réutilisables compte tenu de leur petite taille. (17&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Afin de leur donner une seconde vie, ce projet a pour but de construire une plateforme permettant d'assembler ces écrans en un écran géant d'une forme &amp;quot;quelconque&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Exemple d'un cas d'écran carré'''&lt;br /&gt;
[[Fichier:Combinaison_ecrans.jpg]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
Afin de réaliser ce projet, il faudra :&lt;br /&gt;
&lt;br /&gt;
* Ajouter un Raspberry Pi sur chaque écran afin de le rentre &amp;quot;intelligent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Créer une application permettant de prendre un flux vidéo et de le diriger vers l'écran visé.&lt;br /&gt;
&lt;br /&gt;
* Permettre de déplacer facilement les écrans tout en maintenant le flux, que ce soit sur des configurations pleines en 2D ou des configurations plus complexes avec des espaces vides ou en 3D.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
* Le positionnement des écrans et la communication entre ces derniers.&lt;br /&gt;
&lt;br /&gt;
Pour une application telle qu'un écran géant composé de plusieurs écran, il est difficilement envisageable d'utiliser un système de coordonnées GPS pour repérer des écrans qui sont particulièrement proches les uns des autres. &lt;br /&gt;
En revanche il est tout à fait réaliste de penser à un système de capteurs de contact/proximité, disposés sur les bords des écrans pour leur permettre de s’emboîter puis il ne resterait qu'à exploiter les possibilités proposées par les Raspberry Pi ainsi qu'un système de coordonnées réalisé dans ce but pour déterminer où l'écran se situe par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
* La gestion du flux vidéo&lt;br /&gt;
&lt;br /&gt;
Le système sera potentiellement réalisé de sorte que chaque écran soit autonome dans son fonctionnement, une fois sa position relative déterminée au préalable.&lt;br /&gt;
En effet, pour le moment le problème était surtout dans le positionnement des écrans plus que dans la gestion du flux vidéo, à priori.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Est-ce que le système peut continuer de fonctionner si on retire l'un des écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pour pallier au problème d'un retrait d'écran, ou d'un disfonctionnement éventuel localisé, une solution possible est de fournir à chaque écran la totalité du flux vidéo.&lt;br /&gt;
Ceci permet dans un premier temps de s'affranchir d'un traitement vidéo avant distribution mais surtout que les autres écrans puissent fonctionner sans interruption due à un écran en particulier  &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Peut-il y avoir des décalages d'affichage entre les écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Malgré l'absence de possibilités de test pour le moment, on peut néanmoins supposer qu'il n'y ait pas de décalage. &lt;br /&gt;
Chaque écran va recevoir le flux vidéo puis en fonction du positionnement des écrans, et on pourra utiliser le système de coordonnées pour effectuer une &amp;quot;selection&amp;quot; sur la partie à afficher.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une configuration de 4 écrans en rectangle, il faudrait donc que l'écran inférieur gauche n'affiche que l'image correspondante jusqu'à la moitié, ensuite l'écran inférieur droit s'occuperait de l'affichage de la partie inférieure droite, etc&lt;br /&gt;
&lt;br /&gt;
En agrandissant le procédé à plus d'écrans, on trouve facilement une méthode de calcul.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet où il s'agira d'être capable de fournir une solution matérielle à la problématique, on s'orientera vers un prototype n'incluant que 4 écrans. Ceci permet à la fois d'éviter un encombrement matériel mais aussi .&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
* 5 Raspberry Pi 3 [https://fr.rs-online.com/web/p/processor-microcontroller-development-kits/8968660/?src=raspberrypi] lien 2 [https://www.mouser.fr/ProductDetail/Adafruit/3055?qs=sGAEpiMZZMuG6%2fXKM6MUaQgA7zSPt2LlznodoAe%252bkgk%3d]&lt;br /&gt;
&lt;br /&gt;
* Un Commutateur (5 Ports +)&lt;br /&gt;
&lt;br /&gt;
* 5 Câbles Ethernet&lt;br /&gt;
&lt;br /&gt;
* 4 Câbles VGA&lt;br /&gt;
&lt;br /&gt;
* 4 Adaptateur VGA-femelle vers HDMI-mâle&lt;br /&gt;
&lt;br /&gt;
* 16 [pack 25] Capteur de contact (1 par côté) [https://fr.rs-online.com/web/p/capteurs-proximites/7985273/] '''Envisagés pour la seconde partie du projet mais non validés pour le moment !'''&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
* 1) Régler le problème de la gestion du flux vidéo par le réseau ainsi qu'au niveau des Raspberry-Pi&lt;br /&gt;
&lt;br /&gt;
'''Hypothèse''': pour une configuration d'écran donnée, on suppose les écrans déjà intelligent et on dispose de leur emplacement relatif.&lt;br /&gt;
&lt;br /&gt;
* 2) Une fois la première version fonctionnelle, s'orienter vers la mise en place du système intelligent&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| Lundi 15/01/18 : 3h30&lt;br /&gt;
Mercredi 17/01/18 : 4h&lt;br /&gt;
| Mercredi 24/01/18 : 4h&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
===Lundi 15/01/18===&lt;br /&gt;
&lt;br /&gt;
* Première séance ayant pour but de synthétiser l'idée théorique souhaitée par le projet.&lt;br /&gt;
&lt;br /&gt;
On imagine un système d'ensemble d'écrans autonomes mais qui communiquent leur emplacement entre eux, dans le sens où il n'est pas nécessaire de reconfigurer à chaque modification sur l'emplacement des écrans.&lt;br /&gt;
&lt;br /&gt;
Le système est pour ainsi dire évolutif puisqu'à chaque modification, exemple: passage d'un écran géant de 2*2 à 2*3 ou 3*2 (ou plus), les affichages peuvent modifier la zone du flux vidéo à afficher afin de conserver une image sur la totalité des écrans.&lt;br /&gt;
&lt;br /&gt;
De ce fait on peut imaginer des structures plus complexes, cylindriques dans le cas d'un flux d'une caméra à 360° ou plus simplement pour des simulateurs où les écrans seraient inclinés sans pour autant décrire un cercle autour de l'utilisateur.&lt;br /&gt;
&lt;br /&gt;
Cependant, pour des raisons évidentes d'effectif, de temps il est nécessaire de se réduire à une solution moins ambitieuse mais néanmoins acceptable.&lt;br /&gt;
&lt;br /&gt;
===Mercredi 17/01/18===&lt;br /&gt;
&lt;br /&gt;
* Mise en place d'un cahier des charge réalisable dans le temps imparti par rapport à la réponse théorique que l'on souhaiterai apporter au problème.&lt;br /&gt;
&lt;br /&gt;
Suite aux raisons évoquées précédemment, nous allons donc nous orienter vers un système à échelle réduite que nous ferons évoluer progressivement.&lt;br /&gt;
&lt;br /&gt;
Comme prévu nous diffuserons le flux vidéo initial, ''envoyé par Ethernet par une Raspberry Pi à partir d'un fichier stocké sur une clé usb par exemple'', aux 4 Raspberry intégrées aux écrans via un switch donc également par Ethernet (le port HDMI des R-Pi étant uniquement une sortie)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous effectuerons ensuite grâce aux R-Pi la modification du flux en fonction des écrans servant à l'affichage avant de rediriger la partie du flux qui nous intéresse vers les écrans.&lt;br /&gt;
&lt;br /&gt;
*'''Remarque:''' Dans un premier temps, pour une configuration donnée et avec les emplacement des écrans connues, il s'agit uniquement de réaliser la conversion d'affichage.&lt;br /&gt;
&lt;br /&gt;
Le fait de rendre les écrans intelligents n'est cependant pas ignoré et viendra dans un second temps, le choix de la méthode à employer étant encore en suspend. Nous allons cependant effectuer des hypothèses avec des capteurs.&lt;br /&gt;
&lt;br /&gt;
* Soit X et Y les dimensions du flux vidéo&lt;br /&gt;
* Soit U,R,D,L les états des capteurs sur un écran donné (respectivement, Up, Right, Down, Left) (1 pour actifs, 0 pour inactif)&lt;br /&gt;
* Soit I,J les indices des écrans (I = 0/1 et J = 0/1)&lt;br /&gt;
* Soit nb_X et nb_Y respectivement le nombre d'écrans en fonction des coordonnées i.e les dimensions de notre écran géant&lt;br /&gt;
&lt;br /&gt;
La configuration d'écran est la suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma (I,J)'''&lt;br /&gt;
&lt;br /&gt;
0,1 ; 1,1&lt;br /&gt;
&lt;br /&gt;
0,0 ; 1,0&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quel que soit l'écran, le flux qu'il devra recevoir sera situé entre [X1,X2] et [Y1,Y2].&lt;br /&gt;
Évidemment ces valeurs de l'emplacement de l'écran&lt;br /&gt;
&lt;br /&gt;
* Y2 = Y * ( D||U ) * (I+1) / nb_Y&lt;br /&gt;
* Y1 = Y * D * I / nb_Y&lt;br /&gt;
* X1 = X * L * J / nb_X&lt;br /&gt;
* X2 = X * ( L||R ) * (J+1) / nb_X&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 24/01/18===&lt;br /&gt;
Début de la gestion réseau du flux vidéo.&lt;br /&gt;
&lt;br /&gt;
Pour la partie théorique, nous allons donc procéder de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
Une Raspberry s'occupera de diffuser le flux sur le réseau via un commutateur. À partir d'un fichier vidéo interne.&lt;br /&gt;
&lt;br /&gt;
Les autres R-Pi disposeront d'un fichier de configuration qui contient les coordonnées à afficher en fonction de la position de l'écran, dans la première partie ce fichier sera directement implanté avec un contenu propre à chaque R-Pi mais dans la seconde il s'agira de les modifier automatiquement.&lt;br /&gt;
&lt;br /&gt;
Configuration eth0 sur la Raspberry pi : &lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
address 192.168.1.&amp;lt;2+numero_rpi&amp;gt;&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
&lt;br /&gt;
On commencera par créer un fichier fifo pour faire la transmission entre nc et OMXplayer&lt;br /&gt;
&lt;br /&gt;
Lecture du réseau : nc -l -p &amp;lt;port&amp;gt; &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Affichage : omxplayer --win x1,y1,x2,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 31/01/18===&lt;br /&gt;
&lt;br /&gt;
Début des tentatives de communication PC (Source flux) à Raspberry (Écran) via nc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Discussion:Projets_IMA4_SC_%26_SA_2017/2018&amp;diff=49403</id>
		<title>Discussion:Projets IMA4 SC &amp; SA 2017/2018</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Discussion:Projets_IMA4_SC_%26_SA_2017/2018&amp;diff=49403"/>
				<updated>2018-01-31T13:57:20Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : /* Fiche de présence */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==  Notes sur les projets ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Projet || Analyse du projet || Retour sur l'analyse || Matériel || Mi-parcours || Wiki terminé || Rapport || Vidéo&lt;br /&gt;
|-&lt;br /&gt;
| P1 [[IMA4 2017/2018 P1|Automatisation de la production de bière]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Présentation sans supports, bonne analyse de la concurrence. Par contre le scénario d'usage est à revoir en précisant l'usage pour le particulier.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Le scénario est précisé mais aucune réponse aux questions difficiles &amp;quot;gestion des températures et procédure d'entretien&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Rien.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P3 [[IMA4 2017/2018 P3|Sécurisation de l'Internet des Objets par surveillance globale]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Présentation focalisée sur les réseaux de neurones. Exercice mal compris (pas d'introduction du contexte, pas de scénario d'usage).&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Toujours pas d'analyse de la concurrence, ni de scénario d'usage. Pas de réponse aux questions difficiles &amp;quot;quel est le matériel ? quel est le protocole ? quelles sont les entrées du réseau de neurones ?&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Une liste mais il manque des références vers les fournisseurs agréés (voir page de l'an dernier).&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P4 [[IMA4 2017/2018 P4|Développement d'un module d'énergie pour Internet des Objets]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Exercice correctement réalisé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Pas de réponse aux questions difficiles &amp;quot;Architecture de la source d'énergie (nombre de chemins d'énergie ?)&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Rien.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P5 [[IMA4 2017/2018 P5|Réseau de capteurs de pollution]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt; Présentation focalisée sur la création du site Web. Effort fait pour rédiger un scénario d'usage.&amp;lt;/font&amp;gt; &lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt; Réponses aux questions mais l'analyse de la consommation est imprécise. &amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt; Du matériel listé dans la page Wiki mais à reporter en bas de la page des projets de cette année avec des références valides.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P6 [[IMA4 2017/2018 P6|Réseau LoRaWAN]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Exercice correctement réalisé. Scénario d'usage à préciser sur la partie réseau de capteurs.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt; Scénario d'usage non précisé. Pas de réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt; Du matériel listé mais sans référence, êtes-vous sur que le matériel n'a pas besoin d'être acheté ?&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P7 [[IMA4 2017/2018 P7|Brique pour apprentissage informatique]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt; Pas de support. Exercice très bien réalisé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Pas de réponse aux questions difficiles &amp;quot;quelle alimentation ? comment faire pour différencier les briques ? comment les briques vont-elles communiquer ? quelle sécurité vis-à-vis des enfants ?&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Pas de liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P10 [[IMA4 2017/2018 P10|Portage de RIOT-OS sur MSP430 pour IOT]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt; Rien à signaler (juste une confusion entre le MSP430 et le CC430).&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt; Questions difficiles évacuées. &amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt; Du matériel listé mais sans référence.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P12 [[IMA4 2017/2018 P12|Système d'ostéophonie pour magicien]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Un peu rapide, exercice réalisé. &amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Pas d'analyse de la concurrence. Peu d'effort de rédaction. Des coquilles. Une réponse rapide à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt; Du matériel listé mais pas forcément exhaustif et sans référence valide.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P14 [[IMA4 2017/2018 P14|Ecran géant modulaire]]&lt;br /&gt;
| Doublant&lt;br /&gt;
| Doublant&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Page Wiki vide, pas de liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P15 [[IMA4 2017/2018 P15|Balle vibrante connectée pour enfants sourd]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Présentation acceptable mais avec des supports non soignés. Pas d'analyse de la concurrence, pas de scénario d'usage.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;L'analyse de la concurrence et le scénario d'usage ont été ajoutés. Par contre pas de réponse aux questions difficiles &amp;quot;quelle sera l'autonomie de la balle et quel sera le système de rechargement ?&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Pas de liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P16 [[IMA4 2017/2018 P16|Sous-chaussure chauffante pour docker]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Présentation acceptable mais avec des supports non soignés. Trouver des concurrents indirects. Une histoire mais pas de scénario d'usage.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Page Wiki modifiée après la présentation. Une réponse incomplète à la question difficile. Trop de coquilles pour ce niveau d'études.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Pas de liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P17 [[IMA4 2017/2018 P17|Safe Watch]]&lt;br /&gt;
| Doublant&lt;br /&gt;
| Doublant&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune modification de la page Wiki depuis début octobre.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P18 [[IMA4 2017/2018 P18|Mandala électronique]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Supports très textuels, pas de scénario d'usage mais une rédaction sur l'intérêt psychologique, pas vraiment de partie &amp;quot;concurrents&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Un effort pour trouver des &amp;quot;concurrents&amp;quot;, pas de réponses aux questions difficiles &amp;quot;combien de LEDs ? quelle alimentation pour quelle autonomie&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Pas de liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P19 [[IMA4 2017/2018 P19|Bijou électronique]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Bonne présentation orale. Utilisation du bluetooth peu convainquant. Pas de scénario d'usage. Un &amp;quot;concurrent&amp;quot; trouvé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Concept de scénario d'usage non compris. Une réponse à la question difficile très rapide et non convaincante.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Une liste de matériel dans la page Wiki mais à insérer dans le tableau en bas de la page principale. Pas de référence (voir sur la page de l'an passé).&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P20 [[IMA4 2017/2018 P20|Solution de messagerie à base de conteneurs]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Support assez corrects, sujet non entièrement compris, scénario d'usage minimal.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Un problème dans le scénario d'usage : les conteneurs doivent être lancés sur un serveur. Une réponse acceptable à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas de matériel particulier.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P22 [[IMA4 2017/2018 P22|Horloge numérique DCF77, serveur de temps et ludique]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Analyse très correcte.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P23 [[IMA4 2017/2018 P23|Table de bar connectée]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Présentation trop impécise, pas vraiment de scénario d'usage. Par contre des concurrents ont été présentés.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Un scénario d'usage éloigné de la future utilisation. Trop de coquilles dans ce scénario. Réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Une liste du matériel mais pas dans la page principale. Pas de référence (voir page de l'an passé).&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P25 [[IMA4 2017/2018 P25|Essaim de robots]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Analyse très correcte. Un concurrent assez peu en rapport avec les essaims de robots mais dans la ligne des dispositifs de déminage.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas de question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Liste du matériel. Préciser pour le chassis.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P30 [[IMA4 2017/2018 P30|Contrôle d'une caméra WiFi.]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Objectif mal expliqué. Exercice réalisé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Mieux définir l'objectif suite à la visite en entreprise. Pas de réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P32 [[IMA4 2017/2018 P32|Tribute to Peter Vogel]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Excellente présentation et excellent travail préparatoire, Scénario d'usage à préciser, trouver des concurrents.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P35 [[IMA4 2017/2018 P35|Manette de jeu vidéo pour personne en situation de handicap]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Exercice réussi. Cependant précisez les acteurs dans le scénario d'usage.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Pas de modification du scénario. Pas de réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Rien à redire sur la liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P39 [[IMA4 2017/2018 P39|Musique des plantes]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Analyse très correcte.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Réponses aux questions difficiles.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P40 [[IMA4 2017/2018 P40|Exploration du réseau d'anonymisation Tor]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Sujet se prêtant peu à l'exercice mais très bonne présentation. Sujet travaillé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas vraiment de question, la suggestion est noté dans la page Wiki.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas de matériel à commander.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P42 [[IMA4 2017/2018 P42|Automatisation de l'assemblage de LEGO]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Analyse très correcte.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Pas de réponse aux questions difficiles &amp;quot;Comment démarrer l'imprimante à distance ? Comment sera calibrée la plaque d’impression ?&lt;br /&gt;
Comment la plaque va se fixer sur le sol ? &amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P44 [[IMA4 2017/2018 P44|Reconnaissance d’objets via Traitement d’image]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Le projet ne semble pas encore avoir été sérieusement étudié.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Net effort de documentation de la page Wiki. Pas de réponse directe à la question difficile sur la Kinect mais une discussion sur le problème posé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P49 [[IMA4 2017/2018 P49|Suivi de la qualité de l’air]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Contexte mal présenté, sujet flou. Scénario d'usage à préciser. Pas de contact avec les encadrants avant la présentation.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Page de Wiki vide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P50 [[IMA4 2017/2018 P50|Etage commande de Centaure]]&lt;br /&gt;
| Doublant&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Page de Wiki assez vide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P60 [[IMA4 2017/2018 P60|Commande de niveaux d’eau]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Présentation très correcte.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Pas de réponse à la question difficile. Page Wiki un peu vide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas de matériel à commander.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P64 [[IMA4 2017/2018 P64|Simulation Labview et mise en réseau Modbus d’un ascenseur]]&lt;br /&gt;
| Doublant&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Wiki avec quelques informations sur le travail accompli depuis fin novembre : étude sur modbus et labview. Quelques coquilles.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P65 [[IMA4 2017/2018 P65|Exosquelette pour apprentissage]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Présentation sans support. Trouver des concurrents indirects. Pas de scénario d'usage.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Page Wiki vide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P66 [[IMA4 2017/2018 P66|Coupe de France de robotique]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Analyse très correcte.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Page Wiki bien tenue. Ajoutez des illustrations.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Quelques éléments sur le matériel dans la page Wiki mais aucune liste avec références.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P67 [[IMA4 2017/2018 P67|Scanner 3D DIY]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Exercice bien réalisé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Page Wiki très complète. Ajoutez des illustrations.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Une liste probablement pas exhaustive.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P68 [[IMA4 2017/2018 P68|Générateur de chronogrammes d'ordonnancement]]&lt;br /&gt;
| Doublant&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Page Wiki vide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas de matériel à commander.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| PP1 [[IMA4 2017/2018 Pré-projet 1|Robot hexapode pour escalier]]&lt;br /&gt;
| Erasmus &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Fiche de présence ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Projet !! Elèves !! Séance 1 (17/01) !! Séance 2 (24/01) !! Séance 3 (31/01) !! Séance 4 (7/02) !! Séance 5 (14/02) !! Séance 6 (21/02) !! Séance 7 (7/03) !! Séance 8 (14/03) !! Séance 9 (21/03) !! Séance 10 (28/03) !! Séance 11 (4/04) !! Séance 12 (11/04) !! Séance 13 (18/04)&lt;br /&gt;
|-&lt;br /&gt;
| P1 [[IMA4 2017/2018 P1|Automatisation de la production de bière]]&lt;br /&gt;
|Quentin Boëns / Henri Carlier&lt;br /&gt;
|E304 &lt;br /&gt;
|E304/305&lt;br /&gt;
|E304&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| P3 [[IMA4 2017/2018 P3|Sécurisation de l'Internet des Objets par surveillance globale]]&lt;br /&gt;
|Ji Yang&lt;br /&gt;
|E306&lt;br /&gt;
|E303&lt;br /&gt;
|-&lt;br /&gt;
| P4 [[IMA4 2017/2018 P4|Développement d'un module d'énergie pour Internet des Objets]]&lt;br /&gt;
| Alexis Viscogliosi/ Abass Ayoub &lt;br /&gt;
|C008&lt;br /&gt;
|C008&lt;br /&gt;
|-&lt;br /&gt;
| P5 [[IMA4 2017/2018 P5|Réseau de capteurs de pollution]]&lt;br /&gt;
| Paul Ribeiro / Mehanna Naïf&lt;br /&gt;
|E303&lt;br /&gt;
|E301&lt;br /&gt;
|-&lt;br /&gt;
| P6 [[IMA4 2017/2018 P6|Réseau LoRaWAN]]&lt;br /&gt;
|  Antoine Gosse&lt;br /&gt;
| E306&lt;br /&gt;
| E306 &lt;br /&gt;
|-&lt;br /&gt;
| P7 [[IMA4 2017/2018 P7|Brique pour apprentissage informatique]]&lt;br /&gt;
| Maëva Delaporte / Simon Blas&lt;br /&gt;
| E304 &amp;lt;br/&amp;gt;&lt;br /&gt;
| E304 &amp;lt;br/&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P10 [[IMA4 2017/2018 P10|Portage de RIOT-OS sur MSP430 pour IOT]]&lt;br /&gt;
|-&lt;br /&gt;
| P12 [[IMA4 2017/2018 P12|Système d'ostéophonie pour magicien]]&lt;br /&gt;
| Amine El Messaoudi / Simon Feutrier&lt;br /&gt;
| E301&lt;br /&gt;
| C201&lt;br /&gt;
|-&lt;br /&gt;
| P14 [[IMA4 2017/2018 P14|Ecran géant modulaire]]&lt;br /&gt;
| Jade Dupont&lt;br /&gt;
|E304 &lt;br /&gt;
|E304 &lt;br /&gt;
|E304 &lt;br /&gt;
|-&lt;br /&gt;
| P15 [[IMA4 2017/2018 P15|Balle vibrante connectée pour enfants sourd]]&lt;br /&gt;
| Thomas Cunin / Thibault Cattelain&lt;br /&gt;
| E304&lt;br /&gt;
| B306/E304&lt;br /&gt;
|-&lt;br /&gt;
| P16 [[IMA4 2017/2018 P16|Sous-chaussure chauffante pour docker]]&lt;br /&gt;
| Rémi Mairesse / Gustave Roux&lt;br /&gt;
| E304&lt;br /&gt;
| E301&lt;br /&gt;
|-&lt;br /&gt;
| P17 [[IMA4 2017/2018 P17|Safe Watch]]&lt;br /&gt;
| Oumaima Naanaa&lt;br /&gt;
|E302&lt;br /&gt;
|E304 &lt;br /&gt;
|-&lt;br /&gt;
| P18 [[IMA4 2017/2018 P18|Mandala électronique]]&lt;br /&gt;
| Lirui Zhang / Lihe Zhang&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
|-&lt;br /&gt;
| P19 [[IMA4 2017/2018 P19|Bijou électronique]]&lt;br /&gt;
| Lijie Yao / Keren Qiang&lt;br /&gt;
| E303&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
|-&lt;br /&gt;
| P20 [[IMA4 2017/2018 P20|Solution de messagerie à base de conteneurs]]&lt;br /&gt;
| Maxime Creteur / Gao Fan&lt;br /&gt;
|E303&lt;br /&gt;
|E301&lt;br /&gt;
|-&lt;br /&gt;
| P22 [[IMA4 2017/2018 P22|Horloge numérique DCF77, serveur de temps et ludique]]&lt;br /&gt;
| Amaury Knockaert / Fabrice Taingland&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
|-&lt;br /&gt;
| P23 [[IMA4 2017/2018 P23|Table de bar connectée]]&lt;br /&gt;
| Matthieu Delobelle&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
|-&lt;br /&gt;
| P25 [[IMA4 2017/2018 P25|Essaim de robots]]&lt;br /&gt;
| Benjamin Canu / Ganix Etcheguibel&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
|-&lt;br /&gt;
| P30 [[IMA4 2017/2018 P30|Contrôle d'une caméra WiFi.]]&lt;br /&gt;
| Taky Djeraba / Thomas Hubert&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
|-&lt;br /&gt;
| P32 [[IMA4 2017/2018 P32|Tribute to Peter Vogel]]&lt;br /&gt;
| Jean-Baptiste Watine / Antoine Untereiner&lt;br /&gt;
| E306/C201&lt;br /&gt;
| E301&lt;br /&gt;
|-&lt;br /&gt;
| P35 [[IMA4 2017/2018 P35|Manette de jeu vidéo pour personne en situation de handicap]]&lt;br /&gt;
| Transley Gracias / Camille Saad&lt;br /&gt;
| E306 &lt;br /&gt;
| E306 &lt;br /&gt;
|-&lt;br /&gt;
| P39 [[IMA4 2017/2018 P39|Musique des plantes]]&lt;br /&gt;
| Xavier Chenot / Rodolphe Toin&lt;br /&gt;
| E306 &lt;br /&gt;
| E306 &lt;br /&gt;
|-&lt;br /&gt;
| P40 [[IMA4 2017/2018 P40|Exploration du réseau d'anonymisation Tor]]&lt;br /&gt;
| Antoine Duquenoy / Anthony Durot&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
|-&lt;br /&gt;
| P42 [[IMA4 2017/2018 P42|Automatisation de l'assemblage de LEGO]]&lt;br /&gt;
| Eloi Zalczer / Justine Senellart&lt;br /&gt;
|E302/E306&lt;br /&gt;
|E302/E306&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| P44 [[IMA4 2017/2018 P44|Reconnaissance d’objets via Traitement d’image]]&lt;br /&gt;
| Damien Narbais / Zoé Briois&lt;br /&gt;
| E306&lt;br /&gt;
| E301&lt;br /&gt;
|-&lt;br /&gt;
| P49 [[IMA4 2017/2018 P49|Suivi de la qualité de l’air]]&lt;br /&gt;
| Hugo Delbroucq / Nicolas Havard &lt;br /&gt;
| E301&lt;br /&gt;
| INRIA&lt;br /&gt;
|-&lt;br /&gt;
| P50 [[IMA4 2017/2018 P50|Etage commande de Centaure]]&lt;br /&gt;
|-&lt;br /&gt;
| P60 [[IMA4 2017/2018 P60|Commande de niveaux d’eau]]&lt;br /&gt;
| Claire Vandamme / Alexandra Villa &lt;br /&gt;
|C008&lt;br /&gt;
|C008&lt;br /&gt;
|- &lt;br /&gt;
| P64 [[IMA4 2017/2018 P64|Simulation Labview et mise en réseau Modbus d’un ascenseur]]&lt;br /&gt;
|-&lt;br /&gt;
| P65 [[IMA4 2017/2018 P65|Exosquelette pour apprentissage]]&lt;br /&gt;
| Florian Le Foll&lt;br /&gt;
| E301&lt;br /&gt;
| E301&lt;br /&gt;
|-&lt;br /&gt;
| P66 [[IMA4 2017/2018 P66|Coupe de France de robotique]]&lt;br /&gt;
| Carval Amaury&lt;br /&gt;
| fabricarium &lt;br /&gt;
| fabricarium puis Hors Polytech&lt;br /&gt;
| E304&lt;br /&gt;
|-&lt;br /&gt;
| P67 [[IMA4 2017/2018 P67|Scanner 3D DIY]]&lt;br /&gt;
| Erwan Dufresne&lt;br /&gt;
| E302/E306&lt;br /&gt;
| E301&lt;br /&gt;
|-&lt;br /&gt;
| P68 [[IMA4 2017/2018 P68|Générateur de chronogrammes d'ordonnancement]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Discussion:Projets_IMA4_SC_%26_SA_2017/2018&amp;diff=48976</id>
		<title>Discussion:Projets IMA4 SC &amp; SA 2017/2018</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Discussion:Projets_IMA4_SC_%26_SA_2017/2018&amp;diff=48976"/>
				<updated>2018-01-24T18:24:59Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : /* Fiche de présence */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==  Notes sur les projets ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Projet || Analyse du projet || Retour sur l'analyse || Matériel || Mi-parcours || Wiki terminé || Rapport || Vidéo&lt;br /&gt;
|-&lt;br /&gt;
| P1 [[IMA4 2017/2018 P1|Automatisation de la production de bière]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Présentation sans supports, bonne analyse de la concurrence. Par contre le scénario d'usage est à revoir en précisant l'usage pour le particulier.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Le scénario est précisé mais aucune réponse aux questions difficiles &amp;quot;gestion des températures et procédure d'entretien&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Rien.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P3 [[IMA4 2017/2018 P3|Sécurisation de l'Internet des Objets par surveillance globale]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Présentation focalisée sur les réseaux de neurones. Exercice mal compris (pas d'introduction du contexte, pas de scénario d'usage).&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Toujours pas d'analyse de la concurrence, ni de scénario d'usage. Pas de réponse aux questions difficiles &amp;quot;quel est le matériel ? quel est le protocole ? quelles sont les entrées du réseau de neurones ?&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Une liste mais il manque des références vers les fournisseurs agréés (voir page de l'an dernier).&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P4 [[IMA4 2017/2018 P4|Développement d'un module d'énergie pour Internet des Objets]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Exercice correctement réalisé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Pas de réponse aux questions difficiles &amp;quot;Architecture de la source d'énergie (nombre de chemins d'énergie ?)&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Rien.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P5 [[IMA4 2017/2018 P5|Réseau de capteurs de pollution]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt; Présentation focalisée sur la création du site Web. Effort fait pour rédiger un scénario d'usage.&amp;lt;/font&amp;gt; &lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt; Réponses aux questions mais l'analyse de la consommation est imprécise. &amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt; Du matériel listé dans la page Wiki mais à reporter en bas de la page des projets de cette année avec des références valides.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P6 [[IMA4 2017/2018 P6|Réseau LoRaWAN]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Exercice correctement réalisé. Scénario d'usage à préciser sur la partie réseau de capteurs.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt; Scénario d'usage non précisé. Pas de réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt; Du matériel listé mais sans référence, êtes-vous sur que le matériel n'a pas besoin d'être acheté ?&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P7 [[IMA4 2017/2018 P7|Brique pour apprentissage informatique]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt; Pas de support. Exercice très bien réalisé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Pas de réponse aux questions difficiles &amp;quot;quelle alimentation ? comment faire pour différencier les briques ? comment les briques vont-elles communiquer ? quelle sécurité vis-à-vis des enfants ?&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Pas de liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P10 [[IMA4 2017/2018 P10|Portage de RIOT-OS sur MSP430 pour IOT]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt; Rien à signaler (juste une confusion entre le MSP430 et le CC430).&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt; Questions difficiles évacuées. &amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt; Du matériel listé mais sans référence.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P12 [[IMA4 2017/2018 P12|Système d'ostéophonie pour magicien]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Un peu rapide, exercice réalisé. &amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Pas d'analyse de la concurrence. Peu d'effort de rédaction. Des coquilles. Une réponse rapide à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt; Du matériel listé mais pas forcément exhaustif et sans référence valide.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P14 [[IMA4 2017/2018 P14|Ecran géant modulaire]]&lt;br /&gt;
| Doublant&lt;br /&gt;
| Doublant&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Page Wiki vide, pas de liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P15 [[IMA4 2017/2018 P15|Balle vibrante connectée pour enfants sourd]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Présentation acceptable mais avec des supports non soignés. Pas d'analyse de la concurrence, pas de scénario d'usage.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;L'analyse de la concurrence et le scénario d'usage ont été ajoutés. Par contre pas de réponse aux questions difficiles &amp;quot;quelle sera l'autonomie de la balle et quel sera le système de rechargement ?&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Pas de liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P16 [[IMA4 2017/2018 P16|Sous-chaussure chauffante pour docker]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Présentation acceptable mais avec des supports non soignés. Trouver des concurrents indirects. Une histoire mais pas de scénario d'usage.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Page Wiki modifiée après la présentation. Une réponse incomplète à la question difficile. Trop de coquilles pour ce niveau d'études.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Pas de liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P17 [[IMA4 2017/2018 P17|Safe Watch]]&lt;br /&gt;
| Doublant&lt;br /&gt;
| Doublant&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune modification de la page Wiki depuis début octobre.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P18 [[IMA4 2017/2018 P18|Mandala électronique]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Supports très textuels, pas de scénario d'usage mais une rédaction sur l'intérêt psychologique, pas vraiment de partie &amp;quot;concurrents&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Un effort pour trouver des &amp;quot;concurrents&amp;quot;, pas de réponses aux questions difficiles &amp;quot;combien de LEDs ? quelle alimentation pour quelle autonomie&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Pas de liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P19 [[IMA4 2017/2018 P19|Bijou électronique]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Bonne présentation orale. Utilisation du bluetooth peu convainquant. Pas de scénario d'usage. Un &amp;quot;concurrent&amp;quot; trouvé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Concept de scénario d'usage non compris. Une réponse à la question difficile très rapide et non convaincante.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Une liste de matériel dans la page Wiki mais à insérer dans le tableau en bas de la page principale. Pas de référence (voir sur la page de l'an passé).&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P20 [[IMA4 2017/2018 P20|Solution de messagerie à base de conteneurs]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Support assez corrects, sujet non entièrement compris, scénario d'usage minimal.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Un problème dans le scénario d'usage : les conteneurs doivent être lancés sur un serveur. Une réponse acceptable à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas de matériel particulier.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P22 [[IMA4 2017/2018 P22|Horloge numérique DCF77, serveur de temps et ludique]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Analyse très correcte.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P23 [[IMA4 2017/2018 P23|Table de bar connectée]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Présentation trop impécise, pas vraiment de scénario d'usage. Par contre des concurrents ont été présentés.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Un scénario d'usage éloigné de la future utilisation. Trop de coquilles dans ce scénario. Réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Une liste du matériel mais pas dans la page principale. Pas de référence (voir page de l'an passé).&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P25 [[IMA4 2017/2018 P25|Essaim de robots]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Analyse très correcte. Un concurrent assez peu en rapport avec les essaims de robots mais dans la ligne des dispositifs de déminage.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas de question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Liste du matériel. Préciser pour le chassis.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P30 [[IMA4 2017/2018 P30|Contrôle d'une caméra WiFi.]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Objectif mal expliqué. Exercice réalisé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Mieux définir l'objectif suite à la visite en entreprise. Pas de réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P32 [[IMA4 2017/2018 P32|Tribute to Peter Vogel]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Excellente présentation et excellent travail préparatoire, Scénario d'usage à préciser, trouver des concurrents.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P35 [[IMA4 2017/2018 P35|Manette de jeu vidéo pour personne en situation de handicap]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Exercice réussi. Cependant précisez les acteurs dans le scénario d'usage.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Pas de modification du scénario. Pas de réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Rien à redire sur la liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P39 [[IMA4 2017/2018 P39|Musique des plantes]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Analyse très correcte.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Réponses aux questions difficiles.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P40 [[IMA4 2017/2018 P40|Exploration du réseau d'anonymisation Tor]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Sujet se prêtant peu à l'exercice mais très bonne présentation. Sujet travaillé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas vraiment de question, la suggestion est noté dans la page Wiki.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas de matériel à commander.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P42 [[IMA4 2017/2018 P42|Automatisation de l'assemblage de LEGO]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Analyse très correcte.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Pas de réponse aux questions difficiles &amp;quot;Comment démarrer l'imprimante à distance ? Comment sera calibrée la plaque d’impression ?&lt;br /&gt;
Comment la plaque va se fixer sur le sol ? &amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P44 [[IMA4 2017/2018 P44|Reconnaissance d’objets via Traitement d’image]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Le projet ne semble pas encore avoir été sérieusement étudié.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Net effort de documentation de la page Wiki. Pas de réponse directe à la question difficile sur la Kinect mais une discussion sur le problème posé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P49 [[IMA4 2017/2018 P49|Suivi de la qualité de l’air]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Contexte mal présenté, sujet flou. Scénario d'usage à préciser. Pas de contact avec les encadrants avant la présentation.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Page de Wiki vide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P50 [[IMA4 2017/2018 P50|Etage commande de Centaure]]&lt;br /&gt;
| Doublant&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Page de Wiki assez vide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P60 [[IMA4 2017/2018 P60|Commande de niveaux d’eau]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Présentation très correcte.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Pas de réponse à la question difficile. Page Wiki un peu vide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas de matériel à commander.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P64 [[IMA4 2017/2018 P64|Simulation Labview et mise en réseau Modbus d’un ascenseur]]&lt;br /&gt;
| Doublant&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Wiki avec quelques informations sur le travail accompli depuis fin novembre : étude sur modbus et labview. Quelques coquilles.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P65 [[IMA4 2017/2018 P65|Exosquelette pour apprentissage]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Présentation sans support. Trouver des concurrents indirects. Pas de scénario d'usage.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Page Wiki vide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P66 [[IMA4 2017/2018 P66|Coupe de France de robotique]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Analyse très correcte.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Page Wiki bien tenue. Ajoutez des illustrations.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Quelques éléments sur le matériel dans la page Wiki mais aucune liste avec références.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P67 [[IMA4 2017/2018 P67|Scanner 3D DIY]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Exercice bien réalisé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Page Wiki très complète. Ajoutez des illustrations.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Une liste probablement pas exhaustive.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P68 [[IMA4 2017/2018 P68|Générateur de chronogrammes d'ordonnancement]]&lt;br /&gt;
| Doublant&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Page Wiki vide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas de matériel à commander.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| PP1 [[IMA4 2017/2018 Pré-projet 1|Robot hexapode pour escalier]]&lt;br /&gt;
| Erasmus &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Fiche de présence ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Projet !! Elèves !! Séance 1 (17/01) !! Séance 2 (24/01) !! Séance 3 (31/01) !! Séance 4 (7/02) !! Séance 5 (14/02) !! Séance 6 (21/02) !! Séance 7 (7/03) !! Séance 8 (14/03) !! Séance 9 (21/03) !! Séance 10 (28/03) !! Séance 11 (4/04) !! Séance 12 (11/04) !! Séance 13 (18/04)&lt;br /&gt;
|-&lt;br /&gt;
| P1 [[IMA4 2017/2018 P1|Automatisation de la production de bière]]&lt;br /&gt;
|-&lt;br /&gt;
| P3 [[IMA4 2017/2018 P3|Sécurisation de l'Internet des Objets par surveillance globale]]&lt;br /&gt;
|-&lt;br /&gt;
| P4 [[IMA4 2017/2018 P4|Développement d'un module d'énergie pour Internet des Objets]]&lt;br /&gt;
|Viscogliosi Alexis/ Ayoub Abass&lt;br /&gt;
|C001&lt;br /&gt;
|C001&lt;br /&gt;
|-&lt;br /&gt;
| P5 [[IMA4 2017/2018 P5|Réseau de capteurs de pollution]]&lt;br /&gt;
|Ribeiro Paul/Naïf Mehanna&lt;br /&gt;
|E303&lt;br /&gt;
|E301&lt;br /&gt;
|-&lt;br /&gt;
| P6 [[IMA4 2017/2018 P6|Réseau LoRaWAN]]&lt;br /&gt;
| GOSSE Antoine&lt;br /&gt;
| E306 &amp;lt;br/&amp;gt;&amp;lt;font style=&amp;quot;color: lightgreen;&amp;quot;&amp;gt;Présent&amp;lt;/font&amp;gt;&lt;br /&gt;
| E306 &amp;lt;br/&amp;gt;&amp;lt;font style=&amp;quot;color: lightgreen;&amp;quot;&amp;gt;Présent&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P7 [[IMA4 2017/2018 P7|Brique pour apprentissage informatique]]&lt;br /&gt;
|-&lt;br /&gt;
| P10 [[IMA4 2017/2018 P10|Portage de RIOT-OS sur MSP430 pour IOT]]&lt;br /&gt;
|-&lt;br /&gt;
| P12 [[IMA4 2017/2018 P12|Système d'ostéophonie pour magicien]]&lt;br /&gt;
| El Messaoudi Amine / Feutrier Simon&lt;br /&gt;
| E301&lt;br /&gt;
| C201&lt;br /&gt;
|-&lt;br /&gt;
| P14 [[IMA4 2017/2018 P14|Ecran géant modulaire]]&lt;br /&gt;
|DUPONT Jade&lt;br /&gt;
|E304 &lt;br /&gt;
|E304 &lt;br /&gt;
|-&lt;br /&gt;
| P15 [[IMA4 2017/2018 P15|Balle vibrante connectée pour enfants sourd]]&lt;br /&gt;
| CUNIN Thomas / CATTELAIN Thibault&lt;br /&gt;
| E304&lt;br /&gt;
| B306/E304&lt;br /&gt;
|-&lt;br /&gt;
| P16 [[IMA4 2017/2018 P16|Sous-chaussure chauffante pour docker]]&lt;br /&gt;
| Mairesse Rémi / Roux Gustave&lt;br /&gt;
| E304&lt;br /&gt;
| E301&lt;br /&gt;
|-&lt;br /&gt;
| P17 [[IMA4 2017/2018 P17|Safe Watch]]&lt;br /&gt;
|NAANAA Oumaima&lt;br /&gt;
|E302 &amp;lt;br/&amp;gt;&amp;lt;font style=&amp;quot;color: lightgreen;&amp;quot;&amp;gt;Présente&amp;lt;/font&amp;gt;&lt;br /&gt;
|E304 &amp;lt;br/&amp;gt;&amp;lt;font style=&amp;quot;color: lightgreen;&amp;quot;&amp;gt;Présente&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P18 [[IMA4 2017/2018 P18|Mandala électronique]]&lt;br /&gt;
|-&lt;br /&gt;
| P19 [[IMA4 2017/2018 P19|Bijou électronique]]&lt;br /&gt;
|-&lt;br /&gt;
| P20 [[IMA4 2017/2018 P20|Solution de messagerie à base de conteneurs]]&lt;br /&gt;
|-&lt;br /&gt;
| P22 [[IMA4 2017/2018 P22|Horloge numérique DCF77, serveur de temps et ludique]]&lt;br /&gt;
| Knockaert Amaury / Taingland Fabrice&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
|-&lt;br /&gt;
| P23 [[IMA4 2017/2018 P23|Table de bar connectée]]&lt;br /&gt;
| DELOBELLE Matthieu&lt;br /&gt;
| E306 &amp;lt;br/&amp;gt;&amp;lt;font style=&amp;quot;color: lightgreen;&amp;quot;&amp;gt;Présent&amp;lt;/font&amp;gt;&lt;br /&gt;
| E306 &amp;lt;br/&amp;gt;&amp;lt;font style=&amp;quot;color: lightgreen;&amp;quot;&amp;gt;Présent&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P25 [[IMA4 2017/2018 P25|Essaim de robots]]&lt;br /&gt;
| CANU Benjamin / ETCHEGUIBEL Ganix&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
|-&lt;br /&gt;
| P30 [[IMA4 2017/2018 P30|Contrôle d'une caméra WiFi.]]&lt;br /&gt;
|-&lt;br /&gt;
| P32 [[IMA4 2017/2018 P32|Tribute to Peter Vogel]]&lt;br /&gt;
|-&lt;br /&gt;
| P35 [[IMA4 2017/2018 P35|Manette de jeu vidéo pour personne en situation de handicap]]&lt;br /&gt;
| Gracias Transley/ Saad Camille&lt;br /&gt;
| E306 &amp;lt;br/&amp;gt;&amp;lt;font style=&amp;quot;color: lightgreen;&amp;quot;&amp;gt;Présents&amp;lt;/font&amp;gt;&lt;br /&gt;
| E306 &amp;lt;br/&amp;gt;&amp;lt;font style=&amp;quot;color: lightgreen;&amp;quot;&amp;gt;Présents&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P39 [[IMA4 2017/2018 P39|Musique des plantes]]&lt;br /&gt;
| CHENOT Xavier / TOIN Rodolphe&lt;br /&gt;
| E306 &amp;lt;br/&amp;gt;&amp;lt;font style=&amp;quot;color: lightgreen;&amp;quot;&amp;gt;Présents&amp;lt;/font&amp;gt;&lt;br /&gt;
| E306 &amp;lt;br/&amp;gt;&amp;lt;font style=&amp;quot;color: lightgreen;&amp;quot;&amp;gt;Présents&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P40 [[IMA4 2017/2018 P40|Exploration du réseau d'anonymisation Tor]]&lt;br /&gt;
| Antoine Duquenoy / Anthony Durot&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
|-&lt;br /&gt;
| P42 [[IMA4 2017/2018 P42|Automatisation de l'assemblage de LEGO]]&lt;br /&gt;
|Eloi Zalczer/Justine Senellart&lt;br /&gt;
|E302/E306&lt;br /&gt;
|E302/E306&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| P44 [[IMA4 2017/2018 P44|Reconnaissance d’objets via Traitement d’image]]&lt;br /&gt;
|-&lt;br /&gt;
| P49 [[IMA4 2017/2018 P49|Suivi de la qualité de l’air]]&lt;br /&gt;
| DELBROUCQ Hugo &amp;amp; HAVARD Nicolas &lt;br /&gt;
| E301&lt;br /&gt;
| INRIA&lt;br /&gt;
|-&lt;br /&gt;
| P50 [[IMA4 2017/2018 P50|Etage commande de Centaure]]&lt;br /&gt;
|-&lt;br /&gt;
| P60 [[IMA4 2017/2018 P60|Commande de niveaux d’eau]]&lt;br /&gt;
|-&lt;br /&gt;
| P64 [[IMA4 2017/2018 P64|Simulation Labview et mise en réseau Modbus d’un ascenseur]]&lt;br /&gt;
|-&lt;br /&gt;
| P65 [[IMA4 2017/2018 P65|Exosquelette pour apprentissage]]&lt;br /&gt;
| Le Foll Florian&lt;br /&gt;
| E301&lt;br /&gt;
| E301&lt;br /&gt;
|-&lt;br /&gt;
| P66 [[IMA4 2017/2018 P66|Coupe de France de robotique]]&lt;br /&gt;
|-&lt;br /&gt;
| P67 [[IMA4 2017/2018 P67|Scanner 3D DIY]]&lt;br /&gt;
| Erwan Dufresne&lt;br /&gt;
| E302/E306&lt;br /&gt;
| E301&lt;br /&gt;
|-&lt;br /&gt;
| P68 [[IMA4 2017/2018 P68|Générateur de chronogrammes d'ordonnancement]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=Discussion:Projets_IMA4_SC_%26_SA_2017/2018&amp;diff=48973</id>
		<title>Discussion:Projets IMA4 SC &amp; SA 2017/2018</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=Discussion:Projets_IMA4_SC_%26_SA_2017/2018&amp;diff=48973"/>
				<updated>2018-01-24T18:24:24Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : /* Fiche de présence */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==  Notes sur les projets ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Projet || Analyse du projet || Retour sur l'analyse || Matériel || Mi-parcours || Wiki terminé || Rapport || Vidéo&lt;br /&gt;
|-&lt;br /&gt;
| P1 [[IMA4 2017/2018 P1|Automatisation de la production de bière]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Présentation sans supports, bonne analyse de la concurrence. Par contre le scénario d'usage est à revoir en précisant l'usage pour le particulier.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Le scénario est précisé mais aucune réponse aux questions difficiles &amp;quot;gestion des températures et procédure d'entretien&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Rien.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P3 [[IMA4 2017/2018 P3|Sécurisation de l'Internet des Objets par surveillance globale]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Présentation focalisée sur les réseaux de neurones. Exercice mal compris (pas d'introduction du contexte, pas de scénario d'usage).&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Toujours pas d'analyse de la concurrence, ni de scénario d'usage. Pas de réponse aux questions difficiles &amp;quot;quel est le matériel ? quel est le protocole ? quelles sont les entrées du réseau de neurones ?&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Une liste mais il manque des références vers les fournisseurs agréés (voir page de l'an dernier).&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P4 [[IMA4 2017/2018 P4|Développement d'un module d'énergie pour Internet des Objets]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Exercice correctement réalisé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Pas de réponse aux questions difficiles &amp;quot;Architecture de la source d'énergie (nombre de chemins d'énergie ?)&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Rien.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| P5 [[IMA4 2017/2018 P5|Réseau de capteurs de pollution]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt; Présentation focalisée sur la création du site Web. Effort fait pour rédiger un scénario d'usage.&amp;lt;/font&amp;gt; &lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt; Réponses aux questions mais l'analyse de la consommation est imprécise. &amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt; Du matériel listé dans la page Wiki mais à reporter en bas de la page des projets de cette année avec des références valides.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P6 [[IMA4 2017/2018 P6|Réseau LoRaWAN]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Exercice correctement réalisé. Scénario d'usage à préciser sur la partie réseau de capteurs.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt; Scénario d'usage non précisé. Pas de réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt; Du matériel listé mais sans référence, êtes-vous sur que le matériel n'a pas besoin d'être acheté ?&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P7 [[IMA4 2017/2018 P7|Brique pour apprentissage informatique]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt; Pas de support. Exercice très bien réalisé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Pas de réponse aux questions difficiles &amp;quot;quelle alimentation ? comment faire pour différencier les briques ? comment les briques vont-elles communiquer ? quelle sécurité vis-à-vis des enfants ?&amp;quot;&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Pas de liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P10 [[IMA4 2017/2018 P10|Portage de RIOT-OS sur MSP430 pour IOT]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt; Rien à signaler (juste une confusion entre le MSP430 et le CC430).&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt; Questions difficiles évacuées. &amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt; Du matériel listé mais sans référence.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P12 [[IMA4 2017/2018 P12|Système d'ostéophonie pour magicien]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Un peu rapide, exercice réalisé. &amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Pas d'analyse de la concurrence. Peu d'effort de rédaction. Des coquilles. Une réponse rapide à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt; Du matériel listé mais pas forcément exhaustif et sans référence valide.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P14 [[IMA4 2017/2018 P14|Ecran géant modulaire]]&lt;br /&gt;
| Doublant&lt;br /&gt;
| Doublant&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Page Wiki vide, pas de liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P15 [[IMA4 2017/2018 P15|Balle vibrante connectée pour enfants sourd]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Présentation acceptable mais avec des supports non soignés. Pas d'analyse de la concurrence, pas de scénario d'usage.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;L'analyse de la concurrence et le scénario d'usage ont été ajoutés. Par contre pas de réponse aux questions difficiles &amp;quot;quelle sera l'autonomie de la balle et quel sera le système de rechargement ?&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Pas de liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P16 [[IMA4 2017/2018 P16|Sous-chaussure chauffante pour docker]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Présentation acceptable mais avec des supports non soignés. Trouver des concurrents indirects. Une histoire mais pas de scénario d'usage.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Page Wiki modifiée après la présentation. Une réponse incomplète à la question difficile. Trop de coquilles pour ce niveau d'études.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Pas de liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P17 [[IMA4 2017/2018 P17|Safe Watch]]&lt;br /&gt;
| Doublant&lt;br /&gt;
| Doublant&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune modification de la page Wiki depuis début octobre.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P18 [[IMA4 2017/2018 P18|Mandala électronique]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Supports très textuels, pas de scénario d'usage mais une rédaction sur l'intérêt psychologique, pas vraiment de partie &amp;quot;concurrents&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Un effort pour trouver des &amp;quot;concurrents&amp;quot;, pas de réponses aux questions difficiles &amp;quot;combien de LEDs ? quelle alimentation pour quelle autonomie&amp;quot;.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt; Pas de liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P19 [[IMA4 2017/2018 P19|Bijou électronique]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Bonne présentation orale. Utilisation du bluetooth peu convainquant. Pas de scénario d'usage. Un &amp;quot;concurrent&amp;quot; trouvé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Concept de scénario d'usage non compris. Une réponse à la question difficile très rapide et non convaincante.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Une liste de matériel dans la page Wiki mais à insérer dans le tableau en bas de la page principale. Pas de référence (voir sur la page de l'an passé).&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P20 [[IMA4 2017/2018 P20|Solution de messagerie à base de conteneurs]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Support assez corrects, sujet non entièrement compris, scénario d'usage minimal.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Un problème dans le scénario d'usage : les conteneurs doivent être lancés sur un serveur. Une réponse acceptable à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas de matériel particulier.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P22 [[IMA4 2017/2018 P22|Horloge numérique DCF77, serveur de temps et ludique]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Analyse très correcte.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P23 [[IMA4 2017/2018 P23|Table de bar connectée]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Présentation trop impécise, pas vraiment de scénario d'usage. Par contre des concurrents ont été présentés.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Un scénario d'usage éloigné de la future utilisation. Trop de coquilles dans ce scénario. Réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Une liste du matériel mais pas dans la page principale. Pas de référence (voir page de l'an passé).&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P25 [[IMA4 2017/2018 P25|Essaim de robots]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Analyse très correcte. Un concurrent assez peu en rapport avec les essaims de robots mais dans la ligne des dispositifs de déminage.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas de question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Liste du matériel. Préciser pour le chassis.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P30 [[IMA4 2017/2018 P30|Contrôle d'une caméra WiFi.]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Objectif mal expliqué. Exercice réalisé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Mieux définir l'objectif suite à la visite en entreprise. Pas de réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P32 [[IMA4 2017/2018 P32|Tribute to Peter Vogel]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Excellente présentation et excellent travail préparatoire, Scénario d'usage à préciser, trouver des concurrents.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P35 [[IMA4 2017/2018 P35|Manette de jeu vidéo pour personne en situation de handicap]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Exercice réussi. Cependant précisez les acteurs dans le scénario d'usage.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Pas de modification du scénario. Pas de réponse à la question difficile.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Rien à redire sur la liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P39 [[IMA4 2017/2018 P39|Musique des plantes]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Analyse très correcte.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Réponses aux questions difficiles.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P40 [[IMA4 2017/2018 P40|Exploration du réseau d'anonymisation Tor]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Sujet se prêtant peu à l'exercice mais très bonne présentation. Sujet travaillé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas vraiment de question, la suggestion est noté dans la page Wiki.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas de matériel à commander.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P42 [[IMA4 2017/2018 P42|Automatisation de l'assemblage de LEGO]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Analyse très correcte.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Pas de réponse aux questions difficiles &amp;quot;Comment démarrer l'imprimante à distance ? Comment sera calibrée la plaque d’impression ?&lt;br /&gt;
Comment la plaque va se fixer sur le sol ? &amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P44 [[IMA4 2017/2018 P44|Reconnaissance d’objets via Traitement d’image]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: orange;&amp;quot;&amp;gt;Le projet ne semble pas encore avoir été sérieusement étudié.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Net effort de documentation de la page Wiki. Pas de réponse directe à la question difficile sur la Kinect mais une discussion sur le problème posé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P49 [[IMA4 2017/2018 P49|Suivi de la qualité de l’air]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Contexte mal présenté, sujet flou. Scénario d'usage à préciser. Pas de contact avec les encadrants avant la présentation.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Page de Wiki vide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P50 [[IMA4 2017/2018 P50|Etage commande de Centaure]]&lt;br /&gt;
| Doublant&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Page de Wiki assez vide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P60 [[IMA4 2017/2018 P60|Commande de niveaux d’eau]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Présentation très correcte.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Pas de réponse à la question difficile. Page Wiki un peu vide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas de matériel à commander.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P64 [[IMA4 2017/2018 P64|Simulation Labview et mise en réseau Modbus d’un ascenseur]]&lt;br /&gt;
| Doublant&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Wiki avec quelques informations sur le travail accompli depuis fin novembre : étude sur modbus et labview. Quelques coquilles.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P65 [[IMA4 2017/2018 P65|Exosquelette pour apprentissage]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Présentation sans support. Trouver des concurrents indirects. Pas de scénario d'usage.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Page Wiki vide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Aucune liste de matériel.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P66 [[IMA4 2017/2018 P66|Coupe de France de robotique]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Analyse très correcte.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Page Wiki bien tenue. Ajoutez des illustrations.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: yellow; background-color: grey;&amp;quot;&amp;gt;Quelques éléments sur le matériel dans la page Wiki mais aucune liste avec références.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P67 [[IMA4 2017/2018 P67|Scanner 3D DIY]]&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Exercice bien réalisé.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Page Wiki très complète. Ajoutez des illustrations.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: lightgreen; background-color: grey;&amp;quot;&amp;gt;Une liste probablement pas exhaustive.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| P68 [[IMA4 2017/2018 P68|Générateur de chronogrammes d'ordonnancement]]&lt;br /&gt;
| Doublant&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: red;&amp;quot;&amp;gt;Page Wiki vide.&amp;lt;/font&amp;gt;&lt;br /&gt;
| &amp;lt;font style=&amp;quot;color: green;&amp;quot;&amp;gt;Pas de matériel à commander.&amp;lt;/font&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| PP1 [[IMA4 2017/2018 Pré-projet 1|Robot hexapode pour escalier]]&lt;br /&gt;
| Erasmus &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Fiche de présence ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Projet !! Elèves !! Séance 1 (17/01) !! Séance 2 (24/01) !! Séance 3 (31/01) !! Séance 4 (7/02) !! Séance 5 (14/02) !! Séance 6 (21/02) !! Séance 7 (7/03) !! Séance 8 (14/03) !! Séance 9 (21/03) !! Séance 10 (28/03) !! Séance 11 (4/04) !! Séance 12 (11/04) !! Séance 13 (18/04)&lt;br /&gt;
|-&lt;br /&gt;
| P1 [[IMA4 2017/2018 P1|Automatisation de la production de bière]]&lt;br /&gt;
|-&lt;br /&gt;
| P3 [[IMA4 2017/2018 P3|Sécurisation de l'Internet des Objets par surveillance globale]]&lt;br /&gt;
|-&lt;br /&gt;
| P4 [[IMA4 2017/2018 P4|Développement d'un module d'énergie pour Internet des Objets]]&lt;br /&gt;
|Viscogliosi Alexis/ Ayoub Abass&lt;br /&gt;
|C001&lt;br /&gt;
|C001&lt;br /&gt;
|-&lt;br /&gt;
| P5 [[IMA4 2017/2018 P5|Réseau de capteurs de pollution]]&lt;br /&gt;
|Ribeiro Paul/Naïf Mehanna&lt;br /&gt;
|E303&lt;br /&gt;
|E301&lt;br /&gt;
|-&lt;br /&gt;
| P6 [[IMA4 2017/2018 P6|Réseau LoRaWAN]]&lt;br /&gt;
| GOSSE Antoine&lt;br /&gt;
| E306 &amp;lt;br/&amp;gt;&amp;lt;font style=&amp;quot;color: lightgreen;&amp;quot;&amp;gt;Présent&amp;lt;/font&amp;gt;&lt;br /&gt;
| E306 &amp;lt;br/&amp;gt;&amp;lt;font style=&amp;quot;color: lightgreen;&amp;quot;&amp;gt;Présent&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P7 [[IMA4 2017/2018 P7|Brique pour apprentissage informatique]]&lt;br /&gt;
|-&lt;br /&gt;
| P10 [[IMA4 2017/2018 P10|Portage de RIOT-OS sur MSP430 pour IOT]]&lt;br /&gt;
|-&lt;br /&gt;
| P12 [[IMA4 2017/2018 P12|Système d'ostéophonie pour magicien]]&lt;br /&gt;
| El Messaoudi Amine / Feutrier Simon&lt;br /&gt;
| E301&lt;br /&gt;
| C201&lt;br /&gt;
|-&lt;br /&gt;
| P14 [[IMA4 2017/2018 P14|Ecran géant modulaire]]&lt;br /&gt;
|DUPONT Jade&lt;br /&gt;
|E304 &amp;lt;br/&amp;gt;&amp;lt;font style=&amp;quot;color: lightgreen;&amp;quot;&amp;gt;Présente&amp;lt;/font&amp;gt;&lt;br /&gt;
|E304 &amp;lt;br/&amp;gt;&amp;lt;font style=&amp;quot;color: lightgreen;&amp;quot;&amp;gt;Présente&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P15 [[IMA4 2017/2018 P15|Balle vibrante connectée pour enfants sourd]]&lt;br /&gt;
| CUNIN Thomas / CATTELAIN Thibault&lt;br /&gt;
| E304&lt;br /&gt;
| B306/E304&lt;br /&gt;
|-&lt;br /&gt;
| P16 [[IMA4 2017/2018 P16|Sous-chaussure chauffante pour docker]]&lt;br /&gt;
| Mairesse Rémi / Roux Gustave&lt;br /&gt;
| E304&lt;br /&gt;
| E301&lt;br /&gt;
|-&lt;br /&gt;
| P17 [[IMA4 2017/2018 P17|Safe Watch]]&lt;br /&gt;
|NAANAA Oumaima&lt;br /&gt;
|E302 &amp;lt;br/&amp;gt;&amp;lt;font style=&amp;quot;color: lightgreen;&amp;quot;&amp;gt;Présente&amp;lt;/font&amp;gt;&lt;br /&gt;
|E304 &amp;lt;br/&amp;gt;&amp;lt;font style=&amp;quot;color: lightgreen;&amp;quot;&amp;gt;Présente&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P18 [[IMA4 2017/2018 P18|Mandala électronique]]&lt;br /&gt;
|-&lt;br /&gt;
| P19 [[IMA4 2017/2018 P19|Bijou électronique]]&lt;br /&gt;
|-&lt;br /&gt;
| P20 [[IMA4 2017/2018 P20|Solution de messagerie à base de conteneurs]]&lt;br /&gt;
|-&lt;br /&gt;
| P22 [[IMA4 2017/2018 P22|Horloge numérique DCF77, serveur de temps et ludique]]&lt;br /&gt;
| Knockaert Amaury / Taingland Fabrice&lt;br /&gt;
| E304&lt;br /&gt;
| E304&lt;br /&gt;
|-&lt;br /&gt;
| P23 [[IMA4 2017/2018 P23|Table de bar connectée]]&lt;br /&gt;
| DELOBELLE Matthieu&lt;br /&gt;
| E306 &amp;lt;br/&amp;gt;&amp;lt;font style=&amp;quot;color: lightgreen;&amp;quot;&amp;gt;Présent&amp;lt;/font&amp;gt;&lt;br /&gt;
| E306 &amp;lt;br/&amp;gt;&amp;lt;font style=&amp;quot;color: lightgreen;&amp;quot;&amp;gt;Présent&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P25 [[IMA4 2017/2018 P25|Essaim de robots]]&lt;br /&gt;
| CANU Benjamin / ETCHEGUIBEL Ganix&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
|-&lt;br /&gt;
| P30 [[IMA4 2017/2018 P30|Contrôle d'une caméra WiFi.]]&lt;br /&gt;
|-&lt;br /&gt;
| P32 [[IMA4 2017/2018 P32|Tribute to Peter Vogel]]&lt;br /&gt;
|-&lt;br /&gt;
| P35 [[IMA4 2017/2018 P35|Manette de jeu vidéo pour personne en situation de handicap]]&lt;br /&gt;
| Gracias Transley/ Saad Camille&lt;br /&gt;
| E306 &amp;lt;br/&amp;gt;&amp;lt;font style=&amp;quot;color: lightgreen;&amp;quot;&amp;gt;Présents&amp;lt;/font&amp;gt;&lt;br /&gt;
| E306 &amp;lt;br/&amp;gt;&amp;lt;font style=&amp;quot;color: lightgreen;&amp;quot;&amp;gt;Présents&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P39 [[IMA4 2017/2018 P39|Musique des plantes]]&lt;br /&gt;
| CHENOT Xavier / TOIN Rodolphe&lt;br /&gt;
| E306 &amp;lt;br/&amp;gt;&amp;lt;font style=&amp;quot;color: lightgreen;&amp;quot;&amp;gt;Présents&amp;lt;/font&amp;gt;&lt;br /&gt;
| E306 &amp;lt;br/&amp;gt;&amp;lt;font style=&amp;quot;color: lightgreen;&amp;quot;&amp;gt;Présents&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| P40 [[IMA4 2017/2018 P40|Exploration du réseau d'anonymisation Tor]]&lt;br /&gt;
| Antoine Duquenoy / Anthony Durot&lt;br /&gt;
| E306&lt;br /&gt;
| E306&lt;br /&gt;
|-&lt;br /&gt;
| P42 [[IMA4 2017/2018 P42|Automatisation de l'assemblage de LEGO]]&lt;br /&gt;
|Eloi Zalczer/Justine Senellart&lt;br /&gt;
|E302/E306&lt;br /&gt;
|E302/E306&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| P44 [[IMA4 2017/2018 P44|Reconnaissance d’objets via Traitement d’image]]&lt;br /&gt;
|-&lt;br /&gt;
| P49 [[IMA4 2017/2018 P49|Suivi de la qualité de l’air]]&lt;br /&gt;
| DELBROUCQ Hugo &amp;amp; HAVARD Nicolas &lt;br /&gt;
| E301&lt;br /&gt;
| INRIA&lt;br /&gt;
|-&lt;br /&gt;
| P50 [[IMA4 2017/2018 P50|Etage commande de Centaure]]&lt;br /&gt;
|-&lt;br /&gt;
| P60 [[IMA4 2017/2018 P60|Commande de niveaux d’eau]]&lt;br /&gt;
|-&lt;br /&gt;
| P64 [[IMA4 2017/2018 P64|Simulation Labview et mise en réseau Modbus d’un ascenseur]]&lt;br /&gt;
|-&lt;br /&gt;
| P65 [[IMA4 2017/2018 P65|Exosquelette pour apprentissage]]&lt;br /&gt;
| Le Foll Florian&lt;br /&gt;
| E301&lt;br /&gt;
| E301&lt;br /&gt;
|-&lt;br /&gt;
| P66 [[IMA4 2017/2018 P66|Coupe de France de robotique]]&lt;br /&gt;
|-&lt;br /&gt;
| P67 [[IMA4 2017/2018 P67|Scanner 3D DIY]]&lt;br /&gt;
| Erwan Dufresne&lt;br /&gt;
| E302/E306&lt;br /&gt;
| E301&lt;br /&gt;
|-&lt;br /&gt;
| P68 [[IMA4 2017/2018 P68|Générateur de chronogrammes d'ordonnancement]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=48938</id>
		<title>IMA4 2017/2018 P14</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=48938"/>
				<updated>2018-01-24T17:37:16Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : /* Réalisation du Projet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
* '''Intitulé du projet''' : Proposer une solution permettant d'assembler des écrans de PC afin de créer un écran géant&lt;br /&gt;
&lt;br /&gt;
Le renouvellement de matériel informatique continu entraîne un nombre grandissant d'écrans d'ordinateur qui sont difficilement réutilisables compte tenu de leur petite taille. (17&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Afin de leur donner une seconde vie, ce projet a pour but de construire une plateforme permettant d'assembler ces écrans en un écran géant d'une forme &amp;quot;quelconque&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Exemple d'un cas d'écran carré'''&lt;br /&gt;
[[Fichier:Combinaison_ecrans.jpg]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
Afin de réaliser ce projet, il faudra :&lt;br /&gt;
&lt;br /&gt;
* Ajouter un Raspberry Pi sur chaque écran afin de le rentre &amp;quot;intelligent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Créer une application permettant de prendre un flux vidéo et de le diriger vers l'écran visé.&lt;br /&gt;
&lt;br /&gt;
* Permettre de déplacer facilement les écrans tout en maintenant le flux, que ce soit sur des configurations pleines en 2D ou des configurations plus complexes avec des espaces vides ou en 3D.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
* Le positionnement des écrans et la communication entre ces derniers.&lt;br /&gt;
&lt;br /&gt;
Pour une application telle qu'un écran géant composé de plusieurs écran, il est difficilement envisageable d'utiliser un système de coordonnées GPS pour repérer des écrans qui sont particulièrement proches les uns des autres. &lt;br /&gt;
En revanche il est tout à fait réaliste de penser à un système de capteurs de contact/proximité, disposés sur les bords des écrans pour leur permettre de s’emboîter puis il ne resterait qu'à exploiter les possibilités proposées par les Raspberry Pi ainsi qu'un système de coordonnées réalisé dans ce but pour déterminer où l'écran se situe par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
* La gestion du flux vidéo&lt;br /&gt;
&lt;br /&gt;
Le système sera potentiellement réalisé de sorte que chaque écran soit autonome dans son fonctionnement, une fois sa position relative déterminée au préalable.&lt;br /&gt;
En effet, pour le moment le problème était surtout dans le positionnement des écrans plus que dans la gestion du flux vidéo, à priori.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Est-ce que le système peut continuer de fonctionner si on retire l'un des écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pour pallier au problème d'un retrait d'écran, ou d'un disfonctionnement éventuel localisé, une solution possible est de fournir à chaque écran la totalité du flux vidéo.&lt;br /&gt;
Ceci permet dans un premier temps de s'affranchir d'un traitement vidéo avant distribution mais surtout que les autres écrans puissent fonctionner sans interruption due à un écran en particulier  &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Peut-il y avoir des décalages d'affichage entre les écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Malgré l'absence de possibilités de test pour le moment, on peut néanmoins supposer qu'il n'y ait pas de décalage. &lt;br /&gt;
Chaque écran va recevoir le flux vidéo puis en fonction du positionnement des écrans, et on pourra utiliser le système de coordonnées pour effectuer une &amp;quot;selection&amp;quot; sur la partie à afficher.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une configuration de 4 écrans en rectangle, il faudrait donc que l'écran inférieur gauche n'affiche que l'image correspondante jusqu'à la moitié, ensuite l'écran inférieur droit s'occuperait de l'affichage de la partie inférieure droite, etc&lt;br /&gt;
&lt;br /&gt;
En agrandissant le procédé à plus d'écrans, on trouve facilement une méthode de calcul.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet où il s'agira d'être capable de fournir une solution matérielle à la problématique, on s'orientera vers un prototype n'incluant que 4 écrans. Ceci permet à la fois d'éviter un encombrement matériel mais aussi .&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
* 5 Raspberry Pi 3 [https://fr.rs-online.com/web/p/processor-microcontroller-development-kits/8968660/?src=raspberrypi] lien 2 [https://www.mouser.fr/ProductDetail/Adafruit/3055?qs=sGAEpiMZZMuG6%2fXKM6MUaQgA7zSPt2LlznodoAe%252bkgk%3d]&lt;br /&gt;
&lt;br /&gt;
* Un Commutateur (5 Ports +)&lt;br /&gt;
&lt;br /&gt;
* 5 Câbles Ethernet&lt;br /&gt;
&lt;br /&gt;
* 4 Câbles VGA&lt;br /&gt;
&lt;br /&gt;
* 4 Adaptateur VGA-femelle vers HDMI-mâle&lt;br /&gt;
&lt;br /&gt;
* 16 [pack 25] Capteur de contact (1 par côté) [https://fr.rs-online.com/web/p/capteurs-proximites/7985273/] '''Envisagés pour la seconde partie du projet mais non validés pour le moment !'''&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
* 1) Régler le problème de la gestion du flux vidéo par le réseau ainsi qu'au niveau des Raspberry-Pi&lt;br /&gt;
&lt;br /&gt;
'''Hypothèse''': pour une configuration d'écran donnée, on suppose les écrans déjà intelligent et on dispose de leur emplacement relatif.&lt;br /&gt;
&lt;br /&gt;
* 2) Une fois la première version fonctionnelle, s'orienter vers la mise en place du système intelligent&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| Lundi 15/01/18 : 3h30&lt;br /&gt;
Mercredi 17/01/18 : 4h&lt;br /&gt;
| Mercredi 24/01/18 : 4h&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
===Lundi 15/01/18===&lt;br /&gt;
&lt;br /&gt;
* Première séance ayant pour but de synthétiser l'idée théorique souhaitée par le projet.&lt;br /&gt;
&lt;br /&gt;
On imagine un système d'ensemble d'écrans autonomes mais qui communiquent leur emplacement entre eux, dans le sens où il n'est pas nécessaire de reconfigurer à chaque modification sur l'emplacement des écrans.&lt;br /&gt;
&lt;br /&gt;
Le système est pour ainsi dire évolutif puisqu'à chaque modification, exemple: passage d'un écran géant de 2*2 à 2*3 ou 3*2 (ou plus), les affichages peuvent modifier la zone du flux vidéo à afficher afin de conserver une image sur la totalité des écrans.&lt;br /&gt;
&lt;br /&gt;
De ce fait on peut imaginer des structures plus complexes, cylindriques dans le cas d'un flux d'une caméra à 360° ou plus simplement pour des simulateurs où les écrans seraient inclinés sans pour autant décrire un cercle autour de l'utilisateur.&lt;br /&gt;
&lt;br /&gt;
Cependant, pour des raisons évidentes d'effectif, de temps il est nécessaire de se réduire à une solution moins ambitieuse mais néanmoins acceptable.&lt;br /&gt;
&lt;br /&gt;
===Mercredi 17/01/18===&lt;br /&gt;
&lt;br /&gt;
* Mise en place d'un cahier des charge réalisable dans le temps imparti par rapport à la réponse théorique que l'on souhaiterai apporter au problème.&lt;br /&gt;
&lt;br /&gt;
Suite aux raisons évoquées précédemment, nous allons donc nous orienter vers un système à échelle réduite que nous ferons évoluer progressivement.&lt;br /&gt;
&lt;br /&gt;
Comme prévu nous diffuserons le flux vidéo initial, ''envoyé par Ethernet par une Raspberry Pi à partir d'un fichier stocké sur une clé usb par exemple'', aux 4 Raspberry intégrées aux écrans via un switch donc également par Ethernet (le port HDMI des R-Pi étant uniquement une sortie)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous effectuerons ensuite grâce aux R-Pi la modification du flux en fonction des écrans servant à l'affichage avant de rediriger la partie du flux qui nous intéresse vers les écrans.&lt;br /&gt;
&lt;br /&gt;
*'''Remarque:''' Dans un premier temps, pour une configuration donnée et avec les emplacement des écrans connues, il s'agit uniquement de réaliser la conversion d'affichage.&lt;br /&gt;
&lt;br /&gt;
Le fait de rendre les écrans intelligents n'est cependant pas ignoré et viendra dans un second temps, le choix de la méthode à employer étant encore en suspend. Nous allons cependant effectuer des hypothèses avec des capteurs.&lt;br /&gt;
&lt;br /&gt;
* Soit X et Y les dimensions du flux vidéo&lt;br /&gt;
* Soit U,R,D,L les états des capteurs sur un écran donné (respectivement, Up, Right, Down, Left) (1 pour actifs, 0 pour inactif)&lt;br /&gt;
* Soit I,J les indices des écrans (I = 0/1 et J = 0/1)&lt;br /&gt;
* Soit nb_X et nb_Y respectivement le nombre d'écrans en fonction des coordonnées i.e les dimensions de notre écran géant&lt;br /&gt;
&lt;br /&gt;
La configuration d'écran est la suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma (I,J)'''&lt;br /&gt;
&lt;br /&gt;
0,1 ; 1,1&lt;br /&gt;
&lt;br /&gt;
0,0 ; 1,0&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quel que soit l'écran, le flux qu'il devra recevoir sera situé entre [X1,X2] et [Y1,Y2].&lt;br /&gt;
Évidemment ces valeurs de l'emplacement de l'écran&lt;br /&gt;
&lt;br /&gt;
* Y2 = Y * ( D||U ) * (I+1) / nb_Y&lt;br /&gt;
* Y1 = Y * D * I / nb_Y&lt;br /&gt;
* X1 = X * L * J / nb_X&lt;br /&gt;
* X2 = X * ( L||R ) * (J+1) / nb_X&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
===Mercredi 24/01/18===&lt;br /&gt;
Début de la gestion réseau du flux vidéo.&lt;br /&gt;
&lt;br /&gt;
Pour la partie théorique, nous allons donc procéder de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
Une Raspberry s'occupera de diffuser le flux sur le réseau via un commutateur. À partir d'un fichier vidéo interne.&lt;br /&gt;
&lt;br /&gt;
Les autres R-Pi disposeront d'un fichier de configuration qui contient les coordonnées à afficher en fonction de la position de l'écran, dans la première partie ce fichier sera directement implanté avec un contenu propre à chaque R-Pi mais dans la seconde il s'agira de les modifier automatiquement.&lt;br /&gt;
&lt;br /&gt;
Configuration eth0 sur la Raspberry pi : &lt;br /&gt;
iface eth0 inet static&lt;br /&gt;
address 192.168.1.&amp;lt;2+numero_rpi&amp;gt;&lt;br /&gt;
netmask 255.255.255.0&lt;br /&gt;
&lt;br /&gt;
On commencera par créer un fichier fifo pour faire la transmission entre nc et OMXplayer&lt;br /&gt;
&lt;br /&gt;
Lecture du réseau : nc -l -p &amp;lt;port&amp;gt; &amp;gt; /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
Affichage : omxplayer --win x1,y1,x2,y2 /dev/shm/video.fifo&lt;br /&gt;
&lt;br /&gt;
==Semaine 3==&lt;br /&gt;
&lt;br /&gt;
==Semaine 4==&lt;br /&gt;
&lt;br /&gt;
==Semaine 5==&lt;br /&gt;
&lt;br /&gt;
==Semaine 6==&lt;br /&gt;
&lt;br /&gt;
==Semaine 7==&lt;br /&gt;
&lt;br /&gt;
==Semaine 8==&lt;br /&gt;
&lt;br /&gt;
==Semaine 9==&lt;br /&gt;
&lt;br /&gt;
==Semaine 10==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=48816</id>
		<title>IMA4 2017/2018 P14</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=48816"/>
				<updated>2018-01-24T15:12:36Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : /* Choix techniques : matériel et logiciel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
* '''Intitulé du projet''' : Proposer une solution permettant d'assembler des écrans de PC afin de créer un écran géant&lt;br /&gt;
&lt;br /&gt;
Le renouvellement de matériel informatique continu entraîne un nombre grandissant d'écrans d'ordinateur qui sont difficilement réutilisables compte tenu de leur petite taille. (17&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Afin de leur donner une seconde vie, ce projet a pour but de construire une plateforme permettant d'assembler ces écrans en un écran géant d'une forme &amp;quot;quelconque&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Exemple d'un cas d'écran carré'''&lt;br /&gt;
[[Fichier:Combinaison_ecrans.jpg]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
Afin de réaliser ce projet, il faudra :&lt;br /&gt;
&lt;br /&gt;
* Ajouter un Raspberry Pi sur chaque écran afin de le rentre &amp;quot;intelligent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Créer une application permettant de prendre un flux vidéo et de le diriger vers l'écran visé.&lt;br /&gt;
&lt;br /&gt;
* Permettre de déplacer facilement les écrans tout en maintenant le flux, que ce soit sur des configurations pleines en 2D ou des configurations plus complexes avec des espaces vides ou en 3D.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
* Le positionnement des écrans et la communication entre ces derniers.&lt;br /&gt;
&lt;br /&gt;
Pour une application telle qu'un écran géant composé de plusieurs écran, il est difficilement envisageable d'utiliser un système de coordonnées GPS pour repérer des écrans qui sont particulièrement proches les uns des autres. &lt;br /&gt;
En revanche il est tout à fait réaliste de penser à un système de capteurs de contact/proximité, disposés sur les bords des écrans pour leur permettre de s’emboîter puis il ne resterait qu'à exploiter les possibilités proposées par les Raspberry Pi ainsi qu'un système de coordonnées réalisé dans ce but pour déterminer où l'écran se situe par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
* La gestion du flux vidéo&lt;br /&gt;
&lt;br /&gt;
Le système sera potentiellement réalisé de sorte que chaque écran soit autonome dans son fonctionnement, une fois sa position relative déterminée au préalable.&lt;br /&gt;
En effet, pour le moment le problème était surtout dans le positionnement des écrans plus que dans la gestion du flux vidéo, à priori.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Est-ce que le système peut continuer de fonctionner si on retire l'un des écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pour pallier au problème d'un retrait d'écran, ou d'un disfonctionnement éventuel localisé, une solution possible est de fournir à chaque écran la totalité du flux vidéo.&lt;br /&gt;
Ceci permet dans un premier temps de s'affranchir d'un traitement vidéo avant distribution mais surtout que les autres écrans puissent fonctionner sans interruption due à un écran en particulier  &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Peut-il y avoir des décalages d'affichage entre les écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Malgré l'absence de possibilités de test pour le moment, on peut néanmoins supposer qu'il n'y ait pas de décalage. &lt;br /&gt;
Chaque écran va recevoir le flux vidéo puis en fonction du positionnement des écrans, et on pourra utiliser le système de coordonnées pour effectuer une &amp;quot;selection&amp;quot; sur la partie à afficher.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une configuration de 4 écrans en rectangle, il faudrait donc que l'écran inférieur gauche n'affiche que l'image correspondante jusqu'à la moitié, ensuite l'écran inférieur droit s'occuperait de l'affichage de la partie inférieure droite, etc&lt;br /&gt;
&lt;br /&gt;
En agrandissant le procédé à plus d'écrans, on trouve facilement une méthode de calcul.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet où il s'agira d'être capable de fournir une solution matérielle à la problématique, on s'orientera vers un prototype n'incluant que 4 écrans. Ceci permet à la fois d'éviter un encombrement matériel mais aussi .&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
* 5 Raspberry Pi 3 [https://fr.rs-online.com/web/p/processor-microcontroller-development-kits/8968660/?src=raspberrypi] lien 2 [https://www.mouser.fr/ProductDetail/Adafruit/3055?qs=sGAEpiMZZMuG6%2fXKM6MUaQgA7zSPt2LlznodoAe%252bkgk%3d]&lt;br /&gt;
&lt;br /&gt;
* Un Commutateur (5 Ports +)&lt;br /&gt;
&lt;br /&gt;
* 5 Câbles Ethernet&lt;br /&gt;
&lt;br /&gt;
* 4 Câbles VGA&lt;br /&gt;
&lt;br /&gt;
* 4 Adaptateur VGA-femelle vers HDMI-mâle&lt;br /&gt;
&lt;br /&gt;
* 16 [pack 25] Capteur de contact (1 par côté) [https://fr.rs-online.com/web/p/capteurs-proximites/7985273/] '''Envisagés pour la seconde partie du projet mais non validés pour le moment !'''&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
* 1) Régler le problème de la gestion du flux vidéo par le réseau ainsi qu'au niveau des Raspberry-Pi&lt;br /&gt;
&lt;br /&gt;
'''Hypothèse''': pour une configuration d'écran donnée, on suppose les écrans déjà intelligent et on dispose de leur emplacement relatif.&lt;br /&gt;
&lt;br /&gt;
* 2) Une fois la première version fonctionnelle, s'orienter vers la mise en place du système intelligent&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| Lundi 15/01/18 : 3h30&lt;br /&gt;
Mercredi 17/01/18 : 4h&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
===Lundi 15/01/18===&lt;br /&gt;
&lt;br /&gt;
* Première séance ayant pour but de synthétiser l'idée théorique souhaitée par le projet.&lt;br /&gt;
&lt;br /&gt;
On imagine un système d'ensemble d'écrans autonomes mais qui communiquent leur emplacement entre eux, dans le sens où il n'est pas nécessaire de reconfigurer à chaque modification sur l'emplacement des écrans.&lt;br /&gt;
&lt;br /&gt;
Le système est pour ainsi dire évolutif puisqu'à chaque modification, exemple: passage d'un écran géant de 2*2 à 2*3 ou 3*2 (ou plus), les affichages peuvent modifier la zone du flux vidéo à afficher afin de conserver une image sur la totalité des écrans.&lt;br /&gt;
&lt;br /&gt;
De ce fait on peut imaginer des structures plus complexes, cylindriques dans le cas d'un flux d'une caméra à 360° ou plus simplement pour des simulateurs où les écrans seraient inclinés sans pour autant décrire un cercle autour de l'utilisateur.&lt;br /&gt;
&lt;br /&gt;
Cependant, pour des raisons évidentes d'effectif, de temps il est nécessaire de se réduire à une solution moins ambitieuse mais néanmoins acceptable.&lt;br /&gt;
&lt;br /&gt;
===Mercredi 17/01/18===&lt;br /&gt;
&lt;br /&gt;
* Mise en place d'un cahier des charge réalisable dans le temps imparti par rapport à la réponse théorique que l'on souhaiterai apporter au problème.&lt;br /&gt;
&lt;br /&gt;
Suite aux raisons évoquées précédemment, nous allons donc nous orienter vers un système à échelle réduite que nous ferons évoluer progressivement.&lt;br /&gt;
&lt;br /&gt;
Comme prévu nous diffuserons le flux vidéo initial, ''envoyé par Ethernet par une Raspberry Pi à partir d'un fichier stocké sur une clé usb par exemple'', aux 4 Raspberry intégrées aux écrans via un switch donc également par Ethernet (le port HDMI des R-Pi étant uniquement une sortie)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous effectuerons ensuite grâce aux R-Pi la modification du flux en fonction des écrans servant à l'affichage avant de rediriger la partie du flux qui nous intéresse vers les écrans.&lt;br /&gt;
&lt;br /&gt;
*'''Remarque:''' Dans un premier temps, pour une configuration donnée et avec les emplacement des écrans connues, il s'agit uniquement de réaliser la conversion d'affichage.&lt;br /&gt;
&lt;br /&gt;
Le fait de rendre les écrans intelligents n'est cependant pas ignoré et viendra dans un second temps, le choix de la méthode à employer étant encore en suspend. Nous allons cependant effectuer des hypothèses avec des capteurs.&lt;br /&gt;
&lt;br /&gt;
* Soit X et Y les dimensions du flux vidéo&lt;br /&gt;
* Soit U,R,D,L les états des capteurs sur un écran donné (respectivement, Up, Right, Down, Left) (1 pour actifs, 0 pour inactif)&lt;br /&gt;
* Soit I,J les indices des écrans (I = 0/1 et J = 0/1)&lt;br /&gt;
* Soit nb_X et nb_Y respectivement le nombre d'écrans en fonction des coordonnées i.e les dimensions de notre écran géant&lt;br /&gt;
&lt;br /&gt;
La configuration d'écran est la suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma (I,J)'''&lt;br /&gt;
&lt;br /&gt;
0,1 ; 1,1&lt;br /&gt;
&lt;br /&gt;
0,0 ; 1,0&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quel que soit l'écran, le flux qu'il devra recevoir sera situé entre [X1,X2] et [Y1,Y2].&lt;br /&gt;
Évidemment ces valeurs de l'emplacement de l'écran&lt;br /&gt;
&lt;br /&gt;
* Y2 = Y * ( D||U ) * (I+1) / nb_Y&lt;br /&gt;
* Y1 = Y * D * I / nb_Y&lt;br /&gt;
* X1 = X * L * J / nb_X&lt;br /&gt;
* X2 = X * ( L||R ) * (J+1) / nb_X&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=48799</id>
		<title>IMA4 2017/2018 P14</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=48799"/>
				<updated>2018-01-24T14:41:06Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : /* Choix techniques : matériel et logiciel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
* '''Intitulé du projet''' : Proposer une solution permettant d'assembler des écrans de PC afin de créer un écran géant&lt;br /&gt;
&lt;br /&gt;
Le renouvellement de matériel informatique continu entraîne un nombre grandissant d'écrans d'ordinateur qui sont difficilement réutilisables compte tenu de leur petite taille. (17&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Afin de leur donner une seconde vie, ce projet a pour but de construire une plateforme permettant d'assembler ces écrans en un écran géant d'une forme &amp;quot;quelconque&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Exemple d'un cas d'écran carré'''&lt;br /&gt;
[[Fichier:Combinaison_ecrans.jpg]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
Afin de réaliser ce projet, il faudra :&lt;br /&gt;
&lt;br /&gt;
* Ajouter un Raspberry Pi sur chaque écran afin de le rentre &amp;quot;intelligent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Créer une application permettant de prendre un flux vidéo et de le diriger vers l'écran visé.&lt;br /&gt;
&lt;br /&gt;
* Permettre de déplacer facilement les écrans tout en maintenant le flux, que ce soit sur des configurations pleines en 2D ou des configurations plus complexes avec des espaces vides ou en 3D.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
* Le positionnement des écrans et la communication entre ces derniers.&lt;br /&gt;
&lt;br /&gt;
Pour une application telle qu'un écran géant composé de plusieurs écran, il est difficilement envisageable d'utiliser un système de coordonnées GPS pour repérer des écrans qui sont particulièrement proches les uns des autres. &lt;br /&gt;
En revanche il est tout à fait réaliste de penser à un système de capteurs de contact/proximité, disposés sur les bords des écrans pour leur permettre de s’emboîter puis il ne resterait qu'à exploiter les possibilités proposées par les Raspberry Pi ainsi qu'un système de coordonnées réalisé dans ce but pour déterminer où l'écran se situe par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
* La gestion du flux vidéo&lt;br /&gt;
&lt;br /&gt;
Le système sera potentiellement réalisé de sorte que chaque écran soit autonome dans son fonctionnement, une fois sa position relative déterminée au préalable.&lt;br /&gt;
En effet, pour le moment le problème était surtout dans le positionnement des écrans plus que dans la gestion du flux vidéo, à priori.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Est-ce que le système peut continuer de fonctionner si on retire l'un des écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pour pallier au problème d'un retrait d'écran, ou d'un disfonctionnement éventuel localisé, une solution possible est de fournir à chaque écran la totalité du flux vidéo.&lt;br /&gt;
Ceci permet dans un premier temps de s'affranchir d'un traitement vidéo avant distribution mais surtout que les autres écrans puissent fonctionner sans interruption due à un écran en particulier  &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Peut-il y avoir des décalages d'affichage entre les écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Malgré l'absence de possibilités de test pour le moment, on peut néanmoins supposer qu'il n'y ait pas de décalage. &lt;br /&gt;
Chaque écran va recevoir le flux vidéo puis en fonction du positionnement des écrans, et on pourra utiliser le système de coordonnées pour effectuer une &amp;quot;selection&amp;quot; sur la partie à afficher.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une configuration de 4 écrans en rectangle, il faudrait donc que l'écran inférieur gauche n'affiche que l'image correspondante jusqu'à la moitié, ensuite l'écran inférieur droit s'occuperait de l'affichage de la partie inférieure droite, etc&lt;br /&gt;
&lt;br /&gt;
En agrandissant le procédé à plus d'écrans, on trouve facilement une méthode de calcul.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet où il s'agira d'être capable de fournir une solution matérielle à la problématique, on s'orientera vers un prototype n'incluant que 4 écrans. Ceci permet à la fois d'éviter un encombrement matériel mais aussi .&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
* 5 Raspberry Pi 3 [https://fr.rs-online.com/web/p/processor-microcontroller-development-kits/8968660/?src=raspberrypi]&lt;br /&gt;
&lt;br /&gt;
* Un Commutateur (5 Ports +)&lt;br /&gt;
&lt;br /&gt;
* 5 Câbles Ethernet&lt;br /&gt;
&lt;br /&gt;
* 4 Câbles VGA&lt;br /&gt;
&lt;br /&gt;
* 4 Adaptateur VGA-femelle vers HDMI-mâle&lt;br /&gt;
&lt;br /&gt;
* 16 [pack 25] Capteur de contact (1 par côté) [https://fr.rs-online.com/web/p/capteurs-proximites/7985273/] '''Envisagés pour la seconde partie du projet mais non validés pour le moment !'''&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
* 1) Régler le problème de la gestion du flux vidéo par le réseau ainsi qu'au niveau des Raspberry-Pi&lt;br /&gt;
&lt;br /&gt;
'''Hypothèse''': pour une configuration d'écran donnée, on suppose les écrans déjà intelligent et on dispose de leur emplacement relatif.&lt;br /&gt;
&lt;br /&gt;
* 2) Une fois la première version fonctionnelle, s'orienter vers la mise en place du système intelligent&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| Lundi 15/01/18 : 3h30&lt;br /&gt;
Mercredi 17/01/18 : 4h&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
===Lundi 15/01/18===&lt;br /&gt;
&lt;br /&gt;
* Première séance ayant pour but de synthétiser l'idée théorique souhaitée par le projet.&lt;br /&gt;
&lt;br /&gt;
On imagine un système d'ensemble d'écrans autonomes mais qui communiquent leur emplacement entre eux, dans le sens où il n'est pas nécessaire de reconfigurer à chaque modification sur l'emplacement des écrans.&lt;br /&gt;
&lt;br /&gt;
Le système est pour ainsi dire évolutif puisqu'à chaque modification, exemple: passage d'un écran géant de 2*2 à 2*3 ou 3*2 (ou plus), les affichages peuvent modifier la zone du flux vidéo à afficher afin de conserver une image sur la totalité des écrans.&lt;br /&gt;
&lt;br /&gt;
De ce fait on peut imaginer des structures plus complexes, cylindriques dans le cas d'un flux d'une caméra à 360° ou plus simplement pour des simulateurs où les écrans seraient inclinés sans pour autant décrire un cercle autour de l'utilisateur.&lt;br /&gt;
&lt;br /&gt;
Cependant, pour des raisons évidentes d'effectif, de temps il est nécessaire de se réduire à une solution moins ambitieuse mais néanmoins acceptable.&lt;br /&gt;
&lt;br /&gt;
===Mercredi 17/01/18===&lt;br /&gt;
&lt;br /&gt;
* Mise en place d'un cahier des charge réalisable dans le temps imparti par rapport à la réponse théorique que l'on souhaiterai apporter au problème.&lt;br /&gt;
&lt;br /&gt;
Suite aux raisons évoquées précédemment, nous allons donc nous orienter vers un système à échelle réduite que nous ferons évoluer progressivement.&lt;br /&gt;
&lt;br /&gt;
Comme prévu nous diffuserons le flux vidéo initial, ''envoyé par Ethernet par une Raspberry Pi à partir d'un fichier stocké sur une clé usb par exemple'', aux 4 Raspberry intégrées aux écrans via un switch donc également par Ethernet (le port HDMI des R-Pi étant uniquement une sortie)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous effectuerons ensuite grâce aux R-Pi la modification du flux en fonction des écrans servant à l'affichage avant de rediriger la partie du flux qui nous intéresse vers les écrans.&lt;br /&gt;
&lt;br /&gt;
*'''Remarque:''' Dans un premier temps, pour une configuration donnée et avec les emplacement des écrans connues, il s'agit uniquement de réaliser la conversion d'affichage.&lt;br /&gt;
&lt;br /&gt;
Le fait de rendre les écrans intelligents n'est cependant pas ignoré et viendra dans un second temps, le choix de la méthode à employer étant encore en suspend. Nous allons cependant effectuer des hypothèses avec des capteurs.&lt;br /&gt;
&lt;br /&gt;
* Soit X et Y les dimensions du flux vidéo&lt;br /&gt;
* Soit U,R,D,L les états des capteurs sur un écran donné (respectivement, Up, Right, Down, Left) (1 pour actifs, 0 pour inactif)&lt;br /&gt;
* Soit I,J les indices des écrans (I = 0/1 et J = 0/1)&lt;br /&gt;
* Soit nb_X et nb_Y respectivement le nombre d'écrans en fonction des coordonnées i.e les dimensions de notre écran géant&lt;br /&gt;
&lt;br /&gt;
La configuration d'écran est la suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma (I,J)'''&lt;br /&gt;
&lt;br /&gt;
0,1 ; 1,1&lt;br /&gt;
&lt;br /&gt;
0,0 ; 1,0&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quel que soit l'écran, le flux qu'il devra recevoir sera situé entre [X1,X2] et [Y1,Y2].&lt;br /&gt;
Évidemment ces valeurs de l'emplacement de l'écran&lt;br /&gt;
&lt;br /&gt;
* Y2 = Y * ( D||U ) * (I+1) / nb_Y&lt;br /&gt;
* Y1 = Y * D * I / nb_Y&lt;br /&gt;
* X1 = X * L * J / nb_X&lt;br /&gt;
* X2 = X * ( L||R ) * (J+1) / nb_X&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=48796</id>
		<title>IMA4 2017/2018 P14</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=48796"/>
				<updated>2018-01-24T14:40:04Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : /* Choix techniques : matériel et logiciel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
* '''Intitulé du projet''' : Proposer une solution permettant d'assembler des écrans de PC afin de créer un écran géant&lt;br /&gt;
&lt;br /&gt;
Le renouvellement de matériel informatique continu entraîne un nombre grandissant d'écrans d'ordinateur qui sont difficilement réutilisables compte tenu de leur petite taille. (17&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Afin de leur donner une seconde vie, ce projet a pour but de construire une plateforme permettant d'assembler ces écrans en un écran géant d'une forme &amp;quot;quelconque&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Exemple d'un cas d'écran carré'''&lt;br /&gt;
[[Fichier:Combinaison_ecrans.jpg]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
Afin de réaliser ce projet, il faudra :&lt;br /&gt;
&lt;br /&gt;
* Ajouter un Raspberry Pi sur chaque écran afin de le rentre &amp;quot;intelligent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Créer une application permettant de prendre un flux vidéo et de le diriger vers l'écran visé.&lt;br /&gt;
&lt;br /&gt;
* Permettre de déplacer facilement les écrans tout en maintenant le flux, que ce soit sur des configurations pleines en 2D ou des configurations plus complexes avec des espaces vides ou en 3D.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
* Le positionnement des écrans et la communication entre ces derniers.&lt;br /&gt;
&lt;br /&gt;
Pour une application telle qu'un écran géant composé de plusieurs écran, il est difficilement envisageable d'utiliser un système de coordonnées GPS pour repérer des écrans qui sont particulièrement proches les uns des autres. &lt;br /&gt;
En revanche il est tout à fait réaliste de penser à un système de capteurs de contact/proximité, disposés sur les bords des écrans pour leur permettre de s’emboîter puis il ne resterait qu'à exploiter les possibilités proposées par les Raspberry Pi ainsi qu'un système de coordonnées réalisé dans ce but pour déterminer où l'écran se situe par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
* La gestion du flux vidéo&lt;br /&gt;
&lt;br /&gt;
Le système sera potentiellement réalisé de sorte que chaque écran soit autonome dans son fonctionnement, une fois sa position relative déterminée au préalable.&lt;br /&gt;
En effet, pour le moment le problème était surtout dans le positionnement des écrans plus que dans la gestion du flux vidéo, à priori.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Est-ce que le système peut continuer de fonctionner si on retire l'un des écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pour pallier au problème d'un retrait d'écran, ou d'un disfonctionnement éventuel localisé, une solution possible est de fournir à chaque écran la totalité du flux vidéo.&lt;br /&gt;
Ceci permet dans un premier temps de s'affranchir d'un traitement vidéo avant distribution mais surtout que les autres écrans puissent fonctionner sans interruption due à un écran en particulier  &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Peut-il y avoir des décalages d'affichage entre les écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Malgré l'absence de possibilités de test pour le moment, on peut néanmoins supposer qu'il n'y ait pas de décalage. &lt;br /&gt;
Chaque écran va recevoir le flux vidéo puis en fonction du positionnement des écrans, et on pourra utiliser le système de coordonnées pour effectuer une &amp;quot;selection&amp;quot; sur la partie à afficher.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une configuration de 4 écrans en rectangle, il faudrait donc que l'écran inférieur gauche n'affiche que l'image correspondante jusqu'à la moitié, ensuite l'écran inférieur droit s'occuperait de l'affichage de la partie inférieure droite, etc&lt;br /&gt;
&lt;br /&gt;
En agrandissant le procédé à plus d'écrans, on trouve facilement une méthode de calcul.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet où il s'agira d'être capable de fournir une solution matérielle à la problématique, on s'orientera vers un prototype n'incluant que 4 écrans. Ceci permet à la fois d'éviter un encombrement matériel mais aussi .&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
* 5 Raspberry Pi 3 [https://fr.rs-online.com/web/p/processor-microcontroller-development-kits/8968660/?src=raspberrypi]&lt;br /&gt;
&lt;br /&gt;
* Un Commutateur (5 Ports +)&lt;br /&gt;
&lt;br /&gt;
* 5 Câbles Ethernet&lt;br /&gt;
&lt;br /&gt;
* 4 Câbles HDMI + 4 Adaptateur HDMI-femelle vers VGA-mâle&lt;br /&gt;
&lt;br /&gt;
* '''[Sinon]''' 4 Câbles HDMI-mâle vers VGA-mâle&lt;br /&gt;
&lt;br /&gt;
* 16 [pack 25] Capteur de contact (1 par côté) [https://fr.rs-online.com/web/p/capteurs-proximites/7985273/] '''Envisagés pour la seconde partie du projet mais non validés pour le moment !'''&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
* 1) Régler le problème de la gestion du flux vidéo par le réseau ainsi qu'au niveau des Raspberry-Pi&lt;br /&gt;
&lt;br /&gt;
'''Hypothèse''': pour une configuration d'écran donnée, on suppose les écrans déjà intelligent et on dispose de leur emplacement relatif.&lt;br /&gt;
&lt;br /&gt;
* 2) Une fois la première version fonctionnelle, s'orienter vers la mise en place du système intelligent&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| Lundi 15/01/18 : 3h30&lt;br /&gt;
Mercredi 17/01/18 : 4h&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
===Lundi 15/01/18===&lt;br /&gt;
&lt;br /&gt;
* Première séance ayant pour but de synthétiser l'idée théorique souhaitée par le projet.&lt;br /&gt;
&lt;br /&gt;
On imagine un système d'ensemble d'écrans autonomes mais qui communiquent leur emplacement entre eux, dans le sens où il n'est pas nécessaire de reconfigurer à chaque modification sur l'emplacement des écrans.&lt;br /&gt;
&lt;br /&gt;
Le système est pour ainsi dire évolutif puisqu'à chaque modification, exemple: passage d'un écran géant de 2*2 à 2*3 ou 3*2 (ou plus), les affichages peuvent modifier la zone du flux vidéo à afficher afin de conserver une image sur la totalité des écrans.&lt;br /&gt;
&lt;br /&gt;
De ce fait on peut imaginer des structures plus complexes, cylindriques dans le cas d'un flux d'une caméra à 360° ou plus simplement pour des simulateurs où les écrans seraient inclinés sans pour autant décrire un cercle autour de l'utilisateur.&lt;br /&gt;
&lt;br /&gt;
Cependant, pour des raisons évidentes d'effectif, de temps il est nécessaire de se réduire à une solution moins ambitieuse mais néanmoins acceptable.&lt;br /&gt;
&lt;br /&gt;
===Mercredi 17/01/18===&lt;br /&gt;
&lt;br /&gt;
* Mise en place d'un cahier des charge réalisable dans le temps imparti par rapport à la réponse théorique que l'on souhaiterai apporter au problème.&lt;br /&gt;
&lt;br /&gt;
Suite aux raisons évoquées précédemment, nous allons donc nous orienter vers un système à échelle réduite que nous ferons évoluer progressivement.&lt;br /&gt;
&lt;br /&gt;
Comme prévu nous diffuserons le flux vidéo initial, ''envoyé par Ethernet par une Raspberry Pi à partir d'un fichier stocké sur une clé usb par exemple'', aux 4 Raspberry intégrées aux écrans via un switch donc également par Ethernet (le port HDMI des R-Pi étant uniquement une sortie)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous effectuerons ensuite grâce aux R-Pi la modification du flux en fonction des écrans servant à l'affichage avant de rediriger la partie du flux qui nous intéresse vers les écrans.&lt;br /&gt;
&lt;br /&gt;
*'''Remarque:''' Dans un premier temps, pour une configuration donnée et avec les emplacement des écrans connues, il s'agit uniquement de réaliser la conversion d'affichage.&lt;br /&gt;
&lt;br /&gt;
Le fait de rendre les écrans intelligents n'est cependant pas ignoré et viendra dans un second temps, le choix de la méthode à employer étant encore en suspend. Nous allons cependant effectuer des hypothèses avec des capteurs.&lt;br /&gt;
&lt;br /&gt;
* Soit X et Y les dimensions du flux vidéo&lt;br /&gt;
* Soit U,R,D,L les états des capteurs sur un écran donné (respectivement, Up, Right, Down, Left) (1 pour actifs, 0 pour inactif)&lt;br /&gt;
* Soit I,J les indices des écrans (I = 0/1 et J = 0/1)&lt;br /&gt;
* Soit nb_X et nb_Y respectivement le nombre d'écrans en fonction des coordonnées i.e les dimensions de notre écran géant&lt;br /&gt;
&lt;br /&gt;
La configuration d'écran est la suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma (I,J)'''&lt;br /&gt;
&lt;br /&gt;
0,1 ; 1,1&lt;br /&gt;
&lt;br /&gt;
0,0 ; 1,0&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quel que soit l'écran, le flux qu'il devra recevoir sera situé entre [X1,X2] et [Y1,Y2].&lt;br /&gt;
Évidemment ces valeurs de l'emplacement de l'écran&lt;br /&gt;
&lt;br /&gt;
* Y2 = Y * ( D||U ) * (I+1) / nb_Y&lt;br /&gt;
* Y1 = Y * D * I / nb_Y&lt;br /&gt;
* X1 = X * L * J / nb_X&lt;br /&gt;
* X2 = X * ( L||R ) * (J+1) / nb_X&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=48236</id>
		<title>IMA4 2017/2018 P14</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=48236"/>
				<updated>2018-01-17T17:45:07Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : /* Choix techniques : matériel et logiciel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
* '''Intitulé du projet''' : Proposer une solution permettant d'assembler des écrans de PC afin de créer un écran géant&lt;br /&gt;
&lt;br /&gt;
Le renouvellement de matériel informatique continu entraîne un nombre grandissant d'écrans d'ordinateur qui sont difficilement réutilisables compte tenu de leur petite taille. (17&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Afin de leur donner une seconde vie, ce projet a pour but de construire une plateforme permettant d'assembler ces écrans en un écran géant d'une forme &amp;quot;quelconque&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Exemple d'un cas d'écran carré'''&lt;br /&gt;
[[Fichier:Combinaison_ecrans.jpg]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
Afin de réaliser ce projet, il faudra :&lt;br /&gt;
&lt;br /&gt;
* Ajouter un Raspberry Pi sur chaque écran afin de le rentre &amp;quot;intelligent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Créer une application permettant de prendre un flux vidéo et de le diriger vers l'écran visé.&lt;br /&gt;
&lt;br /&gt;
* Permettre de déplacer facilement les écrans tout en maintenant le flux, que ce soit sur des configurations pleines en 2D ou des configurations plus complexes avec des espaces vides ou en 3D.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
* Le positionnement des écrans et la communication entre ces derniers.&lt;br /&gt;
&lt;br /&gt;
Pour une application telle qu'un écran géant composé de plusieurs écran, il est difficilement envisageable d'utiliser un système de coordonnées GPS pour repérer des écrans qui sont particulièrement proches les uns des autres. &lt;br /&gt;
En revanche il est tout à fait réaliste de penser à un système de capteurs de contact/proximité, disposés sur les bords des écrans pour leur permettre de s’emboîter puis il ne resterait qu'à exploiter les possibilités proposées par les Raspberry Pi ainsi qu'un système de coordonnées réalisé dans ce but pour déterminer où l'écran se situe par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
* La gestion du flux vidéo&lt;br /&gt;
&lt;br /&gt;
Le système sera potentiellement réalisé de sorte que chaque écran soit autonome dans son fonctionnement, une fois sa position relative déterminée au préalable.&lt;br /&gt;
En effet, pour le moment le problème était surtout dans le positionnement des écrans plus que dans la gestion du flux vidéo, à priori.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Est-ce que le système peut continuer de fonctionner si on retire l'un des écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pour pallier au problème d'un retrait d'écran, ou d'un disfonctionnement éventuel localisé, une solution possible est de fournir à chaque écran la totalité du flux vidéo.&lt;br /&gt;
Ceci permet dans un premier temps de s'affranchir d'un traitement vidéo avant distribution mais surtout que les autres écrans puissent fonctionner sans interruption due à un écran en particulier  &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Peut-il y avoir des décalages d'affichage entre les écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Malgré l'absence de possibilités de test pour le moment, on peut néanmoins supposer qu'il n'y ait pas de décalage. &lt;br /&gt;
Chaque écran va recevoir le flux vidéo puis en fonction du positionnement des écrans, et on pourra utiliser le système de coordonnées pour effectuer une &amp;quot;selection&amp;quot; sur la partie à afficher.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une configuration de 4 écrans en rectangle, il faudrait donc que l'écran inférieur gauche n'affiche que l'image correspondante jusqu'à la moitié, ensuite l'écran inférieur droit s'occuperait de l'affichage de la partie inférieure droite, etc&lt;br /&gt;
&lt;br /&gt;
En agrandissant le procédé à plus d'écrans, on trouve facilement une méthode de calcul.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet où il s'agira d'être capable de fournir une solution matérielle à la problématique, on s'orientera vers un prototype n'incluant que 4 écrans. Ceci permet à la fois d'éviter un encombrement matériel mais aussi .&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
* 5 Raspberry Pi 3 [https://fr.rs-online.com/web/p/processor-microcontroller-development-kits/8968660/?src=raspberrypi]&lt;br /&gt;
&lt;br /&gt;
* Un hub Ethernet 5 Ports&lt;br /&gt;
&lt;br /&gt;
* 5 Câbles Ethernet&lt;br /&gt;
&lt;br /&gt;
* 4 Câbles HDMI + 4 Adaptateur HDMI-femelle vers VGA-mâle&lt;br /&gt;
&lt;br /&gt;
* '''[Sinon]''' 4 Câbles HDMI-mâle vers VGA-mâle&lt;br /&gt;
&lt;br /&gt;
* 16 [pack 25] Capteur de contact (1 par côté) [https://fr.rs-online.com/web/p/capteurs-proximites/7985273/] '''Envisagés pour la seconde partie du projet mais non validés pour le moment !'''&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
* 1) Régler le problème de la gestion du flux vidéo par le réseau ainsi qu'au niveau des Raspberry-Pi&lt;br /&gt;
&lt;br /&gt;
'''Hypothèse''': pour une configuration d'écran donnée, on suppose les écrans déjà intelligent et on dispose de leur emplacement relatif.&lt;br /&gt;
&lt;br /&gt;
* 2) Une fois la première version fonctionnelle, s'orienter vers la mise en place du système intelligent&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| Lundi 15/01/18 : 3h30&lt;br /&gt;
Mercredi 17/01/18 : 4h&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
===Lundi 15/01/18===&lt;br /&gt;
&lt;br /&gt;
* Première séance ayant pour but de synthétiser l'idée théorique souhaitée par le projet.&lt;br /&gt;
&lt;br /&gt;
On imagine un système d'ensemble d'écrans autonomes mais qui communiquent leur emplacement entre eux, dans le sens où il n'est pas nécessaire de reconfigurer à chaque modification sur l'emplacement des écrans.&lt;br /&gt;
&lt;br /&gt;
Le système est pour ainsi dire évolutif puisqu'à chaque modification, exemple: passage d'un écran géant de 2*2 à 2*3 ou 3*2 (ou plus), les affichages peuvent modifier la zone du flux vidéo à afficher afin de conserver une image sur la totalité des écrans.&lt;br /&gt;
&lt;br /&gt;
De ce fait on peut imaginer des structures plus complexes, cylindriques dans le cas d'un flux d'une caméra à 360° ou plus simplement pour des simulateurs où les écrans seraient inclinés sans pour autant décrire un cercle autour de l'utilisateur.&lt;br /&gt;
&lt;br /&gt;
Cependant, pour des raisons évidentes d'effectif, de temps il est nécessaire de se réduire à une solution moins ambitieuse mais néanmoins acceptable.&lt;br /&gt;
&lt;br /&gt;
===Mercredi 17/01/18===&lt;br /&gt;
&lt;br /&gt;
* Mise en place d'un cahier des charge réalisable dans le temps imparti par rapport à la réponse théorique que l'on souhaiterai apporter au problème.&lt;br /&gt;
&lt;br /&gt;
Suite aux raisons évoquées précédemment, nous allons donc nous orienter vers un système à échelle réduite que nous ferons évoluer progressivement.&lt;br /&gt;
&lt;br /&gt;
Comme prévu nous diffuserons le flux vidéo initial, ''envoyé par Ethernet par une Raspberry Pi à partir d'un fichier stocké sur une clé usb par exemple'', aux 4 Raspberry intégrées aux écrans via un switch donc également par Ethernet (le port HDMI des R-Pi étant uniquement une sortie)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous effectuerons ensuite grâce aux R-Pi la modification du flux en fonction des écrans servant à l'affichage avant de rediriger la partie du flux qui nous intéresse vers les écrans.&lt;br /&gt;
&lt;br /&gt;
*'''Remarque:''' Dans un premier temps, pour une configuration donnée et avec les emplacement des écrans connues, il s'agit uniquement de réaliser la conversion d'affichage.&lt;br /&gt;
&lt;br /&gt;
Le fait de rendre les écrans intelligents n'est cependant pas ignoré et viendra dans un second temps, le choix de la méthode à employer étant encore en suspend. Nous allons cependant effectuer des hypothèses avec des capteurs.&lt;br /&gt;
&lt;br /&gt;
* Soit X et Y les dimensions du flux vidéo&lt;br /&gt;
* Soit U,R,D,L les états des capteurs sur un écran donné (respectivement, Up, Right, Down, Left) (1 pour actifs, 0 pour inactif)&lt;br /&gt;
* Soit I,J les indices des écrans (I = 0/1 et J = 0/1)&lt;br /&gt;
* Soit nb_X et nb_Y respectivement le nombre d'écrans en fonction des coordonnées i.e les dimensions de notre écran géant&lt;br /&gt;
&lt;br /&gt;
La configuration d'écran est la suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma (I,J)'''&lt;br /&gt;
&lt;br /&gt;
0,1 ; 1,1&lt;br /&gt;
&lt;br /&gt;
0,0 ; 1,0&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quel que soit l'écran, le flux qu'il devra recevoir sera situé entre [X1,X2] et [Y1,Y2].&lt;br /&gt;
Évidemment ces valeurs de l'emplacement de l'écran&lt;br /&gt;
&lt;br /&gt;
* Y2 = Y * ( D||U ) * (I+1) / nb_Y&lt;br /&gt;
* Y1 = Y * D * I / nb_Y&lt;br /&gt;
* X1 = X * L * J / nb_X&lt;br /&gt;
* X2 = X * ( L||R ) * (J+1) / nb_X&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=48235</id>
		<title>IMA4 2017/2018 P14</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=48235"/>
				<updated>2018-01-17T17:44:26Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : /* Choix techniques : matériel et logiciel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
* '''Intitulé du projet''' : Proposer une solution permettant d'assembler des écrans de PC afin de créer un écran géant&lt;br /&gt;
&lt;br /&gt;
Le renouvellement de matériel informatique continu entraîne un nombre grandissant d'écrans d'ordinateur qui sont difficilement réutilisables compte tenu de leur petite taille. (17&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Afin de leur donner une seconde vie, ce projet a pour but de construire une plateforme permettant d'assembler ces écrans en un écran géant d'une forme &amp;quot;quelconque&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Exemple d'un cas d'écran carré'''&lt;br /&gt;
[[Fichier:Combinaison_ecrans.jpg]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
Afin de réaliser ce projet, il faudra :&lt;br /&gt;
&lt;br /&gt;
* Ajouter un Raspberry Pi sur chaque écran afin de le rentre &amp;quot;intelligent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Créer une application permettant de prendre un flux vidéo et de le diriger vers l'écran visé.&lt;br /&gt;
&lt;br /&gt;
* Permettre de déplacer facilement les écrans tout en maintenant le flux, que ce soit sur des configurations pleines en 2D ou des configurations plus complexes avec des espaces vides ou en 3D.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
* Le positionnement des écrans et la communication entre ces derniers.&lt;br /&gt;
&lt;br /&gt;
Pour une application telle qu'un écran géant composé de plusieurs écran, il est difficilement envisageable d'utiliser un système de coordonnées GPS pour repérer des écrans qui sont particulièrement proches les uns des autres. &lt;br /&gt;
En revanche il est tout à fait réaliste de penser à un système de capteurs de contact/proximité, disposés sur les bords des écrans pour leur permettre de s’emboîter puis il ne resterait qu'à exploiter les possibilités proposées par les Raspberry Pi ainsi qu'un système de coordonnées réalisé dans ce but pour déterminer où l'écran se situe par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
* La gestion du flux vidéo&lt;br /&gt;
&lt;br /&gt;
Le système sera potentiellement réalisé de sorte que chaque écran soit autonome dans son fonctionnement, une fois sa position relative déterminée au préalable.&lt;br /&gt;
En effet, pour le moment le problème était surtout dans le positionnement des écrans plus que dans la gestion du flux vidéo, à priori.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Est-ce que le système peut continuer de fonctionner si on retire l'un des écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pour pallier au problème d'un retrait d'écran, ou d'un disfonctionnement éventuel localisé, une solution possible est de fournir à chaque écran la totalité du flux vidéo.&lt;br /&gt;
Ceci permet dans un premier temps de s'affranchir d'un traitement vidéo avant distribution mais surtout que les autres écrans puissent fonctionner sans interruption due à un écran en particulier  &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Peut-il y avoir des décalages d'affichage entre les écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Malgré l'absence de possibilités de test pour le moment, on peut néanmoins supposer qu'il n'y ait pas de décalage. &lt;br /&gt;
Chaque écran va recevoir le flux vidéo puis en fonction du positionnement des écrans, et on pourra utiliser le système de coordonnées pour effectuer une &amp;quot;selection&amp;quot; sur la partie à afficher.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une configuration de 4 écrans en rectangle, il faudrait donc que l'écran inférieur gauche n'affiche que l'image correspondante jusqu'à la moitié, ensuite l'écran inférieur droit s'occuperait de l'affichage de la partie inférieure droite, etc&lt;br /&gt;
&lt;br /&gt;
En agrandissant le procédé à plus d'écrans, on trouve facilement une méthode de calcul.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet où il s'agira d'être capable de fournir une solution matérielle à la problématique, on s'orientera vers un prototype n'incluant que 4 écrans. Ceci permet à la fois d'éviter un encombrement matériel mais aussi .&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
* x5 Raspberry Pi 3 [https://fr.rs-online.com/web/p/processor-microcontroller-development-kits/8968660/?src=raspberrypi]&lt;br /&gt;
&lt;br /&gt;
* Un hub Ethernet 5 Ports&lt;br /&gt;
&lt;br /&gt;
* 5 Câbles Ethernet&lt;br /&gt;
&lt;br /&gt;
* 4 Câbles HDMI + 4 Adaptateur HDMI-femelle vers VGA-mâle&lt;br /&gt;
&lt;br /&gt;
* '''[Sinon]''' 4 Câbles HDMI-mâle vers VGA-mâle&lt;br /&gt;
&lt;br /&gt;
* x16 [x25] Capteur de contact (1 par côté) [https://fr.rs-online.com/web/p/capteurs-proximites/7985273/] '''Envisagés pour la seconde partie du projet mais non validés pour le moment !'''&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
* 1) Régler le problème de la gestion du flux vidéo par le réseau ainsi qu'au niveau des Raspberry-Pi&lt;br /&gt;
&lt;br /&gt;
'''Hypothèse''': pour une configuration d'écran donnée, on suppose les écrans déjà intelligent et on dispose de leur emplacement relatif.&lt;br /&gt;
&lt;br /&gt;
* 2) Une fois la première version fonctionnelle, s'orienter vers la mise en place du système intelligent&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| Lundi 15/01/18 : 3h30&lt;br /&gt;
Mercredi 17/01/18 : 4h&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
===Lundi 15/01/18===&lt;br /&gt;
&lt;br /&gt;
* Première séance ayant pour but de synthétiser l'idée théorique souhaitée par le projet.&lt;br /&gt;
&lt;br /&gt;
On imagine un système d'ensemble d'écrans autonomes mais qui communiquent leur emplacement entre eux, dans le sens où il n'est pas nécessaire de reconfigurer à chaque modification sur l'emplacement des écrans.&lt;br /&gt;
&lt;br /&gt;
Le système est pour ainsi dire évolutif puisqu'à chaque modification, exemple: passage d'un écran géant de 2*2 à 2*3 ou 3*2 (ou plus), les affichages peuvent modifier la zone du flux vidéo à afficher afin de conserver une image sur la totalité des écrans.&lt;br /&gt;
&lt;br /&gt;
De ce fait on peut imaginer des structures plus complexes, cylindriques dans le cas d'un flux d'une caméra à 360° ou plus simplement pour des simulateurs où les écrans seraient inclinés sans pour autant décrire un cercle autour de l'utilisateur.&lt;br /&gt;
&lt;br /&gt;
Cependant, pour des raisons évidentes d'effectif, de temps il est nécessaire de se réduire à une solution moins ambitieuse mais néanmoins acceptable.&lt;br /&gt;
&lt;br /&gt;
===Mercredi 17/01/18===&lt;br /&gt;
&lt;br /&gt;
* Mise en place d'un cahier des charge réalisable dans le temps imparti par rapport à la réponse théorique que l'on souhaiterai apporter au problème.&lt;br /&gt;
&lt;br /&gt;
Suite aux raisons évoquées précédemment, nous allons donc nous orienter vers un système à échelle réduite que nous ferons évoluer progressivement.&lt;br /&gt;
&lt;br /&gt;
Comme prévu nous diffuserons le flux vidéo initial, ''envoyé par Ethernet par une Raspberry Pi à partir d'un fichier stocké sur une clé usb par exemple'', aux 4 Raspberry intégrées aux écrans via un switch donc également par Ethernet (le port HDMI des R-Pi étant uniquement une sortie)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous effectuerons ensuite grâce aux R-Pi la modification du flux en fonction des écrans servant à l'affichage avant de rediriger la partie du flux qui nous intéresse vers les écrans.&lt;br /&gt;
&lt;br /&gt;
*'''Remarque:''' Dans un premier temps, pour une configuration donnée et avec les emplacement des écrans connues, il s'agit uniquement de réaliser la conversion d'affichage.&lt;br /&gt;
&lt;br /&gt;
Le fait de rendre les écrans intelligents n'est cependant pas ignoré et viendra dans un second temps, le choix de la méthode à employer étant encore en suspend. Nous allons cependant effectuer des hypothèses avec des capteurs.&lt;br /&gt;
&lt;br /&gt;
* Soit X et Y les dimensions du flux vidéo&lt;br /&gt;
* Soit U,R,D,L les états des capteurs sur un écran donné (respectivement, Up, Right, Down, Left) (1 pour actifs, 0 pour inactif)&lt;br /&gt;
* Soit I,J les indices des écrans (I = 0/1 et J = 0/1)&lt;br /&gt;
* Soit nb_X et nb_Y respectivement le nombre d'écrans en fonction des coordonnées i.e les dimensions de notre écran géant&lt;br /&gt;
&lt;br /&gt;
La configuration d'écran est la suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma (I,J)'''&lt;br /&gt;
&lt;br /&gt;
0,1 ; 1,1&lt;br /&gt;
&lt;br /&gt;
0,0 ; 1,0&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quel que soit l'écran, le flux qu'il devra recevoir sera situé entre [X1,X2] et [Y1,Y2].&lt;br /&gt;
Évidemment ces valeurs de l'emplacement de l'écran&lt;br /&gt;
&lt;br /&gt;
* Y2 = Y * ( D||U ) * (I+1) / nb_Y&lt;br /&gt;
* Y1 = Y * D * I / nb_Y&lt;br /&gt;
* X1 = X * L * J / nb_X&lt;br /&gt;
* X2 = X * ( L||R ) * (J+1) / nb_X&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=48233</id>
		<title>IMA4 2017/2018 P14</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=48233"/>
				<updated>2018-01-17T17:43:14Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : /* Choix techniques : matériel et logiciel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
* '''Intitulé du projet''' : Proposer une solution permettant d'assembler des écrans de PC afin de créer un écran géant&lt;br /&gt;
&lt;br /&gt;
Le renouvellement de matériel informatique continu entraîne un nombre grandissant d'écrans d'ordinateur qui sont difficilement réutilisables compte tenu de leur petite taille. (17&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Afin de leur donner une seconde vie, ce projet a pour but de construire une plateforme permettant d'assembler ces écrans en un écran géant d'une forme &amp;quot;quelconque&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Exemple d'un cas d'écran carré'''&lt;br /&gt;
[[Fichier:Combinaison_ecrans.jpg]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
Afin de réaliser ce projet, il faudra :&lt;br /&gt;
&lt;br /&gt;
* Ajouter un Raspberry Pi sur chaque écran afin de le rentre &amp;quot;intelligent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Créer une application permettant de prendre un flux vidéo et de le diriger vers l'écran visé.&lt;br /&gt;
&lt;br /&gt;
* Permettre de déplacer facilement les écrans tout en maintenant le flux, que ce soit sur des configurations pleines en 2D ou des configurations plus complexes avec des espaces vides ou en 3D.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
* Le positionnement des écrans et la communication entre ces derniers.&lt;br /&gt;
&lt;br /&gt;
Pour une application telle qu'un écran géant composé de plusieurs écran, il est difficilement envisageable d'utiliser un système de coordonnées GPS pour repérer des écrans qui sont particulièrement proches les uns des autres. &lt;br /&gt;
En revanche il est tout à fait réaliste de penser à un système de capteurs de contact/proximité, disposés sur les bords des écrans pour leur permettre de s’emboîter puis il ne resterait qu'à exploiter les possibilités proposées par les Raspberry Pi ainsi qu'un système de coordonnées réalisé dans ce but pour déterminer où l'écran se situe par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
* La gestion du flux vidéo&lt;br /&gt;
&lt;br /&gt;
Le système sera potentiellement réalisé de sorte que chaque écran soit autonome dans son fonctionnement, une fois sa position relative déterminée au préalable.&lt;br /&gt;
En effet, pour le moment le problème était surtout dans le positionnement des écrans plus que dans la gestion du flux vidéo, à priori.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Est-ce que le système peut continuer de fonctionner si on retire l'un des écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pour pallier au problème d'un retrait d'écran, ou d'un disfonctionnement éventuel localisé, une solution possible est de fournir à chaque écran la totalité du flux vidéo.&lt;br /&gt;
Ceci permet dans un premier temps de s'affranchir d'un traitement vidéo avant distribution mais surtout que les autres écrans puissent fonctionner sans interruption due à un écran en particulier  &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Peut-il y avoir des décalages d'affichage entre les écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Malgré l'absence de possibilités de test pour le moment, on peut néanmoins supposer qu'il n'y ait pas de décalage. &lt;br /&gt;
Chaque écran va recevoir le flux vidéo puis en fonction du positionnement des écrans, et on pourra utiliser le système de coordonnées pour effectuer une &amp;quot;selection&amp;quot; sur la partie à afficher.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une configuration de 4 écrans en rectangle, il faudrait donc que l'écran inférieur gauche n'affiche que l'image correspondante jusqu'à la moitié, ensuite l'écran inférieur droit s'occuperait de l'affichage de la partie inférieure droite, etc&lt;br /&gt;
&lt;br /&gt;
En agrandissant le procédé à plus d'écrans, on trouve facilement une méthode de calcul.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet où il s'agira d'être capable de fournir une solution matérielle à la problématique, on s'orientera vers un prototype n'incluant que 4 écrans. Ceci permet à la fois d'éviter un encombrement matériel mais aussi .&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
* x5 Raspberry Pi 3 [https://fr.rs-online.com/web/p/processor-microcontroller-development-kits/8968660/?src=raspberrypi]&lt;br /&gt;
&lt;br /&gt;
* 5 Câbles Ethernet&lt;br /&gt;
&lt;br /&gt;
* 4 Câbles HDMI + 4 Adaptateur HDMI-femelle vers VGA-mâle&lt;br /&gt;
&lt;br /&gt;
* '''[Sinon]''' 4 Câbles HDMI-mâle vers VGA-mâle&lt;br /&gt;
&lt;br /&gt;
* x16 [25] Capteur de contact (2 par côté) [https://fr.rs-online.com/web/p/capteurs-proximites/7985273/] '''Envisagés pour la seconde partie du projet mais non validés pour le moment !'''&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
* 1) Régler le problème de la gestion du flux vidéo par le réseau ainsi qu'au niveau des Raspberry-Pi&lt;br /&gt;
&lt;br /&gt;
'''Hypothèse''': pour une configuration d'écran donnée, on suppose les écrans déjà intelligent et on dispose de leur emplacement relatif.&lt;br /&gt;
&lt;br /&gt;
* 2) Une fois la première version fonctionnelle, s'orienter vers la mise en place du système intelligent&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| Lundi 15/01/18 : 3h30&lt;br /&gt;
Mercredi 17/01/18 : 4h&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
===Lundi 15/01/18===&lt;br /&gt;
&lt;br /&gt;
* Première séance ayant pour but de synthétiser l'idée théorique souhaitée par le projet.&lt;br /&gt;
&lt;br /&gt;
On imagine un système d'ensemble d'écrans autonomes mais qui communiquent leur emplacement entre eux, dans le sens où il n'est pas nécessaire de reconfigurer à chaque modification sur l'emplacement des écrans.&lt;br /&gt;
&lt;br /&gt;
Le système est pour ainsi dire évolutif puisqu'à chaque modification, exemple: passage d'un écran géant de 2*2 à 2*3 ou 3*2 (ou plus), les affichages peuvent modifier la zone du flux vidéo à afficher afin de conserver une image sur la totalité des écrans.&lt;br /&gt;
&lt;br /&gt;
De ce fait on peut imaginer des structures plus complexes, cylindriques dans le cas d'un flux d'une caméra à 360° ou plus simplement pour des simulateurs où les écrans seraient inclinés sans pour autant décrire un cercle autour de l'utilisateur.&lt;br /&gt;
&lt;br /&gt;
Cependant, pour des raisons évidentes d'effectif, de temps il est nécessaire de se réduire à une solution moins ambitieuse mais néanmoins acceptable.&lt;br /&gt;
&lt;br /&gt;
===Mercredi 17/01/18===&lt;br /&gt;
&lt;br /&gt;
* Mise en place d'un cahier des charge réalisable dans le temps imparti par rapport à la réponse théorique que l'on souhaiterai apporter au problème.&lt;br /&gt;
&lt;br /&gt;
Suite aux raisons évoquées précédemment, nous allons donc nous orienter vers un système à échelle réduite que nous ferons évoluer progressivement.&lt;br /&gt;
&lt;br /&gt;
Comme prévu nous diffuserons le flux vidéo initial, ''envoyé par Ethernet par une Raspberry Pi à partir d'un fichier stocké sur une clé usb par exemple'', aux 4 Raspberry intégrées aux écrans via un switch donc également par Ethernet (le port HDMI des R-Pi étant uniquement une sortie)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous effectuerons ensuite grâce aux R-Pi la modification du flux en fonction des écrans servant à l'affichage avant de rediriger la partie du flux qui nous intéresse vers les écrans.&lt;br /&gt;
&lt;br /&gt;
*'''Remarque:''' Dans un premier temps, pour une configuration donnée et avec les emplacement des écrans connues, il s'agit uniquement de réaliser la conversion d'affichage.&lt;br /&gt;
&lt;br /&gt;
Le fait de rendre les écrans intelligents n'est cependant pas ignoré et viendra dans un second temps, le choix de la méthode à employer étant encore en suspend. Nous allons cependant effectuer des hypothèses avec des capteurs.&lt;br /&gt;
&lt;br /&gt;
* Soit X et Y les dimensions du flux vidéo&lt;br /&gt;
* Soit U,R,D,L les états des capteurs sur un écran donné (respectivement, Up, Right, Down, Left) (1 pour actifs, 0 pour inactif)&lt;br /&gt;
* Soit I,J les indices des écrans (I = 0/1 et J = 0/1)&lt;br /&gt;
* Soit nb_X et nb_Y respectivement le nombre d'écrans en fonction des coordonnées i.e les dimensions de notre écran géant&lt;br /&gt;
&lt;br /&gt;
La configuration d'écran est la suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma (I,J)'''&lt;br /&gt;
&lt;br /&gt;
0,1 ; 1,1&lt;br /&gt;
&lt;br /&gt;
0,0 ; 1,0&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quel que soit l'écran, le flux qu'il devra recevoir sera situé entre [X1,X2] et [Y1,Y2].&lt;br /&gt;
Évidemment ces valeurs de l'emplacement de l'écran&lt;br /&gt;
&lt;br /&gt;
* Y2 = Y * ( D||U ) * (I+1) / nb_Y&lt;br /&gt;
* Y1 = Y * D * I / nb_Y&lt;br /&gt;
* X1 = X * L * J / nb_X&lt;br /&gt;
* X2 = X * ( L||R ) * (J+1) / nb_X&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=48230</id>
		<title>IMA4 2017/2018 P14</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=48230"/>
				<updated>2018-01-17T17:36:56Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : /* Préparation du projet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
* '''Intitulé du projet''' : Proposer une solution permettant d'assembler des écrans de PC afin de créer un écran géant&lt;br /&gt;
&lt;br /&gt;
Le renouvellement de matériel informatique continu entraîne un nombre grandissant d'écrans d'ordinateur qui sont difficilement réutilisables compte tenu de leur petite taille. (17&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Afin de leur donner une seconde vie, ce projet a pour but de construire une plateforme permettant d'assembler ces écrans en un écran géant d'une forme &amp;quot;quelconque&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Exemple d'un cas d'écran carré'''&lt;br /&gt;
[[Fichier:Combinaison_ecrans.jpg]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
Afin de réaliser ce projet, il faudra :&lt;br /&gt;
&lt;br /&gt;
* Ajouter un Raspberry Pi sur chaque écran afin de le rentre &amp;quot;intelligent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Créer une application permettant de prendre un flux vidéo et de le diriger vers l'écran visé.&lt;br /&gt;
&lt;br /&gt;
* Permettre de déplacer facilement les écrans tout en maintenant le flux, que ce soit sur des configurations pleines en 2D ou des configurations plus complexes avec des espaces vides ou en 3D.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
* Le positionnement des écrans et la communication entre ces derniers.&lt;br /&gt;
&lt;br /&gt;
Pour une application telle qu'un écran géant composé de plusieurs écran, il est difficilement envisageable d'utiliser un système de coordonnées GPS pour repérer des écrans qui sont particulièrement proches les uns des autres. &lt;br /&gt;
En revanche il est tout à fait réaliste de penser à un système de capteurs de contact/proximité, disposés sur les bords des écrans pour leur permettre de s’emboîter puis il ne resterait qu'à exploiter les possibilités proposées par les Raspberry Pi ainsi qu'un système de coordonnées réalisé dans ce but pour déterminer où l'écran se situe par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
* La gestion du flux vidéo&lt;br /&gt;
&lt;br /&gt;
Le système sera potentiellement réalisé de sorte que chaque écran soit autonome dans son fonctionnement, une fois sa position relative déterminée au préalable.&lt;br /&gt;
En effet, pour le moment le problème était surtout dans le positionnement des écrans plus que dans la gestion du flux vidéo, à priori.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Est-ce que le système peut continuer de fonctionner si on retire l'un des écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pour pallier au problème d'un retrait d'écran, ou d'un disfonctionnement éventuel localisé, une solution possible est de fournir à chaque écran la totalité du flux vidéo.&lt;br /&gt;
Ceci permet dans un premier temps de s'affranchir d'un traitement vidéo avant distribution mais surtout que les autres écrans puissent fonctionner sans interruption due à un écran en particulier  &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Peut-il y avoir des décalages d'affichage entre les écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Malgré l'absence de possibilités de test pour le moment, on peut néanmoins supposer qu'il n'y ait pas de décalage. &lt;br /&gt;
Chaque écran va recevoir le flux vidéo puis en fonction du positionnement des écrans, et on pourra utiliser le système de coordonnées pour effectuer une &amp;quot;selection&amp;quot; sur la partie à afficher.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une configuration de 4 écrans en rectangle, il faudrait donc que l'écran inférieur gauche n'affiche que l'image correspondante jusqu'à la moitié, ensuite l'écran inférieur droit s'occuperait de l'affichage de la partie inférieure droite, etc&lt;br /&gt;
&lt;br /&gt;
En agrandissant le procédé à plus d'écrans, on trouve facilement une méthode de calcul.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet où il s'agira d'être capable de fournir une solution matérielle à la problématique, on s'orientera vers un prototype n'incluant que 4 écrans. Ceci permet à la fois d'éviter un encombrement matériel mais aussi .&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
* x5 Raspberry Pi 3 [https://fr.rs-online.com/web/p/processor-microcontroller-development-kits/8968660/?src=raspberrypi]&lt;br /&gt;
&lt;br /&gt;
* 5 Câbles Ethernet&lt;br /&gt;
&lt;br /&gt;
* 4 Câbles HDMI + 4 Adaptateur HDMI-femelle vers VGA-mâle&lt;br /&gt;
&lt;br /&gt;
* '''[Sinon]''' 4 Câbles HDMI-mâle vers VGA-mâle&lt;br /&gt;
&lt;br /&gt;
* x24 Capteur de contact (2 par côté) [https://fr.rs-online.com/web/p/capteurs-proximites/7985273/] '''Envisagés pour la seconde partie du projet mais non validés pour le moment !''' &lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
&lt;br /&gt;
* 1) Régler le problème de la gestion du flux vidéo par le réseau ainsi qu'au niveau des Raspberry-Pi&lt;br /&gt;
&lt;br /&gt;
'''Hypothèse''': pour une configuration d'écran donnée, on suppose les écrans déjà intelligent et on dispose de leur emplacement relatif.&lt;br /&gt;
&lt;br /&gt;
* 2) Une fois la première version fonctionnelle, s'orienter vers la mise en place du système intelligent&lt;br /&gt;
&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| Lundi 15/01/18 : 3h30&lt;br /&gt;
Mercredi 17/01/18 : 4h&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
===Lundi 15/01/18===&lt;br /&gt;
&lt;br /&gt;
* Première séance ayant pour but de synthétiser l'idée théorique souhaitée par le projet.&lt;br /&gt;
&lt;br /&gt;
On imagine un système d'ensemble d'écrans autonomes mais qui communiquent leur emplacement entre eux, dans le sens où il n'est pas nécessaire de reconfigurer à chaque modification sur l'emplacement des écrans.&lt;br /&gt;
&lt;br /&gt;
Le système est pour ainsi dire évolutif puisqu'à chaque modification, exemple: passage d'un écran géant de 2*2 à 2*3 ou 3*2 (ou plus), les affichages peuvent modifier la zone du flux vidéo à afficher afin de conserver une image sur la totalité des écrans.&lt;br /&gt;
&lt;br /&gt;
De ce fait on peut imaginer des structures plus complexes, cylindriques dans le cas d'un flux d'une caméra à 360° ou plus simplement pour des simulateurs où les écrans seraient inclinés sans pour autant décrire un cercle autour de l'utilisateur.&lt;br /&gt;
&lt;br /&gt;
Cependant, pour des raisons évidentes d'effectif, de temps il est nécessaire de se réduire à une solution moins ambitieuse mais néanmoins acceptable.&lt;br /&gt;
&lt;br /&gt;
===Mercredi 17/01/18===&lt;br /&gt;
&lt;br /&gt;
* Mise en place d'un cahier des charge réalisable dans le temps imparti par rapport à la réponse théorique que l'on souhaiterai apporter au problème.&lt;br /&gt;
&lt;br /&gt;
Suite aux raisons évoquées précédemment, nous allons donc nous orienter vers un système à échelle réduite que nous ferons évoluer progressivement.&lt;br /&gt;
&lt;br /&gt;
Comme prévu nous diffuserons le flux vidéo initial, ''envoyé par Ethernet par une Raspberry Pi à partir d'un fichier stocké sur une clé usb par exemple'', aux 4 Raspberry intégrées aux écrans via un switch donc également par Ethernet (le port HDMI des R-Pi étant uniquement une sortie)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous effectuerons ensuite grâce aux R-Pi la modification du flux en fonction des écrans servant à l'affichage avant de rediriger la partie du flux qui nous intéresse vers les écrans.&lt;br /&gt;
&lt;br /&gt;
*'''Remarque:''' Dans un premier temps, pour une configuration donnée et avec les emplacement des écrans connues, il s'agit uniquement de réaliser la conversion d'affichage.&lt;br /&gt;
&lt;br /&gt;
Le fait de rendre les écrans intelligents n'est cependant pas ignoré et viendra dans un second temps, le choix de la méthode à employer étant encore en suspend. Nous allons cependant effectuer des hypothèses avec des capteurs.&lt;br /&gt;
&lt;br /&gt;
* Soit X et Y les dimensions du flux vidéo&lt;br /&gt;
* Soit U,R,D,L les états des capteurs sur un écran donné (respectivement, Up, Right, Down, Left) (1 pour actifs, 0 pour inactif)&lt;br /&gt;
* Soit I,J les indices des écrans (I = 0/1 et J = 0/1)&lt;br /&gt;
* Soit nb_X et nb_Y respectivement le nombre d'écrans en fonction des coordonnées i.e les dimensions de notre écran géant&lt;br /&gt;
&lt;br /&gt;
La configuration d'écran est la suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma (I,J)'''&lt;br /&gt;
&lt;br /&gt;
0,1 ; 1,1&lt;br /&gt;
&lt;br /&gt;
0,0 ; 1,0&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quel que soit l'écran, le flux qu'il devra recevoir sera situé entre [X1,X2] et [Y1,Y2].&lt;br /&gt;
Évidemment ces valeurs de l'emplacement de l'écran&lt;br /&gt;
&lt;br /&gt;
* Y2 = Y * ( D||U ) * (I+1) / nb_Y&lt;br /&gt;
* Y1 = Y * D * I / nb_Y&lt;br /&gt;
* X1 = X * L * J / nb_X&lt;br /&gt;
* X2 = X * ( L||R ) * (J+1) / nb_X&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	<entry>
		<id>https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=48219</id>
		<title>IMA4 2017/2018 P14</title>
		<link rel="alternate" type="text/html" href="https://projets-ima.plil.fr/mediawiki/index.php?title=IMA4_2017/2018_P14&amp;diff=48219"/>
				<updated>2018-01-17T17:16:48Z</updated>
		
		<summary type="html">&lt;p&gt;Vdupont1 : /* Mercredi 17/01/18 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
* '''Intitulé du projet''' : Proposer une solution permettant d'assembler des écrans de PC afin de créer un écran géant&lt;br /&gt;
&lt;br /&gt;
Le renouvellement de matériel informatique continu entraîne un nombre grandissant d'écrans d'ordinateur qui sont difficilement réutilisables compte tenu de leur petite taille. (17&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Afin de leur donner une seconde vie, ce projet a pour but de construire une plateforme permettant d'assembler ces écrans en un écran géant d'une forme &amp;quot;quelconque&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;'''Exemple d'un cas d'écran carré'''&lt;br /&gt;
[[Fichier:Combinaison_ecrans.jpg]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
Afin de réaliser ce projet, il faudra :&lt;br /&gt;
&lt;br /&gt;
* Ajouter un Raspberry Pi sur chaque écran afin de le rentre &amp;quot;intelligent&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Créer une application permettant de prendre un flux vidéo et de le diriger vers l'écran visé.&lt;br /&gt;
&lt;br /&gt;
* Permettre de déplacer facilement les écrans tout en maintenant le flux, que ce soit sur des configurations pleines en 2D ou des configurations plus complexes avec des espaces vides ou en 3D.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
* Le positionnement des écrans et la communication entre ces derniers.&lt;br /&gt;
&lt;br /&gt;
Pour une application telle qu'un écran géant composé de plusieurs écran, il est difficilement envisageable d'utiliser un système de coordonnées GPS pour repérer des écrans qui sont particulièrement proches les uns des autres. &lt;br /&gt;
En revanche il est tout à fait réaliste de penser à un système de capteurs de contact/proximité, disposés sur les bords des écrans pour leur permettre de s’emboîter puis il ne resterait qu'à exploiter les possibilités proposées par les Raspberry Pi ainsi qu'un système de coordonnées réalisé dans ce but pour déterminer où l'écran se situe par rapport aux autres.&lt;br /&gt;
&lt;br /&gt;
* La gestion du flux vidéo&lt;br /&gt;
&lt;br /&gt;
Le système sera potentiellement réalisé de sorte que chaque écran soit autonome dans son fonctionnement, une fois sa position relative déterminée au préalable.&lt;br /&gt;
En effet, pour le moment le problème était surtout dans le positionnement des écrans plus que dans la gestion du flux vidéo, à priori.&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Est-ce que le système peut continuer de fonctionner si on retire l'un des écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pour pallier au problème d'un retrait d'écran, ou d'un disfonctionnement éventuel localisé, une solution possible est de fournir à chaque écran la totalité du flux vidéo.&lt;br /&gt;
Ceci permet dans un premier temps de s'affranchir d'un traitement vidéo avant distribution mais surtout que les autres écrans puissent fonctionner sans interruption due à un écran en particulier  &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Peut-il y avoir des décalages d'affichage entre les écrans ?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Malgré l'absence de possibilités de test pour le moment, on peut néanmoins supposer qu'il n'y ait pas de décalage. &lt;br /&gt;
Chaque écran va recevoir le flux vidéo puis en fonction du positionnement des écrans, et on pourra utiliser le système de coordonnées pour effectuer une &amp;quot;selection&amp;quot; sur la partie à afficher.&lt;br /&gt;
&lt;br /&gt;
Dans le cas d'une configuration de 4 écrans en rectangle, il faudrait donc que l'écran inférieur gauche n'affiche que l'image correspondante jusqu'à la moitié, ensuite l'écran inférieur droit s'occuperait de l'affichage de la partie inférieure droite, etc&lt;br /&gt;
&lt;br /&gt;
En agrandissant le procédé à plus d'écrans, on trouve facilement une méthode de calcul.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;Exemple&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet où il s'agira d'être capable de fournir une solution matérielle à la problématique, on s'orientera vers un prototype n'incluant que 4 écrans. Ceci permet à la fois d'éviter un encombrement matériel mais aussi d'éviter des dépenses en Raspberry Pi.&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
* x4 Raspberry Pi 3 [https://fr.rs-online.com/web/p/processor-microcontroller-development-kits/8968660/?src=raspberrypi]&lt;br /&gt;
&lt;br /&gt;
* x24 Capteur de contact (2 par côté) [https://fr.rs-online.com/web/p/capteurs-proximites/7985273/]&lt;br /&gt;
'''Envisagé mais non validé !''' &lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| Lundi 15/01/18 : 3h30&lt;br /&gt;
Mercredi 17/01/18 : 4h&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
&lt;br /&gt;
===Lundi 15/01/18===&lt;br /&gt;
&lt;br /&gt;
* Première séance ayant pour but de synthétiser l'idée théorique souhaitée par le projet.&lt;br /&gt;
&lt;br /&gt;
On imagine un système d'ensemble d'écrans autonomes mais qui communiquent leur emplacement entre eux, dans le sens où il n'est pas nécessaire de reconfigurer à chaque modification sur l'emplacement des écrans.&lt;br /&gt;
&lt;br /&gt;
Le système est pour ainsi dire évolutif puisqu'à chaque modification, exemple: passage d'un écran géant de 2*2 à 2*3 ou 3*2 (ou plus), les affichages peuvent modifier la zone du flux vidéo à afficher afin de conserver une image sur la totalité des écrans.&lt;br /&gt;
&lt;br /&gt;
De ce fait on peut imaginer des structures plus complexes, cylindriques dans le cas d'un flux d'une caméra à 360° ou plus simplement pour des simulateurs où les écrans seraient inclinés sans pour autant décrire un cercle autour de l'utilisateur.&lt;br /&gt;
&lt;br /&gt;
Cependant, pour des raisons évidentes d'effectif, de temps il est nécessaire de se réduire à une solution moins ambitieuse mais néanmoins acceptable.&lt;br /&gt;
&lt;br /&gt;
===Mercredi 17/01/18===&lt;br /&gt;
&lt;br /&gt;
* Mise en place d'un cahier des charge réalisable dans le temps imparti par rapport à la réponse théorique que l'on souhaiterai apporter au problème.&lt;br /&gt;
&lt;br /&gt;
Suite aux raisons évoquées précédemment, nous allons donc nous orienter vers un système à échelle réduite que nous ferons évoluer progressivement.&lt;br /&gt;
&lt;br /&gt;
Comme prévu nous diffuserons le flux vidéo initial, ''envoyé par Ethernet par une Raspberry Pi à partir d'un fichier stocké sur une clé usb par exemple'', aux 4 Raspberry intégrées aux écrans via un switch donc également par Ethernet (le port HDMI des R-Pi étant uniquement une sortie)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous effectuerons ensuite grâce aux R-Pi la modification du flux en fonction des écrans servant à l'affichage avant de rediriger la partie du flux qui nous intéresse vers les écrans.&lt;br /&gt;
&lt;br /&gt;
*'''Remarque:''' Dans un premier temps, pour une configuration donnée et avec les emplacement des écrans connues, il s'agit uniquement de réaliser la conversion d'affichage.&lt;br /&gt;
&lt;br /&gt;
Le fait de rendre les écrans intelligents n'est cependant pas ignoré et viendra dans un second temps, le choix de la méthode à employer étant encore en suspend. Nous allons cependant effectuer des hypothèses avec des capteurs.&lt;br /&gt;
&lt;br /&gt;
* Soit X et Y les dimensions du flux vidéo&lt;br /&gt;
* Soit U,R,D,L les états des capteurs sur un écran donné (respectivement, Up, Right, Down, Left) (1 pour actifs, 0 pour inactif)&lt;br /&gt;
* Soit I,J les indices des écrans (I = 0/1 et J = 0/1)&lt;br /&gt;
* Soit nb_X et nb_Y respectivement le nombre d'écrans en fonction des coordonnées i.e les dimensions de notre écran géant&lt;br /&gt;
&lt;br /&gt;
La configuration d'écran est la suivante:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
'''Schéma (I,J)'''&lt;br /&gt;
&lt;br /&gt;
0,1 ; 1,1&lt;br /&gt;
&lt;br /&gt;
0,0 ; 1,0&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quel que soit l'écran, le flux qu'il devra recevoir sera situé entre [X1,X2] et [Y1,Y2].&lt;br /&gt;
Évidemment ces valeurs de l'emplacement de l'écran&lt;br /&gt;
&lt;br /&gt;
* Y2 = Y * ( D||U ) * (I+1) / nb_Y&lt;br /&gt;
* Y1 = Y * D * I / nb_Y&lt;br /&gt;
* X1 = X * L * J / nb_X&lt;br /&gt;
* X2 = X * ( L||R ) * (J+1) / nb_X&lt;br /&gt;
&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Vdupont1</name></author>	</entry>

	</feed>