Un Q.C.M. sur Minitel

Minitel qcm

Difficulté:

Je vous propose un voyage dans le temps pour les plus anciens et une découverte pour les plus jeunes... Pourquoi ne pas faire revivre nos vénérables Minitel ? Vous savez, le truc là : la télématique, l'Internet avant l'heure !

Pour découvrir l'histoire du Minitel, je vous dirige vers la page Wikipédia Minitel.

Ici je vous propose de remettre en fonction un Minitel sous la forme d'un jeu type Questionnaire à Choix Multiples grâce à un Arduino.

Matériel

Materiel

Budget:

59 €
  • 1 Minitel (gratuit)
  • 1 fiche DIN FM54 (0,70 €)
  • 1 Teensy 3.5 (29,70 €)
  • 1 câble micro-USB (3,80 €)
  • 1 boitier NSR 3 (0,80 €)
  • 3 contacts mâles NSR (1,25 €)
  • 2 connecteurs FH120Z (2,80 €)
  • 3 connecteurs FH105Z (1,50 €)
  • 1 support de pile CR2032 (3,30 €)
  • 1 pile CR2032 ( 1,80 €)
  • 1 carte micro SD (12,95 €)

Etape 1 : Le jeu QCM

TODO: ajouter une vidéo du jeu en fonctionnement

Le jeu que je vous propose contient les éléments suivants :

  • Une page d'accueil
  • Un tableau des meilleurs scores
  • La saisie du nom du joueur
  • Le choix du niveau de difficulté pour commencer
  • Le jeu en lui-même
  • L'écran du résultat


Sur la page d'accueil, il n'y a rien de particulier à dire. Le Minitel présente le jeu et attend que l'on presse une touche sur le clavier. Sans action sur le clavier, au bout de 30 secondes, le tableau des meilleurs scores est affiché. Si une touche est pressée, on passe à l'écran suivant, autrement au bout de 30 secondes, l'écran d'accueil est affiché à nouveau.

Dès qu'une touche est pressée, le Minitel demande le nom du joueur. Une fois la saisie validée, le Minitel demande alors le niveau de difficulté pour commencer le jeu. Ce niveau de difficulté est dynamique. Dès qu'un joueur enchaine 3 bonnes réponses consécutives, le jeu passe au niveau de difficulté supérieur. Si le joueur répond mal 2 fois de suite, le niveau de difficulté diminue. La difficulté va de 1 à 5.

Le jeu pose 10 questions / réponses. La thématique des questions est sur l'Univers des films Star Wars, il y a plus de 300 questions. Le joueur choisit sa réponse en appuyant sur la touche 1, 2 ou 3. Si le joueur ne répond pas dans les 30 secondes (compteur affiché à l'écran), le jeu est alors purement et simplement perdu ! Le Minitel émet un "bip" quand le joueur a donné une mauvaise réponse. L'Arduino mesure le temps que prend le joueur à répondre. Plus il va vite, plus il gagne des points ! (si la réponse est bonne). A la fin du questionnaire, un écran de résultat est affiché. Le joueur obtient son score et son rang dans l'Ordre des Jedi !

Le tableau des meilleurs scores est alors affiché. Si le joueur est classé, son score clignote à l'écran.

Etape 2 : Le Minitel

ll vous faut tout d'abord un Minitel. Vous devriez pouvoir en trouver un facilement autour de vous, dans la famille, vos amis ou sur leboncoin pour quelques euros.

Pour qu'il soit utilisable, il faut que le Minitel soit doté d'un connecteur péri-informatique. On le vérifie tout simplement. A l'arrière du Minitel, il doit y avoir une petite trappe. Vous pouvez la lever avec votre doigt et vous découvrez la fameuse prise.

Etape 3 : Fabriquer un câble

Maintenant que vous avez le bon matériel (Minitel), nous allons fabriquer un câble pour pouvoir connecter notre Arduino.

Il vous faut une fiche DIN FM545 que l'on trouve pour 0,70 € chez notre ami Go Tronic.

Nous n'utilisons que trois des cinq broches : 

  • La broche du haut (ici en marron) est la Masse = Ground = GND de l'Arduino. 
  • La broche de gauche (en jaune) sera à connecter sur TX de l'Arduino.
  • La broche de droite (en bleu) sera à connecter sur RX de l'Arduino.


Petite précision : cela fonctionne en 5V.

Comme vous l'avez surement compris, la communication entre l'Arduino et le Minitel sera donc effectuée via le port Série de l'Arduino.

Côté Arduino, nous allons utiliser :

Et l'on y connecte dans l'ordre le fil marron, puis bleu et enfin le jaune.

Etape 4 : Connexion à l'Arduino

TODO: ajouter une photo du résultat final 

Nous allons connecter l'autre extrémité du câble à notre Arduino, sur un port Série.

Pour faire simple, nous allons utiliser un Arduino qui fonctionne nativement en 5V ou supporte le 5V sur ses connecteurs. Comme l'idée est de faire un QCM qui contiendra de nombreuses questions, il est clair que nous allons tomber rapidement en manque de mémoire avec un Arduino Uno ou Mega. C'est pour cela que nous allons utiliser une carte Teensy version 3.5. Même si cette carte fonctionnant en 3,3V elle supporte le 5V sur ses connecteurs; et, cerise sur le gâteau, cette carte a suffisamment de mémoire pour répondre à notre besoin de stockage mémoire et possède quelques bonus que nous utiliserons un peu plus tard.

Cette carte Teensy 3.5 est également trouvable chez Go Tronic. Par rapport à un Arduino standard, il faut juste installer cet outil en plus : Teensyduino.

Il vous faut un câble micro-USB pour la connecter à votre PC/Mac.

Pour préparer cette carte, personnellement j'ai choisi de mettre ces connecteurs :


