Veilleuse enfant connectée

De Wiki de Projets IMA
Révision datée du 7 mars 2016 à 16:23 par Rruet (discussion | contributions) (Semaine 2)

Cahier des charges

objectifs et description du projet

Notre projet a pour but de réaliser un prototype de veilleuse pour enfant connectée. La veilleuse devra proposer tout d'abord un éclairage tamisé de manière à permettre à l'enfant de s'endormir, comme le proposent les veilleuses pour enfants classiques. Le qualificatif "connectée" prend ici son sens dans la mesure où la veilleuse devra permettre la projection d'une image au plafond, image qui sera choisie par les parents sur leurs smartphones, tablettes ou ordinateurs, envoyée sur le cloud, et récupérée par la veilleuse, connectée à internet, pour qu'elle puisse l'afficher. Les parents auront également la possibilité de régler les horaires de fonctionnement de la veilleuse, directement depuis leurs canapés.

Nous pensons également inclure, si le temps nous le permet et au vues du matériel qui nous est disponible, une fonction vidéo-baby-phone, de façon à ce que les parents puissent surveiller leur enfant à tous moments avec une image et du son à l'appui. L'implantation d'un capteur de température est également envisageable pour pouvoir gérer le confort de l'enfant et si celui-ci est perturbé, une berceuse pourra éventuellement être jouée dans un petit haut parleur.

Nous espérons ensuite pouvoir gérer tout cela avec une application web ou pour smartphone que nous aurons développé. Nous avons également pour ambition de designer et réaliser nous même l'enveloppe extérieur de notre veilleuse. Sur le châssis pourrait par exemple être posé un abat jour orné de motifs (étoiles, etc.). Nous posterons bientôt un rendu de ce à quoi nous pensons la faire ressembler, nous verrons par la suite si ce design est possible.

Matériel à utiliser

Pour mener à bien ce projet, nous aurons à notre disposition:

  • une Raspberry pi 2 model b
  • un module caméra spécifique à la raspberry
  • un petit microphone
  • des LEDs à faible intensité pour la lumière tamisée
  • un dongle wifi pour pouvoir connecter la Raspberry au smartphone (ou autre) et donc à internet
  • un petit haut-parleur
  • un capteur de température

Nous avons échangé quelques mails avec notre tuteur Mr Thomas Vantroys pour ce qui était du pico-projecteur qui permettra de diffuser les images au plafond. Nous avions trouvé de notre coté un Phillips PPX4150, mais nous avons du partir sur un ASUS S1 car la commande devait se faire assez rapidement.

Aperçu de la veilleuse

Après modélisation 3D sur le programme 3D-Builder, nous sommes arrivés au rendu suivant pour notre prototype.

Veilleuse.jpg

Sur la vue éclatée suivante, nous pouvons voir les différents pièces que nous aurons à imprimer.

Veilleuse eclatee.jpg

Calendrier prévisionnel

Tableauveilleuse.png

Au fil du projet

Semaine 1

Pour cette première semaine, nous avons commencé par nous demander par quel moyen nous pourrions faire communiquer notre smartphone ou notre ordinateur avec la raspberry (veilleuse).

Nous en sommes vite venu à la solution suivante : transformer la raspberry équipée de son dongle wifi "wi-pi" en point d'accès. Ainsi nous pourrons nous connecter en wifi dessus, et une fois le serveur de l'application web installé sur la raspberry, nous pourrons nous connecter à l'adresse IP de celui-ci, et donc accéder à l'application qui gèrera les fonctionnalités de notre veilleuse.

Après avoir vérifié que notre dongle "wi-pi" était configurable en hotspot wifi, nous avons commencé la configuration.

Dans un premier temps, nous avons eu besoin d'installer les paquets "hostapd" et "dnsmasq" qui serviront à l'établissement du point d'accès. Une fois ces deux logiciels installés, nous avons configuré l'interface wlan0 dans le fichier /etc/network/interfaces comme suit :

le fichier interfaces après modification

