Projet IMA3 P4, 2017/2018, TD2

De Wiki de Projets IMA

Projet IMA3-SC 2017-2018

Projet informatique

Cahier des charges

Titre du sujet

Maison Connectée

Description du système

L'objectif est de réaliser une maison connectée de 3 pièces à l'aide de la maquette suivante :

Maquette_envisagée

Chaque pièce dispose d'une LED, pour éclairer la pièce. À l'entrée de chaque pièce se trouve une porte commandée par un servo-moteur. Lorsqu'une personne s'approche d'une pièce (la personne étant détectée par un capteur ultra-son), la porte s'ouvre automatiquement et une fois à l’intérieur la lumière s'allume automatiquement et la porte se referme derrière elle.

Sur le site web, nous afficherons le nombre de personnes présentes dans chaque pièce ainsi que l'état allumée ou éteint des LED. Nous allons simuler les personnes interagissant avec la maison avec une figurine ou un objet.

Matériel nécessaire

  • 1 Arduino UNO
  • 3 LEDs
  • 3 capteurs ultra-sons
  • 3 Servo-Moteurs
  • 1 Breadboard
  • Plusieurs Câbles
  • Du contre-plaqué pour la maquette

Séance 1

  • Mise en place du projet

Lors de la première séance nous avons fait le choix de notre sujet. Nous voulions un sujet ni très simple ni très compliqué afin de pouvoir le mener à bien entièrement. Nous nous sommes donc mis d'accord sur le fonctionnement de notre système ainsi que sur le matériel nécessaire à sa réalisation.

Nous avons ensuite procédé à la répartition des tâches les uns travaillant sur la partie informatique et les autres sur la partie électronique.

  • Partie informatique

Nous avons pris en main la Raspberry Pi 3 à travers un tutoriel qui nous a été fournit. Le travail dans cette première séance consistait essentiellement à installer un système d'exploitation (Raspbian), à configurer la Raspberry Pi comme un point d'accès Wi-fi en installant le paquetage Hostapd et en exécutant quelques commandes. Nous avons rencontrés quelques erreurs au final notre réseau wi-fi était bien visible depuis un téléphone portable.

Les objectifs de notre prochaine séance pour cette partie, seront d'arriver à instruire la configuration IP des clients Wi-fi afin d'autoriser la Raspberry Pi a gérer son réseau en attribuant des adresses IP aux différents clients, ainsi que l'installation du serveur Web comme support pour l'interface utilisateur permettant à un utilisateur de communiquer avec l'Arduino depuis le site internet.

  • Partie électronique

Durant cette première séance nous avons, essentiellement pris en main le logiciel de conception Altium allié à une carte FPGA en suivant un tutoriel afin de générer un compteur 4 bits.
La plupart des membres de notre groupe découvrant le prototypage avec arduino, il nous a fallut nous familiariser avec les divers composants mis à notre disposition. Nous avons donc, à l'aide de quelques tutoriels florissant sur internet, pu très rapidement tester nos capteurs et moteurs; connaître les branchements associés à chacun d'eux; ainsi que les fonctions Arduino nécessaires pour les faire fonctionner.

Séance 2

  • Partie informatique

Nous avons poursuivi notre configuration de la Raspberry:

  • Terminer la configuration IP des clients Wi-fi, pour que la Raspberry puisse fournir des adresses IP aux périphériques connectés.
  • L'ajout d'un nom réseau pour la Raspberry pi.
  • L'installation d'un serveur web.

À la fin de la séance nous avons pu établir un accès à distance par Wi-fi depuis un téléphone mobile. Ainsi nous pouvons bien contrôler avec un smartphone notre Raspberry Pi l'allumer ou l'éteindre depuis une page web grâce à un simple code que l'on écrit. Allié à la partie électronique, nous avons commencé à implémenter le code Arduino qui gérera les différents capteurs et actionneurs. Nous avons débuté avec un capteur ultrason dont la distance renvoyée si inférieur à celle qu'on s'est fixé, nous permettait de savoir quel signal à envoyer au moteur.

  • Partie électronique

