Construction d'un boîtier pour permettre une connexion WiFi aux videoprojecteurs
| |||
---|---|---|---|
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 |
Sommaire
- 1 Description du projet
- 2 Configuration de la carte
- 2.1 Connexion au port série
- 2.2 Installation d'Ubuntu
- 2.3 Configuration du réseau filaire
- 2.4 Configuration de la date et du clavier
- 2.5 Installation d'une interface graphique
- 2.6 Installation des pilotes vidéo
- 2.7 Configuration du son
- 2.8 Installation des logiciels utilisés par le projet
- 2.9 Modification du nom de machine
- 2.10 Installation du serveur Web de configuration
- 3 Pages liées
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 :
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 est primordiale en début de mise au point du boitier, tant qu'il n'est pas relié au réseau (et donc administrable à distance).
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 de système d'exploitation. 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). L'image et la vidéo étant au coeur de ce projet, nous avons donc 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
Remarque : l'ENSIMAG possède ses propres serveurs NTP. Pour bien configurer la date et heure, il convient d'éditer le fichier /etc/openntpd/ntpd.conf de la manière suivante :
$ sudo nano /etc/openntpd/ntpd.conf ... #server 0.debian.pool.ntp.org #server 1.debian.pool.ntp.org #server 2.debian.pool.ntp.org #server 3.debian.pool.ntp.org server ntp.imag.fr server ntp1.imag.fr server ntp2.imag.fr
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
En vue de la suite, on désactive la mise en veille de la sortie vidéo en lançant la commande suivante :
$ sed -i "s/\(mode:\).*/\1 off/" /home/ubuntu/.xscreensaver
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 les paquets suivants :
$ sudo apt-get install alsa pulseaudio
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) :
|
Enfin, désactiver l'état muet de tous les canaux du type HeadsetL ou HeadsetR en pressant la touche "m" du clavier (00 doit apparaitre au lieu de MM).
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. Pour enregistrer la configuration, lancer la commande suivante :
$ sudo alsactl store
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égers afin d'utiliser au mieux le BeagleBoard.
- Pour VNC, installer ssvncviewer :
$ sudo apt-get install ssvnc
- Pour VLC :
$ sudo apt-get install vlc
- Pour 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 soient effectifs, un redémarrage est nécessaire :
$ sudo reboot
Si la 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 boîtier via une interface Web.
Pour installer ce serveur Web local, commencer par récupérer l'archive hébergée 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’exé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’exécution du script : taper simplement "Y".
A la terminaison du script, supprimer l'archive, le dossier nouvellement créé 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 boîtier (ou son nom DNS le cas échéant...) dans un quelconque navigateur Web. Seule l'unique machine connectée en WiFi au boîtier 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).

Pages liées
- Utilisation de la connexion WiFi aux videoprojecteurs (manuel d'utilisation)