Hacker un Clavier Riitek "Rii Mini 12" pour application MicroContrôleur

 Bonjour à tous,

Je me suis souvent dit que les claviers Riitek seraient d'un excellent usage pour saisir des informations dans un projet MicroContrôleur. 

Clavier sans fil Rtitek Rii Mini 12 (MWK12+)

Ces claviers sont ergonomiques, compactes et la frappe très agréable.
Malheureusement, ils fonctionnent avec une clé USB sans-fil, ce qui les réservaient exclusivement pour des applications PC/Raspberry-Pi...jusqu'aujourd'hui!

Ce petit article nous entraîne dans différentes étapes de décodage du clavier pour pouvoir l'utiliser avec des microcontrôleurs.
Autrement dit du hacking électronique sur un produit chinois (cela ne manque pas d'ironie :-) )

Ouvrir un Clavier Rii Mini 12

C'est un clavier vraiment compacte et, un jour de curiosité, j'ai voulu voir comment l'électronique était incluse dans ce clavier.


Et la première chose que je note, c'est les deux rubans qui proviennent de la partie clavier et qui sont raccordés sur la carte.

Nous pouvons donc compter sur un système à matrice comme pour les claviers numériques (keypad).

Système à matrice pour
détection de touche pressée

Pendant un temps, j'ai pensé qu'un des rubans était destiné aux colonnes et l'autre rubans (la plus étroite) pour les lignes et le touchpad.

Bon, la réalité est un peu plus complexe que cela...

Poursuivre le démontage

N'arrivant pas à trouver plus que quelques points (masse,+5, +3v3, 1 LED) en sondant les connecteur... j'ai donc poursuivit le démontage pour extraire le clavier de sa coque en aluminium.

Extraction du clavier

Extraction du TouchPad

A ce stade, nous savons:

  1. Que la nappe de 26 broches ne concerne que le clavier.
  2. Que la nappe blanche 10 broches correspond au touchpad.
    Les points de tests SDA, SCL, INT du TouchPad indique que le TouchPad communique via un bus I2C. Et qu'il alerte le microcontrôleur d'une action utilisateur avec la broche INT (interruption).

Extraire ces éléments n'est pas de tout repos car ils sont très sérieusement collés dans le support en aluminium... l'opération est partiellement "destructive".
Si vous regardez bien l'image du clavier, vous constaterez assez facilement qu'il n'est plus très plat. L'extraction n'est pas simple! 

Heureusement qu'iil ne faudra pas extraire le clavier de son support en alu lors d'une utilisation avec MicroContrôleur..

Test de la matrice à la mode DIY

Toujours convaincu que le clavier fonctionne en mode matricielle, j'ai récupérer le connecteur 26 broches pour le souder sur une plaque de prototypage.


Avec le clavier rebranché (voir image ci-dessous), j'essaie de détecter à l'ohmmètre les colonnes/lignes de la matrice en pressant des touches.


Et bizarrement, je n'en détecte qu'une partie (voir les gommettes sur l'image ci-dessous)!


Avec un peu de réflexion, c'est forcement un système à membrane puisqu'il n'y a pas de place pour des touches mécaniques.
Une membrane implique donc des pistes imprimées sur un film plastique et comme l'extraction du clavier fût musclée.. j'ai probablement endommagé une ou plusieurs pistes.

Comment faire? => Démonter plus

Récupérer les membranes

Puisque j'ai probablement endommagé les pistes, je ne peux plus compter sur le multimètre. 

Solution: Désassembler le clavier, récupérer les membranes et les décoder.

Une Dremel et une fraise arrondie permet de faire sauter facilement les rivet en plastique en l'arrière du clavier.

Et voila.... la mécanique du clavier et la membrane supérieure avec les plongeurs (sur lesquels appuient les touches) mettant le film supérieure en contact avec le film inférieur.

Et voici nos deux membranes passées au scanner (j'ai entouré les points de liaisons).

Les pastilles de la membrane supérieures sont mises en contact avec des pastilles de la partie inférieure. On y voit différentes pistes ici et là.
Ce n'est pas super-intuitif mais s'il y a certes une organisation, elle n'est pas matricielle... mais alors pas du tout!

En travaillant les images avec un logiciel de dessin (Merci Gimp!) et de la patiente, nous obtenons....

Membrane inférieure avec n° de piste sur le ruban et les contacts.
( Agrandir pour voir les détails )

Les pistes sont numérotées sur le ruban de connexion et la numérotation est reportée sur toutes les pastilles (de préférence au dessus).

Vient ensuite le même travaille sur la membrane supérieure... cette fois, j'ai écris les numéros de piste en dessous des pastilles.

Membrane supérieure avec n° de piste sur les contacts
( Agrandir pour voir les détails )

Il ne reste plus qu'à superposer et travailler par transparence pour obtenir les broches impliquées à chaque intersection.

Avec encore un peu de travail pour la retranscription nous obtenons le résultat final :

"Matrice" de décodage du clavier (2300 x 2300 px)

Voici un petit morceau de la matrice de décodage (plus facile à inspecter)


En pressant la touche "ESC", les lignes 17 et 23 (noté 17,23) sont mises en contact. La résistance de contact est de l'ordre de 100-150 Ohms.

En pressant la touche correspondant à "2 é ~" c'est les lignes 16 et 19 qui sont mises en contact.
Pour différencier les caractères  "2 é ~", il faudra utiliser des combinaisons avec la touche Shift (8,25) ou Alt-Gr (4,21). C'est au programme sur le MicroContrôleur à faire tout le travail de détection.

Avec la matrice de décodage (ci-dessus), j'ai re-documenté le connecteur 26 broches du clavier.


Le touchPad

Pour le TouchPad, ce sera pour un peu plus tard. Je doute qu'il soit possible de trouver une fiche technique pour le composant utilisé par RiiTek.

Il faudra donc espionner les lignes SDA & SCL in situ avec un analyseur logique (que je n'ai pas encore) pour identifier le protocole d'initialisation et d'utilisation du TouchPad.

Voilà pour un premier dégrossissage, c'était intéressant.
N'hésitez pas à partager vos commentaires.


Aucun commentaire