Magic Mirror

Me voilà lancé dans mon projet de miroir magique avec ma Raspberry pi !

On trouve sur le net plusieurs exemple de réalisation de miroirs magiques. Il exemple plusieurs approches : carte Raspberry couplée à un écran LCD, application Android qui tourne sur une tablette bon marché…

J’ai opté pour la première solution car c’est celle qui me laissera, je pense, le plus de liberté.

Le principe

Le principe est relativement simple (sur le papier). Il s’agit de réaliser un miroir à partir d’une vitre sans tain derrière laquelle on vient fixer un écran LCD relié à la carte Raspberry Pi. La carte affiche une page web en plein écran. Tout ce qui est noir est invisible coté miroir, tout ce qui est blanc apparait.

Inspiration :

L’idée

Mon idée au niveau software :

  1. Affichage de la météo et du jour/heure
  2. Installation d’un capteur de proximité pour allumer l’écran uniquement quand quelqu’un s’en approche
  3. Utilisation de la reconnaissance faciale pour afficher les prochains événements du calendrier de la personne devant le miroir (plus tard)

Budget

Sans en avoir l’explication, j’ai constaté qu’un miroir sans tain est hors de prix en France. Je vais donc me tourner vers l’achat d’une plaque en verre sur laquelle je collerai un film « sans tain ». Il me reste encore à déterminer si je vais réaliser un cadre en bois ou intégrer le miroir à un meuble existant.

Pour l’écran, je vais réutiliser un vieil écran LCD qui traine dans un coin de mon appartement.

Software

Etant avant tout développeur, je suis pressé de tester les possibilités logicielles. C’est parti !

Les sources sont disponibles sur mon GitHub.

Incliner l’écran de 90°

sudo nano /boot/config.txt

Ajouter la ligne suivante à la fin du fichier :

display_rotate=0 Normal
display_rotate=1 90 degrees
display_rotate=2 180 degrees
display_rotate=3 270 degrees
display_rotate=0x10000 horizontal flip
display_rotate=0x20000 vertical flip

Météo et jour/heure

Etant développeur web, cette partie est la plus simple pour moi. Je réalise rapidement une page web avec du Javascript qui affiche la date/heure à gauche et la météo à droite. Je me base sur l’API OpenWeatherMap qui fournit les données météo pour ma ville, ainsi que les prévisions sur plusieurs jours.

Un peu de formatage et le tour est joué :

capture d'écran de l'interface du miroir
Capture d’écran de l’interface qui s’affichera au travers du miroir

Le code est loin d’être parfait mais j’aurais l’occasion de le retravailler plus tard. Toute contribution est la bienvenue 🙂

Installer le code sur le RPI

sudo apt-get install nginx

cd /var/www

sudo chmod o+w .

git clone https://github.com/nicolasgrancher/mirror.git

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/mirror

sudo nano /etc/nginx/sites-available/mirror

server {
listen 80;

root /var/www/mirror;

index index.html;

server_name mirror;

location / {
try_files $uri $uri/ =404;
}
}

sudo ln -s /etc/nginx/sites-available/mirror /etc/nginx/sites-enabled/mirror

sudo service nginx restart

sudo nano /etc/hosts

127.0.0.1       mirror

Tester en lançant le navigateur à l’adresse http://mirror/

Pour lancer le navigateur automatiquement au démarrage du RPI en plein écran j’ai suivi ce tuto :
http://blog.philippegarry.com/2014/10/15/pi-kiosk-mode/
et https://letmeknow.fr/blog/2016/03/12/tuto-passer-le-raspberry-pi-en-mode-kiosque/

sudo apt-get install chromium
sudo nano ~/.config/lxsession/LXDE-pi/autostart

ajouter :
@point-rpi
@xset s off
@xset -dpms
@xset s noblank
@chromium-browser –kiosk http://mirror

Allumer ou éteindre le moniteur

http://the-martins.org/?p=81

À tester avec détecteur de présence :

http://m.banggood.com/fr/HC-SR505-Mini-Infrared-PIR-Motion-Sensor-Precise-Infrared-Detector-Module-p-1011714.html

Hardware

Choix des matériaux

Choix de la vitre
Matériaux achetés : filtre sans tain, tasseau de bois, pistolet à colle, scie

Application du film sans tain

Réalisation du cadre en bois

Le cadre monté et fixé par des vis
Ajout de tasseaux intérieurs qui permettront de faire tenir l’écran. J’ai percé une partie pour y insérer le capteur de présence
Mise en peinture

Fixation de la vitre au cadre

Réalisation d’un « joint » au pistolet à colle
Retrait de l’excédent de colle

Fixation de l’écran derrière la vitre

Fixation à l’aide de vis

Résultat

Le miroir terminé

2 commentaires Ajoutez le votre

  1. Matt dit :

    Bonjour
    Super Tuto
    Avez vous réussi à installer la détection de mouvement ?
    Il me manque cette élément pour finaliser mon miroir …

    1. Nicolas dit :

      Bonjour Matt,
      Désolé pour la réponse tardive je n’avais pas reçu d’alerte de commentaire.
      Merci pour ton retour.
      Je n’ai pas encore finalisé la partie détecteur de présence mais je peux te donner l’état de mes recherches. J’ai trouvé un petit script python que j’ai adapté pour tester le capteur (cf. ci-dessous). Il faudrait remplacer les « print » par une commande pour allumer/éteindre l’écran.

      Si tu souhaites partager ta réalisation je serais curieux de voir le résultat.

      Bonnes geekeries !

      import RPi.GPIO as GPIO
      import time
      GPIO.setwarnings(False)
      GPIO.setmode(GPIO.BOARD)
      GPIO.setup(11, GPIO.IN)
      while True:
      i=GPIO.input(11)
      if i==0:
      print "rien",i
      time.sleep(0.1)
      elif i==1:
      print "detection",i
      time.sleep(0.1)

Laisser un commentaire