将电键变为鼠标和键盘 —— 实现篇

还记得上一篇文章介绍的使用 Teensy 3.2 将摩尔斯电键变为键盘的方法么?经过研究,笔者决定使用 Arduino Leonardo 实现之。相比 Teensy 3.2,Arduino Leonardo 成本更低(因为在国内更流行),并且实现起来也较为简单。电键则采用全新产品,无需手动走线、打磨底座等,避免了使用二战时期古董带来的种种问题。

Arduino Leonardo 是基于 ATmega32U4 微控制器的开发板。它有 20 个输入 / 输出引脚(在写入程序时可以定义各个引脚的作用,其中最多有 7 个可用于 PWM 输出、12 个可用于模拟输入),一个 16 MHz 的晶体振荡器,一个 Micro USB 接口,一个 DC 接口,一个 ICSP 接口,一个复位按钮。它包含了支持微控制器所需的一切,你可以简单地通过把它连接到计算机的 USB 接口来驱动它。
Leonardo 不同于之前所有的 Arduino 开发板,它直接使用了 ATmega32U4 的 USB 通信功能,取消了 USB 转 UART 芯片。这使得 Leonardo 不仅可以作为一个虚拟的(CDC)串行 / COM 端口,还可以作为鼠标或者键盘连接到计算机 —— 这也正是笔者选择它的原因。更多内容可以参考文档,在 DOCUMENTATION 选单中还包含完整电路图。

硬件准备工作

需要准备

  • Arduino Leonardo 开发板 1 一块
  • 摩尔斯电键一个(例如 K4 型重型电键)
  • 面包板、导线(杜邦头连接线)及 USB 线

取决于摩尔斯电键的输出方式,可能还需要一个 3.5mm/6.5mm 音频转接口

软件准备工作

理论上 Arduino Leonardo 可以无需驱动,即插即用;如果出现系统无法识别设备(串口)的情况,可以试试重启 Arduino Leonardo、换一根 USB 线、下载安装相关驱动。
在 Windows 下很少会出现上述这种情况 —— 至少 Windows 10 的驱动很全,即使是换了廉价芯片的国产寨板,也一样能识别出来;Mac 下常见的可能是 FTDI 驱动冲突,或者是由 macOS 系统完整性保护造成的问题。

操作步骤

  • 打开 Arduino IDE,安装 Bounce2 库(可以下载后导入,或在「管理库……」选单中搜索 Bounce2 来安装)。

  • 将 Arduino Leonardo 开发板通过 USB 线连接到电脑上,在 Arduino IDE 的「工具」菜单下设置正确的开发板和端口,如图所示。


  • 如果是初次使用,在「文件」菜单下选择示例,找到 Blink,打开后,依次点击编译、上传。如果出现未响应、无法找到端口等现象,请点击开发板上的按钮重启。如果上传成功,并且二极管 L 以 0.5Hz 的频率闪烁,则说明配置正确。

  • 解压并打开下载的源代码文件。其中 Keyboard 文件能够将摩尔斯电键变为虚拟键盘,通过敲击字符的摩尔斯电码输入;Mouse 文件能够将摩尔斯电键变为虚拟鼠标,按下即触发一次鼠标点击。选择你需要的文件,使用 Arduino IDE 打开,然后依次点击编译、上传。
  • 请使用物理方法将摩尔斯电键的两端分别连到 Arduino Leonardo 的 GND 和 12 端口,如图所示(当然,你可以更改源代码来使用别的端口)。如果是虚拟键盘模式,连接 GND 和 8 端口可以输入大写字母,不连接则输入小写字母。

  • 如果一切就绪,那么,当你按下电键或输入摩尔斯电码,电脑就会作出正确的反应。

以上就是用摩尔斯电键作鼠标和键盘的教程。当然,Arduino Leonardo 开发板的作用远远不止这些,如果发现更为有趣的应用,笔者会继续分享出来。