Hackaday.io上的树莓派项目-ZX 键盘
收藏
分享
脑图
 Hackaday.io上的树莓派项目-ZX 键盘
关于项目
项目描述:这是一个将旧的 ZX 频谱转换为完全可用 USB 键盘的项目,该键盘可与 PC、树莓派或通过 USB 主机适配器支持 HID 设备的 Android 设备一起运行。更多关于黑客的历史和决策过程的背景,请参阅我的博客。
项目细节
他USB通信是使用VUSB库从目标开发,包裹在VUSB为阿杜伊诺库。USB 硬件是基于实践 Arduino 一书的设计,由于所有艰苦的工作都在代码中完成,这非常简单。
键盘是一个简单的矩阵,有5列和8个半行。每列一次被拉到地面一个,而其他列则保持浮动。然后,我们可以轮询行(在两个块操作中完成)。由于我们在 Arduino 内部使用内部上拉电阻器,因此我们不需要任何外部组件来做到这一点。值得注意的是,我们使用模拟引脚作为数字引脚,但这是罚款和如何微控制器的设计工作。我们还需要从 PIN 13 中卸下 LED,因为这将干扰上拉功能。
键盘以两种不同的模式运行。正常键入时,按键只需映射到相关的HID 代码。按下"大写"时,将发送一个移位"修改器",与字母一起发送,就像普通 USB 键盘上发生的情况一样。
它变得有点复杂的地方是当我们按大写字母移位和一个数字被按下,因为这些用于导航,大写字母锁定,和删除。发生这种情况时,我们不会发送任何修改器,并分别映射到导航、大写锁和删除的键。如果按下字母和数字,我们发送移位修改器,可能会给 PC 带来意外的结果,但始终如此,无需为键盘编写特殊的键盘驱动程序,这样做将最大限度地提高与大多数频谱模拟器的兼容性。
按下符号移位时,我们进入另一种模式。这是因为我们需要假装一些符号是按移位时键入的,有些没有。作为妥协,我们发送一个单一的按下和释放每个符号被键入,不返回到正常模式,除非释放符号移位键。如果没有合理的符号映射到模拟器兼容性,我们也会发送一个未经修改的字母数字键。
键盘去弹跳是通过一个简单的延迟约100ms,这是一个时代在现代,但需要旧的膜键盘,物理反弹。我们不得不禁用计时器,因为它导致USB行为不自在,这打破了延迟功能,所以我们调用延迟微秒几次做同样的事情。
项目图片
1 X ZX 频谱
1 × Ardunio专业迷你
1 X 2.2KΩ 电阻器
2 X 68° 电阻器
2 X 3.6V 齐纳二极管
1 X USB A 插头和引线
1 X 电缆短长度
相关列表
项目日志
有些人报告了 VUSB Arduino 库的问题,该库没有使用最新版本的 Arduino IDE。这似乎是因为库中的错误在较旧的 Arduino IDE 中被忽略,但会导致它无法在最新的 1.6 版本中编译。我可以确认, 它确实编译在 1.0.5 。此错误已修复在原始 VUSB 库中,但此修复程序尚未通过 Arduino 端口。它并不理想,但快速和简单的解决方案是降级 IDE 上传固件。
我刚刚添加了一个"直接"模式,它不映射频谱键,从标准PC键盘的预期像以前。这是无用的大多数时候,但是必不可少的,让ZX键盘与一些频谱模拟器工作。为了启用直接模式,硬件交换机已添加到 A4 中。短到接地以启用直接模式。保持打开状态以使用 PC 模拟模式。
当激活所有字母数字键时,无论按下任何移位按钮,输入和空格都会直接映射。大写字母换档映射到左移键,将符号移位映射到左侧控制键。这适用于原始模拟 PC 键盘模式的所有仿真器。
当我尝试 V-USB 库时,我发现监视发送到计算机的消息与传统的 USB 键盘进行比较很有用。我在Windows平台上找到的最好的工具是HHD的免费USB分析仪。
一个字的警告在安装程序可以拉在一些"垃圾软件",被病毒扫描仪捕获,但我打电话给公司和网站(从那里主要网站分开)显然是合法的。
我现在提到这一点的原因是,我有一些问题与虚拟盒子和VMWare USB集成,并跟踪它到分析器。卸载它修复了问题, 你可以重新安装没有问题, 当它再次需要, 虽然。
祝调试快乐。
我已经测试了 Zx 键盘与Jspeccy 创建的演示场景天才马特韦斯特科特运行在 PC 上。好消息,而且有些预期,它起作用了。
坏消息是,像 Fuse 一样,我所做的键盘与现代操作系统一起使用的关键映射也打破了兼容性。我现在考虑使用硬件开关或键组合实现仿真器兼容性模式。
由于这个项目的起源是使用键盘与频谱模拟器运行在树莓派我决定是时候实际做到这一点。我已经测试了键盘与Pi,但直到现在还没有安装一个模拟器。
一些好消息是频谱模拟器保险丝已经移植到树莓派,很容易安装,如果你正在使用Raspbian。要安装 Fuse "SDL" 版本(将从命令通道全屏运行),只需登录,从命令行运行以下命令...
sudo apt-get install fuse-emulator-common fuse-emulator-sdl fuse-emulator-utils spectrum-roms
接下来,我们应该让它从全屏开始。从控制台类型在"保险丝-sdl"和模拟器将启动。接下来按 F1(是的,对不起,ZX 键盘没有 F1 键,因此您现在需要使用另一个键盘),选择"选项"和"全屏"。若要将其设置为默认按 F1 并再次选择"选项",然后选择"保存"。要退出,请使用 F10 键。
现在我想我们需要一个好的老游戏来玩。寻找合法分发的频谱游戏的最佳地点是http://www.worldofspectrum.org/。使用 ZX 键盘加载游戏的简单方法来自命令行。例如,我们可以加载狂躁矿工(假设我们下载了游戏,并提取到工作目录)与以下命令。
fuse-sdl --tape "Manic Miner.tzx"
令人讨厌的是, 我遇到一个问题与保险丝和 Zx 键盘。保险丝将每个键映射到频谱键、字母到字母、数字到数字、移位变为"大写",而 Ctrl 变为符号移位。所有其他键将被忽略。这是一个问题,因为我们已经在解释和翻译符号。例如,符号移位 P 作为双引号(移位 2),但模拟器将其视为按下帽锁。我们可以通过关闭翻译使ZX键盘工作完美无瑕,但我们将失去与PC软件的兼容性。我可能会考虑以一种方式构建改变模式, 但我们现在必须应付这个问题。
我承认这些都不是我最好的作品, 但它的工作, 这就是我担心的。
这个项目做错了吗?
有些人问我是否认为该项目通过, 我是否应该使一个现代键盘适合 Zx 频谱。嗯,我完全同意,ZX频谱有世界上最差的键盘之一,我也会同意,这个项目几乎没有实际用途。
步骤 1
从旧的 ZX 频谱中删除旧工作。(但永远不要摧毁一个工作!
步骤 2
通过一些电线将键盘连接器焊接到 Arduino Pro Mini。
步骤 3
使用 5 个组件构建 USB 适配器。电路图的副本位于 GitHub 存储库中。
步骤 4
将 USB 适配器连接到 Arduino Pro Mini 和 USB 引线。
步骤 5
使用 FDTI 适配器或 Arduino 百合板程序员对 Arduino Pro Mini 进行编程。源位于 GitHub 存储库中。
步骤 6
将电线布线到键盘中,将连接器的末端固定下来,以阻止它们疑惑,并修复 USB 电缆的末端,这样它才能拉出。
步骤 7
用 PC 测试它,如果工作正常,请将螺钉放入。
步骤 8
加载频谱模拟器,重温你的青春。然后用它来给我发一封电子邮件, 让我知道你是怎么上。
评论
0 / 100
查看更多
1503881740
2020-08-15
790
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号