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

De Wiki de Projets IMA
Révision datée du 23 mai 2013 à 09:25 par Tmaurice (discussion | contributions) (Configuration de la foxboard)

Evaluation informatique et électronique

Gestion de projet / rédaction Wiki

  • Informatique :
  • Electronique :

Note .

Test fonctionnels

  • Sous-système.
    • Sous-système informatique :
    • Sous-système électronique :

Qualité de la réalisation

  • Informatique : Note .
    • procédure de test :
    • pages HTML et Javascript :
    • scripts PHP ou programmes C :
    • installation sur FoxBoard :
  • Electronique : Note .
    • qualité de la réalisation :
    • tests autonomes :

Bilan

Note finale :

Rapports des élèves

Séance 1

  • Création du programme d'interface entre un ordinateur et la matrice de LEDs.
  • Création du site de contrôle
  • Prise en main du FPGA

Partie contrôle de la matrice de LEDs

Dans un premier temps la matrice 8x8 monochrome a été utilisée pour les tests puis rapidement nous sommes passés à la matrice 16x16 en couleurs.

Le programme a un fonctionnement très simple, il prend en premier argument le périphérique série sur lequel envoyer les informations (ici /dev/ttyUSB0) et un nom de fichier 'map'. Ce fichier map est un fichier de 8 octets dans le cas d'une matrice 8x8 et de 256o dans le cas d'une matrice 16x16 en couleurs. Chaque octet correspond à l'état de chacune des leds. Les deux premiers bits correspondent au niveau de bleu, les 3 suivants au niveau de vert et les 3 derniers au niveau de rouge.

Le programme seriallink a été écrit en C++ en utilisant les bibliothèques serial.c et .h fournis sur le site du projet, la compilation étant gérée par CMake (plus court que d'écrire un Makefile...). Pour compiler le programme on se place dans le répertoire racine des sources puis :

   mkdir build
   cd build
   cmake ..
   make

Bonus track le programme est valgrind compliant.

Une jolie image aléatoire

On peut le lancer avec la commande suivante :

   ./seriallink /dev/ttyUSB0 fichier_map

Bonus Pour afficher une jolie image aléatoire sur la matrice:

   dd if=/dev/urandom of=random bs=1 count=256 && ./seriallink /dev/ttyUSB0 random

Enjoy.

Prise en main de la NanoBord et développement du programme de gestion de la NanoBoard

Cette séance a permis de prendre en main la NanoBoard et sa configuration sur Altium. Le développement du programme de gestion de la matrice de LEDs par la NanoBoard a commencé. A la fin de cette séance, le programme enregistre des paramètres d'entrés(valeur des LEDs) puis envoie les mots de chaque colonnes selon la fréquence d'une horloge paramétrable, sur l'affichage LEDs de la NanoBoard. Le mot de 8bits servant de sélection de la colonne à afficher est envoyé sur le port HEADER A en sortie.

état du programme à la fin de la première séance


Séance 2

Finition du programme de gestion de la NanoBoard

Cette séance a permis de pouvoir terminer la partie électronique du projet.

Notre programme gère donc l'enregistrement dans des registres de 4 mots de 8 bits paramétrables. Puis les restitue l'un après l'autre sur le port HeaderB. Un mot de 8 bits est envoyé sur le port HeaderA, afin de sélectionner la colonne où l'on va afficher le mot.

On obtient donc le graphique suivant pour la sélection des colonnes, on affiche la colonne i quand le signal Di est à 0.

graphique du mot de sélection en fonction du temps, mesure à l'oscilloscope


Configuration de la foxboard

La Foxboard a été configurée correctement via la liaison série afin de la connecter au réseau, d'installer les paquets nécessaires à la compilation du logiciel de contrôle de la matrice de LEDs ainsi nous n'avons plus besoin de la liaison série pour la piloter. Le réseau a été configuré comme il suit (/etc/network/interfaces) :

 auto eth0
 allow-hotplug eth0
 iface eth0 inet static
   address 172.26.79.15
   netmask 255.255.240.0
   gateway 172.26.79.254
   dns-nameservers 193.48.57.34

De même, la Foxboard a été mise à jour et le paquet cmake a été installé pour permettre la compilation du logiciel de pilotage de la matrice.