电子说
步骤1:获取插座
部分,即。对适配器板进行编程和设计,您需要找到一种将键盘连接到PCB的方法。
大多数经典的ThinkPad键盘都使用板对板连接器。根据eBay的说法,如果您搜索T60键盘,则会发现ThinkPad T60,T60p,Z61p,Z61t,Z60,T61,R400,R500,T400,T500,X41 。..共享相同的键盘,并且它们的键盘矩阵也可能
从互联网上浮动的ThinkPad T60的示意图中(参见图片),我发现T60使用JAE AA01B-S040VA1-R3000。由于这些产品是专有产品,因此没有多少供应商出售它们。多数确实出售这些产品的人,其最低订购量为100。每件产品的价格约为4.90美元,加上运费,价格非常昂贵。因此,如果您有兴趣获得这些信息,请给我发消息。
有关ThinkPad T60插座的更多信息,请查看Felix的照片和尺寸:http://electronics.stackexchange.com/questions/64112/how找到用于键盘连接器的插座
步骤2:使用键盘示意图
从上一步的示意图中可以看出,T60键盘矩阵使用8行16列,其中1个用于热键(FN),TrackPoint使用时钟线,数据线和复位线。总共需要28个数字引脚,而Arduino Micro/Leonardo只有20个数字引脚。
使用CD4017这样的十进制计数器在行中循环,并使用MCP23S17等SPI 16位输入IC进行读取。输入为16列,Arduino端的引脚总数减少到10行。
通常,键盘矩阵是被动的-它们不指定行或列必须是输入还是输出。但是,对于该项目,16列输出将需要更多的外部IC,无源元件,并使设计复杂化。因此,我选择了8个输出和16个输入。
到目前为止,零件清单已经到了:
Arduino Micro:官方模块〜32美元,13美元用于克隆(在eBay上克隆)
CD4017
MCP23S17
16 x 10k电阻作为MCP23S17
的上拉电阻Arduino安装板和插座板(接下来的几个步骤)
AA01B-S040VA1插座
在https://www.tindie.com/products/rampadc/arduino-thinkpad获取该套件-usb-keyboard-adapter/
步骤3:设计原理图和PCB
由于T60的插座是间距为0.5mm的表面安装组件,因此我决定将SMD用于其他组件。
在此项目中,我决定将该板分成两块板:
Arduino Micro安装板
带有电阻和支持IC的插座板。
这可以使将来的主板修订版更具模块化,并且从长远来看可能会更便宜。例如,如果我决定添加蓝牙连接,则不再需要使用Arduino Micro的USB功能。我可以改用Arduino Nano,而只需要在Arduino一侧设计PCB,就可以清楚地知道我的插座板将以相同的方式工作,无论我决定使用哪种微控制器。
我提供了以下示例我的Elecrow的PCB布局,原理图和预制板。板子是双面的,适合50x50mm。
第4步:编写代码!
该项目非常简单,足以与Arduino庞大的社区进行编码。我写了一个简短的草图。该代码可在GitHub上找到:https://github.com/rampadc/arduino-thinkpadkb-usb。
该代码可以使用一些优化来加速矩阵扫描。从代码中删除了FN + NumLock功能,键盘键和自定义键盘组合功能,因为它显着降低了扫描速度。
步骤5:结果和结论
Arduino平台使构建USB适配器非常容易。但是,它有一些严重的缺点:
•有限的键码支持:没有键盘键,打印屏幕,滚动锁定,暂停,中断等的定义。•Keyboard.press()和Keyboard.release()的笨拙实现。 )。 Arduino API不会接受和发送未经修改的键码,而是强制用户发送可打印的字符。
•无远程唤醒:如果计算机进入待机状态,则按键盘上的某个键或移动鼠标都不会将其唤醒。
•引脚数少
•慢。可以进行代码优化和改进,但是使用Arduino从直接端口操纵中提取的东西会大大增加延迟,增加低引脚数,迫使用户使用扩展IC进一步降低了速度。
出于测试目的,我使用跨接电缆将两块板连接在一起。对于最终产品,我将使用一些细得多的电线直接焊接到板上并在键盘下方运行。
这是操作键盘的视频:http://youtu.be/gDHS0D_EtOc
设计建议改进和代码优化!
全部0条评论
快来发表一下你的评论吧 !