Miroir intelligent

De Wiki de Projets IMA
Révision datée du 9 mars 2016 à 14:19 par Gvillemo (discussion | contributions) (Avancement du projet)

Cahier des charges

Contexte

Le nombre d'objet connecté ne cesse de croitre et leurs bénéfices nous apportent un confort supplémentaire dans notre vie quotidienne. Ce projet vise le développement d'un miroir intelligent pour un usage quotidien dans une salle de bain.

Objectif

L'objectif de ce projet est le développement d'un miroir capable d’interagir avec l'utilisateur. Le miroir devra être capable d'afficher des informations, de retoucher l'image affichée, d'adapter son contenu à l'utilisateur.

Description fonctionnelle

Le miroir doit :

  • être léger
suffisamment pour être accroché au mur.
  • reconnaitre l'utilisateur
pour proposer un affichage personnalisé.
  • disposer d'une interface utilisateur
pour donner le choix à l'utilisateur d'afficher un contenu spécifique (météo, actualité, etc).
  • bénéficier d'une connexion internet
pour actualiser ses informations à afficher
  • être branché au secteur
pour éviter la batterie faible, et ne pas nécessiter d'une interaction quotidienne de la part de l'utilisateur.

Matériel et solutions techniques

  • Miroir sans tain
  • Écran LED
  • Raspberry Pi
  • Webcam
  • Cadre/Structure miroir


La structure du miroir devra être fine et en matériaux léger.
L'interface de choix du contenu de l'utilisateur sera une application android pour smartphone.
Une RaspberryPi, bénéficiant d'un accès wifi, permettra d'actualiser le contenu à afficher en se connectant à Internet mais aussi permettra à l'utilisateur de sélectionner les rubriques qui l’intéresse via son smartphone. Elle gérera l'affichage à l'écran.

Avancement du projet

Tâches Avancement
Configuration de la RaspberryPi Fait
Mise en place d'un serveur Apache Fait
Développement d'une page web En cours
Test de l'éran tactile Fait (uniquement pour i386)
Construction du miroir (assemblage cadre+écran+matrice tactile) A faire

semaine 1

L'idée de base du miroir est de coller un miroir sans tain à un écran de la taille du miroir et de n'allumer que certaine partie du miroir ainsi la lumière peut passer au travers du miroir et donne une impression d'affichage sur celui-ci. Une camera placée sur le miroir doit détecter une personne pour gérer un profil personalisé pour chaque utilisateur.

Lors de notre première semaine de projet, nous avons réflechie aux différents choix que nous avions fait avant le début de celui-ci, afin de savoir si ceci était réalisable. Nous avons ainsi commencé à travaillé sur une raspberry afin de trouver la meilleur solution pour la réalisation d'une application pour le miroir. De plus nous avons travaillé sur un systeme de reconnaissance facial en C à partir de la librairie "openCV.h".

Nous avons rapidement compris que la méthode la plus efficace pour réaliser notre application etait d'utillisé la raspberry comme un kiosk qui se connecterai à une application web en php.

semaine 2

Durant cette deuxième semaine, nous avons voulu avancer sur le programme de reconnaissance facial. Or M.Vantroys, nous a dit que la reconnaissance facial serait un plus pour notre projets, mais n'étant pas primordial et très chronophage, nous devions nous concentré sur un autre moyen d’interaction avec le miroir. Il nous a ainsi donné la possibilité d’utiliser une matrice de LED tactile qu'il avait commandé pour un autre projet mais qui n'avait pas était utilisé.

Nous avons décidé de nous concentré sur la raspberry py au cours de cette semaine. Nous l'avons configuré en mode Kiosk, elle démarre en lançant Chromium en plein écran sur la page: "http://localhost" pour ce faire nous avons installé chromium:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install chromium

Puis de modifié le fichier de config: /etc/xdg/lxsession/LXDE-pi/autostart

@lxpanel --profile LXDE
@pcmanfm --desktop --profile LXDE
@xset s off
@xset -dpms
@xset s noblank
@chromium --kiosk  --incognito http://localhost

En mode Kiosk la souris apparais nous avons donc installé un utilitaire pour la faire disparaitre au bout d'un temps d’inactivité.

sudo apt-get install unclutter 

Puis nous avons installé un serveur apache sur la raspberry pour pouvoir affiché une page web sur cette page.

sudo apt-get install apache2 php5 mysql-server libapache2-mod-php5 php5-mysql

Le serveur ce trouve dans le dossier /var/www/html, il ne nous reste donc plus qu'a mettre les fichiers de l'application dans ce dossier.

semaine 3

Au cours de cette semaine nous avons testé la matrice de LED.
Nous avons commencé par installer les drivers du constructeur de la matrice. Malheureusement ces drivers nécessitent Adobe AIR qui n'est pas disponible pour les architectures ARM. La RaspberryPi ne peut donc pas supporter la dalle sensitive. Nous avons tout de même installer ces drivers sur un Ubuntu pour tester la dalle. L'installation est rapide et la configuration facile. Nous avons donc choisi d'installer le serveur apache sur pc avec la même configuration que sur la RaspberryPi pour pouvoir développer notre page web. Nous devons donc encore trouver un autre moyen d'interagir avec la Raspberry pour conserver une solution portable telle que nous l'avons défini dans notre cahier des charges.

Le code d'installation des drivers pour la dalle nous a été fourni par Benjamin et Kévin qui avaient utilisé la dalle pour leur projet de meuble connecté :

  su
  dpkg --add-architecture i386
  apt-get update
  apt-get install libc6:i386 libstdc++6:i386 libgtk2.0-0:i386 libnss3:i386 libxml2:i386 libxt6:i386 libxslt1.1:i386
  wget http://multitouch.com/download/mt_driver_kit_linux.tar.bz2
  tar xjvf mt_driver_kit_linux.tar.bz2
  ./driverkit/install.sh
  Adobe\ AIR\ Application\ Installer /opt/pqlabs/platform/MultiTouchPlatform.air

La dernière commande lance l'application de configuration. Lorsque la dalle est reconnue par le logiciel, nous procédons au calibrage et suivons les instructions à l'écran. A noter que le calibrage détermine la zone tactile. Nous pouvons donc n'utiliser qu'une partie du miroir pour être tactile dans l'hypothèse où l'écran qui affichera les informations ne remplira pas tout le miroir.

semaine 4

Le serveur apache et l’écran tactile fonctionnant, nous avons pu commencer a travaillé sur notre application web. Néant jamais travaillé sur des applications Javascript, et très peu sur du HTML, CSS, PHP. Nous avons cherché des widgets en open sources sur le net, ainsi que quelque information sur ces langages afin de comprendre le fonctionnement des widgets trouvé.

Nous avons trouvé un modèle d'affichage sur le net, nous proposant d'affiché la date, la météo, les informations, un agenda et un compliment. Nous avons donc décidé d'utilisé cette application comme squelette de la notre.

semaine 5

semaine 6

semaine 7

semaine 8

semaine 9

semaine 10

semaine 11

semaine 12