Le Minitel n'est pas mort!!!

Boujour à tous!

Je viens d'arriver il n'y a pas si longtemps que ça sur le forum, et j'aimerais présenter un peit projet qui n'est pas très avancé mais qui pourra servir de base pour certains qui seront interressés : MiniOS.
MiniOS est un OS pour Minitel. C'est grâce à un arduino que l'on communique avec un Minitel par le biais de la prise péri-informatique située à l'arrière des Minitels.
Le montage n'est pas difficile il suffit de connecter un prise mâle DIN comme sur le schéma ci-dessous :

.

Pour communiquer avec un Minitel il faut utiliser un débit de 1200 bauds, le code dans le prochain post :wink:

Le code n'est composé que d'un seul fichier car l'OS est assez basique...

// Commandes de mise en page
byte gauche = 8;
byte droite = 9;
byte bas = 10;
byte haut = 11;
byte debutDeLigne = 13;
byte hautGauche = 30;
byte hautGaucheEfface = 12;
byte separateurDeSousArticle = 31;
byte remplissageEspace = 24; //Remplit le reste da la rangée avec des espaces

void setup() {

  UCSR1C = B00100100; // passage en mode 7bits + bit de parité
  Serial1.begin(1200);

  presentation(); // écran de démarrage
  Serial.begin(9600); // pour debug



}

void loop() {

  //Serial.print(menu()); //(Pour debug seulement)
  switch (menu())
  {
  case 49 : 
    fakebook();
    break;
  case 50 :
    credits();
    break;
  }

}

void presentation() {
  int i =0;

  Serial1.print(hautGaucheEfface);

  while(i<11)
  {
    Serial1.print(bas, BYTE);
    i++;
  }
  i=0;

  while(i<16)
  {
    Serial1.print(droite, BYTE);
    i++;
  }

  Serial1.print(27, BYTE);
  Serial1.print(79, BYTE); //Grossit la police
  Serial1.print("MiniOS");
  Serial1.print(27, BYTE);
  Serial1.print(76, BYTE); //Police normale
  Serial1.print(bas);
  Serial1.print(bas);
  i = 0;
  while(i<13)
  {
    Serial1.print(gauche);
    i++;
  }
  Serial1.print("The Minitel OS");
  i=0;
  while(i<6)
  {
    Serial1.print(bas, BYTE);
    i++;
  }
  i=0;

  while(i<22)
  {
    Serial1.print(droite, BYTE);
    i++;
  }
  Serial1.print(27, BYTE);
  Serial1.print(72, BYTE); // clignotement
  Serial1.print("Appuyez sur une touche...");
  Serial1.print(27, BYTE);
  Serial1.print(73, BYTE); // fixe

  Serial.print(7, BYTE);
  while(Serial1.available() <= 0) {   
  } 
  Serial1.read(); // Attente d'une touche

}

