Puis-je créer un clavier USB complet avec Makey Makey + Raspberry Pi

15

J'ai récemment acheté le Makey Makey (basé sur Arduino Leonardo / ATMega32u4), dans l'espoir de construire un clavier de style steampunk USB complet à partir de certaines pièces métalliques. Avant son arrivée, j'ai relu les détails et réalisé qu'il n'avait que 18 entrées possibles, donc plus de 85 touches ne fonctionneraient pas. Quelqu'un a-t-il des idées pour créer une telle bête, peut-être avec un Raspberry Pi? (qui se connecte assez facilement, à partir des messages précédents )

sventechie
la source
C'est génial.
Jivings
1
Au lieu d'une entrée pour chaque touche, vous pouvez utiliser une matrice et utiliser les 18 entrées pour gérer 81 touches (une matrice 9x9) pour autant que je sache, le RPi a moins d'entrées que l'arduino, donc je ne pense pas que cela aidera.
Craig
@Craig vous voulez donc dire combiner des entrées comme celle-ci: arduino.cc/playground/Main/KeypadTutorial
sventechie
@sventech oui. Je ne connais pas le makey makey donc je ne sais pas comment sa commutation à haute résistance va interagir avec la matrice.
Craig

Réponses:

6

Si vous voulez juste créer un clavier, sans utiliser votre Makey Makey, vous pouvez le faire en utilisant la fonctionnalité GPIO du Raspberry Pi. Mais comme indiqué précédemment, le Raspberry Pi n'a pas suffisamment de broches disponibles pour créer un clavier réellement utile.

Cependant, si vous êtes prêt à ajouter 2 IC, vous pouvez vous faire un clavier avec tellement de touches que vous aurez du mal à trouver une fonction pour chaque touche!

Ma suggestion est de connecter 2 circuits intégrés I2C au bus I2C du Raspberry Pi et de les utiliser pour créer votre propre matrice de numérisation.

Si vous utilisez un PCF8574, vous avez 8 broches d'E / S disponibles, si vous obtenez un PCF8575, vous avez même 16 broches d'E / S disponibles. En combinant alors vous pouvez obtenir une matrice de scan de:

  • 64 touches: (2x PCF8574)
  • 128 touches: (1x PCF8574 et 1x PCF8575)
  • 256 touches: (2x PCF8575)

Vous devez toujours en utiliser un en sortie et un en entrée. Sur la sortie vous laissez un peu «marcher» du bit 0 au bit n (7 ou 15), ce sont les colonnes de la matrice. De l'autre, vous lisez constamment la valeur de l'entrée et ce sont les lignes de la matrice. La combinaison de ce bit de sortie est actif et de ce bit d'entrée est «1» est la touche qui est enfoncée.

principe de la matrice de balayage

En fait, créer la matrice est le plus de travail, et pendant que vous y êtes, n'oubliez pas d'ajouter une diode après chaque interrupteur que vous mettez dans la matrice, cette diode (une 1N4148 normale fera l'affaire) doit être placée avec l'anode au commutateur et la cathode à la ligne de ligne. La chute de tension de 0,6 V sur cette diode ne devrait pas être un problème, les 2,7 V restants (3,3 V-0,6 V) devraient toujours être un «1» logique.

matrice de numérisation pratique

La raison de ce camion de diodes est qu'il empêchera les images fantômes et le masquage des clés. Le fantôme est l'effet que si vous appuyez sur plus de trois touches en même temps, il est possible qu'il soit interprété comme une touche totalement différente car plus de lignes auront un «1» logique. Le masquage est l'effet que, si vous appuyez sur plusieurs touches et relâchez une touche, cela (dans certaines situations) ne sera pas détecté car la ligne de cette touche est toujours un «1» logique.

exemple fantôme

L'image montre un exemple de fantôme, les boutons A, B, D sont enfoncés et en plus de la ligne 1 (pour le bouton A), la ligne 2 (pour le bouton C) est également élevée, au moment où la colonne 1 est active, ce qui n'est pas correct.

Après toute l'aventure matérielle, vous devez écrire ou adapter un pilote de noyau pour utiliser réellement le clavier sous Linux. Un bon point de départ pourrait être ce lien: Pilote pour les clés sur l'expandeur IO TCA6416 I2C , c'est une idée similaire, mais utilise uniquement un clavier à 16 touches.

J'espère que ça vous aidera un peu.

ikku
la source
3

Si vous voulez créer un clavier complet pour taper réellement, vous feriez probablement mieux avec l'IC d'un clavier USB. Soit conserver le PCB lui-même enfoui profondément dans votre système où il ne peut pas être vu et faire passer les câbles jusqu'à vos commutateurs, soit fabriquer quelque chose de personnalisé avec la même matrice.

Si vous devez vraiment changer la matrice électrique, vous devrez peut-être créer votre propre conception à partir de zéro, mais sinon ce n'est pas vraiment nécessaire.

Même avec une carte personnalisée, vous pouvez toujours vous retrouver avec quelque chose qui énumère et fonctionne comme un clavier USB, supprimant le besoin de pilotes personnalisés.

Chris Stratton
la source