Projet IMA3 P1, 2015/2016, TD1 : Différence entre versions

De Wiki de Projets IMA
(Partie électronique)
(Partie électronique)
Ligne 54 : Ligne 54 :
 
Sur l'image qui suit, on peut voir le registre servant pour mémoire de l'afficheur 1.  
 
Sur l'image qui suit, on peut voir le registre servant pour mémoire de l'afficheur 1.  
 
La sortie de la mémoire est décomposée par bit pour qu'ils soient envoyés vers le bon multiplexeur pour la suite. L'ordre des bits à été donné par la partie informatique.
 
La sortie de la mémoire est décomposée par bit pour qu'ils soient envoyés vers le bon multiplexeur pour la suite. L'ordre des bits à été donné par la partie informatique.
 +
 +
[[Fichier:memoire.jpg|400px|thumb|center| registre memoire ]]
  
  
[[Fichier:memoire.jpg|400px|thumb|center| registre memoire ]]
 
  
 
Nous avons utilisé un compteur ainsi qu'un décodeur afin de sélectionner l'afficheur à allumer. Nous avons également utilisé des multiplexeurs gérés par le même compteur qui permettent de sélectionner la mémoire dans laquelle il faut aller lire. Il y a 16 multiplexeurs à 8 entrées car 16 segments sur les afficheurs et 8 afficheurs en tout.
 
Nous avons utilisé un compteur ainsi qu'un décodeur afin de sélectionner l'afficheur à allumer. Nous avons également utilisé des multiplexeurs gérés par le même compteur qui permettent de sélectionner la mémoire dans laquelle il faut aller lire. Il y a 16 multiplexeurs à 8 entrées car 16 segments sur les afficheurs et 8 afficheurs en tout.
Ligne 63 : Ligne 64 :
 
Ex: Lorsque le compteur est à 0, les segments sont lus dans la mémoire 1 (pin 0 des multiplexeurs) et envoyés vers l'afficheur 1.
 
Ex: Lorsque le compteur est à 0, les segments sont lus dans la mémoire 1 (pin 0 des multiplexeurs) et envoyés vers l'afficheur 1.
  
 
+
[[Fichier:COMPTEUR_DECODEUR.jpg|900px|thumb|center| compteur et décodeur ]]
[[Fichier:COMPTEUR_DECODEUR.jpg|300px|thumb|center| compteur et décodeur ]]
+
[[Fichier:multiplex.jpg|350px|thumb|center| multiplexeur ]]
[[Fichier:multiplex.jpg|200px|thumb|center| multiplexeur ]]
 
  
  
Ligne 71 : Ligne 71 :
 
Dans le registre 1 (image ci-dessous) entre un bus de données initialisé avec des 0 (GND, segment éteint) et des 1 (VCC, segment éclairé) pour réaliser la lettre A.
 
Dans le registre 1 (image ci-dessous) entre un bus de données initialisé avec des 0 (GND, segment éteint) et des 1 (VCC, segment éclairé) pour réaliser la lettre A.
  
[[Fichier:donnée.jpg|150px|thumb|center| afin réaliser les tests sans la liaison série, il faut entrer à la mains les valeurs à mémorisées, ici la lettre A]]   
+
[[Fichier:donnée.jpg|600px|thumb|center| afin réaliser les tests sans la liaison série, il faut entrer à la mains les valeurs à mémorisées, ici la lettre A]]   
  
 
Maintenant, pour pouvoir réaliser les tests, il faut que nous reliions les afficheurs et la Nanoboard.  
 
Maintenant, pour pouvoir réaliser les tests, il faut que nous reliions les afficheurs et la Nanoboard.  

Version du 23 mars 2016 à 21:46

Projet IMA3-SC 2015/2016 : Titre

Cahier des charges

Dans le cadre du projet IMA3, nous avons décidé de réaliser un afficheur qui ferait défiler une phrase saisie par le biais d'une application web. L'application enverrait cette phrase par le biais du port série à la carte électronique et aux afficheurs. Nous avons l'intention de réaliser cela grâce à des afficheurs 16 segments.

Le matériel nous paraissant indispensable est le suivant :

  • huit afficheurs 16 segments
  • une Nanoboard
  • une Raspberry Pi

Séance 1

Partie électronique

Pour commencer cette partie du projet il a fallu réfléchir à comment et avec quoi nous allions le réaliser.

Préalablement nous avions réfléchi au multiplexage des afficheurs car nous savions que la Nanoboard ne possédait pas suffisamment de sorties pour pouvoir y connecter chaque pin des afficheurs, il aurait fallu 136 sorties (17 pins x 8 afficheurs). Nous avons pu, grâce au logiciel Logisim, tester le multiplexage d'afficheurs sept segments. On peut voir ci-dessous le résultat. Le multiplexage est réalisé par les sept multiplexeurs qui sont, en sortie liée à chaque segment des afficheurs (un multiplexeur par segment) et en entrées, on retrouve les valeurs de l'affichage pour chaque afficheur (quatre afficheurs donc quatre entrées). Les labels (A, B, etc.) en sortie des multiplexeurs représentent les pins de sortie de la Nanoboard. (Le reste du schéma ne sert que pour pouvoir afficher les valeurs sur le logiciel.)