int menu(){
  Serial1.print(hautGaucheEfface);
  Serial1.print(27, BYTE);
  Serial1.print(77, BYTE); // lettres de double hauteur
  Serial1.print(bas);
  Serial1.print("                ### Menu ###");
  Serial1.print(27, BYTE);
  Serial1.print(76, BYTE); //Police normale

  Serial1.print(bas);
  Serial1.print(bas);
  Serial1.print(bas);
  Serial1.print(debutDeLigne);
  Serial1.print("1 - Fakebook");
  Serial1.print(bas);
  Serial1.print(debutDeLigne);
  Serial1.print("2 - Credits");
  int inByte = 0;

  while(Serial1.available() <= 0) {   
  }
  Serial1.print(hautGaucheEfface);
  inByte = Serial1.read();

  return inByte;

}
void fakebook(){
  Serial1.print(hautGaucheEfface, BYTE);
  Serial1.print(bas);
  Serial1.print(27, BYTE);
  Serial1.print(77, BYTE); // lettres de double hauteur
  Serial1.print(" 3615  ");
  Serial1.print(27, BYTE);
  Serial1.print(79, BYTE); // lettres de double grandeur
  Serial1.print("FACEBOOK");
  Serial1.print(27, BYTE);
  Serial1.print(77, BYTE); // lettres de double hauteur
  Serial1.print(bas);
  Serial1.print(bas);
  Serial1.print(debutDeLigne);
  Serial1.print("Amis               Mon Statut");
  Serial1.print(27, BYTE);
  Serial1.print(76, BYTE); // police normale
  Serial1.print(bas);
  Serial1.print(debutDeLigne);
  Serial1.print("- Mikou Coco      ......................");
  Serial1.print(bas);
  Serial1.print(debutDeLigne);
  Serial1.print("- Matthieu Gaill  ......................");
  Serial1.print(bas);
  Serial1.print(debutDeLigne);
  Serial1.print("- Nielsou Ptich   ......................");
  Serial1.print(bas);
  Serial1.print(debutDeLigne);
  Serial1.print("- Mel Gormany     ......................");
  Serial1.print(bas);
  Serial1.print(debutDeLigne);
  Serial1.print("                  ......................");
  Serial1.print(bas);
  Serial1.print(debutDeLigne);
  Serial1.print("- voir mes amis        valider le statut");
  Serial1.print(bas);
  Serial1.print(debutDeLigne);
  Serial1.print("                           ");
  Serial1.print(27, BYTE);
  Serial1.print(93, BYTE); //Inversion de fond
  Serial1.print(" ENVOI ");

  Serial1.print(27, BYTE);
  Serial1.print(76, BYTE);
 Serial1.print(27, BYTE);
  Serial1.print(92, BYTE); //Inversion de fond // police normale
  Serial1.print(bas);
  Serial1.print(debutDeLigne);
  Serial1.print("----------------------------------------");
  Serial1.print(bas);
  Serial1.print(debutDeLigne);
  Serial1.print(27, BYTE);
  Serial1.print(77, BYTE); // lettres de double hauteur

  Serial1.print("  Actualites :");

  Serial1.print(27, BYTE);
  Serial1.print(76, BYTE); // police normale
  Serial1.print(bas);
  Serial1.print(debutDeLigne);
  Serial1.print("        Soranne Guilly :");
  Serial1.print(bas);
  Serial1.print(debutDeLigne);
  Serial1.print(" A vu des screenshots du prochain");
  Serial1.print(bas);
  Serial1.print(debutDeLigne);
  Serial1.print(" Windows 2.1!");



  while(Serial1.available() <= 0) {   
  } 
  Serial1.read(); // Attente d'une touche
}

void credits() {
  Serial1.print(hautGaucheEfface);
  Serial1.print("MiniOS by Ronan Gaillard");
  Serial1.print(bas);
  Serial1.print(debutDeLigne);
  Serial1.print("Powered by Arduino");
  while(Serial1.available() <= 0) {   
  } 
  Serial1.read(); // Attente d'une touche
}

Voilà, si vous avez des questions n'hésitez pas...
Je prévoit de programmer une classe Minitel afin de simplifier tout ça et de permettre à plusieurs personnes de pouvoir utiliser ce terminal comme écran. :slight_smile:

Je met ici quelques screenshots pour ceux qui voudraient voir à quoi ça ressemble :o :


Voilà; ça c'est le montage sur un Arduino Mega comme vous pouvez le voir ;). Les DELS servent justent de témoins.


L'écran de présentation...


Le Menu, un peu vide je vous l'accorde ;D


Pour le fun :smiley:

Si tu peux mettre des photos plus petites, parce que là on voit rien.... Tu peux editer ton message avec le bouton "edit".

:slight_smile:

wow.
tres vintage.

Je dois acheter sur Ebay un minitel seulement pour essayer ce project,

:wink:

Clair; carrément old school ^.^

Bonjour,

J'en ai un dans mon grenier, vous pouvez faire une offre :slight_smile:

A+

:smiley: ARF, j'adore, ca sert pas à grand chose donc c'est totalement indispensable :wink:
J'attends vivement la suite

C'est excellent ! Un "Aller vers le passé"1 qui me plait bien. En plus, on retombe en enfance, ça faisait un sacré moment que je n'avais pas vu de minitel en marche.
Sinon, pour les photos, comme Jean-François : plus petites svp.

