站内搜索
更多
无线蓝牙翻谱器【物理开关、演奏模式】
专业版

无线蓝牙翻谱器【物理开关、演奏模式】

简介

本项目采用物理编码开关,电源开关也采用物理开关,避免误触按键带来的意外情况。在外壳上,除了在底部增加防滑垫外,预留配重块,降低翻谱器异常移动、打滑的概率,提高使用稳定性。

简介:本项目采用物理编码开关,电源开关也采用物理开关,避免误触按键带来的意外情况。在外壳上,除了在底部增加防滑垫外,预留配重块,降低翻谱器异常移动、打滑的概率,提高使用稳定性。
星火计划2026
复刻成本:230

开源协议

CC BY-NC-SA 4.0

创建时间:2026-07-09 11:52:23更新时间:2026-08-17 17:29:09

描述

项目简介:

目前主流翻谱器大多采用轻触开关,演奏时经常会不小心按到模式切换的问题。因此本项目采用物理编码开关,进行不同输入方式的切换(左右、上下、PageUP/PageDown、空格/回车)。电源开关也采用物理开关,彻底解决软开关虚待机、并消除“心理不断电”的问题。

在外壳上,除了在底部增加防滑垫外,同时还预留配重块位置,降低翻谱器异常移动、打滑的概率,提高使用稳定性。

并且主流翻谱器,普遍没有更改左脚、右脚对应的键值。因此额外开发配套windows上位机软件方便改键值。

为了满足日常使用和演奏场合,分为2种模式:

日常模式(开关为“开”):30分钟不踩脚踏进入休眠模式,节省电量。适合日常使用。

长开模式(开关为“长”):不进入休眠模式,直到电池保护为止。适合于长时间演奏场合。

 

《使用说明书》见附件

 

源代码开源(含CH592X固件及改键上位机程序)(github):

https://github.com/motozilog/OSHWTuner

 

iOS 18(Piascore)、Android 11、Win10演示视频(B站):

https://www.bilibili.com/video/BV1dDgW6QEwV

 

 

主要参考

3D模型主要参考:

原模型作者:Keeze101 ,在此基础上进行了二次创作

https://makerworld.com.cn/zh/models/1785193-fan-ye-qi-esp32-ble

 

蓝牙、低功耗、Flash读写等代码主要参考了:

WCH官方Demo

https://www.wch.cn/downloads/CH592EVT_ZIP.html

 

USB代码主要参考了:

作者:bibilala 的TP78-基于CH582M的小红点VIA三模客制化键盘 https://github.com/ChnMasterOG/tp78_v2

作者:trbbadboy  的 基于CH582F的USB/蓝牙双模小手柄 https://oshwhub.com/trbbadboy/project_luetaijq

 

测试内容:

蓝牙己测试内容:

Android  11,红米K40, MIUI 12.0.8:《有谱么》(版本号:3.48a)、《WPS Office》(版本号:14.43.0)

iOS 18.7.8,iPad Air 3(MUUK2CH/A):《Piascore》、《WPS Office》、《Acrobat》

