Projet IMA3 P2, 2017/2018, TD2 : Différence entre versions

De Wiki de Projets IMA
(Partie Informatique)
(Matériel nécessaire)
Ligne 35 : Ligne 35 :
 
===<span style="color:RoyalBlue">Matériel nécessaire</span>===
 
===<span style="color:RoyalBlue">Matériel nécessaire</span>===
  
* 4 LED de couleurs différentes
+
* <font style="font-color: green;">4 LEDs de couleurs différentes</font>
 
* 4 Interrupteurs (faisant office de boutons de jeu)
 
* 4 Interrupteurs (faisant office de boutons de jeu)
 
* FPGA
 
* FPGA
 
* Raspberry PI 3
 
* Raspberry PI 3
 
*(optionnel :1 LED RGB)
 
*(optionnel :1 LED RGB)
 
  
 
== Séance 1 ==
 
== Séance 1 ==

Version du 2 février 2018 à 10:43

Projet IMA3-SC 2017-2018 : Le Jeu du Simon

Cahier des charges

Description du système

A l'instar du mondialement connu jeu du Simon, notre système aura pour mission de générer aléatoirement une séquence de signaux lumineux, à l'aide de 4 LED. Une fois la séquence terminée, ce sera au tour de l'utilisateur de reproduire cette dernière de façon identique, en appuyant sur des interrupteurs. Chaque bouton correspondra alors à une couleur. Il faudra donc également mettre en place un système indiquant à l'utilisateur si il a réussi ou non.

On pourra, via la partie serveur Web, paramétrer les parties en gérant la vitesse ainsi que la taille de la séquence. De plus, c'est côté web que sera généré la séquence aléatoire d'allumage des LED, pour être ensuite envoyé vers la FPGA et son système électronique.

Evolutions possibles du projet

Si le temps nous le permet, nous avons déjà pensé à des améliorations pour notre projet. Nous pourrions installer un mode multijoueur en ajoutant une LED RGB supplémentaire. Elle prendra la couleur du joueur qui devra alors exécuter la prochaine séquence.

depuis la partie serveur Web, nous pourrions alors gérer le nombre de joueurs, et le mode de jeu choisi.

De plus, nous pouvons également envisager l'utiliser des capteur à ultrasons à la place de simples boutons lorsque l'utilisateur rentrera sa séquence. Il n'aura alors qu'à positionner sa main devant les capteurs souhaités.

Protocole de fonctionnement

L'envoi, la réception et la comparaison des données se fera de la façon suivante. On trouvera entre parenthèses le composant participant à la réalisation de l'étape.

  • Entrée des divers paramètres de jeu par l'utilisateur (Application web)
  • Génération aléatoire de la séquence (Application web)
  • Envoi et réception du signal de début (Port série -> FPGA)
  • Envoi des données octet par octet (Port série)
  • Réception et mise en mémoire de la séquence d'allumage (FPGA)
  • Envoi du signal de fin (Port série -> FPGA)
  • Mise en mémoire de la séquence réalisée par l'utilisateur (FPGA)
  • Comparaison entre la séquence aléatoire et la séquence réalisée par l'utilisateur (FPGA)
  • Envoi d'un booléen Vrai ou Faux indiquant le succès ou non de l'opération (FPGA -> Port série)
  • Affichage du succès ou non sur l'écran du smartphone (Application web)


Matériel nécessaire

  • 4 LEDs de couleurs différentes
  • 4 Interrupteurs (faisant office de boutons de jeu)
  • FPGA
  • Raspberry PI 3
  • (optionnel :1 LED RGB)

Séance 1

  • Choix du sujet
  • Répartition des taches à effectuer pour la partie électronique (garder en mémoire un signal d'entrée, l'afficher et vérifier si le signal "créé" par l'utilisateur est le même, et envoyer la réponse à l'application) et la partie application (génération d'un signal aléatoire, choix de la vitesse, de la taille des séquences et du mode de jeu.

Nous avons également dû adapter les étapes de notre projets aux nouvelles informations qui nous étaient données : nous n'avions pas compris, au début du projet, l'importance de la partie FPGA et son fonctionnement exact. Alors que notre idée de départ était de reposer le côté électronique en majeure partie sur la carte Arduino, nous avons ensuite imaginé utiliser le FPGA comme interface entre Application Web et Arduino, avant de mettre finalement de côté toute la partie Arduino pour ne réaliser la partie programmation électronique que via la FPGA et ses circuits logiques.

Cependant, dû au probable manque de temps qui nous est accordé pour réaliser tout ce que nous voulons faire sur FPGA, nous devrons impérativement réaliser en premier lieu toute la partie électronique sur Arduino. Cette dernière nous servira à vérifier le bon envoi des données depuis l'application web.

Nous devons nous attendre à ce que nous n'ayons malheureusement pas le temps de connecter partie FPGA et partie Web. C'est pour cela que la réalisation sur Arduino dans un premier temps reste indispensable, pour avoir au moins un jeu fonctionnel.

Partie Informatique

Tout d'abord, il a fallu installer un système d'exploitation sur la Raspberry. Il existe quelques distributions GNU/Linux qui sont assez légère pour fonctionner sur la Raspberry. On nous a conseillé d'utiliser Raspbian sans interface graphique. Après avoir crée une carte sd bootable pour la raspberry, on a modifié quelques fichiers pour pouvoir utiliser le port série, et continuer la configuration de la Raspberry. Ensuite, il a été nécessaire de mettre à jour la distribution. On a eu quelques soucis, à cause d'un tutoriel qui comportait quelques erreurs. Puis, pour pourvoir installer un serveur web sur la raspberry, il faut la configurer pour quelle soit déjà connectée sur internet et aussi la configurer en point d'accès, ces deux choses étant faites à la fin de la première séance. A ce stade, la raspberry possède un OS correctement installé, et peut servir de point d'accès. Il manque juste l'installation d'un serveur web.

Partie Electronique

Dans un premier temps, nous avons découvert et pris en main la carte FPGA via un tutoriel de réalisation d'un compteur 4 bits sur Altium. Ensuite, nous sommes remontés rejoindre l'autre partie du groupe pour faire le point et décider du protocole de réalisation du projet, ainsi que la répartition des tâches.

Après avoir appris que nous devrions passer par l'Arduino dans un premier temps, nous nous sommes attelés à la réalisation d'un premier circuit électonique. Au niveau de la partie code, nous nous sommes attardés sur l'interrupteur, plus précisement sur le fonctionnement de la fonction INPUT_PULLUP qui nous permettra de recevoir les informations voulues lorsque l'utilisateur rentrera la séquence.

Séance 2

Séance 3

Bilan