版本协议

OpenAtom OHL 1.0

标签
标准版
#第11届立创电赛#可爱二进制键盘

创建时间:1个月前

27 0

描述

<div> <div> <div># 可爱二进制键盘(复刻+拓展)— 电赛项目页填写内容</div> <br> <div>## 1、项目功能介绍</div> <br> <div>本项目为基于立创开源硬件平台「可爱二进制键盘」(作者 kjpig,主控沁恒 CH552G)的复刻与拓展项目。CH552G 是一款 8 位增强型 51 内核 MCU,内置 USB 2.0 全速设备控制器,仅需少量外围元件即可构成完整的 USB HID 键盘,官方标称复刻成本约 10 元。</div> <br> <div>**复现的基础功能(100% 还原官方基础款):**</div> <br> <div>1. **四键键盘**:1U+1U+2U+2U 布局,全部使用热插拔轴座(支持凯华/佳达隆等三脚机械轴),即插即换;</div> <div>2. **USB 免驱直连**:Type-C 接口,内置 USB 设备控制器,Windows/macOS/Linux 即插即用,无需驱动;</div> <div>3. **RGB 灯效**:4 颗 RGB LED,支持多套固件灯效与网页端 RGB 设置;</div> <div>4. **网页版改键**:基于 Web HID 协议的改键工具(Vue3 开发),支持键位映射、多媒体键、鼠标模拟、多层键位(层数=轴数)、MeowMarco 宏语言,无需重刷固件即可随时改键。</div> <br> <div>**电路搭建方面**:在立创 EDA 中打开官方工程并完成复刻打样;电路极简——CH552G + 2 颗 0.1μF 退耦电容 + 1 颗 20kΩ 上拉电阻 + 贴片 Type-C + 4 个热插拔轴座,全部为 SMD 元件,使用加热台手工焊接完成,并对焊接难点(贴片 USB-C 引脚、轴座方向)做了专项处理。</div> <br> <div>**程序移植方面**:固件基于开源仓库 MeowKJ/BinaryKeyboard(GPL-3.0)移植,使用 SDCC 4.5.0 + CMake + Ninja 编译链重新构建,通过 WCHISPStudio 与 BOOT 按键进入 Bootloader 方式烧录,验证了完整的固件开发-编译-烧录-调试闭环。</div> <br> <div>**模块适配方面**:适配了基础款(4 键)与五键款(5×1U)两种固件,验证改键工具自动识别三款键盘的 HID 通信协议(Report ID 1 键盘 / 2 控制器 / 3 鼠标 / 4-5 双向配置通道)。</div> <br> <div>**拓展升级(本项目的核心贡献):**</div> <br> <div>1. **0.96 寸 OLED 状态屏(I2C 扩展,原创)**:实时显示当前层数、键位映射状态、RGB 灯效模式,解决"多层键位下不知道当前处于哪一层"的使用痛点;由于 CH552G 为 SOP-16 封装、引脚资源紧张,OLED 采用 IO 口软件模拟 I2C 驱动,并重新规划了按键、灯效与显示屏的引脚分配;</div> <div>2. **无源蜂鸣器按键反馈(原创)**:按键按下、层切换时输出提示音,解决无音效键盘盲操作无法确认的问题;采用三极管驱动放大,低电平触发;</div> <div>3. **自定义 RGB 灯效动画(二次开发)**:在开源固件基础上新增呼吸、流光、按层变色等动画,网页端可配置灯效参数;</div> <div>4. **个性键帽 + PCB 彩色丝印(创意拓展)**:定制"0/1"二进制主题键帽与彩色丝印,呼应项目"代码大神只用 0 和 1 征服世界"的定位。</div> <br> <div>**解决的问题总结**:① 以约 60~100 元总成本获得具备专业客制化键盘体验(多层/宏/网页改键)的小键盘;② 通过 OLED 屏解决多层键位状态不可见问题;③ 通过蜂鸣器解决无音反馈问题;④ 验证了 CH552G 在"USB 键盘 + 外设扩展"场景下的完整开发流程。</div> <br> <div>## 2、项目属性</div> <br> <div>本项目基于立创开源硬件平台「可爱二进制键盘」(oshwhub.com/kjpig/Binary-Keyboard,作者 kjpig)进行复刻开发,并在此基础上进行了功能升级、体验优化与创意拓展:</div> <br> <div>| 项目 | 内容 |</div> <div>|---|---|</div> <div>| 复刻对象 | 可爱二进制键盘(CH552G 四键键盘,官方复刻成本 ¥10) |</div> <div>| 基础功能 | 100% 复现官方基础款(4 键、RGB、网页改键、多层键位) |</div> <div>| 升级拓展 | ① 0.96 寸 OLED 状态屏(I2C,原创);② 无源蜂鸣器按键反馈(原创);③ 自定义 RGB 灯效动画(二次开发);④ 二进制主题键帽与彩色丝印(创意) |</div> <div>| 是否首次公开 | 是,本项目(含全部拓展内容)为本次比赛首次公开 |</div> <div>| 是否原创 | 拓展部分(OLED 显示功能、蜂鸣器反馈功能、灯效动画、外观创意)为本人原创设计;基础复刻部分遵循原作者开源协议(硬件 CC BY-SA 4.0、固件 GPL-3.0),并已在项目详情中署名原作者 |</div> <div>| 是否在其他比赛获奖 | 否 |</div> <div>| 是否在学校参加过答辩 | 否,本项目为个人业余项目,未参加学校答辩 |</div> <div>| 参赛形式 | 个人(本人独立完成硬件焊接、固件移植、软件拓展与全部文档撰写) |</div> <br> <div>## 3、开源协议</div> <br> <div>1. **协议选择**:本项目选择与复刻对象一致的开源协议——硬件设计部分采用 CC BY-SA 4.0,固件与软件部分采用 GPL-3.0,既履行继承原开源协议的义务,也保证本项目全部产出可被社区自由使用与改进。</div> <div>2. **来源注明**:本项目的复刻对象为立创开源硬件平台「可爱二进制键盘」(https://oshwhub.com/kjpig/Binary-Keyboard,作者 kjpig),固件/软件来源于 GitHub 仓库 MeowKJ/BinaryKeyboard(https://github.com/MeowKJ/BinaryKeyboard),均已在项目详情与源码中署名原作者并附原始链接。</div> <div>3. **核心功能声明**:按大赛规则"直接引用开源项目的原电路或原代码实现的功能不可作为自己项目的核心功能",本项目的核心功能为拓展升级部分——OLED 状态屏显示系统(含软件模拟 I2C 驱动与层状态可视化)、蜂鸣器按键反馈系统(含驱动电路与反馈逻辑)、自定义 RGB 灯效动画引擎,以上均为本项目原创设计或深度二次开发,并已开源(GPL-3.0);基础键盘功能作为对赛题对象的完整复现,明确标注其开源来源。</div> <div>4. **开源比例**:项目核心功能(固件源码、OLED/蜂鸣器/灯效驱动、改键工具适配代码、3D 外壳模型、PCB 设计文件)100% 开源,已上传至 GitHub 与项目详情附件。</div> <div>5. **合规承诺**:全部引用均遵循原作者开源协议规定,无任何未授权引用或闭源化处理。</div> <br> <div>## 4、硬件部分</div> <br> <div>设计文件已上传至嘉立创 EDA 工程:https://pro.lceda.cn/editor#id=4fbbe5f13735462aa2b99dbaea8d775a</div> <br> <div>### 4.1 系统框图</div> <br> <div>```</div> <div>USB Type-C (5V) ──► CH552G (8位51内核, 内置USB 2.0全速设备控制器)</div> <div>                       │</div> <div>        ┌──────────────┼──────────────────┐</div> <div>        │              │                  │</div> <div>  4×热插拔轴座     4×RGB LED        0.96" OLED (SSD1306, 软件I2C)</div> <div>   (按键扫描IO)    (灯效控制IO)       (SCL/SDA 模拟I2C)</div> <div>        │              │                  │</div> <div>  无源蜂鸣器 ◄── 三极管驱动 (S8050) ── 反馈音IO</div> <div>```</div> <br> <div>### 4.2 实现原理与机制</div> <br> <div>- **供电**:Type-C 输入 5V,经 CH552G 内部 LDO 稳压输出 V33 供内核与外设;VCC 与 V33 各外接 0.1μF 陶瓷电容退耦,保证 USB 枚举与内核运行稳定;</div> <div>- **USB 通信**:CH552G 内置 USB 设备控制器与 1.5kΩ 上拉控制,支持 USB 2.0 全速 HID 设备枚举,免驱即插即用;D+/D- 走线按差分对处理,长度匹配;</div> <div>- **按键扫描**:热插拔轴座一端接 GND、一端接 MCU IO(配合上拉),软件循环扫描电平变化并做消抖(约 10ms 软件消抖),触发后查表生成 HID 键盘报文上报;支持组合键(如 FUNC + 按键切换层);</div> <div>- **RGB 灯效**:RGB LED 由 MCU IO 驱动,固件内实现呼吸/流光/按层变色等动画,参数通过 HID 配置通道从网页端下发;</div> <div>- **OLED 显示(拓展,原创)**:SSD1306 驱动 0.96 寸 128×64 OLED,因 CH552G 引脚资源紧张,采用两个 IO 软件模拟 I2C(约 100kHz 时钟),在 HID 主循环的空闲片段中分时刷新,显示当前层、键位映射与灯效状态,刷新不影响按键响应;</div> <div>- **蜂鸣器反馈(拓展,原创)**:无源蜂鸣器经 S8050 三极管放大驱动(低电平触发),在按键按下/层切换事件中由定时器产生不同频率/时长的提示音序列(如单击 = 1kHz 30ms,切层 = 双短音),音量适中不刺耳。</div> <br> <div>### 4.3 注意事项</div> <br> <div>1. **USB-C 封装**:务必购买贴片(SMD)封装 Type-C 座,直插款引脚定义对不上 PCB 焊盘(原作者与多名复刻者均踩坑);</div> <div>2. **热插拔轴座方向**:轴座有方向性,焊接前确认圆孔通畅;焊错不建议拆,可用烙铁烫掉阻挡孔的多余焊料;</div> <div>3. **OLED 引脚分配**:拓展 OLED/蜂鸣器占用的 IO 需避开 BOOT、USB 相关引脚,重新分配后需同步修改固件引脚宏;</div> <div>4. **供电余量**:OLED 峰值电流约 20mA、蜂鸣器驱动峰值约 30mA,CH552G 从 USB 取电 5V/500mA 余量充足,但 OLED 背光建议软件控制亮度避免长时间高亮;</div> <div>5. **焊接顺序**:先焊 CH552G(加热台回流),再焊 USB-C、阻容,最后焊轴座与排线,便于检查与返修。</div> <br> <div>### 4.4 调试方法</div> <br> <div>- **供电检查**:焊接后先不插轴体,用万用表测 VCC/V33 电压(V33 应为 3.3V 左右),短路检查;</div> <div>- **BOOT 模式**:插入 USB-C 未被识别时,拔掉线缆 → 长按 BOOT 按钮(靠边缘的小按钮)→ 再插入 USB-C,进入 Bootloader,用 WCHISPStudio 烧录固件;</div> <div>- **分级验证**:先烧官方原版固件验证基础键盘功能,再烧拓展固件逐项验证 OLED/蜂鸣器/灯效,缩小问题排查范围;</div> <div>- **HID 调试**:使用网页改键工具(key.mpas.top)验证按键映射、层切换与配置通道收发;异常时检查 USB 描述符(设备管理器/系统信息查看 VID/PID 与 HID 报告描述符)。</div> <br> <div>### 4.5 测试方法</div> <br> <div>| 测试项 | 方法 | 通过标准 |</div> <div>|---|---|---|</div> <div>| 按键功能 | 逐键按压,网页改键工具查看键值 | 4 键全部上报正确,无连击/漏报 |</div> <div>| 层切换 | 按住 FUNC+键切换层,观察 OLED 层号 | 层号正确变化,改键随层生效 |</div> <div>| RGB 灯效 | 网页端切换呼吸/流光/按层变色 | 灯效切换正常,无闪烁卡顿 |</div> <div>| 蜂鸣器 | 按键/切层时听反馈音 | 提示音清晰、与动作同步 |</div> <div>| 连续按压 | 约 1 次/秒连续按压 10 分钟 | 无死键、无 USB 掉线 |</div> <div>| 热插拔 | 带电插拔轴体 | 即插即用,键位正常 |</div> <div>| 兼容性 | 在 Win/macOS/Linux 上测试 | 全部免驱识别 |</div> <br> <div>## 5、软件部分</div> <br> <div>源码已上传至项目附件(GitHub: https://github.com/MeowKJ/BinaryKeyboard,本项目 fork 自该仓库并加入拓展代码)。</div> <br> <div>### 5.1 软件架构</div> <br> <div>```</div> <div>┌─────────────────────────────────────────────┐</div> <div>│ 网页改键工具 (Vue3 + Web HID, 浏览器端)        │</div> <div>│  键位映射 / RGB设置 / 层管理 / 宏编辑           │</div> <div>└────────────────────┬────────────────────────┘</div> <div>                     │ HID Feature/Output Report (31字节双向通道)</div> <div>┌────────────────────▼────────────────────────┐</div> <div>│ 固件 (SDCC C51, 运行于 CH552G @24MHz)         │</div> <div>│  ├─ 主循环: 按键扫描→消抖→查表→HID上报          │</div> <div>│  ├─ HID 服务: 键盘/鼠标/多媒体/控制器多Report   │</div> <div>│  ├─ 配置服务: 解析网页端下发的改键/RGB/层数据    │</div> <div>│  ├─ OLED 驱动: 软件模拟 I2C + SSD1306 驱动    │</div> <div>│  ├─ 蜂鸣器驱动: 定时器生成提示音序列            │</div> <div>│  └─ RGB 灯效引擎: 呼吸/流光/按层变色动画        │</div> <div>└─────────────────────────────────────────────┘</div> <div>```</div> <br> <div>### 5.2 功能模块说明</div> <br> <div>- **按键扫描模块**:10ms 周期扫描 4 路按键 IO,软件消抖,支持组合键识别(FUNC 层切换);</div> <div>- **HID 服务模块**:实现标准键盘报告(8 字节)与扩展 Report(Report ID 2 控制器 16 位×4、Report ID 3 鼠标 5 字节、Report ID 4/5 主机与键盘双向配置 31 字节);</div> <div>- **配置服务模块**:解析网页端下发的键位映射表、RGB 参数、层数据,写入片内 Flash 持久化;</div> <div>- **OLED 驱动模块(拓展·原创)**:软件模拟 I2C(SCL/SDA 两 IO,约 100kHz),SSD1306 初始化、显存管理、中文字库点阵与层状态图标绘制,主循环空闲分时刷新;</div> <div>- **蜂鸣器驱动模块(拓展·原创)**:基于定时器中断产生可编程提示音序列(频率/时长/间隔参数表),事件触发式播放,不阻塞主循环;</div> <div>- **RGB 灯效引擎(二次开发)**:在开源固件灯效框架上新增呼吸、流光、按层变色 3 种动画,支持网页端调节速度与亮度。</div> <br> <div>### 5.3 源码结构</div> <br> <div>```</div> <div>BinaryKeyboard/</div> <div>├── firmware/            # 键盘固件(SDCC C51)</div> <div>│   ├── src/             # 主程序、HID、按键、灯效、OLED、蜂鸣器驱动</div> <div>│   ├── include/         # 头文件、引脚宏、配置表</div> <div>│   └── CMakeLists.txt   # CMake 构建脚本</div> <div>├── tools/studio/        # 网页改键工具(Vue3 + Vite + Web HID)</div> <div>├── tools/scripts/       # 终端控制台脚本(Python)</div> <div>├── Hardware/            # 硬件设计文件(立创EDA工程 / 原理图 / PCB)</div> <div>└── Models/              # 3D 外壳模型(尾盖、定位板,FDM 可打印)</div> <div>```</div> <br> <div>### 5.4 编译环境搭建与编译方法</div> <br> <div>- **固件**:Windows 下安装 SDCC 4.5.0、CMake、Ninja;在仓库根目录执行:</div> <br> <div>```bash</div> <div>cmake -G Ninja -B build -S firmware</div> <div>cmake --build build</div> <div>```</div> <br> <div>产出 `ch552_basic_0x08.hex`(基础款)/ `ch552_fivekeys_0x08.hex`(五键款)/ `ch552_knob_0x08.hex`(旋钮款);</div> <br> <div>- **改键工具**:Node 20+ 与 pnpm:</div> <br> <div>```bash</div> <div>pnpm install && pnpm build</div> <div>```</div> <br> <div>产物可部署至任意静态托管(项目官方版本部署于 Vercel,亦可直接访问 key.mpas.top 使用)。</div> <br> <div>### 5.5 程序烧录方法</div> <br> <div>1. 下载安装 WCHISPStudio(沁恒官方烧录工具);</div> <div>2. 不插线 → 长按 PCB 上 BOOT 按钮(靠边缘的小按钮)→ 插入 USB-C,进入 Bootloader 模式;</div> <div>3. 在 WCHISPStudio 中选择对应 `.hex` 固件,点击下载;</div> <div>4. 拔插 USB-C 复位,键盘即被系统识别为 HID 键盘。</div> <br> <div>## 6、BOM清单</div> <br> <div>### 6.1 核心元件(复刻基础款,立创商城采购)</div> <br> <div>| # | 型号/规格 | 品牌 | 名称 | 封装 | 数量 | 采购渠道 | 用途 |</div> <div>|---|---|---|---|---|---|---|---|</div> <div>| 1 | CH552G | 沁恒 WCH | 8位USB MCU | SOP-16 | 1 | 立创商城 C111292 | 键盘主控(内置USB,免驱HID) |</div> <div>| 2 | 100nF 陶瓷电容 | 国巨 YAGEO | 退耦电容 | C0603 | 2 | 立创商城 C14663 | VCC/V33 电源退耦 |</div> <div>| 3 | 20kΩ 电阻 | 厚声 UNI-ROYAL | 贴片电阻 | R0603 | 1 | 立创商城 C4184 | 上拉/复位网络 |</div> <div>| 4 | TYPE-C 16P 贴片座 | 首韩 SHOU HAN | USB-C 连接器 | SMD-16P | 1 | 立创商城 C518747 | USB 供电与数据(必须贴片) |</div> <div>| 5 | TD-1100SA-250 | 德艺隆 DEALON | 热插拔轴座 | SMD | 4 | 立创商城 C2905201 | 机械轴插拔座(支持三脚轴) |</div> <div>| 6 | RGB LED | — | 可寻址/共阴 RGB | SMD | 4 | 立创商城(以EDA工程BOM为准) | 键盘灯效 |</div> <br> <div>### 6.2 拓展功能元件(本项目新增,立创商城采购)</div> <br> <div>| # | 型号/规格 | 品牌 | 名称 | 封装 | 数量 | 采购渠道 | 用途 |</div> <div>|---|---|---|---|---|---|---|---|</div> <div>| 1 | 0.96" OLED 模块(SSD1306) | — | OLED 显示屏模块 | 128×64, I2C | 1 | 立创商城/淘宝 | 层与键位状态显示(原创拓展) |</div> <div>| 2 | 无源蜂鸣器 5V | — | 蜂鸣器 | 贴片/直插 | 1 | 立创商城 | 按键/切层提示音(原创拓展) |</div> <div>| 3 | S8050 | — | NPN 三极管 | SOT-23 | 1 | 立创商城 | 蜂鸣器驱动放大 |</div> <div>| 4 | 1kΩ/10kΩ 电阻 | — | 贴片电阻 | R0603 | 2 | 立创商城 | 蜂鸣器基极限流、OLED上拉 |</div> <br> <div>### 6.3 结构件与配套(非电子件)</div> <br> <div>| # | 名称 | 数量 | 采购渠道 | 用途 |</div> <div>|---|---|---|---|---|</div> <div>| 1 | 机械轴体(三脚,凯华/佳达隆等) | 4 | 淘宝/立创商城 | 按键手感 |</div> <div>| 2 | 键帽 1U×2 + 2U×2 | 4 | 淘宝 | 键帽(可定制二进制主题) |</div> <div>| 3 | 3D 打印外壳(尾盖+定位板) | 1 套 | 嘉立创3D打印/自打 | 结构外壳(FDM 即可) |</div> <div>| 4 | 自攻螺钉 2.6×10mm | 4 | 淘宝 | 外壳固定 |</div> <div>| 5 | 硅胶垫 3mm | 1 片 | 淘宝 | 减震(可选) |</div> <div>| 6 | PCB 打样 | 5~10 片 | 嘉立创打样 | 电路板(含大赛 logo 丝印) |</div> <br> <div>## 7、大赛LOGO验证</div> <br> <div>PCB 以丝印形式印制大赛 logo,拍照上传:</div> <br> <div>1. 下载项目页「大赛标识.zip」获取官方 logo;</div> <div>2. 立创 EDA 中「工具 → 图片转PCB/丝印」将 logo 转为丝印,放置于 PCB 空白处(避开元件与走线);</div> <div>3. 打样后拍摄 logo 丝印特写与整板照片,上传至本栏。</div> <br> <div>## 8、演示视频</div> <br> <div>视频标题:立创电赛:可爱二进制键盘复刻与拓展-成品功能演示</div> <br> <div>拍摄要求:横屏 16:9;分辨率 ≥1280×720;MP4/MOV;单个文件 ≤50MB;建议时长 3~8 分钟。</div> <br> <div>分模块拍摄脚本:</div> <br> <div>| 模块 | 内容 | 时长 |</div> <div>|---|---|---|</div> <div>| 1. 开场 | 成品亮相 + 项目一句话介绍(0 和 1 的可爱小键盘) | ~20s |</div> <div>| 2. 焊接过程 | 加热台焊 CH552G/阻容/USB-C/轴座(快进+关键点特写) | ~60s |</div> <div>| 3. 烧录调试 | BOOT 键进 Bootloader → WCHISPStudio 烧录 → 系统识别 HID 键盘 | ~40s |</div> <div>| 4. 基础功能演示 | 打字输入、RGB 灯效切换、网页改键工具实时改键 | ~60s |</div> <div>| 5. 拓展功能演示 | OLED 显示层/映射、蜂鸣器反馈音、灯效动画 | ~60s |</div> <div>| 6. 组装与成品 | 3D 打印外壳叠叠乐组装、轴体键帽安装、桌面实拍 | ~40s |</div> <br> <div>发布与冲榜:上传 B 站/小红书/视频号/抖音,标题与简介带话题 #立创电赛,并在项目页「视频冲榜」表单中填写视频数据。</div> </div> </div>

文档

BOM

暂无

附件

暂无

评论(0)

  • 表情
    emoji
    小嘉工作篇
    小嘉日常篇
  • 图片
成功
工程所有者当前已关闭评论
goToTop
svg-battery svg-battery-wifi svg-books svg-more svg-paste svg-pencil svg-plant svg-ruler svg-share svg-user svg-logo-cn svg-double-arrow