schéma réalisé sur logisim


Nous avons pu voir un des afficheurs que nous utiliserons et ainsi trouver sa datasheet sur internet.

Media:datasheet.pdf

Nous avons ainsi appris que les afficheurs étaient à anodes communes - pour les faire fonctionner il faut mettre l'alimentation (1 logique) sur le pin de l'anode (ici pins 6 et 18) et la masse (0 logique) sur les pins des segments à allumer. Pour sélectionner l'afficheur qui devra être éclairé il faudra mettre ses pins 6 et 18 à "1" et ceux des autres afficheurs à "0".


Nous avons terminé la séance en commençant à nous familiariser avec le logiciel AltiumDesigner pour pouvoir faire la programmation de la Nanoboard durant la séance suivante.

Partie informatique

Nous avons commencé à implémenter la partie réseau et à faire les tests à partir de l'arduino fournie .

Nous avons également découvert que le passage de la lettre ASCII en codage afficheur devait être implémenté dans le programme . Nous avons donc commencé à coder chaque lettre en binaire à partir de la disposition de chaque segment de nos afficheurs . Le codage réalisé est visible ci-dessous.



Nous avons également effectué la liaison série entre l'arduino et l'ordinateur.

Séance 2

Partie électronique

Lors de cette séance, nous avons réalisé le schéma logique qui sera implanté sur la Nanoboard avec AltiumDesigner.

Media : Schema_Altium_Alphabet.pdf

Pour pouvoir afficher les lettres à la vitesse que l'on souhaite sans dépendre de la liaison série, nous avons décidé de nous servir de registres afin de mémoriser le code de chaque lettre reçue sur le port série. Il faut 8 registres 16 bits pour pouvoir stocker la valeur de chaque segment par afficheur. Sur l'image qui suit, on peut voir le registre servant pour mémoire de l'afficheur 1. La sortie de la mémoire est décomposée par bit pour qu'ils soient envoyés vers le bon multiplexeur pour la suite. L'ordre des bits à été donné par la partie informatique.

registre memoire


Nous avons utilisé un compteur ainsi qu'un décodeur afin de sélectionner l'afficheur à allumer. Nous avons également utilisé des multiplexeurs gérés par le même compteur qui permettent de sélectionner la mémoire dans laquelle il faut aller lire. Il y a 16 multiplexeurs à 8 entrées car 16 segments sur les afficheurs et 8 afficheurs en tout.

Sur le pdf précédent et sur les deux images ci-dessous, nous pouvons voir que la sortie du compteur est reliée aux commandes des multiplexeurs et du décodeur (ce compteur compte de 0 à 7). C'est par le biais du décodeur qu'est sélectionné l'afficheur mis en marche. Les multiplexeurs permettent d'aller chercher les données dans la mémoire correspondante. Ex: Lorsque le compteur est à 0, les segments sont lus dans la mémoire 1 (pin 0 des multiplexeurs) et envoyés vers l'afficheur 1.

compteur et décodeur
multiplexeur


Pour pouvoir réaliser les premiers tests sans la réception des données par la liaison série, il faut placer en entrée des mémoires les valeurs à mémoriser. Pour ce test, nous avons décidé d'afficher les premières lettres de l'alphabet. Dans le registre 1 (image ci-dessous) entre un bus de données initialisé avec des 0 (GND, segment éteint) et des 1 (VCC, segment éclairé) pour réaliser la lettre A.

afin réaliser les tests sans la liaison série, il faut entrer à la mains les valeurs à mémorisées, ici la lettre A

Maintenant, pour pouvoir réaliser les tests, il faut que nous reliions les afficheurs et la Nanoboard. Une fois cela fait, il ne restera plus qu'à travailler la liaison série afin de récupérer et d'afficher les phrases envoyées depuis l'application web.

Partie informatique

Nous avons effectué des tests afin de connaitre le code binaire pour chaque segment de l'afficheur et avons découvert que les segments n’étaient pas dans l'ordre déterminé dans la séance 1 .

Nous avons repris la conversion faite dans la librairie de l'arduino tout en l'adaptant à notre projet.

implémentation de la conversion

En utilisant les websockets et la librairie jquery, nous avons ensuite implémenté la page web dans laquelle nous devons écrire la phrase à envoyer à l'afficheur par le biais de la liaison série. Nous avons testé avec un mot.

imprime écran de la page web

Dans la prochaine séance, nous essaierons de faire décaler les lettres de façon à ce qu'une phrase puisse défiler le long des afficheurs et d'implémenter le tout dans la Raspberry.

Séance 3

Partie électronique

Partie informatique

Conclusion