Nous nous sommes attardés sur le montage Arduino final (sans maquette). N'ayant pas, initialement, prévu un nombre suffisant de câbles pour réaliser le montage nous n'avons pas pu utiliser tout les capteurs et moteurs. Nous nous sommes donc limités à monter deux moteurs reliés chacun à leurs capteurs respectifs. La séance suivante ou lors de nos séance complémentaires, nous tenterons de finir le montage Arduino mais aussi celui de la maquette.

Coté FPGA, après avoir terminé le tutoriel, nous avons essayé de tester la communication par FPGA en utilisant le code permettant d'allumer/éteindre une led. Le temps nous faisant défaut, nous ne sommes pas arrivés, durant cette séance, à établir correctement une communication fiable.

  • Travail supplémentaire

Une partie de notre travail, en dehors des séances officielles, a été de réaliser notre maquette. Nous avons donc, au préalable, définis les dimensions nécessaires pour sa réalisation complète. Nous sommes partis sur une maquette de taille 30cm x 30cm avec des hauteurs de murs de 10cm. L'épaisseur des du contre plaqué utilisé devait être suffisamment fin et solide pour nous permettre d'y fixer nos trois capteurs ultrasons sur les parois. Il fallait donc tenir compte aussi dans nos mesures, des différentes dimensions des capteurs afin que les parois soient de taille suffisantes pour les contenir. Une fois le matériau en notre possession, à l'aide d'une découpe, nous avons obtenus toutes les parois nécessaires pour construire la maquette.

D'autre part, nous avons commencé l'implémentation de la page HTML de notre projet. JavaScript étant nouveau pour nous, nous devions en apprendre davantage sur ce langage tout en réfléchissant sur son utilisation pour gérer notre communication.

Séance 3

  • Partie informatique

Ayant pratiquement configuré complètement la Raspberry Pi, nous nous sommes attardés durant cette séance sur la communication série adapté à notre projet qui est la partie la plus importante du projet.
Nous avons également configuré notre websocket qui allait nous servir dans la liaison série entre notre site web et la raspberry. Cette liaison est activée dès que l'on allume la raspberry Pi et l'arduino.

Afin d'établir notre communication série, nous avons, dans notre code Arduino nous avons associé à chaque capteur une valeur déterminée. Cette valeur est envoyée en liaison série à travers notre serveur Websocket. Un code Javascript que l'on a écrit vient à travers des fonctions comparer si la valeur reçue correspond à celle du capteur correspondant.

Page web affichant les pièces occupées

Dans l'image ci-dessus nous avons le pièce occupées allumées en orange (les pièces A et C) et les pièces non occupées en noir (la pièce B).

Lien code HTML & Javascript : [1]

  • Partie électronique

L’essentiel de cette partie a été de terminer le montage Arduino complètement comme on peut le voir sur l'image ci-dessous.

montage Arduino terminé

Nous avons aussi travaillé sur la partie FPGA, en essayant cette fois-ci de tester nos capteurs suite à la réception de signaux envoyés par liaison série. Malheureusement nous n'y sommes pas arrivés.

Séances complémentaires

  • Séance complémentaire 1

Durant ces séances, nous avons monté notre maquette comme on peut le voir ci-dessous

Maquette_terminée

Aussi nous avons intégré notre montage Arduino sur cette dernière et cela nous a permis, dans un premier temps, de tester notre code et son fonctionnement correct sans la liaison série. Le résultat était très satisfaisant, mais nécessita tout de même quelques ajustements au niveau des capteurs de distance. La séance complémentaire suivante s'agira de tester notre communication série avec notre montage.

  • Séance complémentaire 2