churchill

1 mauvais antonyme de "retour vers le futur" ::slight_smile:

Désolé pour les photos, voilà maintenant c'est tout bon :).

J'ai aussi fait une rectification dans l'image du premier post : ce n'était pas "4.7 ohms", mais bien "4.7 kohms"...

Je travaille sur cet objet "Minitel" et je vous tiens au courant :wink:

Super, merci pour les photos. :wink:

Salut,
Merci beaucoup pour le partage du code :slight_smile: Avec un ami on a parsé les touches pour le menu (mais il manque les premières lettres de l'alphabet :O), on a ajouté 2/3 pages (dont une qui joue de la musique sur un haut parleur), etc.

Pour tous ceux qui ont un Arduino Duemillanove, remplacez tous les Serial1 par Serial et le bidule des 7 bits + bit de parité.

Enjoy :smiley:

32 = Espace
33 = !
34 = "
35 = #
36 = $
37 = %
38 = &
39 = '
40 = (
41 = )
42 = *
43 = ;
44 = ,
45 = -
46 = .
47 = /
48 = 0
49 = 1
50 = 2
51 = 3
52 = 4
53 = 5
54 = 6
55 = 7
56 = 8
57 = 9
58 = :
59 = ;
60 = <
61 = =
62 = >
63 = ?
64 = @
65 = ENVOI
66 = RETOUR
67 = RÉPÉTION
68 = GUIDE
69 = ANNULATION
70 = SOMMAIRE
71 = CORRECTION
72 = SUITE
73 = CTRL + CONNEXION / FIN
74 = J
75 = K
76 = L
77 = M
78 = N
79 = O
80 = P
81 = Q
82 = R
83 = S
84 = T
85 = U
86 = V
87 = W
88 = X
89 = Y
90 = Z
91 = [
92 = \93 = ]
94 = "FLECHE HAUT"
97 = CTRL + A
98 = CTRL + B
99 = CTRL + C
100 = CTRL + D
101 = CTRL + E
102 = CTRL + F
103 = CTRL + G
104 = CTRL + H
105 = CTRL + I
106 = CTRL + J
107 = CTRL + K
108 = CTRL + L
109 = CTRL + M
110 = CTRL + N
111 = CTRL + O
112 = CTRL + P
113 = CTRL + Q
114 = CTRL + R
115 = CTRL + S
116 = CTRL + T
117 = CTRL + U
118 = CTRL + V
119 = CTRL + W
120 = CTRL + X
121 = CTRL + Y
122 = CTRL + Z

Quand tu parles des bits de parité et 7 tu veux dire qu'il faut aussi modifier ça : Serial1.begin(1200); ?

Salut, j'ai un problème la presentation ne s'affiche et je ne peux mettre plus de 3pages. J'ai un Arduino Duemilanove Atmega168.

EDIT : J'ai viré le Serial.begin(9600); sinon ça bugger et j'ai remplacé les Serial1 par Serial et modifier les 7bits + bit de parité par UCSR0C = B00100100;

Merci :slight_smile:

Enfin un moyen de recycler les minitels !! Bravo c'est une idée mortelle !!!!
j'ai très envie d'essayer :slight_smile:

Je suis débutant et je n'arrive pas à connecter mon minitel à l'Arduino Duemilanove. En fait je ne sais pas comment faire le branchement. Quelqu'un pourrait-il m'expliquer comment je dois faire ? D'avance merci.

Tout est dans le premier message.... :-?

J'ai réussi en inversant Rx et Tx.... J'avais mal interprété le schéma et confondu mâle et femelle (c'est pourtant pas mon genre :wink: )

J'ai fait une petite page avec plein de photo et l'intégration d'un haut-parleur :

http://lululombard.free.fr/minitel_arduino.php

Salut à tous, j'aimerai faire un truc ou quand tu vas sur une page il y a ON et OFF et quand j'appuie sur la touche 1 ça allume une LED et 0 ça l'éteint mais j'ai essayé avec switch mais impossible de le faire marcher. Quelqu'un sait comment ?