
[星火计划] 丐 dial
简介
CH552g主控的旋钮PCB
简介:CH552g主控的旋钮PCB开源协议
:GPL 3.0
描述
b站视频 :https://www.bilibili.com/video/BV1MK411o7TS/
一、描述
1. 基于ch552g芯片设计的surface dial旋钮,带有4颗WS812B灯珠和两个不同封装的振动马达。
2. 接口采用Type-c接口,实现键线分离。
3. PCB带程序下载电路。
4. PCB尺寸为圆形3.6cm*3.6cm,体积小巧,功能齐全,可以免费打板。
5. 硬件成本低,使用元器件种类少,方便各位玩家进行复刻,焊接过程比较友好。
6. 外壳使用3d打印,可以在三维猴免费打印。Type-C开口兼容大部分客制化数据线。
7. 除EC11编码器和马达,其他元件采用贴片形式,电容、电阻采用0805封装。
二、功能介绍
使用CH552模拟Dial旋钮,采用两个不同封装的马达可以在顺时针,逆时针,以及其他操作中,实现不同的操作手感,在旋钮顺时针、逆时针旋转时,灯光方向会随旋转方向改变。Dial旋钮可以实现控制系统音量,屏幕亮度,缩放,滚轮等操作,更多功能及自定义在系统中设置。
三、工作原理(生菜编写)
EC11和鼠标滚轮一样,都是增量式编码器,时序如下:
由此可见顺时针旋转时A相超前B相。反之则滞后。
那么怎么来识别呢?如果里用的单片机比较高级,如STM32F103,甚至定时器有专门的编码器功能。
但是现在采用的是51内核的,只能用外部边沿触发中断来实现。
怎么实现?假设取A相的下降沿触发,当进入中断时,如果B相的电平为高就是顺时针,反之逆时针。
就这么简单,自己把情况代入上面波形图分析下。上升沿中断同理反之。
然后翻开PDF,看看寄存器。
由图可知这单片机的中断资源挺丰富的,这里还不包括传统51部分的外部中断INT0,INT1。
但是都有一个坑,就是大多都是下降沿有效(除了RST),
所以先实现双边沿都触发的话(部分编码器为一个刻度翻转一次)就有两种选择:
1. 加非门,三极管也行,把相位翻转过来再输入到另一个引脚
2. 把RST脚和别的中断并联到一起
作为老粉,肯定都知道我想法,不带一丝犹豫,当然方案2,但是有可能未烧录的单片机的RST就是复位功能,
而我们的EC11默认是高电平,这样就可能会导致无法烧录。所以经过权衡,用RST隔壁带中断的引脚作为输入,
当有需要的时就一坨锡短接搞定。
因为我在疫区的原因,物流不畅,过程受阻,不然下面这些部分功能早肝出来了。而且距离截止时间还有几天了。
当前目标是完成核心功能,就是dial模拟。至于说当前电机震动效果比较单调,这个必须等到到手才能调试改善。
硬件作者的调试反馈信用就是,强点、弱点,时间长点,短点,比上一个好了差了。视频只听到嗡嗡嗡,我怎么改得下去???
要相信我的项目,一直都在改进,比如两年前开源的【丐17Touch】直到上个月还在更新固件。
对比我的朋友【甘草酸不酸】,焊台和浇花系统都盖棺封顶了,现在专心研究电子书阅读器,谁还记得当初是叫天气墨水屏。
后续更新方向:
1. 原生多媒体操作,兼容更多系统,因为dial只能在win10或者win11上使用
2. 震动电机模式配置,现在两个电机是由PWM驱动。强弱变化,持续时间是可以由单片机控制的。
3. OpenRGB灯效接入,这个是小问题,只是如果兼容设备不多你可能不觉得这4个灯有什么意义。如果你想要低成本搭建全套灯光同步可以关注我的其他项目,因为在OpenRGB支持列表里,没有产品比我更便宜的了。
4. 上位机读取按键然后控制其震动,贴在键盘上模拟外接电磁铁/继电器那样的声音和手感
面向评委的一段话
首先明确这项目没有低创修改同一比赛刷奖的嫌疑,虽然代码重复率高,受众群体重合度也高。
但是该项目是由硬件作者独立完成初期样机开发,然后开源了。最后苦于程序难写,我才上门求合作,过程也可以看评论区。
对于这个系列的单片机我摸到滚瓜烂熟了,即使主动合作后,也不会投入大量时间在USB协议的学习上。
在我的指导下也进行了一些魔改,加RGB加震动马达,而且是两个震动马达。项目早期读者可以作证。
一开始这个项目没有参加任何比赛,这位同学在我引导下才参加的,而且完成时间很紧迫,留给拉票的时间就一星期左右。
希望各位评委客观打分,别因为这个项目内容和我的小键盘代码,主控,受众相似度高就降低评价,谢谢。
四、焊接建议
有条件建议使用加热台或热风拆焊台+锡膏焊接①②③⑤,能够减小焊接难度。
建议焊接顺序为:
① TYPE-C口(记得焊接四个固定角),焊接好后用放大镜观察是否连锡,或者使用万用表进行测试。
②CH552G芯片,焊接完成后注意检查是否连锡。
③ PCB底面贴片电容、电阻、MOS管、二极管(如果不使用C TO C数据线,底面TYPE-C接口两侧的5.1K电阻可以选择不焊接)。
④背面按键开关。
⑤顶面电容及WS2812B灯珠。
⑥EC11编码器(注意观察针脚是否变形,焊接后保持旋钮柄在PCB正中间)。
⑦振动马达(提前对焊盘上适量锡,使用镊子辅助焊接)。
***振动马达需要使用热熔胶或胶水与PCB板进行固定。***
焊接电容电阻值对照图
五、烧录教程
下载安装WCHISPTOOL。
安装后打开软件,按下图进行操作
六、旋钮基础操作:
插入设备后,长按旋钮按键可以呼出旋钮功能选择菜单,顺时针或逆时针旋转选择功能,单击旋钮按键确定。
六、旋钮设置教程:
笔者系统环境为WIN11 22H2,插入设备后,在系统设置中蓝牙和其他设备中
可以找到
选项
进入选项可以进行设置和自定义等操作。
点击+号选择自定义工具可以在下方设置快捷键操作
2022/11/19更新
外壳文件已测试,可以正常使用。
外壳文件和测试固件已上传。
BOM表以附件为准。
PCB可打板。
上图为外壳和底盖图片。
2022/12/12更新
马达安装教程
左侧为0408空心杯振动马达,右侧为1027扁平振动马达
0408空心杯马达安装:
目前部分店家所售0408马达橡胶套与PCB板开槽不符,不过依然是兼容的,可以正常使用。
如下图,先取下马达橡胶套,放入PCB右侧开槽处,橡胶套的缺口位于正面,缺口朝上。
从底面放入0408空心杯马达,注意马达位置,保持顶部与底部距离相等,否则可能与外壳产生干涉。
1027扁平马达安装:
揭开马达背部白色贴纸
放入PCB左侧开槽即可
马达安装后,使用镊子辅助焊接正负极引脚,注意马达导线颜色与焊盘正负极对应,红正蓝负。
焊接完成后,测试马达。测试通过后,使用热熔胶或胶水对马达与PCB接缝处进行加固。
七、相关推荐阅读
微软官网对dial协议的描述:Windows 径向控制器设计 |微软学习 (microsoft.com)
早期立创团队的CH554T DIAL旋钮,但是一直断更:USB音量控制器(多媒体小键盘) - 嘉立创EDA开源硬件平台 (oshwhub.com)
八、固件更新日志
Ver1.0:
1. 修改PID,上报名称和版本号
2. 简单开启外部中断来读取旋钮
Ver1.1:
1. 修改编码器io
2. 开启PWM给震动电机,当顺时针A电机震动60ms,逆时针B电机震动60ms
3. 开启WS2812彩灯作色环旋转灯效
Ver1.11:
1. PWM频率调节到23KHz
Ver1.20:
1. 精简1,3端点,降低中断的数量和内存占用
2. 按键回报率设定为1000Hz(多种功能共用)
3. 因栈空间不足,将USB底层的变量分配到idata区
4. 修改EEPROM存储底层,读取比较是否有差异再写入
5. 添加短时间检测到4连击打开开源网的功能
Ver1.30
1. 添加RST上升沿中断,可以搭锡实现双倍分辨率(未验证)
2. 六连击切换到常用多媒体模式(会掉电保存)
3. 多媒体模式下实现以下功能:
4. 单击播放/暂停,双击下一首,三击上一首
5. 普通旋转调节音量,摁住旋转快进或者dao带
6. 五连击切换亮度
7. 灯效变动,dial模式为顺时针,常用多媒体模式下为逆时针
8. 修改电机模式
Ver1.32
1. 提高编译优化等级
2. 多媒体模式下8连击切换旋钮旋转方向(默认正向) 20s延迟后掉电保存。
烧录时请勾选
测试视频↓↓↓
音频录制设备较差,视频有些底噪,十分抱歉!
设计图

BOM


评论