Malheureusement, un problème, que nous n'avons pas pu résoudre, est survenu dans notre montage Arduino complet entraînant de mauvaises réactions sur l'un de nos moteurs.
Nous avons donc décidé de garder un moteur ainsi qu'un capteur et une LED pour éviter de perdre du temps et ainsi pouvoir tester notre communication série. Voici une petite vidéo montrant le comportement de notre capteur qui en captant la présence d'une personne à moins de 10cm en face de lui, permet donc au moteur d'ouvrir la porte pendant un certain temps, permettant alors à la personne d'entrer dans la pièce. La lumière s'allume alors dans la pièce , signalant ainsi sur le site la présence d'une personne (en colorant la pièce correspondante).
Media:Vid.mp4

Bilan

  • Bilan des objectifs

Globalement, nous avons réussi à réaliser ce que nous nous étions fixés de faire dès le départ. Notamment la maquette qui a été construite conformément à ce que l'on avait prévu schématiquement; aussi, notre programme Arduino a été bien implémenté, le code n'étant pas des plus difficiles. Coté liaison série et page HTML, nous avons pu implémenter les codes correspondants nous permettant ainsi de recevoir sur notre site, à l'aide de la liaison série, les informations émanant de l'état de nos pièces. La partie FPGA n'a pas été une grande réussite. Étant notre premier contact avec elle, il nous a été assez difficile de bien la saisir ce qui a impliqué un échec de ce coté.

  • Améliorations possibles

Nous sommes conscients que notre projet n'est pas des plus aboutis, en ce sens qu'il mériterait bon nombre d'améliorations tant sur la partie informatique qu'électronique:

Pour ce qui est de l'électronique, nous pourrions utiliser l'impression de cartes électroniques pour permettre une meilleure ergonomie dans la présentation du montage Arduino, ainsi qu'une bonne gestion non seulement des ports utilisés (en limitant le nombre occupés) mais aussi une bonne présentation des nombreux câbles pouvant très vite s'emmêler. De plus, la libération de quelques ports nous aurait permis de rajouter un capteurs ultrasons dans chacune des trois pièces pour sonder véritablement la présence de la personne à l'intérieur de la pièce et non pas par simple fait qu'il aurait été détecté par celui placé à l'entrée (ce qui aurait éviter d'avoir la LED qui s'éteint alors que la personne est dans la pièce comme on peut le remarquer sur la vidéo précédente).

Coté maquette, nous aurions pu aussi mettre en place une sorte de sous-sol en dessous de la maquette qui nous aurait permis de ranger notre montage en ne laissant passer que les câbles des capteurs censés être en surface par l'intermédiaire de petits trous. Nous aurions eu ainsi un meilleur rendu visuel.

Enfin, nous pourrions permettre au site d'afficher, en plus de la présence, le nombre de personnes dans chacune des pièces. L'ajout de trois boutons permettant à un utilisateur d’interagir avec les portes en actionnant les moteurs contrôlant les différentes portes pour laisser entrer ou non des personnes à distance.

  • Conclusion

Ce projet SC, a surtout été une grande découverte, notamment par l'intermédiaire d'un nouveau langage tel que le JavaScript pour la communication série, que nous avons dû manier pour la réalisation de notre projet. Aussi, la découverte de la Raspberry Pi et sa configuration était intéressante et nous a permis d'engranger quelques connaissances qui nous seront toujours utiles pour de projets futurs. Pour la quasi-totalité de notre groupe, l'utilisation ainsi que le codage en arduino était nouveau pour nous, mais grâce à notre connaissance préalable du langage C ainsi que la multitude de documents traitant d'arduino et sa vaste communauté nous ont facilité la tâche de laquelle nous en ressortons grandis. La partie FPGA en revanche, a été difficile à appréhender.

Peut-être avec des séances d'apprentissages sur certains systèmes (tels que le FPGA par exemple) nous auraient permis de mieux démarrer.
Dans l'ensemble ce projets a été très enrichissant et intéressant.

Annexe

Nous mettons à votre disposition une archive contenant notre code Arduino Fichier:Code arduino.ino.zip