将ASR33电传打字机连接到ESP32

2020-12-08 19:57:11

如您所知,我现在可以使用ASR33电传打字机(有关恢复说明,请参见此处)。即使还有很多事情要做,值得注意的是,我还是决定现在该做点什么了。

获得电传打字机并使其正常工作只是纯粹的怀旧之情,而我实际上并没有考虑过要用它做些甚至有用的事情,更不用说乐趣了。但是我做了一些假设。

一个想法是一个简单的linux终端,因此将电传打字机连接到Raspberry Pi。

在内部,计算机组件通常使用二进制1和0来工作,它们表示为相对于"地"的电压。因此,通常0V为0,工作电压为1,例如5V或3.3V。一些现代芯片在不同的地方使用各种不同的电压,但是原理是相同的。

我确定大家都听过这首歌,不是吗?无论如何,当我长大时,选择的串行接口是RS232。因此,您需要一种将内部设备连接到RS232的方法。这涉及驱动器芯片。

RS232实际上使用+ 12V或-12V的电压(相对于地面),尽管现代型号使用+ 5V和-5V甚至更低。原始规范允许相当宽的电压范围有效。

将Raspberry Pi之类的东西连接到RS232只需涉及获得合适的USB适配器。简单。

但是,电传打字机使用的旧标准称为20mA电流环路。它使用一对导线(-和+)代替接地和电压,它们产生20mA或什么都不代表二进制值。这样做的好处是,无论电缆有多长,如果在一端插入20mA电流,在另一端输出20mA电流。这就是电流的工作方式。这确实意味着长电缆在开始时需要相当高的电压(长电缆上的电压确实会随着距离的下降而下降),但是如果您可以施加必要的电压来馈入20mA的电流,则您知道远端正在获得20mA的信号并且信号正在通过。

遗憾的是,似乎很难找到一个简单的USB 20mA电流环路接口,但是可以从20mA电流环路获得RS232适配器。

不幸的是,这并不容易。首先,接口盒(超过100英镑)需要电源,所以我需要为它提供某种DC插头顶部电源。这是将20mA电流发送给电传打字机。

但是,更糟糕的是,电传打字机始终不会发送20mA电流。它希望您提供一个20mA的电流源,可以通过它开关。开启和关闭。因此,对于电传打字机,我需要第二个20mA恒定电流供应,以便它可以向适配器提供20mA的电流,然后将适配器转换为RS232,然后我通过USB将其提供给Raspberry Pi。

现在,我玩过ESP芯片,另一种想法是连接到ESP32,以连接电传打字机WiFi,从而提供更大的灵活性。

我在这里使用的技术相距约55年。电传打字机使用的是1963年版本的ASCII字轮,它的日期可能在1965年之前,因为1965年的字轮带有下划线而不是箭头。 ESP32于去年问世。是的,相隔55年,是的,和我一样大,这太可怕了!

我的意思是,这真的是旧技术,而另一方面是新技术。 55年前什至没有使用3.3V的东西,从我所见,甚至没有使用5V TTL。

我碰巧躺在一个100Ω的电阻器上,花费几便士。是的,我可以在RS232至20mA适配器上花费超过100英镑,在USB RS232上花费更多,并为两个电源花费更多,或者我可以使用它,就是这样。真的,仅此而已。

电传打字机的输入只需要20mA即可,ESP32仅产生3.3V无关紧要。通过馈入一个100Ω电阻,我测得2.2V的压降为22mA,这很好。打印机将其输入到晶体管(Q1)中,该晶体管(Q1)驱动另一个功率晶体管,该功率晶体管将功率切换到螺线管,螺线管驱动选择器,该选择器以机械方式将数据计时输出到打印(和打孔)机构。

因此事实证明,ESP32上的3.3V输出GPIO引脚到20mA电流环路实际上只需要一个3p100Ω电阻即可,这真是不可思议。

因此,ESP32很高兴将其配置为110个波特率的8个数据位和2个停止位,并且可以正常工作。 (是的,ASR33从技术上讲是偶校验,但是实际上机器忽略了奇偶校验。如果您想在纸带打孔机上打印空间侵略者,您实际上想要干净的8位,因为我还没有看到奇偶校验空间侵略者。)

答案实际上甚至更简单。我知道,怎么可能,但是确实如此。电传打字机设计用于"切换"一个20mA的电流源,这意味着在内部它只是一个电气触点,它通过分配器打开和关闭以发送串行数据。

这就是键盘触点的样子。电线通过按键起作用的条以某种方式推出,并且它们以某种方式接触底部的条,或者不接触底部的条以发送数据位。

这就是解决这些问题的方法。键盘上的每个触点都在外部,并依次连接,分别为一个起始位,8个数据位和一个停止位计时。键盘本身会为按下的键生成偶数奇偶校验。

但是最终,只有两根电线像按钮一样工作,所以一根连接到GND,一根连接到配置了上拉的输入引脚,您已经将数据输入到ESP32!

您确实必须连接到正确的引脚,否则最终会在ESP32引脚上施加80V左右的电压并释放出魔力,而您又不想这样做了,或者一遍又一遍!

ESP32的设置也相当方便,使它的输入反相,这在进行这样的接线时很有必要。您还需要告诉它一次给您一个字符,因为UART通常会更快得多,并且您希望一次获得几个字节。设置完成后,您可以轻松进行本地回显,然后在键入时将键入的键发回打印。

我可以连接到背面的螺丝端子。然后,一切都很好,整洁了,我们有一个连接WiFi MQTT的ASR33电传打字机!

ESP32通过WiFi连接到MQTT,我可以通过该命令发送原始的8位数据或轻度熟的文本(为了获得纸带甚至发送奇偶校验;将回车符添加到换行符;换行为72个字符;并为任何智能标记驴试图发送UTF-8表情符号来打印向上箭头)。它还允许将按键发送回原始(即,具有奇偶校验,但允许纸带中的所有8位)以及行缓冲(剥离奇偶校验)。所有在github中供您娱乐(在这里)。

我还把一个Sonoff Basic(Tasmotizer)串联到主电源上,因此ESP32在要打印时可以通过MQTT自动打开和关闭电源。

然后,我有一个简单的脚本来处理号码上的传入SMS,并通过MQTT发送到ASR33。工作请客!打印机开机,打印消息,然后关机。

鉴于它只能打印大写字母,因此计划进行的又一个步骤是使它打印来自(即将成为前任)美国总统的推文。 似乎合适一些。 (更新:我做到了!在这里)