La connexion des 3 câbles se fait donc ainsi :

  • marron / GND sur le connecteur GND
  • bleu sur RX1, connecteur 0
  • jaune sur TX1, connecteur 1


Il vous suffit de brancher le connecteur NSR sur les 3 premières broches, juste à côté du connecteur micro USB.

Etape 5 : Premier test

Bonjour le monde

Maintenant que nous avons tout ce dont nous avons besoin, nous allons effectuer notre premier test pour enfin faire revivre ce fameux Minitel !

Cela va être très simple car comme bien souvent dans l'univers Arduino, un gentil codeur nous a préparé une bibliothèque que nous n'avons plus qu'à utiliser !!!

Ce gentil codeur se nomme Eric Sérandour et sa bibliothèque se trouve sur GitHub.

On ajoute l'utilisation de la bibliothèque dans le programme :

// on ajoute la librairie qui va gérer le minitel
#include <Minitel1B_Hard.h>

// on déclare la variable qui va nous permettre de jouer avec le Minitel
// on indique sur quel port série la connexion est faite, ici Serial1
Minitel minitel(Serial1);

Pour initialiser tout ça : (dans la partie setup()  du programme)

// on cherche le Minitel et on récupère la vitesse de communication
int speed = minitel.searchSpeed();
Serial.println("Communication : " + String(speed) + " bauds");

Et enfin, pour afficher notre première page sur le Minitel :

// on efface l'écran
minitel.newScreen();
// on met le clavier en minuscule
minitel.smallMode();
// on affiche un text à l'écran
minitel.print("Bonjour le monde !");

Il ne reste plus qu'à téléverser le programme sur notre Arduino et regarder notre page s'afficher sur le Minitel !

Le programme de test "test.ino" est en fichier joint. (Également disponible ici sur mon GitHub)

Fichiers techniques de cette étape :

test.ino

Etape 6 : Designer des pages Minitel

Il nous faut maintenant construire des pages Minitel à afficher. Il est possible de le faire entièrement avec la bibliothèque Arduino. Mais, pour avoir un beau résultat, cela va demander de nombreux essais / compilation / téléversement / corrections / ...

Pour faciliter ce travail, je vous propose d'utiliser un éditeur de page. Cette fois, on se dirige vers le GitHub de Frédéric Bisson qui nous a créé un éditeur entièrement en Javascript ! Son petit nom : miedit.

Une fois votre page créée, vous pouvez l'exporter au format .vdt (vidéotext). Je vous propose de convertir ce fichier en données utilisables sur Arduino. Un simple drap & drop de votre fichier sur cette page et il vous suffit de faire un copier/coller dans un fichier .h de votre projet Arduino.

Voici par exemple ce que ça donne pour une page qui affiche "Bonjour le monde !" :

#define PAGE_BONJOUR_SIZE 24
const PROGMEM uint8_t page_bonjour[24] = {0x1F, 0x40, 0x41, 0x18, 0x0A, 0x0C, 0x42, 0x6F, 0x6E, 0x6A, 0x6F, 0x75, 0x72, 0x20, 0x6C, 0x65, 0x20, 0x6D, 0x6F, 0x6E, 0x64, 0x65, 0x20, 0x21};


Etape 7 : BONUS

TODO: ajouter une photo

1/ La carte Teensy contient une horloge ! La date et l'heure sont mises à jour automatiquement à chaque fois que vous effectuez un téléversement de programme. La carte est cependant prévue pour garder l'heure à jour. Il suffit juste d'y connecter une pile pour que la carte (et donc le Minitel) soit toujours à la bonne date / heure.

Toujours chez Go Tronic, voici un connecteur de pile à 3,30 € chez Go Tronic ainsi que la pile CR2032 pour 1,80 €.

2/ La carte permet également nativement de gérer une carte micro SD. Cela nous permettra de sauvegarder les données de jeu (nom du joueur, questions posées, réponses.

 Il suffit juste d'en insérer une, le connecteur est présent.

Une carte micro-SD à 12,95 € chez Go Tronic.

Avec tout ça, le programme QCM sauvegarde alors l'ensemble des parties jouées. Un dossier est créé par jour et un fichier est créé pour chaque jeu effectué. Le fichier contient le nom du joueur, les questions posées et les réponses apportées. 

Cela permet de calculer des statistiques d'utilisation et de calibrer le niveau des questions. Exemple de statistiques : A la dernière Maker Faire où je tenais un stand, sur 3 jours, il y a eu en moyenne 5 parties jouées par heure, réparties uniformément dans le temps. 

Pour le réglage du niveau des questions, j'ai augmenté le niveau des questions n'ayant jamais eu de bonnes réponses. Par contre j'ai baissé le niveau des questions où tout le monde avait bon.

Etape 8 : Le programme

TODO: insérer une photo

Le programme est disponible ici en pièce jointe, en version "figée" à la date de publication. Les dernières évolutions seront trouvables sur mon GitHub

Le projet a été développé avec Visual Studio Code et PlatformIO. Il est cependant compatible à 100% avec l'IDE Arduino ! Il vous suffit tout simplement d'ouvrir le fichier .ino. J'ai essayé de structurer clairement le projet et j'y ai mis quelques commentaires pour détailler certaines parties. 

Si certains points vous semblent obscurs, n'hésitez pas à me questionner.

Bon amusement !

Fichiers techniques de cette étape :

3615-Builders.zip

Sources:


Vous aimez ce tutoriel ?


Soyez le premier à poster un commentaire pour Un Q.C.M. sur Minitel


Recevez une fois par mois les meilleurs tutoriels Technologie dans votre boîte mail




Champion

Gagnant du Concours Concours DIY Arduino


S'inscrire:


  • Vues: 458
  • J'aime: 7