硬件设计指南#

硬件设计说明#

hardware.png

准备#

先了解一下两个网站

轴体结构#

gateron.jpg gateron2.jpg

根据轴体制作 PCB 封装#

  • 为了便于设计将WS2812灯珠的封装、开关二极管、电容的封装集成到轴体的封装中去。

  • 轴体的原理图库中隐藏了开关二极管和电容

  • 此处省略封装制作过程...

  • ...

pcb_lib1.jpg pcb_lib2.jpg

键盘轴体板设计#

原理图设计#

为了尽可能减少修改、避免重复性工作,硬件采用模块化设计,主要分为轴体板设计和功能控制板设计;轴体板预留 FPC40 接口,并尽可能兼容普通键盘配列。

80配列 + 2编码器2按键 + LCD显示 机械键盘轴体板方案,通过 FPC40 接口引出所有通信与控制引脚,可复用于其它机械键盘主控而无需改轴体板。

sch1.jpg

按键扫描矩阵为 6×14=84,为便于 PCB 布局与软件设计,实际使用按键为 80。

sch1.jpg

为满足扩展功能,在此添加了SPI接口的转接用于连接1.14寸LCD屏,同时加入两个编码器接口,一个 EC11 和一个 EVQW2001,分别为一个大的位于右侧的 主旋钮 ,和一个小的左手 侧旋钮

这两种编码器均兼具编码器与按键功能,故该键盘共 82 键与 2 个编码器。

PCB Layout设计#

确定键盘配列,生成 DXF 轴体置位图纸(也可根据键盘尺寸自行绘制)#

进入 keyboard-layout-editor 配置需要的键盘配列。

keyboard_hw11.jpg keyboard_hw2.jpg keyboard_hw3.jpg

进入另一个网站 builder 生成需要的 DXF定位图纸

keyboard_hw4.jpg keyboard_hw5.jpg keyboard_hw6.jpg

至此你完成了最简单的一步

前面我们生成了需要的定位图纸,在此将其导入 AD 进行 PCB 元器件辅助定位:

keyboard_hw7.jpg keyboard_hw8.jpg keyboard_hw9.jpg

从原理图导入到 PCB,将轴体逐一移动到对应空格上,完成 PCB 布局与布线。

由于PCB Layout设计涉及的内容较多,在此不做介绍,可自行学习 AD 进行PCB设计的相关知识。

完成 PCB 布局和布线后展示如下。

keyboard_hw10.jpg keyboard_hw11.jpg

关于3D封装,部分来源于网上,部分3D文件需自行绘制,如键帽的3D文件即为自行绘制。

至此完成轴体转接板设计。

核心控制板设计#

原理图设计#

在设计之前你需要大体确定软件需求、功能需求、结构需求等,具体功能需求可以看最前面的功能框图。

电源设计#

虽然我可以通过一个简单的直接使能方式的电源设计我的电路,但是对于产品而言,这是不合理的,因此,我希望我的设计尽可能的接近于真实的产品,它应该更具有稳定性,对于机械键盘的设计,我可以毫不夸张的说,如果我是做一个DEMO方案的设计,从硬件到软件的设计,我基本可以在两周之内解决,其中包含PCB加工、焊接等所有的非设计阶段的时间,同时我甚至于可以拍摄出一些比较好的视频然后发布,而省略其中的BUG,我感觉这应该是绝大部分开源项目的老套路了吧!实际拿来基本用不了,或者说只能勉强用用。

keyboard_hw15.jpg keyboard_hw16.jpg
  • 这部分设计看起来其实并不复杂,但是非常重要,其实所有的东西都是 会则简单,不会则难

  • 使用 RT9013-33GB 为MCU即 STM32 供电和 ESP32S3,为长供电,ESP32S3 的 EN 引脚接入 STM32 进行低功耗使能控制。

  • EN1 控制一个 RT9013-33GB 为 LCD指纹模块 供电

  • EN2 控制一个 LP3875EMP-3.3_NOPB 为 键盘灯 供电,一方面是需要电流较大,另一方面是避免复位或者上电时部分RGB灯会闪烁一下,究其原因是,STM32复位阶段输出电平会有一部分不可控的瞬间,这对于产品来说是必须要规避的。

  • PD电源设计,在此感谢一位群友提供的PD电源方案 SW6208,在有SW6208的情况下,所有电源都改为从电池取电,而不再是从5V输入接口取电。

以 STM32F405RGT6 为主控并负责电源控制,首先完成 STM32 最小系统。

keyboard_hw12.jpg

将最小系统引脚按功能分配:普通 GPIO 用于按键扫描,特殊 GPIO 用于外设(分配过程略)。

keyboard_hw13.jpg keyboard_hw14.jpg

电磁兼容:注意 USB 差分走线,PWM 引脚加 ESD 二极管与 RC 以减小干扰。

PD电源设计#

其实 融通SW6208 支持非常多的充电协议(SW6208 是一款高集成度的多协议双向快充移动电源专用多合一芯片,支持 A+A+B+C+L 口任意口快充。其集成了5A高效率开关充电,22.5W高效同步升压输出,PPS/PD/QC/AFC/FCP/SCP/PE/SFCP/低压直充等多种快充协议,电量计量,数码管/LED 灯显示以及相应的控制管理逻辑。外围只需少量的器件,即可组成完整的高性能双向快充移动电源解决方案。)

但是我在此只是用其PD充放电功能,究其原因是,我不想为了扩展其他的充放电功能,而在我的键盘上需要接出更多的USB接口,而是使用PD充电接口和USB共用一个TYPE-C接口,这样一来,键盘充电和键盘有线模式就只需要接一根USB线就好了,而选择使用 SW6208 的最主要的原因是,这是国产电源芯片中,为数不多的 不需要定制 就可以使用 IIC 进行通信控制的电源管理芯片,区别于硬件PD,具有通信功能能读取更准确的更多的信息,包括但不限于电池电量,温度等信息。

keyboard_hw17.jpg

锂电池保护使用了 DW01+G,PD电源方案在此要感谢群友提供的SW6208方案,不然我还真没找到合适的电源管理芯片,来满足我的需求(PD充放电,不需要定制,也能进行通信)。

ESP32S3 使用 ESP32-S3-WROOM-1,仅需供电;此处提供 ISP 下载电路。

keyboard_hw18.jpg

PCB Layout设计#

完成PCB布局和布线,最后展示如下。

keyboard_hw19.jpg keyboard_hw20.jpg

其中FPC接口必须位于右边,与轴体板FPC在垂直位置上对齐;TYPE-C需藏于亚克力中故需突出。

单看此版PCB布局,ESP32S3放置位置按规范应在左上角,但考虑上方为轴体板、右侧走线多,故置于中间,其它设计请勿效仿。