CLAVIER USB pour le mode RTTY

    Ce clavier comporte uniquement les touches correspondantes aux caractères utilisés par les téléscripteurs mécaniques, c'est à dire 30 touches qui génèrent à la fois les lettres et les chiffres ou caractères. Le choix étant fait par action sur une des touches.
    Cette réalisation n'est possible qu'avec les Arduino Uno et Mega qui comportent un circuit intégré qui gère l'USB (ATmega 16U2) et qui est reprogrammable via un logiciel fourni par ATMEL, le fondeur du circuit. On a ainsi un clavier qui, branché sur un ordinateur, se comporte exactement comme un clavier classique et permet d'attaquer un logiciel du genre MMTTY, MultiPSK ou autre.
     La description qui suit, aborde la partie logicielle qui est assez particulière puis la partie matérielle assez classique.

Programmation

C'est bien sûr l'IDE Arduino qui est mis à contribution. Dans un premier temps, il faut déterminer le code décimal de chaque touche. Comme vraiment aucun document intéressant n'a été trouvé, il a fallu chercher ces codes expérimentalement. Pour cela, on a construit un petit circuit qui s'enfiche directement sur l'Arduino par ses connecteurs. Cela s'appelle un shield.

 

    Il comporte 16 boutons miniatures, chiffre maximum car on ne dispose, sur le Uno, que de 16 entrées de D2 à D13 et de A0 à A5. Les entrées D0 et D1 ne peuvent servir car elles sont liées à la communication et dans notre cas précis, elles perturbent le fonctionnement. C'est largement suffisant car nous verrons que dans la réalisation du clavier alphanumérique, seules 13 entrées sont utilisées, plus une sortie.    

     Nous ne reviendrons pas sur cette recherche de code et elle a généré le tableau suivant où sont surlignés en jaune les touches utilisées pour notre clavier.

 Le firmware de l'Arduino, est prévu pour la communication entre un clavier et lui, mais pas pour simuler un clavier USB classique. Il faut donc remplacer son firmware et cela se fait très facilement grâce à un logiciel fourni par ATMEL et qui se nomme FLIP 347. Il va permettre de charger le firmware "clavier USB" ou de revenir (important !) au firmware Arduino. Ces deux firmwares avec FLIP et le croquis sont disponibles ici: clavier_soft.zip

     Comme nous l'avons évoqué précédemment, c'est FLIP qui va nous permettre de passer d'un firmware à l'autre. La procédure est simple, même si elle nécessite un certain nombre de manipulations mais on va d'abord s'intéresser à la programmation.
    Dans le croquis Arduino, nous avons un tableau qui représente les 30 touches du clavier réparties en 3 rangées de 10 colonnes:

     Ne sont notées que les majuscules et quelques caractères qui n'ont rien à voir avec le codage RTTY. C'est le logiciel qui va les traiter pour générer le vrai code et le transmettre en USB. Nous n'irons pas plus loin dans les explications car le croquis Arduino est commenté et donne toutes les explications.

     Une fois le croquis compilé et chargé dans l'Arduino Uno R3, il faut charger le firmware de l'ATmega 16U2 avec FLIP. Après l'avoir installé, lancé et cliqué sur l'icône de gauche (select a target Device), on choisit dans la liste déroulante le chipset ATmega 16U2.

 

     L'Arduino étant chargé par le croquis compilé et restant branché en USB, il faut maintenant placer l'Arduino en mode DFU (device Firmware Update). C'est effectué par un reset en court-circuitant brièvement les deux broches de connecteur 6 broches mâles se situant vers le poussoir RAZ. On entend alors les sonorités Windows avec un flash de diode LED.

 

     IMPORTANT L'Arduino Uno ci-dessus est le modèle original fabriqué en Italie mais beaucoup de clones d'origine chinoise ne comportent pas ce connecteur permettant d'accéder à la broche reset de l'ATMega 16U2 du fait qu'ils n'en possèdent pas (le plus souvent, un CH340). Ils sont inutilisables pour ce projet.

    Dans FLIP, cliquez sur l'icône USB (Select a Communication Medium) ce qui ouvre la fenêtre USB Port Connexion et cliquez sur OPEN. De grisé, les inscriptions passent en noir et en bas à droite, on voit "USB ON".

    Cliquez maintenant sur l'icône File (Load HEX File) et choisir le fichier Arduino-keyboard.hex

     Et cliquez sur RUN (Launch the selected above operations sequentially).

 

     En un temps très bref, le firmware est chargé. Il faut maintenant débrancher et rebrancher le cordon USB.

L'Arduino est devenu maintenant un vrai clavier USB ! On peut le vérifier en cliquant sur l'onglet "Périphériques et imprimantes" de Windows où l'on voit une nouvelle icône représentant un clavier.

 

     IMPORTANT: Si vous voulez revenir à l'Arduino d'origine, il faut le remettre en mode DFU (reset par les deux broches) et refaire les opérations précédentes en chargeant cette fois-ci, le fichier Arduino-usbserial-uno.hex

     Passons maintenant à la partie "hard"

Le clavier

     On a vu que l'Arduino ne comporte que 18 entrées utilisables dans ce projet et 30 touches signifie qu'il faut 30 entrées ce qui serait possible avec l'Arduino Mega et nécessiterait une "filasse" importante. On va donc grouper les interrupteurs en 3 rangées de 10 touches. Chaque rangée a une entrée distincte mais une sortie commune, ce que l'on voit sur le schéma. Et c'est ainsi que de 30, on est passé à 13. Par exemple, c'est le dispositif utilisé dans les pavés de 12 touches des digicodes.
    Par contre, cela implique une gestion particulière des entrées et pour cela, il existe une bibliothèque intitulée keyboard et qui permet de s'affranchir utilement d'un surplus de programmation.

     Par précaution, nous avons fait un test en vrai grandeur avec un mini-clavier enfiché directement sur l'Arduino.

 

     Pour le clavier définitif, nous avons choisi d'utiliser de véritables interrupteurs de touches, disponibles facilement et qui permettent de les disposer à la demande. Le choix s'est porté sur la marque AKKO "Ocean Blue" et livré dans un somptueux coffret de 45 pièces. Par contre, voulant un clavier rappelant le style "rétro" des téléscripteurs, les touches sont des pièces en laiton réalisées au tour. Aux dimensions près, ce sont les mêmes touches que celles de l'Enigma décrite par ailleurs sur ce site.
     Pour avoir un montage le plus compact possible et éviter de la filasse, l'Arduino est enfiché à l'envers sur le circuit imprimé des touches.
    Le test de ce mini clavier a donné entière satisfaction avec le mode RTTY de MultiPSK.

    La réalisation est en cours, mais nous donnons ici le schéma et le circuit imprimé prévus mais pas forcément définitif.

         RETOUR ACCUEIL