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

De Wiki d'activités IMA
Révision datée du 22 avril 2014 à 23:39 par Csmagghe (discussion | contributions) (Configuration Foxboard)

Evaluation informatique et électronique

Rapports des élèves

Présentation générale du projet

Principe

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.

Eléments

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

Différents modes

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

Interface Web

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).

Serveur local

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

Configuration du port série

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. 

CGI-BIN

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’exé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

Configuration supplémentaire du CGI-BIN

Pour pouvoir afficher quelque chose sur la matrice du banc Arduino, il faut modifier les droits dans le dossier /etc/group afin que l'utilisateur (www-data) en tapant ceci :

ls -l /dev/tty*
chown www-data /dev/ttyUSB0

Configuration Foxboard

L'adresse de notre Foxboard est : 172.26.79.8. Chaque modification devra être suivie d'un reboot de la Foxboard afin que ces modifications soient prises en compte. Dans le fichier /etc/apt/sources.list, il faut changer l'adresse du serveur existant pour le remplacer par celui de Polytech'Lille.

Pour configurer la carte Ethernet, il faut écrire les lignes suivantes dans le fichier /etc/network/interfaces :
Avant
Après
auto eth0                                                
iface eth0 inet static
 address 172.26.79.8
 netmask 255.255.240.0
 gateway 172.26.79.254
 dns-nameservers 193.48.57.34

Importation des fichiers sur la Foxboard

Pour pouvoir mettre les différents fichiers nécessaires au projet, on se connecte en SSH en tant que root. On a placé dans le dossier /root les fichiers serial.h, serial.c et matrice.c et dans le répertoire /var/www les fichiers index.html, cercle.php, matrice.php, jquery.js. L'installation de php5-gd et de cgilib sera nécessaire.

Mise en forme de l'interface

Pour rendre l'interface plus agréable à visionner nous avons créé un fichier style.css utilisé dans les fichiers index.html et matrice.php, nous avons également mis dans le répertoire du serveur local une image du logo de Polytech'Lille

Partie électronique

Séance de test et vidéo