Club robotique de Sophia-Antipolis

Accueil > Projets, études > Nos réalisations > Youpi > Le mariage des années 80 et 2010

10.YoupiNitel

Le mariage des années 80 et 2010

samedi 5 décembre 2015, par Eric P.

Entrée en matière

Démonstrateur YoupiNitel

Cette démonstration, créée pour la Fête de la Science 2015, a été imaginée sous forme de clin d’oeil.

En effet, quoi de plus banal que de faire bouger le bras Youpi en le contrôlant via une application sur PC ? Aucun intérêt, en tout cas en terme de nouveauté.

Mais par contre, si au lieu d’une bête interface graphique bling-bling et de mauvais goût sous Ouindose 14 on fournit aux utilisateurs un bon vieux truc rétro 100% texte avec un Minitel rescapé de la déchetterie, là le public fait "waou". Ou plutôt, les parents font "tiens, un Minitel" et les enfants "c’est quoi ça" :)

En tout cas, nous avons eu le plaisir de constater un intérêt et un amusement massifs des petits et grands lors de cette Fête de la Science

Les ingrédients

Vous l’aurez déjà compris, nous avons :

  • un bras Youpi tout droit venu des 80ies, en à peu près parfait état de marche [1]
  • un Minitel de la même époque, en parfait état de marche aussi

Le but est de permettre aux utilisateurs de donner des commandes au bras via le clavier du Minitel, afin de lui faire exécuter divers mouvements.

Entre les deux il va falloir ajouter un peu de quincaillerie d’aujourd’hui, de manière à :

  • s’interfacer avec les signaux de contrôle disponibles sur la prise DB25 du bras Youpi, initialement destinée à la connexion vers les TO7 et autres antiquités datant du plan "Informatique pour Tous"
  • recréer un serveur Videotext (aka Télétexte) permettant au Minitel de retrouver son environnement d’alors,
  • faire discuter le serveur Videotext et l’interface de contrôle du bras

L’approche

Nous étions deux, Damien et moi, à nous être embarqués dans cette aventure, et il convenait donc de pouvoir se distribuer le boulot afin de travailler en parallèle, mais de manière la plus indépendante possible.

Le chantier s’est donc décomposé en deux sous-projets :

  • la réalisation par Damien de l’interface de contrôle du bras avec une Arduino bien connue de nos services, dialoguant avec l’extérieur via sa liaison série/USB
  • la réalisation par votre serviteur du serveur Videotext, tournant une RaspberryPi, tout aussi bien connue de nos services

L’architecture globale du système se présente comme ci-dessous :

Architecture générale

La liaison Arduino-Youpi fait appel aux GPIO de l’Arduino, qui a pour rôle de générer les signaux de mouvement des moteurs tels qu’attendus sur la prise DB25 d’origine, et de récupérer l’état des capteurs de position de référence sur cette même prise. La documentation d’origine, très détaillée, a été d’un grand secours à ce niveau.

L’Arduino dialogue avec la Raspberry via une liaison USB série, en utilisant un protocole reproduisant celui utilisé par les servomoteurs numériques AX12, déjà présenté dans nos articles. Pourquoi ce choix ? Pour permettre de tester en parallèle la partie interface utilisateur avec un bras construit avec des AX12. C’est ce protocole AX12 qui a fait office de point de liaison entre les deux sous-projets.

Le Minitel n’utilise pas sa liaison téléphonique bien entendu, mais la liaison télé-informatique disponible via une embase DIN [2] sur le modèle récupéré, qui véhicule les même échanges mais sur une interface série TTL. Un simple câble convertisseur FTDI-série TTL 5V équipé d’une prise DIN permet d’assurer la liaison Raspberry-Minitel. Le protocole qui circule sur cette liaison est le Videotext propre au Minitel.

Câble USB-Minitel

La Raspberry a donc pour fonction de se présenter au Minitel comme un serveur Videotext, lui envoyant les pages à afficher et récupérant les saisies clavier.

Interface utilisateur sur le Minitel

Ces saisies sont traduites en actions de navigation au sein des pages du serveur, et en ordres AX12 à destination du bras Youpi, via l’Arduino.

Le comment