Windows 10-21H2,无线网卡为Intel AC 9462:《MAME》(版本号:0.157)、《在线键盘测试》(https://www.zfrontier.com/lab/keyboardTester)

Windows 7 SP1,无线网卡为DW1397:《MAME》(版本号:0.157)、《在线键盘测试》(https://www.zfrontier.com/lab/keyboardTester)

Windows 11,无线网卡为RTL8852B:《MAME》(版本号:0.287)、《在线键盘测试》(https://www.zfrontier.com/lab/keyboardTester)

 

USB己测试内容:

Windows 10-21H2,芯片组为HM370:《MAME》(版本号:0.157)、《在线键盘测试》(https://www.zfrontier.com/lab/keyboardTester)

Windows 7 SP1,芯片组为HM86:《MAME》(版本号:0.157)、《在线键盘测试》(https://www.zfrontier.com/lab/keyboardTester)

Windows 11,CPU Ryzen 9‑7845HX(内嵌USB控制器):《MAME》(版本号:0.287)、《在线键盘测试》(https://www.zfrontier.com/lab/keyboardTester)

 

己知不兼容:

iOS版《懂音律》

没有条件测试:

iOS版《forScore》(需要付费:168元)

 

理论上支持,但没有条件测试:

USB&蓝牙:Windows XP、Windows 8、Ubuntu

 

Windows上位机配置工具,支持Win 10、Win 11,(使用脚本运行的方式支持Win7 SP1)

 

硬件设计:

设计原则

由于实在没有考虑到这波涨价潮,居然连阻容都猛涨,特别是电容,可以从原来0.00X一个涨成几角钱一个。那就只能放弃之前的同厂家习惯,那间便宜够用,就用那间。

考虑到复刻难度,所有必焊器件均采用0603(除了ESD是0402外)

 

MCU选型

挑选MCU是个关键,需要一款不需要签协议就能拿到资料,开源社区使用较多的。那么能选的是主要是WCH、ESP32、nRF这几家。

一开始是打算用nRF52840,毕竟是ZMK固件标准支持。但是nRF52840的封装直接将我劝退了。BGA中间加个类似于QFN的ePad…….手焊成功率极低,果断放弃。并且这个项目只需要7个I/O。没有必要为ZMK带来如此大的麻烦。

(图:nRF52840的封装)

 

而立创开源广场看见三模键盘,大多采用CH582,而CH592只见到有蓝牙键盘,但却没有见到有CH592的USB键盘。那干脆开坑搞CH592的蓝牙与USB双模,毕竟CH592的蓝牙BLE 5.4,而CH582是蓝牙BLE 5.3。(所以这就为软件挖了个坑,要做USB协议的移植......)

但是常用CH592F在商城中经常缺货,那就换成CH592X,毕竟尺寸一样、间距一样,焊接难度一样,并且还可以多4个I/O,只是贵了0.04元(5.89元与5.93元的区别,一个I/O只要1分钱,真的太良心了,要是其它芯片也是1分钱一个I/O就爽死了)。

 

 

时钟

CH592X的就按照官方的设计进行,特别要注32M主晶振,不需要加起振电容,但是没有起振电容的话,就无法用示波器去看MCU是否起振,那就干脆在晶振的底层加测试点方便测试。

 

天线:

天线上由于常用的CA-C03在商城中没有,那就找性能接近的贴片天线。也是按照Datasheet中的π型匹配用对应的器件。注意一下,每款贴片天线π型匹配器件是不同的,不要随便换。毕竟业余DIY是没有天线匹配测试工具。

那么为什么不采用成本更低,直接在PCB上印刷的天线?因为之前因为PCB板材和板厚差异,在PCB印刷天线上翻过大车,而现在贴片天线是只需要几毛钱,就没有必要省这点钱而给自己挖个大坑。

 

 

退耦电容

尽管MCU的频率不高,并且供电要求低。但习惯上还是将退耦电容放在近管脚处,越近越好。但是CH592X的管脚只有0.4mm间距,不是太好靠近。那就只能像BGA那样,放在底层。由于没有采用盘中孔工艺,并且0603“立碑”情况较少,所以也就无所谓,直接将过孔打在焊盘上。

 

CH592自身的DC-DC

这个DCDC电路,别省,默认不开启DCDC,那么CH592是工作在3.3V下,而开启DCDC后,CH592工作电压降至1.28V,功耗降低60%

由于需要使用DCDC,因此,不能用普通电感。而应用功率电感。这里使用的是成本较高的T-Core设计的功率电感,在0603封装下可以有500mA,实际上,可以使用50mA的铁氧体或者层叠电感足够了。

 

I/O分配

MCU的I/O分配,我是从CW32李工学到了将I/O列出连接来的好习惯,这样可以一目了然那只脚对应那个网络。

 

电池管理

采用比较常用的TP4057,毕竟电池只有700mAH。在充电电流上,我选得比较保守,只选择了200mA(即0.3C),充满电需要3.5个小时。

 

考虑到电池己自带过放保护,因此就不增加过放保护电路。

 

考虑到如果单独加电池电量检测芯片将会带来额外的成本,而这个项目对电池电量的检测要求不高,直接使用CH592自带的ADC即可,通过分压电阻接入ADC。考虑到电池电量可能会抖动,所以加了一个电容来消除ADC带来的抖动。实际上可以选择容值更小的电容,如:22pF。但是整个项目都没有比100nF更小容值的电容,为了不增加BOM数量,就用100nF。

 

为了低静态电流,采用100K级别的电阻,抗干扰肯定比不上9.1K+22K的组合。所以在Layout时,将这部分的电路尽可能靠近MCU,并且进行包地处理。减少潜在的干扰带来的采样不准。

 

为了开发方便,不可能等电池的电量从4.2V慢慢降到3.0V,因此设计一个外接电源测试的测试点,及0R电阻与主供电切断的电路。手上虽然有SK220可调电源,但考虑到大家开发时的方便,在WCH-LinkE转换板上做了一个成本极低的5V转1.77V~4.27V的可调电源,方便进行测试。而1.7V~4.2V这个区间内的阻值并不是常用阻值,所以采用并联和串联的方法,使常用阻值电阻得出该阻值。

 

供电:

由于CH592的功耗非常低,第1版试验时,长时间连接iPad也能在500mAH的电池下不开启DCDC的情况下使用5天。所以采用静态电流较低的LDO。由于需要支持长时间不休眠,所以选择TPS7A05。由于SOT-23经常缺货,只能选SOT-23-5。(为什么不采用常用的ME6211,因为ME6211的静态电流较大)。

 

长开模式:

为什么要设计长开模式,因为实际上,会有提前布场的工作,通常是提前半小时以上进行布场将设备全部检查无误。如果不设计长开模式的话,这个时间会进入休眠。万一再连出问题就会麻烦。

当然日常使用中,使用常用的开模式,这样在不操作30分钟后,将MCU进入休眠状态,避免不记得关电源。

为了长开模式,那就只能上双刀三掷开关。使用1个MCU I/O只在上电时获取状态。为什么要采用ADC方式,而不是数字高低电平方式?因为翻谱器设计时预留为后面使用2节7号电池或者CR2032电池供电使用,这样只要在1.0V以上也判断为长开模式。

 

 

软件设计:

 

开发环境:MounRiver Studio V2.4.0

模块

相关文件

主程序入口

hidkbd_main.c

蓝牙

hidkbd.c

hiddev.c

USB

hidkbd_usb.c

usb_hid.c

辅助

getId.c(获取CPU唯一IDFLASH读写工具类)

battservice.c(电池服务类)

 

主程序入口:初始化,给USB有5秒的时间进行握手,握手失败进入蓝牙模式。(避免在蓝牙连接时,插入USB到电脑充电时,切换带来中断)。由于电容昂贵,判断长开模式采用10次ADC采样进行,不加电容。

 

蓝牙:广播ID改为OSHWTuner_XXXX(XXXX是CPU唯一ID的后4位),避免多台翻谱器一起用时冲突。

蓝牙模式下,尝试5分钟内进行连接,连接失败进入休眠模式。

连接成功后如果在30分钟内没有踩下脚踏,则进入休眠模式(如果为长开模式下,不进入休眠)

 

USB:主要移植自bibilala 的TP78-基于CH582M的小红点VIA三模客制化键盘。并参考trbbadboy  的 基于CH582F的USB/蓝牙双模小手柄进行以TMOS任务的方式进行运行。

在此基础上增加了HID_GET_REPORT和HID_SET_REPORT,从而实现Windows上位机下发配置到翻谱器上。(当然USB的描述符也要跟着改)。并增加事件处理:如果USB断开时,直接重启翻谱器,进入蓝牙模式

 

辅助

getId.c:获取CPU唯一ID、配置读写CH592的FLASH、旋转编码器的逻辑处理。

battservice.c:这里要注意一下,蓝牙时电池的电量WCH默认是20%,研究了很一阵子才知道怎样要用服务类去上报。后面其它项目遇到20%电量问题的话,可以参考我的代码。

 

 

上位机

这是最让我震惊的地方,之前我的上位机大多数用C#去写,这次尝试用DeepSeek去写Python。原本以为会像泰山派1F街机那样,要N轮对话才搞定。

在半年后,DeepSeek进化之惊人!居然一版跑通主流程!更离谱的是,我丢给DS CH592的GET/SET REPORT代码,结果只在几个回合下就跑通(并顺便指出我的不足)!顺手再让DeepSeek做UI。

整个上位机部分只用了一个晚上就全部弄好!以往写这个工作量的上位机代码怎也要3天起步,还不一定能调通。

这次真的让我倒吸一口凉气!半年时间DeepSeek的进步之快,真的吓人!

(最初想用nRF52840主要就是不想弄上位机,想用现成ZMK的原因之一)

 

常见需要修改位置

休眠超时 hidkbd.c 第87、91行(默认5分钟+30分钟)

 

USB枚举初始化等待时间hidkbd_main.c 第97行(默认等5秒)

 

电量百分比计算,battservice.c第554~556行,默认3.2V以下视为0%,3.5V以下视为1%,4.1V以上视为100%

 

外壳设计:

主要参考:

原模型作者:Keeze101 ,在此基础上进行了二次创作

https://makerworld.com.cn/zh/models/1785193-fan-ye-qi-esp32-ble#profileId-1970210

 

底面有四个防滑胶垫,应对大部分的场合和用户

 

并预留4个配重块位置,方便某些用户的需要

 

左右加入导线安装引导槽(实际上应设计成孔会更好一点)

使用一个603035电池,700mAh电池,满足连续运行5天的需求。当然也可以换更大的电池,但是注意,不要太厚,顶到PCB。并且要预留在多年后电池发涨鼓包后的上升高度。

 

 

脚踏加入防打滑设计

 

顶盖板要预留好旋转编码开关突出来的位置

 

LED采用导光柱将PCB的LED灯光引导到面板上

 

复刻指南:

务必准备热风枪至少也得要铁板烧,圈上的器件只能用热风枪或者铁板烧进行焊接

 

特别要注意双刀三掷开关,是要买G柄,而不是VG柄。要买左一右三,不是左三右一(第一次买时,建议VG和G都买上,避免商家发错货)。

 

 

由于旋转编码开关,没有定位柱,所以先将PCB其它零件焊好,烧录好固件,验证好功能后,将PCB装好,并上好固定螺丝

 

将其中一只脚先焊上

 

盖上顶盖板后,确认上下左右位置无误后,再将其它脚焊上

 

 

左右脚的导线,需要打热熔胶进行固定

 

3D外壳下单工艺参考(如果自己有3D打印机的话,将顶盖、脚踏打成橙色,会更好看(个人喜好)):

 

面板下单工艺参考:

 

改键上位机使用(win10、win11,只能使用USB连接下。若无法连接请使用“以管理员身份运行”):

 

改键上位机脚本使用(win7,只能使用USB连接下):

提前安装:Python 3.8.10(以All Users模式),并使用命令

python -m pip install hidapi==0.15.0

进行hidapi安装

 

1.以管理员方式打开 命令提示符

2.进入 上位机 目录,执行python oshw-tuner-v2.2.py

 

 

 

固件烧录(win7/10):

1.打开WCHISPStudio

2.接上USB线,并找针将开关键旁边小孔里的Boot键按好,再打开开关

3.WCHISPStudio识别到CH59x后,选择固件进行下载即可

 

 

后记:

回顾多年前笔者参与某厂家的蓝牙手柄项目,再与现在WCH、ESP、nRF的开放,真的没法比。当年想要正常价拿到台湾某蓝牙芯片,必须要签保密协议,并且要现金拿货50K套才给资料和开发工具!(如果没有记错的话)。并且几乎没有任何支持,各种玄学问题,抓包抓到怀疑人生,好在最后蓝牙手柄是做成了,并且靠出口及衍生品才能回到本(pian qian)。

现在3个大厂都开源,并且基本上你想要的功能都有现成的Demo。不禁觉得时代变了,感谢这些厂商把门槛从“地狱”降到了“简单”,再加上AI的buffer助力,使蓝牙、USB开发不再困难。

并且3D模型也有大量的开源,以前动辄上万元的开模费,现在只需要几十元的3D打印即可搞定。(别说当年大家都用公模,因为真的亏不起!)

感谢嘉立创每月2次免费打样,及星火计划的支持,才让这个采用编码器的无线蓝牙翻谱器想法得以实现。

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

3D模型

序号文件名称下载次数
1
03底盒v2.STL
4
2
02脚v2左右通用.STL
4
3
01盖板v2.STL
4

附件

序号文件名称下载次数
1
OSHW Tuner V2.2.hex
5
2
OSHW Tuner Config for Win V2.2(仅支持Win10,不支持Win7).zip
9
3
不在BOM上的物料V2.2-260804.xlsx
7
4
260815_无线蓝牙翻谱器使用说明书v2.2-1.pdf
8
克隆工程
添加到专辑
0
0
分享
侵权投诉
知识产权声明&复刻说明

本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。

请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。

底部导航