[Info] - Remplacement clavier APPLE 2 par clavier PS2
Posté : 10 juin 2014, 22:23
Dans l"épisode précédent, ici ,je remettais d'aplomb après un très (trop ?) long sommeil un APPLE 2 Europlus.
A la fin de la saison 1 , si la carte mère fonctionnait bien, le clavier ou plutôt l'encodeur fixé juste derrière le clavier avait décidé de partir vers un monde meilleur .
Le circuit intégré (KR3600) de cet encodeur est introuvable car il ne peut provenir que d'un clavier APPLE 2 en bon état.
ATTENTION c'est un circuit encodeur "classique'" que l'on peut trouver d'occase mais le mappage du clavier est spécifique APPLE, c'est à dire que ce circuit est programmé d'usine avec le jeu de caractères pour un APPLE 2.
On en trouve dans différents vieux claviers d'autres marques mais pas avec le bon jeu de caractères. donc inutile d'aller chercher chez les vendeurs de circuits d'occasion il y a 99 % de malchances que l'on tombe sur un circuit conçu pour une autre machine.
D'ailleurs sur les APPLE 2e il y a aussi un circuit similaire, AY 3600 PRO , qui est exactement dans le même cas, programmé d'usine avec le jeu de caractères de l'APPLE 2e. .
Pour me dépanner j'ai trouvé une bibliothèque conçue pour l'Arduino qui permet avec quelques bouts de fils de décoder directement un clavier PS2.
Il suffit d'un tout petit script supplémentaire pour transformer le caractère ASCII en un mot de 7 bits , l'appui sur la touche A sur le clavier et de code ASCII 65 en décimal ou 41 en hexadécimal sera transformé en son équivalent binaire 1000001 sur 7 sorties de l'Arduino, le 1 correspondant à 5v et le 0 à... Ov .
Pour que l'APPLE 2 comprenne que le code est valide il lui faut une impulsion d'environ 10 µS sur un fil supplémentaire (Strobe) pour prendre en compte le caractère présenté sur les 7 bits.
L'appui sur une touche spécifique du clavier PS2, j'ai pris la touche "Arrêt Défilement" qui a l'avantage d'être dans un endroit éloigné du clavier, envoie une pulse négative de 100 µS sur un fil supplémentaire câblé sur le RESET à travers une résistance de 330 ohms.
Au total il faut donc 7 fils + Strobe + Reset + 5v + 0v soit au total 11 fils à relier sur le connecteur clavier de la carte mère qui alimente ainsi le module Arduino. Il faut ajouter une résistance de 330 ohms, un support de circuit intégré à 16 broches, une prise femelle de clavier PS2 et un module Arduino soit au total une quinzaine d'euro grand maximum, on trouve le module arduino ou plutôt un de ses clônes en Chine pour moins de 10 $, en France il faut compter 20 euros .
Pour ceux qui ne connaissent pas, l'Arduino se programme directement à partir d'un PC (mac, windows, linux), quand le programme est prêt on le transfère sur le module avec un cable USB. Le langage utilisé ressemble au C et n'est pas très compliqué.
En fait la plus grosse difficulté qui m'a pris tout mon temps est simplement la programmation d'une touche spécifique du clavier pour le reset.
En effet, je suis parti sur une installation à partir zéro du dernier kit de développement Arduino (gratuit ) 1.0.5 -R2 et j'ai l'impression qu'il y a une incompatibilité avec la librairie PS2KEYBOARD en version 2.4 que j'ai utilisée.
Pour faire court, la librairie retourne 2 caractères au lieu d'un dès que l'on essaye de mapper une touche sur un caractère de code ASCII supérieur à 127. en plus ces 2 caractères sont négatifs mais ça je ne l'ai vu qu'au bout d'une journée de test car je n'arrivai jamais à capturer la touche correctement en faisant un test d'égalité .
A part ça j'ai modifié le mappage du clavier dans la librairie pour qu'il n'affiche que les caractères présents sur le clavier d'origine de l'APPLE2 + ou Europlus. Petite précision, le clavier PS2 est en majuscule de base et l'appui sur shift présente le code des minuscules, toutes les touches sont auto-repat, le pavé numérique fonctionne ainsi que les touches ESC, TAB et AltGR qui permet d'obtenir certain caractères standard sur le clavier APPLE mais pas sur un clavier PS2 tels { , [ ou ].
La touche contrôle ne fonctionne pas, donc impossible de taper en direct ctrl - S ou ctrl -X par exemple, je verrai ça plus tard.
Je suis une grosse quiche en programmation donc tout fonctionne correctement mais j'ai contourné le problème et pas résolu le bug qui semble provenir d'un souci de typage de variable mais ça je verrai plus tard, l'essentiel est que ça marche .
Dans le zip il faut copier le dossier PS2KEYBOARD directement dans le dossier Mes documents\ ARDUINO\LIBRAIRIE de votre machine. Le script à transférer dans l'arduino se nomme keyboard_reset.ino
Je ferai le plan de câblage un peu plus tard mais il est très simple et peut se déduire au début du script dans la partie #define d0 4, on assigne le nom D0 à la broche de sortie 4....
A la fin de la saison 1 , si la carte mère fonctionnait bien, le clavier ou plutôt l'encodeur fixé juste derrière le clavier avait décidé de partir vers un monde meilleur .
Le circuit intégré (KR3600) de cet encodeur est introuvable car il ne peut provenir que d'un clavier APPLE 2 en bon état.
ATTENTION c'est un circuit encodeur "classique'" que l'on peut trouver d'occase mais le mappage du clavier est spécifique APPLE, c'est à dire que ce circuit est programmé d'usine avec le jeu de caractères pour un APPLE 2.
On en trouve dans différents vieux claviers d'autres marques mais pas avec le bon jeu de caractères. donc inutile d'aller chercher chez les vendeurs de circuits d'occasion il y a 99 % de malchances que l'on tombe sur un circuit conçu pour une autre machine.
D'ailleurs sur les APPLE 2e il y a aussi un circuit similaire, AY 3600 PRO , qui est exactement dans le même cas, programmé d'usine avec le jeu de caractères de l'APPLE 2e. .
Pour me dépanner j'ai trouvé une bibliothèque conçue pour l'Arduino qui permet avec quelques bouts de fils de décoder directement un clavier PS2.
Il suffit d'un tout petit script supplémentaire pour transformer le caractère ASCII en un mot de 7 bits , l'appui sur la touche A sur le clavier et de code ASCII 65 en décimal ou 41 en hexadécimal sera transformé en son équivalent binaire 1000001 sur 7 sorties de l'Arduino, le 1 correspondant à 5v et le 0 à... Ov .
Pour que l'APPLE 2 comprenne que le code est valide il lui faut une impulsion d'environ 10 µS sur un fil supplémentaire (Strobe) pour prendre en compte le caractère présenté sur les 7 bits.
L'appui sur une touche spécifique du clavier PS2, j'ai pris la touche "Arrêt Défilement" qui a l'avantage d'être dans un endroit éloigné du clavier, envoie une pulse négative de 100 µS sur un fil supplémentaire câblé sur le RESET à travers une résistance de 330 ohms.
Au total il faut donc 7 fils + Strobe + Reset + 5v + 0v soit au total 11 fils à relier sur le connecteur clavier de la carte mère qui alimente ainsi le module Arduino. Il faut ajouter une résistance de 330 ohms, un support de circuit intégré à 16 broches, une prise femelle de clavier PS2 et un module Arduino soit au total une quinzaine d'euro grand maximum, on trouve le module arduino ou plutôt un de ses clônes en Chine pour moins de 10 $, en France il faut compter 20 euros .
Pour ceux qui ne connaissent pas, l'Arduino se programme directement à partir d'un PC (mac, windows, linux), quand le programme est prêt on le transfère sur le module avec un cable USB. Le langage utilisé ressemble au C et n'est pas très compliqué.
En fait la plus grosse difficulté qui m'a pris tout mon temps est simplement la programmation d'une touche spécifique du clavier pour le reset.
En effet, je suis parti sur une installation à partir zéro du dernier kit de développement Arduino (gratuit ) 1.0.5 -R2 et j'ai l'impression qu'il y a une incompatibilité avec la librairie PS2KEYBOARD en version 2.4 que j'ai utilisée.
Pour faire court, la librairie retourne 2 caractères au lieu d'un dès que l'on essaye de mapper une touche sur un caractère de code ASCII supérieur à 127. en plus ces 2 caractères sont négatifs mais ça je ne l'ai vu qu'au bout d'une journée de test car je n'arrivai jamais à capturer la touche correctement en faisant un test d'égalité .
A part ça j'ai modifié le mappage du clavier dans la librairie pour qu'il n'affiche que les caractères présents sur le clavier d'origine de l'APPLE2 + ou Europlus. Petite précision, le clavier PS2 est en majuscule de base et l'appui sur shift présente le code des minuscules, toutes les touches sont auto-repat, le pavé numérique fonctionne ainsi que les touches ESC, TAB et AltGR qui permet d'obtenir certain caractères standard sur le clavier APPLE mais pas sur un clavier PS2 tels { , [ ou ].
La touche contrôle ne fonctionne pas, donc impossible de taper en direct ctrl - S ou ctrl -X par exemple, je verrai ça plus tard.
Je suis une grosse quiche en programmation donc tout fonctionne correctement mais j'ai contourné le problème et pas résolu le bug qui semble provenir d'un souci de typage de variable mais ça je verrai plus tard, l'essentiel est que ça marche .
Dans le zip il faut copier le dossier PS2KEYBOARD directement dans le dossier Mes documents\ ARDUINO\LIBRAIRIE de votre machine. Le script à transférer dans l'arduino se nomme keyboard_reset.ino
Je ferai le plan de câblage un peu plus tard mais il est très simple et peut se déduire au début du script dans la partie #define d0 4, on assigne le nom D0 à la broche de sortie 4....