Projet IMA3 P3, 2015/2016, TD1

De Wiki d'activités IMA
Révision datée du 28 mars 2016 à 17:38 par Omahieux (discussion | contributions) (Partie électronique)

Projet IMA3-SC 2015/2016 : Gestion de l'éclairage et du chauffage d'une pièce en fonction du nombre de personne.

Contexte

La gestion de l'énergie étant une problématique d'actualité, nous nous sommes dirigés vers le domaine de la domotique. Notre objectif est de concevoir un système capable, d'une part, de gérer automatiquement l'éclairage d'une pièce et d'autre part, de conseiller l'utilisateur sur le chauffage de cette dernière via une application WEB.

Cahier des charges

Concernant l'éclairage :

  • 2 capteurs de présence (LED IR ou SONAR à définir)
  • Des LEDs représentant l'éclairage

Concernant la gestion du chauffage :

  • 1 capteur de température

Pour acquérir, traiter et afficher les données :

  • Une Nanoboard
  • Une Raspberry PI

Séance 1

Partie électronique

Prise en main de la RedBoard :

  • Clignotement d'une LED
  • Mesures de distance avec SONAR qui servira de capteur de présence.
  • Caractéristiques du capteur de température TMP36GZ :
 Étendue de mesure : -40°C à +125°C
 Précision : +- 1°C à 25°C
 Résolution : 10mV/°C
 Offset : 0.5V
 25°C->750mV

Utilisation de la RedBoard pour acquérir les signaux des capteurs et transmission par la liaison série intégrée jusqu'à l’ordinateur. Vous trouverez ci-dessous le programme Arduino d'acquisition des données capteurs.

Partie informatique

  • (Re)découverte du langage HTML.
  • Découverte du langage CSS.

Recherche d'outils permettant la réalisation de graphiques 3D dynamique sur une page WEB :

  • JavaScript
  • CANVAS

Séance 2

Partie électronique

Nous choisissons de changer le capteur de présence par deux LED IR. Une personne est comptée entrante/sortante dans la pièce lorsque le faisceau IR est interrompu. Nous devons donc numériser deux signaux, celui à la sortie du capteur de température et celui des LEDs. Pour cela il nous faut utiliser un convertisseur analogique-numérique. Nous sommes contraint de réaliser ce composant avec le FPGA et nous nécessitons donc une conversion par MLI. Cette conversion nécessite la génération d'un signal triangulaire (utilisation d'un filtre passe bas) par le biais du FPGA et l’utilisation d'un comparateur entre ce signal et le signal du capteur pour obtenir un signal TTL interprétable en binaire. Le schéma suivant illustre la conversion.

Pwmproj.png

Pour retrouver la valeur de la tension délivrée par le capteur de température à partir du signal TTL, il faut mesurer la valeur moyenne de ce signal.

Pour le comptage de personne, nous utilisons un comparateur qui permet l’émission d'un état haut lorsque la luminosité reçue par la photodiode descend en dessous d'un certains niveau. Cela correspond à l'interruption de notre faisceau et au passage d'une personne. Nous comptons le nombre d'interruption et l'enregistrons sous forme d'entier dans une mémoire adjacente au FPGA.

Partie informatique

Programmation du capteur de température et de la photodiode.

Séance 3

Partie électronique

Après plusieurs tentatives infructueuses d'accès à la salle d'électronique (car il n'y avait pas suffisamment de poste avec nanoboard pour le nombre de groupe du TD), nous avons pu réaliser les premiers schémas sur Altium. Le premier correspond à l’émission d'un signal carré par le FPGA pour sa conversion future en signal triangulaire.

PWM1 OAG.png

Il est composés des éléments suivants : Un compteur 8 bits relié à deux blocs différents : L'horloge et un module délivrant un mot de 8 bit correspondant à la largeur d’impulsion désirée. Nous utilisons le bloc PWM prédéfini dans Altium pour délivrer sur la broche 2 le signal carré.

Le signal de sortie de ce bloc est un signal carré que nous rendons triangulaire grâce au filtre passe bas. Il suffit ensuite d'utiliser un comparateur (composant électronique) pour obtenir notre signal convertit.

Cependant, nous rencontrons des difficultés lors de la compilation du programme sous Altium. Nous remarquons que cela vient d'un problème de bibliothèque du logiciel et décidons de changer de poste pour le résoudre. Ce problème nous a fortement ralenti et nous décidons de réaliser une séance supplémentaire pour avancer le projet.

Partie informatique

Définition des données à échanger entre la partie électronique et le serveur Websocket. Finition du code gérant les capteurs.

Séance supplémentaire

Partie électronique

Le problème de compilation résolu, c'est le signal en sortie de la nanoboard qui nous pose problème, il n'est pas de forme carrée mais plutôt aléatoire. près des recherches infructueuses et chronophage, nous nous intéressons à la réalisation de la liaison série. Nous souhaitons transférer la donnée température sous forme d'un mot de 8 bits. Le transfert du nombre de personnes comptées est un accès à la mémoire pour une lecture.

En prenant le cas du transfert de la données température, il convient de la mettre sous forme d'une trame utilisée par la liaisons RS232. Soit un bit de start, 8 bit de données et un bit de stop. Pas de bit de parité. La meilleur façon d'assembler ces bits consiste à utiliser un multiplexeur 8 vers 1 pour une émissions bit à bit temporisée par un compteur. Ce compteur correspond à la vitesse de transmission en bauds, choisit arbitrairement à 9600 bits/s, il faut connecté une hotloge de 9600Hz pour cela au compteur. Nous trouvons ces informations en nous renseignant sur le internet et en utilisant les travaux réalisés lors des projets précédents. Un programme Altium réalisable correspond au programme suivant, nous ne l'avons pas testé par manque de temps.

Transmission OAG.PNG

Un bloc supplémentaire de cadencement du compteur est utilisé afin d'obtenir la vitesse de 9600 baud. L'envoie des données se fait par detection de l'appui sur bouton poussoir (SW_USER0). Ci dessous le détails du bloc de cadencement.

Counter9600.PNG

Démonstration

Conclusion