Nous avons donc choisi que l'adresse statique de la Rapsberry serait 192.168.100.1. Une fois un de nos appareils connecté en wifi dessus, il suffira juste de se connecter à cette adresse pour accéder à l'application web.

Dans un second temps, nous avons du configurer les caractéristiques de notre hotspot (SSID et mot de passe) dans le fichier /etc/hostpad/hostapd.conf. Nous aovns choisi de donner à notre hotspot le nom Sleepi-Fi et le mot de passe sleepipi. Voilà le fichier hostapd.conf une fois modifié :

le fichier hostapd.conf après modifications

Nous avons ensuite décommenté la ligne DAEMON_CONF dans le fichier /etc/default/hostapd et nous y avons ajouté le chemin vers la configuration de la façon suivante :

Daemon.png

Il a ensuite fallut modifier le fichier de configuration de dnsmasq : /etc/dnsmasq.conf en ajoutant à la fin du fichier les trois lignes suivantes :

  interface=wlan0 
  except-interface=eth0
  dhcp-range=192.168.100.2,192.168.100.150,255.255.255.0,12h

Une fois tout cela réalisé, il nous reste à redémarrer hostpad et dnsmasq en tapant les commandes suivantes dans le terminal :

  /etc/init.d/hostapd restart
  /etc/init.d/dnsmasq restart

Puis nous les avons autorisés à se redémarrer à chaque allumage de la raspberry via les commandes suivantes :

  update-rc.d hostapd enable
  update-rc.d dnsmasq enable

A partir de ce moment là, la connection à la raspberry en tant que hotspot wifi était fonctionnelle !

Connected.png

Il ne nous restait plus qu'à créer un serveur local sur la raspberry par le biais de apache2 comme nous l'avons fait en TP. Notre application web serait ensuite implantée dans le dossier /var/www de la raspberry. Nous avions commencé à regarder en prévention l'interface de notre application, nous avons donc testé le bon fonctionnement de notre serveur en nous y connectant depuis un appareil distant (ordinateur ou smartphone) avec la page de garde de notre application en index.html, et le résultat fut plutôt concluant pour cette fin de première séance.

Menu veilleuse.png

Semaine 2

Durant cette deuxième semaine, nous avons commencé à nous pencher sur les fonctionnalités de notre future veilleuse. Nous avons donc commencé par celle qui nous a semblé la plus simple, l'upload d'images depuis un appareil distant vers la raspberry, afin que cette image soit ensuite projetée par le pico projecteur.

Nous avons donc créer un dossier images dans notre le dossier qui gère notre serveur (/var/www) afin d'y mettre tous les fichiers html, php, css qui mettront en forme cette fonctionnalité.

En premier lieu, il fallait créer un formulaire html qui permettrait à l'utilisateur d'aller parcourir ses fichiers afin de sélectionner l'image souhaitée. Nous avons donc opté pour le code suivant :

Uploadhtml.png

Que nous avons lié avec le fichier upload_img2.php suivant, qui traitera l'image et l'enregistrera dans le dossier /var/www/images/uploads de la raspberry :

Uploadimgphp.png

NB : Pour que ce script fonctionne, il nous a fallut changer les droits sur les dossiers /images et /uploads car à la base nous n'avions pas les autorisations nécessaires pour écrire à l'intérieur. Il nous a suffit d'éxecuter les commandes suivantes dans le terminal :

  sudo chmod a+rwx /var/www/images
  sudo chmod a+rwx /var/www/images/uploads

la commande shell_exec à la fin de notre script permet d'afficher sur la sortie vidéo de la raspberry l'image que nous venons de lui envoyer, par le biais du logiciel fim (Framebuffer imageviewer IMproved). L'option -a permet d'effectuer une mise à l'échelle automatique sur l'image. Voici une photo montrant la projection d'une image téléchargée depuis un de nos smartphones :

Projecteur.jpg

Semaine 3

Semaine 4

Semaine 5

Semaine 6

Semaine 7

Semaine 8

Semaine 9

Semaine 10

Semaine 11

Semaine 12

Fichiers rendus