Construction d'un boîtier pour permettre une connexion WiFi aux videoprojecteurs : Différence entre versions

De Ensiwiki
Aller à : navigation, rechercher
Ligne 244 : Ligne 244 :
 
Au redémarrage, le serveur Web est opérationnel : il est accessible en tapant l'adresse IP du boitier (ou son nom DNS le cas échéant...) dans un quelconque navigateur Web. Seule l'unique machine connectée en WiFi au boitier a accès à ce serveur de configuration (tout autre utilisateur arrive sur une page figée lui indiquant qu'il ne dispose pas des droits pour accéder au serveur).
 
Au redémarrage, le serveur Web est opérationnel : il est accessible en tapant l'adresse IP du boitier (ou son nom DNS le cas échéant...) dans un quelconque navigateur Web. Seule l'unique machine connectée en WiFi au boitier a accès à ce serveur de configuration (tout autre utilisateur arrive sur une page figée lui indiquant qu'il ne dispose pas des droits pour accéder au serveur).
  
{{Attention|Dès lors, on observe aussi au démarrage l'affichage en plein écran du nom de la machine.
+
{{Attention|Dès lors, on observe l'affichage en plein écran du nom de la machine.
 
Tout changement ultérieur de nom de machine n'aura aucune influence : pour cela, il est important de '''changer le nom de la machine avant''' de lancer l'installation du serveur Web.}}
 
Tout changement ultérieur de nom de machine n'aura aucune influence : pour cela, il est important de '''changer le nom de la machine avant''' de lancer l'installation du serveur Web.}}
  

Version du 31 mai 2012 à 13:35

Logo Construction d'un boîtier pour permettre une connexion WiFi aux vidéoprojecteurs
Projet Projet de spécialité 2A 2012
Thème FabLab
Étudiants Martin CHAPSAL (SLE)
Thomas DELAHODDE (ISI)
Thomas MORESCHI (SLE)
Laurent OUGIER-SIMONIN (SLE)
Date 21 Mai - 15 Juin 2012
Tuteur Franck ROUSSEAU


Description du projet

Introduction

Le but de ce projet est de fabriquer une mini machine que l'on peut connecter à chaque vidéoprojecteur de l'école et à laquelle on se connecte en WiFi pour projeter sans fil. Ce projet se basera sur des cartes du type Raspberry Pi ou BeagleBoard. Le Raspberry Pi étant indisponible en ce début de projet, le projet sera réalisé sur la carte BeagleBoard-xM. Le but final étant d'implémenter cette solution dans l'école avec des Raspberry Pi (beaucoup moins cher que le BeagleBoard-xM), nous essaierons, au maximum, de développer une solution adaptable facilement sur ce type de carte.

Le schéma ci-dessous illustre le fonctionnement de notre projet :

Schéma de fonctionnement

Objectifs

Les fonctionnalités recherchées sont les suivantes :

  • auto-détection de l'allumage du vidéoprojecteur pour réveiller la carte puis projection des informations de connexion WiFi à la carte (la carte se comporte comme un point d'accès)
  • la carte attend alors une connexion d'un client avec ces informations (et en accepte une seule)
  • projection de la totalité de l'écran à l'aide du logiciel VNC
  • projection d'une vidéo à l'aide du logiciel VLC (dans ce cas là, le son est aussi transmis au vidéoprojecteur)
  • transmission de contenus multimédia à l'aide du protocole AirPlay
  • le client reste connecté à Internet, avec 2 solutions envisageables :
    • la carte est reliée en filaire au réseau de l'école et le client étant connecté en WiFi à la carte, celle-ci servira de passerelle pour connecter le client à Internet
    • la connexion WiFi du client se divise en 2 : une connectée à la carte pour transmettre les données à projeter et l'autre connectée au réseau WiFi de l'école
  • lancer la diffusion de vidéos stockées sur un serveur (par exemple Le Kiosk), directement depuis un client connecté au boîtier
  • le client choisit le mode de diffusion qu'il veut utiliser sur une interface Web

Nous essaierons, dans les 4 semaines du projet, de réaliser le plus nombre des objectifs ci-dessus, avec comme priorité d'avoir une solution complètement fonctionnelle avec le logiciel VNC en fin de projet.


Configuration de la carte

Nous rappelons que nous avons à notre disposition le BeagleBoard-xM, mais que les différentes étapes de la configuration sont tout à fait adaptables sur un Rasberry Pi.

Connexion au port série

Le BeagleBoard-xM possède un port série et la première étape a été de savoir comment se connecter à la carte via ce port. Nous avons, pour cela, écrit cette page ensiwiki qui détaille la démarche à suivre pour chaque OS.

Cette connexion au port série était importante car la détection de l'allumage du vidéoprojecteur se fera via ce port série (le vidéoprojecteur étant, lui aussi, équipé d'un port série).

Installation d'Ubuntu

Le BeagleBoard-xM est livré avec la distribution linux Ångström installée sur la carte micro-SD de 4Go fournie. Afin de bénéficier d'une distribution plus complète en terme de fonctionnalités, nous avons décidé de changer cette distribution. Après quelques recherches sur les différentes distributions proposées pour l'architecture ARM du BeagleBoard, nous avons choisi d'utiliser la distribution Ubuntu, disposant de versions OMAP (adaptées au processeur du BeagleBoard-xM). Cette distribution a l'avantage d'avoir une grande communauté et donc un support très large pour le matériel. De plus, cette distribution peut aussi être installée facilement sur un Raspberry Pi.

Pour installer Ubuntu sur le BeagleBoard-xM, nous avons suivi les instructions de cette page. Nous avons découvert (cf cette page) que les drivers graphiques n'étaient pas disponibles pour la dernière version (12.04, Precise), donc nous avons choisi d'installer la version précédente (11.10, Oneiric). Nous avons donc suivi les instructions de la section 4.2.2, que nous reprenons ici en Français (instructions pour une installation depuis un système Linux) :

  • télécharger la dernière image de la distribution sur cette page. Pour notre projet, la dernière version est la -r8, nous allons détailler les différentes étapes avec cette version :
 $ wget http://rcn-ee.net/deb/rootfs/oneiric/ubuntu-11.10-r8-minimal-armel.tar.xz
  • vérifier le md5 de l'image :
 $ md5sum ubuntu-11.10-r8-minimal-armel.tar.xz
 979b3c6f68df6c51673200bcca511c0c  ubuntu-11.10-r8-minimal-armel.tar.xz
  • extraire l'archive :
 $ tar xJf ubuntu-11.10-r8-minimal-armel.tar.xz
 $ cd ubuntu-11.10-r8-minimal-armel
  • nous allons installer Ubuntu sur la carte micro-SD du BeagleBoard, donc si ce n'est pas déjà fait, branchez-la sur votre ordinateur. Si vous ne connaissez pas l'emplacement de la carte micro-SD, lancer la commande :
$ sudo ./setup_sdcard.sh --probe-mmc
Mot de passe :

Are you sure? I Don't see [/dev/idontknow], here is what I do see...

fdisk -l:
Disk /dev/sda: 500.1 GB, 500107862016 bytes <- x86 Root Drive
Disk /dev/mmcblk0: 3957 MB, 3957325824 bytes <- MMC/SD card

mount:
/dev/sda1 on / type ext4 (rw,errors=remount-ro,commit=0) <- x86 Root Partition
  • lancer enfin l'installation sur la carte micro-SD, ici située en /dev/mmcblk0 (cette étape peut nécessiter l'installation de quelques paquets, les instructions seront expliquées dans la sortie de la commande) :
$ sudo ./setup_sdcard.sh --mmc /dev/mmcblk0 --uboot beagle_xm

Vous pouvez maintenant démonter la carte micro-SD de votre ordinateur, la remettre dans le BeagleBoard et le démarrer, il va démarrer sur le système Ubuntu que l'on vient d'installer. Vous pouvez donc vous connecter via le port série, les identifiants par défaut sont :

 login : ubuntu
 mot de passe : temppwd

Il faut maintenant installer les différents paquets dont nous allons avoir besoin pour notre projet.

Configuration du réseau filaire

Pour se connecter au réseau de l'école en ethernet, nous allons tout d'abord devoir configurer Ubuntu pour que la carte ethernet conserve son adresse MAC à chaque reboot. Pour cela, en étant connecté via le port série, éditer la ligne hwaddress dans le fichier /etc/network/interfaces, qui au final sera de cette forme (en remplaçant avec votre adresse MAC) :

 auto lo
 iface lo inet loopback
 
 # The primary network interface
 auto eth0
 iface eth0 inet dhcp
 # Example to keep MAC address between reboots
 hwaddress ether XX:XX:XX:XX:XX:XX 
 ...

Redémarrer le BeagleBoard, et il sera directement connecté en ethernet au réseau de l'école (DHCP est démarré automatiquement au boot).

Configuration de la date et du clavier

Comme le BeagleBoard sera constamment connecté à Internet, nous allons installer openntpd afin de configurer la date et l'heure automatiquement à chaque boot en utilisant NTP.

On commence par mettre à jour les dépôts :

 $ sudo apt-get update

Puis on installe openntpd :

 $ sudo apt-get install openntpd

Il faut maintenant configurer notre zone horaire, via l'utilitaire :

 $ sudo dpkg-reconfigure tzdata

Le BeagleBoard est maintenant paramétré avec la bonne date.

Si vous utilisez un clavier USB directement sur le BeagleBoard, et que vous voulez le configurer en clavier Français (AZERTY), lancez l'utilitaire suivant :

 $ sudo dpkg-reconfigure keyboard-configuration

Installation d'une interface graphique

Nous allons maintenant installer un environnement graphique qui nous permettra d'afficher les différents flux vidéo transmis. Nous devons trouver un environnement de bureau très léger et simple car nous n'aurons pas besoin de beaucoup de fonctionnalités. Nous avons donc choisi LXDE qui nous a semblé parfaitement adapté et surtout beaucoup plus léger que les environnements de bureau classiques (GNOME, KDE...).

Installer LXDE (installation assez longue, 30-45min) :

 $ sudo apt-get install lxde

Il faut ensuite installer un gestionnaire de sessions (pour se logguer en graphique au démarrage du BeagleBoard).

Nous avons choisi d'utiliser SLiM qui est très léger.

 $ sudo apt-get install slim

De plus, on peut le configurer afin de se connecter automatiquement sans avoir à passer par l'étape d'authentification. Il faut pour cela éditer le ficher /etc/slim.conf :

  • décommenter la ligne suivante et remplacer simone par le login (ubuntu pour nous) :
 # default_user        simone
  • décommenter la ligne suivante et remplacer no par yes :
 # auto_login          no

Vous pouvez maintenant redémarrer le BeagleBoard et LXDE sera lancé automatiquement !

Installation des pilotes vidéo

Afin de pouvoir lire des vidéos de manière fluide, il faut installer le pilote vidéo pour les puces OMAP :

 $ sudo apt-get install xserver-xorg-video-omap3

Redémarrer afin d'utiliser ces nouveaux pilotes graphiques.

Configuration du son

Pour faire fonctionner le son (lorsque l'on transmets via VLC vidéo + audio), il faut installer alsa :

 $ sudo apt-get install alsa

Il faut alors configurer le son avec alsamixer :

 $ alsamixer

Sur le BeagleBoard, il n'y a pas de canal Master comme sur la plupart des cartes son, mais il y a beaucoup d'item dans alsamixer. Après avoir cherché sur le Web et testé de nombreuses configurations, voici celle avec laquelle nous avons obtenu le meilleur résultat (les items qui n'apparaissent pas sur cette capture sont désactivés ou à 0) :

Configuration alsamixer

  • DAC1 Analog : 51
  • DAC1 Digital Fine : 63
  • DAC2 Analog : 51
  • DAC2 Digital Fine : 63
  • Headset : 63

Cette configuration permet d'avoir un son tout à fait correct avec la plupart des vidéos. Cependant, il y a parfois des grésillements, sans doute lorsque la puissance de la carte devient insuffisante.

Installation des logiciels utilisés par le projet

Pour notre projet, nous avons besoin de plusieurs logiciels que nous allons installer. Nous avons choisi des logiciels léger afin d'utiliser au mieux le BeagleBoard.

  • Pour VNC, installer xtightvncviewer :
 $ sudo apt-get install xtightvncviewer
  • VLC :
 $ sudo apt-get install vlc

  • SM (Short Message) :
 $ sudo apt-get install sm


Modification du nom de machine

Afin d'être plus facilement identifiable et administrable par la suite, il convient de changer le nom de la machine BeagleBoard (omap par défaut).

Il est à noter que ce changement de nom se répercutera par la suite sur l'affichage proposé sur le vidéo-projecteur.

Pour modifier ce nom, éditer le fichier /etc/hostname et remplacer omap par le nom souhaité :

 $ sudo nano /etc/hostname
   Nom_Du_Boitier

Ensuite, faire de même dans le fichier /etc/hosts :

 $ sudo nano /etc/hosts
   127.0.0.1 localhost
   127.0.1.1 Nom_Du_Boitier

Pour que les changements soit effectifs, un redémarrage est nécessaire :

 $ sudo reboot

Si le modification a été correctement effectuée, le prompt du terminal devrait avoir changé (de la forme <user>@Nom_Du_Boitier )

Installation du serveur Web de configuration

Dans le but d'accéder aux différents services proposés, l'utilisateur interagit avec le boitier via une interface Web.

Pour installer ce serveur Web local, commencer par récupérer l'archive hébergé sur EnsiWiki en lançant la commande suivante depuis le BeagleBoard :

 $ wget --no-check-certificate https://ensiwiki.ensimag.fr/images/b/ba/Installation_v2.tgz

Décompresser ensuite l'archive et aller dans le dossier nouvellement créé :

 $ tar xzvf Installation_v2.tgz
 $ cd installation_v2

Donner les droits d'éxécution au script setup_serveur.sh et lancer le (en root) :

 $ sudo chmod u+x setup_serveur.sh
 $ sudo ./setup_serveur.sh

Une confirmation vous sera demandée en début d'éxécution du script : taper simplement "Y".

A la terminaison du script, supprimer l'archive, le dossier nouvellement créer et redémarrer le BeagleBoard

 $ rm -f Installation_v2.tgz
 $ rm -Rf installation_v2
 $ sudo reboot

Au redémarrage, le serveur Web est opérationnel : il est accessible en tapant l'adresse IP du boitier (ou son nom DNS le cas échéant...) dans un quelconque navigateur Web. Seule l'unique machine connectée en WiFi au boitier a accès à ce serveur de configuration (tout autre utilisateur arrive sur une page figée lui indiquant qu'il ne dispose pas des droits pour accéder au serveur).

AttentionDès lors, on observe l'affichage en plein écran du nom de la machine. Tout changement ultérieur de nom de machine n'aura aucune influence : pour cela, il est important de changer le nom de la machine avant de lancer l'installation du serveur Web.


Pages liées