Le but
Le but est de connecter un Minitel sur le port série d'un PC. Il existe une multitude d'articles sur Internet, mais j'ai été déçu du peu d'explications sur les schémas électronique, j'ai donc décidé d'en faire... un de plus.
Quels sont les avantages, à part le côté rétro, fun, et de trouver une utilisation à ce fameux Minitel qui ne sert plus à rien ? Aucun.
Prérequis
Pour commencer, il y a plusieurs versions de Minitels. Il en faut un qui dispose d'une prise péri-informatique (prise DIN-5). C'est le cas du Minitel 1b (oui, il s'agit d'une doc officielle).
Actuellement, il n'est pas possible de brancher un Minitel qui n'a pas cette prise, à moins que vous ayez un générateur de signaux Télétel sur prise en T (auquel cas il est probable que vous soyez un ancien technicien de France Télécom).
Il faut ensuite un PC avec port série, ou un port série en USB.
Un câble avec un/des composant(s) pour adapter les signaux RS232 (série) du PC vers la prise DIN du Minitel qui fonctionne en TTL.
Un peu de théorie
Le RS232 est un standard pour communiquer des informations numériques (1 ou 0) sur un câble.
Ce qui nous intéresse ici, c'est de savoir qu'un niveau logique 0 est représenté par une tension de +3 V à +25 V et un niveau logique 1 par une tension de -3 V à -25 V.
De manière générale, sur un PC, les tensions sont ±12 V.
Attention, ceci n'est valable que pour les données (TX et RX), les autres lignes de contrôle (DTR, DCD, RTS…) sont en logique positive.
La prise DIN du Minitel fonctionne en niveau TTL. Donc, un niveau logique 0 est représenté par une tension entre 0 et 0,5 V, et un niveau logique 1 par une tension de 3 V à 5 V.
Partant de ces faits, il est impératif d'adapter les signaux, il y a même un composant spécialement fait pour, le MAX232.
Montage à base de transistor
Le montage suivant est assez simple à faire, mais ne respecte pas complètement la norme RS232.La ligne TX (DB9) - RX (DIN) respecte des deux côtés les normes des signaux. Cette ligne fonctionne dans le sens PC vers Minitel.
- Lorsqu'un 0 (+12 V) est émis depuis le PC, le transistor est passant, le RX est forcé à 0 volts.
- Lorsqu'un 1 (-12 V) est émis depuis le PC, le transistor est bloqué, le RX est « flottant », il pourrait être nécessaire d'ajouter une résistance de pull-up depuis l'alimentation PIN5 du Minitel. Néanmoins, cela fonctionne correctement, le Minitel semble générer une tension d'environ 3-4 volts.
Cependant la ligne RX (DB9) - TX (DIN) ne respecte pas la norme. De ce fait, il peut y avoir impossibilité d'envoyer des signaux depuis le Minitel.
- Lorsqu'un 0 (0 V) est émis depuis le Minitel, le transistor est bloqué (la résistance de 15 kΩ est ignorée dans ce cas), la tension est approximativement la même que celle générée par DTR.
DTR produit un niveau logique 1 représenté par une tension positive (12 volts sur un PC).
Pour ce cas, la norme RS-232 est bien respectée. - Lorsqu'un 1 est émis depuis le Minitel, la résistance de 15 kΩ ramène la base du transistor à une tension positive. En effet, dans le cas présent, le Minitel ne génère aucune tension, il est spécifié dans la documentation qu'il s'agit d'un collecteur ouvert.
Le transistor étant passant, la borne RX au niveau RS232 reçoit une tension de 0 volt pour représenter un 1 logique.
Pour ce cas, la norme RS-232 n'est pas respectée.
Si les composants sur l'ordinateur respectent la norme RS232, ce montage ne peut fonctionner que dans un sens, une tension de 0 volt étant un état qui n'existe simplement pas.
Heureusement pour nous, généralement, les composants modernes des PC sont plus soft et considèrent le changement de front.
Dans ce montage, les valeurs des résistances peuvent être changées selon ce que vous avez en stock, tant que vous restez dans la gamme 5 kΩ à 20 kΩ.
Montage autonome avec un RS232
Ce montage utilise un composant qui respecte totalement la norme RS232 et TTL, il est cependant plus complexe.Dans ce montage, on utilise une pin supplémentaire sur le connecteur DIN du Minitel. Cette pin (5) fournit une tension de 8,5 V jusqu'à 1 A.
Le LM7805 présent en haut sur le schéma génère une tension de 5 V stabilisée pour une tension d'entrée comprise entre 7 V et 30 V.
Cette tension de 5 V est utilisée pour alimenter le MAX232 qui permet de convertir les signaux TTL en signaux RS232.
Il est parfaitement possible de remplacer le 7805 par une diode Zener et une résistance.
Les condensateurs sont obligatoires pour que le MAX232 fonctionne, et leur valeurs proviennent de la documentation technique du MAX232.
Vérifier ce que spécifie la documentation du composant car le MAX232A utilise d'autres valeurs.
Avec ce montage, le MAX232 va générer des tensions comprises entre -10 V et 10 V pour adapter les signaux TTL (0 V,5 V) provenant du Minitel.
Et tout comme le montage précédent, une résistance pull-up est présente sur la pin TX du Minitel.
DTR, DCD, WTF!
Une petite précision : sur les montages, le signal DTR (Data Terminal Ready) est connecté sur le signal DCD (Data Carrier Detect).
Le principe est simple, l'ordinateur envoie un signal (1 logique) sur DTR une fois qu'il est en état d'effectuer une transmission série. En réinjectant ce signal sur la ligne DCD, l'ordinateur s'attend à recevoir des données à tout moment. En effet, cela informe l'ordinateur de la présence d'un composant.
Et après ?
Une fois le câble fait, il est possible de communiquer avec le Minitel depuis le PC, ou l'inverse. Sous linux, il est possible de :
- L'utiliser comme un périphérique terminal en activant le TTY ;
- L'utiliser comme écran d'affichage pour regarder ses films (certains modèles sont quand même en 8 couleurs !).
Quelques précisions
Sans manipulation particulière sur le Minitel, il faudra utiliser le port série en 1200 bauds 7N1 (7 bits de data, pas de parité, 1 bit de stop). De plus, sans manipulation sur le Minitel, ce dernier est en mode Vidéotex permettant un affichage de 40 colonnes par 24 lignes.
Avec une vitesse de 1200 bauds en Vidéotex, il est possible de rafraîchir l'écran environ 1 fois par seconde.
Les Minitels 1B qui disposent de la touche fonction peuvent basculer en mode dit mixte permettant un affichage de 80 colonnes par 25 lignes.
De plus, il est possible d'augmenter la vitesse de synchronisation jusqu'à 4800 bauds (9600 bauds pour les plus récents).
Pour les Minitels sans la touche Fonction, il devrait être possible (non testé à l'heure actuelle) de le basculer en mode mixte depuis l'ordinateur en envoyant une séquence particulière.
1 De Alexandre MONTARON -
Non, il n'est pas en 8 couleurs... il est en niveaux de gris ou en couleurs (Minitel 1C ou 2C). La sortie RGB du EF9345 est couleur elle !
1200 bauds c'est 120 caractères par secondes: il faudrait 2 secondes pour raffraichir tout l'écran a 4800 bauds en 40 colonnes seulement (ou 9600 bauds en 80 colonnes pour les Minitel 2).
Tu peux passer en mode mixte ou téléinfo avec une séquence escape mais pas sur un Minitel 1 !
Console Linux préinstallée:
$ export TERM=minitel1b-80 ; screen
Ou pour le dernier terminfo minitel en ligne :
# wget http://canal.chez.com/mntl.ti ; tic mntl.ti
$ export TERM=m1b-x80 ; screen
Alex. - http://canal.chez.com/terminfo.htm
http://canal.chez.com/term_bash.htm
2 De Olivier HUET -
Merci Aymeric pour les schémas et les explications :)
Merci aussi à Alexandre pour les informations supplémentaires.
Pour ce qui est de votre "désaccord" quant à la fréquence de rafraichissement d'un écran, de mémoire la norme videotext permet de spécifier des répétitions de caractères.
Je pense que votre "désaccord" est donc simplement liée à la prise en compte, ou non, de cette "compression" de données et qui permet la plupart du temps de transmettre bien moins de caractères que n'en contient l'écran.
3 De Alexandre MONTARON -
OK. Mais dans ce cas, ça fait environ 4 écrans par secondes a 1200 bauds mais toujours avec le même caractère... Va, je te l'accorde qd mm. Alex.
http://canal.chez.com/videotex.htm