Côté Arduino, tout est programmé avec l’IDE habituel. Le code embarqué décode les messages au format AX12 qu’il reçoit en provenance de la Raspberry, et simule les registres de contrôle des AX12 (position cible, vitesse de mouvement, accélérations, position courante,...). Il génère les signaux spécifiques à destination du bras, l’avance des pas des moteurs étant obtenue par une succession de changements d’état ses signaux correspondant, selon une logique assez complexe. Chapeau à Damien d’avoir réussi à se dépêtrer de tout cela. Le code source est disponible sous GitHub.

Sur la Raspberry nous avons un serveur Videotext, qui implémente le protocole en conformité avec la spécification officielle. Malgré l’apparente complexité de la tâche, elle a pu être menée à bien grâce à la documentation très détaillée des matériels de l’époque, qui bien que d’apparence plus "rustique" que les documents actuels, peut en remontrer en qualité à bon nombre de soit-disant documentations diffusées de nos jours.

Cela a permis de créer une petite lib au-dessus du protocole Videotext pour gérer plus facilement l’affichage de pages, la gestion de formulaires, la gestion des saisies, l’affichage d’images,... Elle est disponible sur GitHub.

Le serveur est implémenté à la mano sans environnement particulier. J’ai oublié de préciser un détail : toute la partie Raspberry est implémenté en Python. On ne change pas une équipe qui gagne ;). Son code source est disponible sous GitHub.

Le mot de la fin

Voilà comment faire du neuf avec du vieux.

Et aussi comment donner une occasion d’expliquer aux jeunes générations que :

  • non, Internet n’a pas toujours existé
  • on pouvait quand même communiquer avant
  • la France a été un précurseur de premier ordre, dans la mesure où il n’est pas exagéré de dire que le Minitel et le réseau Télétexte ne sont rien de moins que l’ancêtre de l’Internet moderne. Quand on réalise de plus que le Minitel ne pouvait jamais se planter ni chopper de virus [3], on mesure le bonheur dans lequel on vivait en ces temps révolus :)
  • Free n’existerait peut-être pas si un certain Xavier Niel (son fondateur) n’avait pas fait fortune à cette époque en développant les premiers serveurs coquins sur Minitel. Comme quoi, le sexe peut aussi faire avancer la science :)

Quelques références utiles

Des scans de documentations sont également annexés à cet article.


[1nous avons dû lui refaire (impression 3D) un des doigts de la pince dont le guidage était cassé, et démonter entièrement la base pour nettoyer la graisse figée depuis 20 ans et qui empêchait les roulements de pivoter normalement - au passage, j’ai pu apprécier la qualité de la mécanique : ça c’est des roulements ;)

[2encore une vieillerie du siècle dernier ;)

[3pas comme certains navigateurs tournant sous certains OS...

Vos commentaires

  • Le 24 novembre 2016 à 15:59, par Olivier En réponse à : Le mariage des années 80 et 2010

    Trop fort le Minitel (TM) ! Peut-être en 4800 Bits/s ça le ferait (ou 9600 si c’est un minitel 2) ?
    On peut je crois se passer du convertisseur USB/série en utilisant un port série natif du Raspberry ?
    J’ai vu un Youpi dans une réserve poussiéreuse quand j’étais prof de techno. Ça devait coûter le prix d’une centaine de Raspberries à l’origine j’imagine !

    • Le 1er juin 2017 à 15:36, par Eric P. En réponse à : Le mariage des années 80 et 2010

      On peut je crois se passer du convertisseur USB/série en utilisant un port série natif du Raspberry ?
      GROS RISQUE A LA CLE : le port du Minitel fonctionne en TTL 5V alors que les GPIO de la RPi sont en 3.3V, et pas du tout "5V tolerant". Pour le faire, il faudrait donc un level shifter 5/3.3.
      De plus le port série de la RPi est utilisé par défaut par sa console. Cela nécessité donc de désactiver cette option au niveau config du boot. Et du coup on perd cet accès qui peut être bien pratique en cas de gros souci.
      Du coup le câble FTDI est de loin la solution la plus simple.

    Répondre à ce message

Un message, un commentaire ?

modération a priori

Attention, votre message n’apparaîtra qu’après avoir été relu et approuvé.

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.