Contrôle de matrice leds, 2012/2013, TD3

De Wiki de Projets IMA

Evaluation informatique et électronique

Gestion de projet / rédaction Wiki

  • Informatique : Rapport sur le Wiki minimal, aucune illustration, des coquilles. Les informations importantes y sont. Note : 75%.
  • Electronique : Rapport à peu près correct. Note : 75%.

Note : 75%.

Test fonctionnels

  • Sous-système : Note : 90%.
    • Sous-système informatique : Le sous-système informatique marche parfaitement. La taille de la matrice est modifiable, l'interface est plutôt agréable et l'application Web utilise très bien la matrice 2x2 du banc d'essai. Le seul bémol est au sujet du message de déverminage JavaScript qui apparaît quand on change la taille de la matrice. Note 120%.
    • Sous-système électronique : Sous-système non-fonctionnel --> gestion des données semble fonctionner sur la nanoboard, câblage matrice de LED non réalisé. Note : 75%.

Qualité de la réalisation

  • Informatique : Note 97,5%.
    • procédure de test : Pas de fichier LisezMoi sur la FoxBoard (un mode d'emploi dans le Wiki). Test effectué par les élèves. Testé par l'enseignant sans souci (démarrage automatique des démons). Note 100%.
    • pages HTML et Javascript : Page principale en PHP pour dessiner la matrice dynamiquement, du Javascript pour récupérer les valeurs des LEDs de la matrice. Code assez mal indenté. Une feuille CSS pour créer les disques. Note 90%.
    • scripts PHP ou programmes C : Un script cgi-bin en C tout à fait correct. Note 100%.
    • installation sur FoxBoard : Installation effectuée, configuration du port série lancé au lancement du système. Note 100%.
  • Electronique : Note 75%.
    • qualité de la réalisation : La conception du système numérique est correcte. Le compteur U45 est inutile car la valeur de sortie de ce compteur correspond à celle du compteur U15. Note : 80%
    • tests autonomes : Les fichiers pdf décrivant les tests réalisés sont insuffisamment renseignés pour comprendre les chronogrammes des signaux. Note : 70%.

Bilan

Note finale : 85% => 17/20.

Rapports des élèves

PRESENTATION

Notre projet consiste à réaliser un sous-système de gestion d'une matrice de LEDS. Pour celà nous allons créer une interface Web 2.0 afin de permettre à l'utilisateur d'allumer ou d'éteindre les leds d'une matrice.

AVANCEMENT DU PROJET

Partie informatique :

SÉANCE 1

  • Création du site Web 2.0 avec le fichier index.php et style.css.

L'utilisateur peux choisir la taille de la matrice et cliquer sur les leds pour modifier la couleur de celles-ci.

  • Rélexion sur l'envoi des 8 octets correspondant à la matrice de LEDS à la carte NanoBoard les 8 octets correspondant à la matrice de LEDS

(les bits 6 et 7 pour la couleur bleu, les bits 0,1 et 2 pour le vert et les bits 3, 4 et 5 pour le rouge).

  • Création du fichier matrice.c pour la requête Ajax et pour récupérer les 8 bits d'une LED.

SEANCE 2

  • Afin d'initialiser le port série, nous avons créé les fichiers serial.c et serial_config.h.
  • La compilation s'est faite sans erreurs avec la commande : gcc serial.c matrice.c -o matrice -lgci.
  • Nous avons testé la matrice de LEDS sur la maquette en la reliant par USB au PC et en sélectionnant le mode 14 sur la maquette. Après avoir activé le port série, nous avons bien visualisé la bonne matrice sur la maquette par rapport à celle du site web de taille 16.

A la fin de la séance l'utilisateur peut donc cliquer sur les LEDS afin d'en changer la couleur (vert, rouge, jaune ou bleu) puis, en cliquant sur actualiser, la matrice de la maquette se change en fonction de celle du site.

  • Pour finaliser la partie informatique, il reste donc à utiliser la foxboard. Le but étant de pouvoir modifier la vraie matrice de LED sans qu'elle soit reliée au PC.

SEANCE 3

  • Nous avons commencé par initialiser la foxboard afin de communiquer avec par réseau :

=> Configuration de la carte Ethernet, dans le fichier /etc/network/interfaces nous avons écrit les lignes suivantes :

 auto eth0
 iface eth0 inet static
   address 172.26.79.16
   netmask 255.255.240.0
   gateway 172.26.79.254
   dns-nameservers 193.48.57.34

=> Installation du paquetage cgilib afin de pouvoir utiliser le script CGI-BIN.

=> Enfin, nous avons copié nos programmes et nos fichiers du site web sur la foxboard. Pour se connecter sur la foxBoard on a utilisé la commande: ssh 172.26.79.16. La compilation de matrice.c et de serial.c fonctionnait sans erreurs.

  • Après avoir connecté la maquette de la matrice de LEDS sur la foxBoard (avec le port USB) puis sélectionner le mode 14; nous nous sommes connecté sur l'interface web http://172.26.79.16/index.php et nous avons pu observer que les LEDS de la matrice de la maquette avaient les mêmes couleurs que celles sur site.

Pour finir, nous avons pu vérifier le bon fonctionnement de la foxBoard en faisant un reboot.








Partie électronique :

Votre mission principale est de réaliser un sous-système de gestion d'une matrice de LEDs 8x8. L'interface Web associée permet à l'utilisateur de dessiner sur cet "écran" 8x8 pixels.

Sujet:

Ce module a pour but de réaliser un circuit de décodage pour la matrice 8x8 de LEDs. La donnée de huit bits (1 octet) provient du module mémoire et représente de façon directe l'état allumé ou éteint des LEDs. Cet octet représente l’état des LEDS sur une colonne de la matrice. Les différentes colonnes seront donc multiplexées. La lecture de cette donnée ne sera possible que lorsque le bit d'autorisation de lecture sera validé. Il conviendra de pouvoir afficher, de façon suffisamment rapide, les images transmises par le module mémoire, tout en évitant les effets de scintillement.

Entrées : un octet représentant la donnée à afficher sur la colonne sélectionnée, un bit d'autorisation de lecture.

Sorties : données à afficher sur une colonne, bits de sélection la colonne.

Pour l'évaluation de la partie électronique, la mémoire sera simulée en utilisant les instruments virtuels (8 générateurs d’octet) et un multiplexeur. Le multiplexage se fera au rythme des bits de sélection et le résultat sera directement envoyé sur la matrice de LED.

'SÉANCE 1'

Pour bien débuter, nous avons essayé de se familiariser avec Altuim Designer et son usage pour le domaine de l’électronique numérique en suivant un tutoriel qui nous a été fourni.

Durant cette première séance on a bien compris les explications du professeur sur taches qu'on doit accomplir. Pour cela on a regardé comment marche les compteurs, comment faire des mémoires à l'aide des composants qui sont dans Altium Designer... On a commencé a travaillé sur papier afin de mieux comprendre le sujet,après on a regardé les composants et leur mode d'utilisation( c'est à dire de voir sous Altium, les explications, tables de vérités des multiplexeurs, démultiplexeurs, bascules ... ). Après on a commencé à faire le schéma sur Altium en tenant compte du tutoriel.

