Contrôle de matrice leds, 2013/2014, TD2

De Wiki d'activités IMA
Révision datée du 22 avril 2014 à 21:26 par Csmagghe (discussion | contributions) (Partie informatique)

Evaluation informatique et électronique

Rapports des élèves

Présentation générale du projet

Le principe du projet est assez simple, en effet, il consiste à allumer et éteindre des leds sur une matrice 8x8 de leds à partir d'une interface web. Ainsi l'utilisateur peut créer l'image qu'il souhaite à travers son navigateur. Il a été réalisé par Tissot Elise, Tiraby Céline et Smagghe Cyril.


Les éléments mis en oeuvre pour la réalisation du projets sont :

  • un navigateur sur lequel l'utilisateur interagit
  • une Foxboard hébergeant le serveur Web
  • un module de communication série
  • une Nanoboard contrôlant la matrice 8x8 de leds
  • un banc Arduino avec une matrice 16x16 de leds
  • une matrice de leds


Nous pouvons visualiser la manière dont sont reliés les composants de cette façon :

Utilisateur <--> Navigateur <--> Serveur (Foxboard) <--> Module de communication série <--> FPGA (Nanoboard) <--> Matrice


A savoir, sur le banc Arduino, il faudra mettre le mode 07 pour la matrice monocolor 8x8 et le mode 14 pour la 16x16 multicolor.

Séance 1


Partie informatique

Menu

Durant la première séance, nous avons pris connaissance du projet. Nous avons d'abord créer un menu en html nommé index.html sur lequel l'utilisateur peut choisir la taille de la matrice qu'il souhaite. Ce menu renvoie un formulaire au fichier matrice.php pour indiquer le nombre de lignes et de colonnes de la matrice.


Le fichier matrice.php crée un tableau de leds en fonction du formulaire envoyé par index.html. Un événement onclick écrit dans un script en javascript permet de changer l'état des leds. Un fichier cercle.php permet de générer des cercles de couleurs différentes en l’occurrence : vert, rouge, bleu, jaune et noir pour indiquer que la led est éteinte. Le codage des couleurs dans ce fichier se fait avec le codage RGB (Red Green Blue).


Au départ tout ce travail se réalise sur le serveur local d'un ordinateur (donc les fichiers se trouveront dans le répertoire /var/www/). L'installation du paquet php5 est nécessaire afin de pouvoir générer les images des leds. Ainsi, dans la barre d'adresse du navigateur, nous tapons "localhost" pour pouvoir accéder au menu.

Partie électronique

Séance 2


Partie informatique

Il a fallu cette séance-ci pouvoir configurer le port série. Un fichier serial.c compilé avec un serial.h a donc été créé dans cette optique. Puis, un fichier matrice.c a été créé pour allumer toutes les leds de la même couleur sur la matrice 16x16 du banc Arduino. Le fichier recevra à travers le port série /dev/ttyUSB0. Comme initialement le fichier matrice.c servait à envoyer sur la matrice 16x16, il recevra donc 256 octets (un octet pour chaque led) à l'aide d'une boucle. Chaque led est donc codée sur un octet, les deux bits de poids faibles codent le bleu, les trois suivants le vert et les trois bits de poids forts le rouge. On utilise l'utilitaire stty afin d'éviter que l'Arduino redémarre tout seul et l'utilitaire sleep pour ne pas perdre les caractères envoyés à l'Arduino. On compile avec la commande clang au lieu de gcc car elle donne des erreurs plus détaillées. On tape dans le terminal:

clang -o prog matrice.c serial.c. 

Pour envoyer les données du PHP au fichier C, il a fallu créer une requête Ajax de type POST d'où l'installation de la bibliothèque jquery.js. Ensuite vient la création du cgi-bin. Il a fallu installer la librairie cgilib dans le répertoire /usr/lib/cgi-bin. Ce fichier utilisera serial.c et serial.h. Il est inutile de mettre dans ce répertoire les fichiers sources, seul l'éxécutable est utile. On tape successivement dans le terminal :

cd /usr/lib/cgi-bin
clang -o matrice /home/pifou/tts/matrice.c /home/pifou/tts/serial.c -lcgi

Partie électronique

Séance 3


Partie informatique

Partie électronique