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, Fldigi ou autres.
     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 qui 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, une bibliothèque 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 plus quelques caractères qui n'ont rien à voir avec l'alphabet Baudot. 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.
    Remarque: Les connexions ci-dessus correspondent au mini-clavier de test mais pas à celles du clavier définitif dont le schéma se trouve en bas de page.

     Installation de FLIP et de son driver:

       FLIP ayant été installé dans le répertoire de son choix, il faut maintenant installer le pilote ATMEL qui se trouve dans le       sous-répertoire \usb. L'opération se déroule de la manière habituelle à partir du gestionnaire de périphérique.
    - Brancher le UNO dans une prise USB. On va voir apparaitre son port COM dans le gestionnaire.
    - Passer en mode DFU comme expliqué plus loin. Après plusieurs sonneries, le port COM disparait au profit d'un       périphérique inconnu (point d'exclamation dans un cercle jaune).
    - Clic droit sur celui-ci, clic sur "mettre à jour le pilote"
    - Dans la fenêtre qui s'ouvre, clic sur "rechercher un pilote sur mon ordinateur".
    - Dans la fenêtre suivante, rechercher le sous-dossier \usb dans le répertoire de FLIP et cocher "inscrire les sous-dossiers".
    - Le pilote s'installe.

       Dans le cas où l'on aurait également une erreur du type: "AtLibUsbDfu.dll not found", il faudra télécharger ce fichier et le copier dans le répertoire où se trouve les dll de Windows

     Une fois le croquis compilé et chargé dans l'Arduino UNO R3, il faut remplacer le firmware de l'ATmega 16U2 avec FLIP. Après l'avoir 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). Opération effectuée 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 et Fldigi. A noter qu'un appui continu sur une touche ne provoque l'envoi que d'un seul caractère contrairement aux claviers classiques.

    Voici le schéma et le circuit imprimé réalisé, une fois n'est pas coutume, par une société spécialisée (JLCPCB) grâce aux fichiers Gerber pour le dessin et Excellon pour les perçages.
    Le minimum de commande étant de cinq pièces, quatre sont disponibles au prix franco de 3,50 € l'unité.
    Avant commande, il sera néanmoins prudent d'effectuer un test de flashage du firmware de l'ATmega16U2, comme décrit précédemment, pour voir si l'opération se passe bien. Certains PC et/ou certaines versions de Windows ont montré des difficultés, voire des impossibilités.


 

Pour les nostalgiques, le ruban perforé...

         RETOUR ACCUEIL