Cet article est initialement un compte rendu de l’atelier « Hacking Minitel » proposé par Sébastien J. lors de l’épisode 9 de la saison 6 du L0AD. Par la suite, il n’est pas impossible que soient ajoutés des compléments par ceux qui iront plus loin sur le sujet.

L’atelier

 

Le numéro 21 de Hackable contenait un article sous-titré « Redonnez vie à un Minitel 1B et affichez texte et images en Vidéotex avec votre Arduino ». Comme on avait justement un Minitel 1B et un Arduino sous la main, c’était plutôt tentant, avec comme l’objectif d’en apprendre un peu plus.

Matériel requis

 

  • un Minitel 1B (on en avait un sous la main, ça peut aussi se trouver d’occasion sur ebay ou le bon coin)
  • un Arduino (un Nano/Uno suffit)
  • une plaque à trous et quelques fils de prototypage
  • un connecteur DIN 5 broches male (ce cable de 2m possédant un connecteur à chaque extrémité fera parfaitement l’affaire)

 

Expérimentations effectuées

 

Installation de la librairie Minitel

On a commencé par télécharger la librairie Minitel sur Github, au format zip.

Après l’avoir décompressée et renommée (en supprimant le « -master »), on l’a importé via Arduino IDE (via le menu Sketch ->Include Library -> Add .zip library) et vu apparaitre quelques exemples associés

 

Cablage du Minitel (cf schéma)

La prise à l’arrière du Minitel, appelée prise Péri-Informatique, permet une communication bidirectionnelle en mode terminal ou VidéoTex. C’est une interface série TTL (RX, TX, GND) immédiatement interfaçable avec l’Arduino, à condition de disposer d’un connecteur DIN 5 broches male et de fabriquer un cable rudimentaire.
On avait bricolé ucen cable en avance, il a donc juste fallu relier les fils utiles du cable aux broches du Uno en suivant le schéma de câblage présent dans l’article original. Lorsque l’on regarde le connecteur à l’arrière du Minitel, les 3 broches à cabler sont :

  • celle située en bas à gauche (RX), qui doit être reliée sur la pin7 de l’Arduino (Tx de la liaison série émulée)
  • celle située en bas à droite (TX), qui doit être reliée sur la pin6 de l’Arduino (Rx de la liaison série émulée)
  • celle située en haut au milieu (GND) qui doit être reliée à la pin GND de l’Arduino.
Ci-dessous, le cable côté Minitel et Arduino.
   

Compilation/exécution de quelques exemples

Pour tester le câblage et la librairie, on s’est appuyé sur la compilation et l’exécution de MinitelNyanCat (cf. ci-dessous).
Ensuite, on s’est plongé dans l’étude du code de l’exemple MinitelInfo, dont le but est (comme son nom l’indique) de donner des informations sur le type et les capacités du Minitel avec lequel il discute, puis de l’exemple MinitelNyanCat.
La compréhension de ces exemples nous a amené à décortiquer un peu la librairie, pour observer qu’elle permettait d’interfacer le Minitel à travers un objet de type Minitel héritant de Serial et définissant des méthodes encapsulant des fonctions fournies par le protocole VidéoTex (afficher du texte, déplacer le curseur, activé le surlignement, le clignotement, doubler la taille, émettre un son, …).
A cette occasion, on a compris/revu au passage l’organisation du code d’une librairie arduino (.h/.cpp), la notion de classe, d’objet, d’héritage.
On a également appris pas mal de choses sur VideoTex et sur le Minitel (en se plongeant dans des docs trouvées ici et ).
Enfin, on a compris quelques subtilités de la communication série, et on a admiré comment la librairie se débrouillait pour transformer une communication 8N1 (8 bits de données, pas de parité) en 7E1 (7 bits de données, parité paire), ces caractéristiques de la communication ne pouvant être configurées que pour les liaisons séries matérielles et pas pour celles émulées.

Pour aller plus loin

 

On pourrait se pencher sur l’affichage de graphismes en non plus simplement de texte.

On pourrait également tester le passage du Minitel en mode terminal, pour pouvoir l’utiliser pour piloter le shell Unix d’une machine sur lequel on l’aurait relié en série.