还记得那个信用卡大小的纯 PCB 键盘吗,这回有固件了~

之前分享了一个纯 PCB 实现的键盘 《一个开源纯 PCB 键盘项目,只有信用卡大小》,不过原作者分享的 PCB 中存在不少问题,包括 MCU GND Pad 未连接、天线设计可能不合理等,以及作者一直没有完成可工作的固件,因此一直也没能让它真正跑起来。

不过最近在 GitHub 上找到另外一个开源实现,设计还是参考了原作者,但是新方案更换了 MCU 为 CH585,并且是实际打板验证过了的纯 PCB 键盘,也已经有一个可运行的固件可供使用。

项目地址: https://github.com/openwch/ch585

CH585 介绍

官方产品介绍: https://www.wch.cn/products/CH585.html

CH585 是集成 BLE 无线通讯和高速 USB 及 NFC 的 RISC-V MCU 微控制器。片上集成了 2Mbps 低功耗蓝牙 BLE 通讯模块、USB 全速控制器及收发器、USB 高速控制器及收发器(480Mbps)、NFC 近场通信无线接口、段式 LCD 驱动模块、LED 点阵屏接口、2 个 SPI、4 个串口、14 路 ADC、触摸按键检测模块等丰富的外设资源。

openwch-pcb-keyboard-7

相比 CH582,CH585 的参数要高上很多了,主频来到了 78MHz,SRAM 有 128K,能玩的就相当多了。

openwch-pcb-keyboard-1

原理图和 PCB 设计

从原理图看,使用 CH585M 代替 CH582M 相当于是 Pin2Pin 替换了,引脚数量一样,引脚位置也基本一样。

跟原作者的原理图相比,只需要更换一些外围器件的参数。

openwch-pcb-keyboard-2

PCB 键盘原理

这个开源项目还完整了介绍了 PCB 触摸键盘的原理,简单来说就是通过手指接触 PCB,会改变焊盘与 GND 间的电容值,通过 ADC 来检测手指按下与未按下时的电压差,就可以判断是否按下键盘。

openwch-pcb-keyboard-3

焊盘布局与原作也没有什么区别,还是行列交叉,本身检测方式与普通键盘也一样,采用行列扫描的方式。

openwch-pcb-keyboard-4

这个 PCB 键盘总共 12 行 4 列,在工程中是定义成了 6 列 8 行,列是左右分开复用了,不知道是不是出于触摸检测灵敏度考虑。

顺便发现在这个 PCB 键盘的使用场景下,其实已经把 CH585M 的 14 路 ADC 都用掉了,如果再要增加触摸按键数量,可能需要另外想办法了?

PCB 布线

新项目的 PCB 布线也没有特别大变化,蓝牙天线变了,触摸按键的走线都走背面了,其他基本没动。

openwch-pcb-keyboard-5

键盘固件

ch585/Application/CapacitiveTouchKeyboard/software 目录中可以找到已经开发完成的固件,使用 MounRiver Stduio 就可以编译。

APP/hidkdb.c 中,可以看到通过 USB HID Keyboard scan code 定义了键盘矩阵,理论上也可以改成一个适配 macOS 的键盘 😃。

openwch-pcb-keyboard-6

顺便提一嘴,沁恒竟然基于 Visual Studio 重新开发了他们的 IDE,新的 MounRiver Studio v2.1.0 不再是基于 Eclipse 了,而且还增加了 macOS 的支持,真是 Mac 用户搞嵌入式开发的福音。

拿这个 PCB 键盘的项目试了下,编译相当顺滑,一次成功,等后面再仔细体验体验。

参考资料

发表评论?

0 条评论。

发表评论


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>