Dé électronique communiquant : Différence entre versions

De Wiki d'activités IMA
(Semaine 3 (du 09/02/2015 au 15/02/2015))
(Semaine 3 (du 09/02/2015 au 15/02/2015))
Ligne 109 : Ligne 109 :
  
 
''
 
''
#include "mbed.h"
 
 
 
DigitalOut myled1(LED1);
 
DigitalOut myled1(LED1);
 
DigitalOut myled2(LED2);
 
DigitalOut myled2(LED2);

Version du 24 février 2015 à 17:12

Cahier des charges

Présentation du projet

Contexte

Dans une époque où la technologie concerne le mode de vie de presque tout le monde, la plupart des gens ont tendance à se tourner vers les nouvelles technologies (smartphone, ordinateur) pour se divertir, et ainsi délaisser les anciens jeux de société. Afin de faire revivre ce genre de jeu, nous avons décidé de revisiter un pilier du jeu de société : le dé à jouer.

Objectif du Projet

L'objectif de ce projet est de réaliser un dé à jouer programmable du même type que les futurocubes.

Idées de fonctionnalités

Voici quelques idées d'applications qu'on pourrait mettre en place :

  • Dé à jouer classique : chiffre aléatoire de 1 à 6
  • Jeu du morpion (Tic Tac Toe)
  • SNAKE fonctionnant avec l'accéléromètre
  • Eclairage "d'ambiance" avec variation aléatoire des couleurs
  • Modélisation d'un Rubik's Cube 3x3
  • Jeu de mémoire couleur/son (comme le jeu Simon)

Choix techniques : matériel - utilité

Nous allons nous baser sur :

  • un microcontrôleur de type MBED (ARM Cortex M3) [fourni le 2/2/2015] : Cerveau du dé - Sons/bruitages

La documentation est disponible ici. Les programmes implémentés seront codés en C.

