https://habr.com/en/post/692488/
作者:Riley 2022年10月11日
大家好,几个月前我买了一台Brother AX-25,从那以后,我一直在努力将它变成电脑。它使用Arduino扫描定制的机械键盘并控制打字机,树莓派通过串行连接到Arduino,因此我可以在headless模式下登录。
图片
这段视频介绍了它的设计和组装。还有一个正在使用的打字机的测试,以及视频末尾的声音测试。
视频链接:
B站:https://www.bilibili.com/video/BV1TM4y1o7Qv/
Youtube:https://www.youtube.com/watch?v=Pd6pa3Jko3w
灵感
高中时,我的一个朋友用Z80制作了一台电脑,用于学校项目。他把它放在公文包里的几个面包板上,我们后来决定把它放进一台旧打字机里。我们想制造我们自己的Commodore 64(https://en.wikipedia.org/wiki/Commodore_64)。我们拆除了一台旧的电子打字机,但从未抽出时间把电脑放进去。在过去的6年里,我的房间里一直放着那台打字机的外壳。
有一段时间,我想把打字机变成一个电脑平台。我计划在里面放一个屏幕,还有一个带大电池的树莓派。直到几年前,当我看到CuriousMarc关于他的电传打字机变成Linux终端的视频时(https://www.youtube.com/watch?v=2XLZ4Z8LpEE&t=659s),我的脑海里一直萦绕着这个想法。我想对打字机做同样的事,但我从来没有时间做,而且在任何旧货店都找不到打字机。大学毕业后,我终于有了足够的业余时间和知识,可以把打字机变成电脑,于是我去了一家旧货店,买了我能找到的第一台电子打字机。
功能
我可以使用各种Linux命令,通过处理树莓派输出的转义序列,它可以自动切换打字机的格式化功能。我也可以用打字机的键盘键入命令。
我还用它打印了一些ASCII图片,我认为结果看起来非常棒!
视频链接:
B站:https://www.bilibili.com/video/BV1Ev4y1a7c4/
Youtube: https://www.youtube.com/watch?v=6669n1Uo2vs
逆向工程与设计
打字机的键盘连接器上连接有跳线
打字机的键盘以8x11矩阵连接,它使用两个连接器连接到打字机上,一个用于行,另一个用于列。当你按下其中一个键时,它会将一个行引脚连接到一个列引脚,然后由打字机检测。为了弄清楚每个按键对应的是哪一对针脚,我一次用手把每一对针脚连接起来,并记下打印的是哪个按键。反复这样做,直到绘制出整个矩阵。
打字机使用7805线性调节器为其5V组件供电,我找到了一个未使用的5V焊盘和接地焊盘,我可以用它们为电路供电。我不得不在调节器上加一个散热片,以适应电路功耗的增加。
我的设计原理图
与打字机接口
Arduino代码可以在我的GitHub存储库中找到,如果您想更详细地了解它!我的Arduino使用两个多路复用器控制打字机,一个连接到每个键盘连接器。多路复用器的信号引脚是连接的,因此它们可以用于将键盘连接器上的成对引脚连接在一起。为了发送一个键,Arduino在每个多路复用器上选择一个引脚来连接它们,这会诱使打字机以为已经按下了键。
最后的电路全部接线,我不得不手动接线,因为我弄坏了我使用的表面安装多路复用器
Arduino通过串行连接到树莓派,树莓派在其UART引脚上启用了串行控制台。我选择在树莓派之外使用Arduino,因为我更熟悉它们,这使与树莓派的UART控制台的接口更容易。Arduino和树莓派以每秒120个字符的速度进行通信,但打字机每秒只能打12个字符。为了防止长消息被切断,我在代码中添加了串行流控制。这允许Arduino告诉树莓派何时开始和停止发送文本。树莓派正在运行树莓派OS Lite,因为我只需要访问终端。
扫描键盘
为了扫描键盘,我使用了基本相同的电路;两个多路复用器,一个用于行,另一个用于列。Arduino通过在每个多路复用器上选择一个通道,一次扫描一个键。当它检测到某个键被按下时,它会将该字符发送到树莓派,以便进行处理。
键盘扫描电路的原型
带有多路复用器的键盘的最终版本
我本可以在这个项目中使用打字机的原始键盘,但我决定用一个定制的机械键盘代替它,带有Matias Alps Clicky开关,打字时感觉很棒!
结论
通过把我的打字机变成电脑,我能够重现使用电传打字机的经历。现在我知道了在20世纪60年代开发Unix时使用它是什么感觉了!定制的机械键盘在打字时感觉很神奇,它比原来的糊状薄膜键盘有了巨大的升级。有了这些升级,我的打字机现在更强大了!