Contrôle de matrice leds, 2011/2012, TD2
Sommaire
Evaluation informatique et électronique
Gestion de projet / rédaction Wiki
Rédaction correcte bien que courte. Une vidéo de démonstration (Note 75%).
Les tentatives d'explications sont là mais manquent de clarté, dommage (note 70%).
Test fonctionnels
- Sous-système : Le sous-système a été réalisé avec interconnexion entre FoxBoard et la NanoBoard. De l'aide massive des encadrants et des élèves. Note : 100%
- Sous-système : Le sous-système est fonctionnel mais n'apporte pas d'originalité par rapport aux précédents groupe (note 100%).
- Système : Non abordé. Note 0%.
Qualité de la réalisation
- Informatique. Note 75%.
- procédure de test : Un Readme dans /var/www/. Interface testée avec succès avec le banc Phidgets. Note 100%.
- pages HTML et Javascript : Une page HTML / PHP correct, scripts JS corrects (malgré un minuteur inutile), beaucoup d'aide, aucun apport vis à vis des autres groupes. Note 66%.
- scripts PHP ou programmes C : Programme CGI-BIN correct mais de l'aide de ses camarades et des encadrants. Note 66%.
- installation sur FoxBoard : Correct, pas de démarrage du démon série, beaucoup d'aide. Note 66%.
- Electronique :
- qualité de la réalisation : Réalisation correcte mais sans originalité par rapport aux groupes précédent, de l'aide pour des questions basiques (note 60%)
- tests autonomes : Les tests ont été menés à bien, mais il aurait fallu en dire un mot sur le compte rendu (note 60%).
Bilan
Tous les points principaux ont un poids équivalent (sauf "système" qui est un bonus).
Note finale : 77% => 15.5/20
Rapport des élèves
Le 25 Mai 2012: Séance 1
En premier lieu, on a réparti le travail, Shitao s'est occupé de la partie électronique et Ilyas de celle informatique.
Partie électronique:
Analyse le sujet et modélisation.
Fonctionnement: Le système doit recevoir 8 octets et les afficher sur la matrice de LEDs. La bascule D nous permet de stocker un octet. Le problème est comment stocker les 8 octets de données dans 8 bascules D et les renvoyer dans l'ordre en cohérence avec les bits de contrôles sachant que chaque bit de contrôle gère une colonne de LEDs ?
Partie informatique:
On a commencé par comprendre le programme de gestion du port série et le modifier pour pouvoir tester l'exemple d’envoi d'un octet. Dans notre projet le programme de gestion du port série s'appelle "gestion_spi.c" et son exécutable "./gestion_spi". On a ensuite envoyé une suite de huit octets choisie aléatoirement pour comprendre comment marche l'affichage sur la matrice de LEDs.
Le 1 Juin 2012: Séance 2
Partie électronique:
On utilise le Démultiplexeur qui est relié au bit de contrôle de la bascule D. En entrée, on a un compteur lié à un bouton poussoir. Chaque fois le bouton poussoir est poussé, le compteur s'incrémente, puis un seul bit est alors fixé à 1. C'est la bascule D correspondante qui stocke les données et le reste ne change pas. Pour renvoyer un seul octet de la bascule D à la matrice de LEDs, on a choisi un multiplexeur et un démultiplexeur contrôlé par un même compteur. Le compteur est relié avec l'horloge du FPGA, le multiplexeur sert à contrôler les données en sortie et le démultiplexeur détermine quelle est la colonne choisie. Après, on teste le FPGA avec l'oscilloscope. Le système fonctionne, toutefois, à partir du 4ième bit, il y a un retard, le système n'est donc pas synchronisé. Pour cela, on a synchronisé les compteurs avec l'horloge. Le problème est alors réglé.
Partie informatique:
Cette séance était entièrement consacrée à la conception de l'interface web du projet. Au début, on a testé l'exemple fournie pour l'affichage d'une ligne de quatre LEDs qui change de couleur en cliquant dessus. Après, on a modifié la page HTML en page dynamique PHP pour pouvoir afficher les 64 LEDs grâce aux deux boucles suivantes:
<?php
$table="";
$val = 0;
for($i=0; $i < 8; $i++){
$table .= "<tr>";
for($j=0; $j < 8; $j++){
$val = $i*10 + $j ;
$table .= "<td>";
$table .= "<img id=$val src='/cercle.php?couleur=vert' onclick='javascript:changeCouleur($val)'";
$table .= "</td>";
}
$table .= "</tr>";
}
echo $table;
?>
Le 8 juin 2012: Séance 3
Partie électronique:
Au début, le montage ne marchait pas à cause d'un mauvais choix de la résistance. Après, le système fonctionne correctement.
Partie informatique:
Pendant cette séance on a ajouté des fonctions java-script afin de récupérer les données nécessaires pour le script cgi-bin. Pour cela, on a ajouté deux fonctions: verifier(), unit(), et on a remplacé la fonction changeCouleur(identifiant) par envoyer(identifiant):
unit(): initialise toutes les LEDs en couleur verte.
envoyer(identifiant): change la couleur de la LEDs numéro: identifiant en cliquant dessus et mets la variable allumer=1 si elle est en rouge ou allumer=0 le cas contraire.
verifier(): envoie les numéros de ligne (i) et de colonne (j) des LEDs allumées au script cgi-bin grâce à une requête Ajax sous la forme d'une chaîne de caractère de la forme "_ij_ij_...." à intervalle régulier de 3s.
Le 15 juin 2012: Séance supplémentaire
Partie informatique:
Modification du scritp cgi-bin qui s'appelle envoie_octet.c dans notre projet. On a ajouté une fonction "get_word(char x[MAX],unsigned char c[]) qui découpe la chaine de caractère reçue de la page web, "x", pour pouvoir déterminer les numéros de ligne et de colonne des LEDs allumées puis envoyer les octets correspondants à l'aide de la chaine "c[ ]". Ensuite, on a copié les programmes et recompilé dans la Foxbord: Pindex.php, cercle.php, gestion_spi.c, envoie_octet.c. On a testé après la page web avec le banc d’essai disponible dans la salle.
Partie électronique:
Terminée.
Fin:
Branchement de la Foxbord avec la Nanobord.
Réalisation de la vidéo de teste.
Conclusion: Le sous-système marche bien.