Ensuite, les composants suivants doivent être intégrés :

  • LED RGB (54 LEDs) : Elles seront multiplexés à l'aide de transistors. [9 LED Rouges/Jaunes fournies le 4/2/2015] 54 x LED [100 LEDs RGB commandées chez Farnell le 18/2/2015]
  • 18 transistors NPN [3 fournis le 4/2/2015]
  • 18 x Transistor [20 BC548BRL1G commandées chez Farnell le 18/2/2015]
  • 18 x Transistor CMS [100 BC848B-7-F commandées chez Farnell le 18/2/2015]
  • Résistances : à voir avec les encadrants et en fonction des tests (Savoir si on doit en placer une à l'anode ou une à chaque cathode)
  • Accéléromètre : Orientation dans l'espace et réveil de l'appareil après la détection d'un mouvement. [ fourni le 11/2/2015]
  • Alimentation : Rechargeable via usb.
  • 6 faces "tactiles" via le centre de chaque face : Possible par résistances capacitives, touches tactiles (SparkFun Touch Shield), boutons poussoirs (Tests à réaliser pour déterminer la meilleure méthode).

Étapes du projet

Étape 1

  • Choix des jeux et fonctionnalités à intégrer au dé en tenant compte des contraintes matérielles
  • Aperçu du matériel disponible et nécessaire, puis choix des composants
  • Élaboration du schéma électronique à adopter
  • Découverte de la plateforme MBED

Étape 2

Cette étape occupera la plus grande partie de la durée du projet.

  • Réalisation du code des fonctionnalités à intégrer sur la plateforme MBED
  • Réalisation des circuits électroniques nécessaires via Altium Designer
  • Début du montage du cube

Étape 3

  • Montage final du cube
  • Réalisation de programmes optionnels s'il reste du temps (fonctionnalités compliquées à implémenter ou pensées plus tard dans le projet)
  • Tests des fonctionnalités sur le matériel

Avancée du projet

Semaine 1 (du 26/01/2015 au 01/02/2015)

Schéma multiplexage LED

Nous avons surtout porté nos recherches sur du matériel électronique spécifique, notamment pour l'aspect "tactile" de notre cube. En effet, il est possible d'utiliser les techniques suivantes :

  • Résistance et capacité : On utilise une simple résistance et un métal conducteur. En touchant celui-ci avec notre doigt, on le transforme en capacité. On peut voir le principe ici.
  • Résistance capteur de pression : Prête à être utilisée mais assez chère. Il y a bien d'autres alternatives.
  • Touch Shield : A voir avec l'intégration des LED.
  • Boutons réalisés sur le principe du Button Pad à raison d'un par face : Dans le pire des cas ...

Puis nous nous sommes intéressés à la connexion des LEDs. Elles seront au nombre de 54, soit 9 par face, et en plus, ce sera des LED RGB. Nous avons trouvé pour cela une solution de multiplexage à l'aide de transistors NPN. Voici un petit schéma du branchement possible sur une face avec 9 LEDs RGB : Il sera possible de le porter à plus grande échelle par la suite.

L'objectif pour la semaine prochaine sera de tester les solutions du "tactile" et le branchement des LEDs.

Nous avons également discuté avec nos encadrants sur le matériel et ses limites, c'est-à-dire le tactile, la connexion des LEDs, l’accéléromètre (disponible à Polytech), le MBED, les sons (réalisables avec le MBED) et le côté alimentation.

Semaine 2 (du 02/02/2015 au 08/02/2015)

Lors de cette semaine, nous avons surtout porté nos recherches sur la méthode de multiplexage des LEDs. Faute d'avoir des LEDs RGB, nous avons testé le multiplexage selon le schéma précédent avec 3 LEDs simples, soit une LED RGB. Nous avons réalisé le test d'allumer 1 seule des LEDs (pour avoir une couleur) puis 2 (mélange de couleurs).

Test 1 multiplexage d'une LED RGB (avec 3 LEDs)
Test 2 multiplexage d'une LED RGB (avec 3 LEDs)


Nous avons ensuite réalisé le branchement afin d'obtenir une ligne de LEDs RGB selon le schéma précédant, soient 3 fois 3 LEDs simples. On peut voir ci-dessous le branchement et le résultat du test :

Branchement d'une ligne de 3 LEDs RGB (9 LEDs basiques)
Résultat du multiplexage d'une ligne de LEDs



L'objectif pour la semaine prochaine sera de tester le multiplexage des LEDs sur une face, et d'aborder le côté "tactile" du projet.


Semaine 3 (du 09/02/2015 au 15/02/2015)

Suite aux résultats du multiplexage des LEDs, nous avons commencé la réalisation du codage de l'allumage de celles-ci selon le schéma complet suivant :

Schéma complet du multiplexage


Parallèlement, nous avons porté nos recherche sur l'accéléromètre. Nous avons effectué quelques tests pour déterminer le fonctionnement exact. Nous avons récupéré les valeurs de celui-ci sur les broches analogiques du MBED et à l'aide de la fonction read() qui renvoie logiquement une valeur entre 0.0 et 1.0. Nous avons codé le petit programme de test suivant pour tester selon l'axe Y:



DigitalOut myled1(LED1); DigitalOut myled2(LED2); DigitalOut myled3(LED3); DigitalOut myled4(LED4); DigitalOut verif (p5); DigitalOut verif2 (p30); AnalogIn x(p15); // 0.4<X<0.6 AnalogIn y(p16); // 0.4<Y<0.6 AnalogIn z(p17); // 0.4<Z<0.6

int main() {

   while(1) {
       
       
       wait(0.2);
       
       float m1 = x.read();
       float m2 = y.read();
       float m3 = z.read();
       
       if (m2>0.5) myled1=1; else myled1=0;
       if (m2>0.52) myled2=1; else myled2=0;
       if (m2>0.54) myled3=1; else myled3=0;
       if (m2>0.56) myled4=1; else myled4=0;
       if (m2>0.58) verif=1; else verif=0;
       if (m2>0.6) verif2=1; else verif2=0;
   }

}

On peut voir le résultat ici :

Semaine 4 (du 16/02/2015 au 22/02/2015)

Fichiers Rendus