我可以用Makey Makey + Raspberry Pi制作完整的USB键盘吗


15

我最近购买了Makey Makey(基于Arduino Leonardo / ATMega32u4),希望用一些金属零件构造一个完整的USB蒸汽朋克风格的键盘。在它到达之前,我重新阅读了细节,并意识到它只有18种可能的输入,因此85个以上的键将不起作用。有没有人知道我如何用Raspberry Pi制作这样的野兽?(与以前的帖子联系起来非常容易)


太棒了。
Jivings 2012年

1
据我所知,RPi的输入少于arduino,因此可以使用矩阵并使用18个输入处理81个键(9x9矩阵)来代替每个键的输入,因此我认为这不会有所帮助。
Craig

@Craig,所以您的意思是组合这样的输入:arduino.cc/playground/Main/KeypadTutorial
sventechie 2012年

@sventech是的。我不熟悉该产品,因此不知道其高阻开关将如何与矩阵相互作用。
Craig 2012年

Answers:


6

如果您只想制作一个键盘而不使用Makey Makey,则可以使用Raspberry Pi的GPIO功能来实现。但是像以前评论的那样,Raspberry Pi没有足够的可用引脚来制作实际上有用的键盘。

但是,如果您愿意添加2个IC,则可以使自己成为一个具有如此多按键的键盘,以至于每个按键都需要一个功能!

我的建议是将2个I2C IC连接到Raspberry Pi上的I2C总线,然后使用它们来创建自己的扫描矩阵。

如果使用一个PCF8574,则有8个I / O引脚可用;如果使用PCF8575,则甚至有16个I / O引脚可用。通过合并,您可以得到以下扫描矩阵:

  • 64键:(2x PCF8574)
  • 128键:(1个PCF8574和1个PCF8575)
  • 256键:(2x PCF8575)

您必须始终将它们之一用作输出,并将之一用作输入。在输出上,您可以从第0位“ n”行到第n位(7或15),这些是矩阵的列。另一方面,您不断读取输入的值,这些是矩阵的行。按下的键是有效的输出位和有效的输入位“ 1”的组合。

扫描矩阵原理

实际上创建矩阵是最有效的方法,当您在矩阵上时,不要忘了在矩阵中进行每次开关后都添加一个二极管,该二极管(正常的1N4148可以正常工作)需要与阳极一起放置到开关,阴极到行线。该二极管上的0.6V压降应该不是问题,其余(3.3V-0.6V)2.7V仍应为逻辑“ 1”。

实用扫描矩阵

之所以这样做,是因为它将防止鬼影和按键掩盖之类的事情。重影是一种效果,如果您同时按下三个以上的键,则可能会被解释为完全不同的键,因为更多行将具有逻辑“ 1”。屏蔽的效果是,如果您按下多个键并释放一个键,则在某些情况下将不会检测到该值,因为该键的行仍为逻辑“ 1”。

重影示例

图中显示了重影的一个示例,按下了按钮A,B,D,除了第1行(对于按钮A)之外,第2行(对于按钮C)也很高,此时第1列处于活动状态,这是不正确的。

在经历了整个硬件冒险之后,您需要编写或改编内核驱动程序以在Linux下实际使用键盘。一个很好的起点可能是此链接:TCA6416 I2C IO扩展器上的按键驱动程序,这是类似的想法,但仅使用16键键盘。

希望这对您有所帮助。


3

如果您想使一个完整的键盘能够真正打开,最好将USB键盘上的IC断开。要么将PCB本身保留在系统中无法看到的深处,要么将导线连接到交换机,或者使用相同的矩阵制作一些定制的东西。

如果您确实需要更改电气矩阵,则可能需要从头开始进行自己的设计,但实际上并没有必要。

即使使用定制板,您仍然可以得到枚举并可以用作USB键盘的东西,从而无需定制驱动程序。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.