Aller au contenu

Miroir connecté

Le but initial de ce projet était de créer un miroir connecté à partir d’un écran d’ordinateur, d’un filtre semi-réfléchissant et de différents modules de description d’environnement (capteur d’humidité, température, caméra infrarouge, détecteur de mouvements, …). Finalement, la plateforme MagicMirror² fait plutôt bien le tour de l’idée, nous avons cherché à innover et créer un objet unique. Nous nous sommes donc lancé dans la fabrication d’un miroir fonctionnant la nuit mais toujours en gardant l’idée de miroir connecté.
Une interface tactile a aussi fait l’objet d’une étude de façon à développer un panneau peu cher et transparent que l’on pourrait ajouter sur le miroir.

Membres du groupe

  • AHMED Majdi (elec)
  • ARBEZ Valentin (elec)
  • BAYLE Alexis (info)
  • LLORCA Vivien (elec)
  • SEIGNETTE Thomas (info)

Matériel nécessaire

Le matériel nécessaire à la fabrication du miroir est assez peu coûteux, une partie peut même être récupérée sur du vieux matériel. On séparera le tout en deux parties.
D’une part, la partie boîtier :

  • une plaque de plexiglas
  • du film semi-réfléchissant : plus vous investirez dedans, plus beau sera l’effet !
  • du MDF : assez épais pour le boîtier, plutôt fin pour la plaque arrière qui accueille les cartes électroniques
  • de la colle à bois
  • de la visserie classique

D’autre part, la partie électronique :

  • un Raspberry Pi 3 et tout ce qui va avec : une carte μSD, un chargeur et un adaptateur HDMI vers la prise vidéo de l’écran
  • un écran d’ordinateur : on peut facilement utiliser un vieil écran, pas besoin de haute résolution !
  • une Pi NoIR Camera : la caméra infrarouge qui nous permettra de voir la nuit
  • des LEDs infrarouges avec leurs résistances
  • un capteur d’humidité et de température : nous avons utilisé le modèle DHT11

Fabrication du boîtier

Fabrication du cadre et du miroir

Le cadre a été réalisé en MDF en utilisant la découpeuse laser et le plugin Inkscape qui permet de générer automatiquement des boîtes. Nous avons choisi une plaque de bois assez épaisse pour créer un bloc solide compte tenu du poids de l’écran. Le plan réalisé est disponible via ce lien. Avec un peu de colle à bois, la boîte se révèle résistante.
Concernant l’application du film semi-réfléchissant sur la plaque de plexiglas, il ne faut pas hésiter à mouiller le film pour éviter la formation de bulle.

Fixation de l’écran et des composants

Nous avons d’abord commencé à désosser l’écran pour gagner en épaisseur. Des cales en bois ont ensuite été collées sur le cadre de manière à bien caler l’écran qui est finalement fixé à l’aide de vis.
Des trous ont été fait sur le haut de la façade afin de faire sortir la caméra et les LEDs infrarouges.
Nous avons aussi réalisé une petite plaque en bois qui se fixe à l’arrière de l’écran et qui permet de fixer le Raspberry à côté de la caméra (plan disponible ici).

Branchement

Le capteur d’humidité et de température est branché sur l’alimentation en 3.3V et le GPIO 26 et les LEDs sont branchées sur le GPIO 19.

Résultat

Voici un aperçu du rendu final du miroir.

Installation du code

Nous avons développé les fonctionnalités en Python. Ce choix s’est fait après être tombé sur le package picamera qui permet d’utiliser facilement et efficacement la caméra et notamment l’affichage en temps réel de son flux : on peut afficher un flux en 60fps avec un latence vraiment très faible. Le code est disponible ici, il suffit d’avoir Python d’installé ainsi que quelques paquets (à installer avec  »pip install’).
L’idée du miroir est simple : le jour, on affiche simplement les informations (heure, température, …) et la nuit, on y ajoute le flux de la caméra. Pour effectuer la détection jour/nuit, nous capturions à intervalle régulier une image de la caméra et calculons sa luminosité.
Cela nous donné un algorithme relativement simple :

  • En mode jour On vérifie toutes les 2 secondes si la luminosité est faible. Si c’est le cas, on passe en mode nuit : on allume les LEDs infrarouges et on affiche le flux de la caméra.
  • En mode nuit Toutes les 30 secondes, on éteint les LEDs et vérifie la luminosité. Si elle est élevé, on passe en mode jour : on éteint les LEDs et on cache le flux de la caméra.

Difficultés rencontrées

La principale difficulté rencontrée a été de trouver comment afficher efficacement le flux vidéo de la caméra du Raspberry Pi. Nous avons dans un premier temps voulu développer notre propre module MagicMirror mais les performances n’étaient pas au rendez-vous. Nous nous sommes donc décidé à développer notre propre programme mais nous avons mis du temps à trouver le package picamera. Tous les autres récupéraient puis affichaient image par image le flux de la caméra ce qui donnaient des performances médiocres. Il aurait fallu sacrifier la qualité de la vidéo pour obtenir une vidéo fluide.
Une de nos volontés était aussi de créer nous-même une interface tactile à l’aide de LEDs incrustées tout autour de la plaque de plexiglas mais les résultats n’ont pas été concluants.

Améliorations possibles

Nous aurions aimé développé quelques autres fonctionnalités, notamment :

  • Ajouter plus de LEDs infrarouges : cela permettrait de beaucoup mieux se voir dans le noir
  • La reconnaissance faciale avec OpenCV : le miroir reconnaît la personne devant le miroir et affiche des messages d’accueil personnalisés
  • Un bouton selfie pour se prendre en photo
  • Un système de contrôle vocal couplé aux enceintes de l’écran afin d’interagir avec ce dernier

Avancement du projet

  • 01 février : premier brainstorming sur l’idée du projet, recherche des caractéristiques voulues, formation découpeuse laser
  • 08 février : désossage d’un vieux moniteur
  • 15 février : test du film semi-réfléchissant, découpe du prototype du cadre en bois, installation de MagicMirror sur la RaspberryPi
  • 01 mars : découpe du cadre plexiglas puis collage du film semi-réflechissant, fork du projet Github et lecture de la documentation pour ajouter des modules
  • 08 mars : Fin de l’étude sur le panneau tactile à base d’une plaque de plexiglas et d’émetteurs/récepteurs infrarouge : après un test pratique cela ne fonctionne pas (pas de variation de la sortie lors d’un appuie du doigt).
  • 15 mars : Dimensionnement et découpe du cadre en bois définitif du miroir (le derrière restera ouvert pour le moment pour relier les modules électroniques).
  • 22 mars : test de la camera
  • 29 mars : installation du serveur de stream de la camera
  • 5 avril : Configuration du capteur de température et d’humidité
  • 12 avril : découverte du package picamera
  • mai : finalisation du code et du boîtier

Liens utiles