Ainsi pour répondre aux cahier des charges, on a commencé par le début en faisant les deux taches suivantes:

La réception de l'information (Le composant: DIGITAL_IO (U4)): Via l'interface série RS232, On envoie des octets dans des bascules D(FD8RB) qui permettent de stocker 8 bits chacun. Bit de validation : l'interface RS232 génère en plus de ces 8 bits, un bit qui passe de l'état 0 à l'état 1 pour permettre l'envoi de ces derniers à chaque front montant de l'horloge.

Pour sélectionner la bascule où on doit mettre la donnée courante, on a relié un compteur (COUNTER U7) avec un démultiplexeur 1 vers 8 (M1_S1S8_SB U12). Chaque broche du démultiplexeur est reliée à un registre de bascule D (à l'entrée C). Donc cet ensemble(compteur+démultiplexeur) permet de sélectionner les huit bascules UNE par UNE via le compteur qui passe de 0 à 7. Chaque bascule contient alors une donnée de 8 bits qui sera envoyée sur une colonne de la matrice, d'où 8 registres pour 8 colonnes de la matrice. Pour récupérer les données qui sont stockées dans les bascules D afin de les envoyer dans les colonnes de la matrice, on a utilise un multiplexeur 8 vers 1 (M8_B8B1E_SB U10) relié à u compteur qui vont les mettre dans les colonnes de la matrice.

'SÉANCE 2'

Durant la séance précédente , on s'était arrête sur la récupération des données stockées dans les bascules. La récupération de ces données consiste à prendre ces données et de les envoyer sur les colonnes de la matrices. Et donc là on s'est demandé comment faire pour envoyer la donnée stockée dans la bascule UNE à la première colonne de la matrice et ainsi de suite.

La réponse à cette question serait de faire l'action inverse qu'on a fait en haut avec l'ensemble compteur+ démultiplexeur. Donc on utilise ici un ensemble compteur+multiplexeur(U15+U10) qui permettra d'envoyer la donnée récupérée dans la bascule vers la colonne voulue. L'octet récupéré dans la bascule N°1 sera envoyé dans la colonne N°1, celui récupéré dans la bascule N°2 sera envoyé dans la colonne N°2 ainsi de suite. Un autre ensemble compteur+ démultiplexeur (U20+U45) est utilisé pour permettre de faire la SÉLECTION des colonnes. L'entrée de ces deux derniers Compteurs (COUNTER U7,U45) est relié au générateur de fréquence CLKGEN (U18) qui permettra de faire la sélection d'une colonne lors de l'envoie d'un octet. Donc on envoie un octect "XXXXXXXX" dans une colonne de matrice et on fait passer le bit de validation de 0 à 1 pour envoyer encore un octet "YYYYYYYY" dans la colonne suivante de la matrice de Leds. Ainsi on arrive à envoyer 8 octets sur les 8 colonnes de la matrice les unes après les autres.

Remarque : On a choisi d'envoyer les données sur les broches HA2,HA3,...,HA9 et les signaux de sélection sur les broches HB8,HB9,...,HB15 de la Nanoboard afin de pouvoir visualiser les signaux correspondants sur un analyseur de spectre.


'SÉANCE 3'

Durant cette Séance on a fait des tests sur l'analyseur de spectre. Et ces tests nous ont permis de rectifier les erreurs qu'on avait dans notre schéma.

Manipulation pour faire les tests :

On implante le système numérique sur la carte FPGA de la nanoboard, en lancant l'une après l’autre, les étapes suivante :«compile », « synthesize », « build » et « program FPGA » . Après avoir lancé ces étapes, on règle les instruments virtuels (générateur d’horloge, générateur de signaux) la fréquence d’horloge du compteur à 2KHz, et on envoie une valeur du compteur à l’aide de AOUT[7..0].

Finalement on a réussi à avoir dans chaque colonne la donnée qu'on avait envoyé.

Les problèmes rencontrés :

Lors de ces tests sur l'analyseur de spectre on avait constaté qu'à chaque fois qu'on envoyais un octet sur une colonne, il était envoyé à la fois sur toutes les autres colonnes. Cela était due sur le fait qu'on avait pas mis U45, on avait fait l'erreur de relier la sortie du compteur (U15) à l'entrée du démultiplexeur (U20). Pour résoudre ce problème il nous a fallu des heures supplémentaires car on arrivait pas à faire tout dans 4 Heures et des-fois les analyseurs de spectres n'étaient pas disponibles parce que les autres binômes les utiliser aussi. Pour les tests sur la matrice de Leds, on a pas pu les faire car durant les plusieurs heures supplémentaires qu'on est venu dans la salle, il y avait un problème de connexion à internet, et c'est à cause de ca qu'on a pas pu voir le mode de branchement de "la tablette" dont la référence est M23088A/B-R1G1B1. Pourtant notre professeur Monsieur Boé nous a donné la matrice de Leds avec les résistances qu'on devait mettre en série avec chaque broche de la matrice de Leds mais malheureusement on n'est pas arrivé à le faire.

SCHÉMA.

Schema.jpg

RÉSULTATS DE TESTS: Ci-joint en PDF


Fichier:Pdf matrices leds.pdf

Pour les tests on a mis pour chaque colonne, une donnée correspondant à son numéro.

Par exemple pour la sélection N°4 on a fait " 0000 1000", ainsi de suite pour les autres.

Vous remarquerez que les broches D0 à D3 ne marchaient pas, c'est les fils de l'analyseur de spectre qui avaient des problémes.