
my_Megu Pad_v2
简介
整体外形复刻https://oshwhub.com/hirykun/megupad_v2-0-yuan-li-tu中的megupad,但是替换主控芯片为air32f103,我自己写的程序
简介:整体外形复刻https://oshwhub.com/hirykun/megupad_v2-0-yuan-li-tu中的megupad,但是替换主控芯片为air32f103,我自己写的程序开源协议
:GPL 3.0
描述
有几个按键没有键帽,见谅
打定位板的话大概率出现50元,请使用亚克力
外形来源于,因此螺丝可以查考他的,做了修改,最最重要的是原点对齐!强迫症好受多了
贴图基本都是原神图片,不喜欢请替换
1.系统说明
采用AIR32F103CBT6芯片,RGB为SPI驱动WS2812,带0.96寸OLED,AT24C128进行存储,热插拔按键,使用二极管实现全键无冲设计,旋钮目前只能调节音量。
注意1:oled不能直接焊接排针,需要对比上板进行焊接,否则上板不能安装
注意2:oled模块自带上拉电阻,r9,r8可以不焊接,没有oled的话需要焊接
2.软件说明
2.1QMK固件说明
尝试过QMK固件,我也会在后面把配置方案发出来,qmk可以实现不用外置eeprom存储,可以使用via,但是不建议,有以下问题
- ws2812无法使用spi或者pwm驱动,应该是air32的问题
- oled挂载总线为PB8 PB9的i2C,编译qmk固件后下载后会卡死不能运行,不用i2c可以运行,应该也是air32的问题
2.2自制固件
为了解决qmk的弊端,包括我觉得qmk的
- 自定义程度不高,很多不可见
- 每次编译耗时超久
- VIA软件真不好用
等原因
我自己编写了软件,软件整体框架可以查看源码,基本思路和之前键盘一样,不过那个键盘是我的第一个复杂设计,很多问题,包括晶振,usb乱放,瞎几把放电阻和电容等问题,目前主要实现了以下功能
- 按键输入(一次最多14个按键,实际上理论上可以支持62个键一起,但是太多没啥用)
- 鼠标功能模拟
- 离线设置,可以在键盘上切换键盘层、RGB、OLED休眠时间、亮度、鼠标、滚轮移动距离
- 音量控制
- UF2固件更新,一次下载后不用下载器
- 采用RTX5嵌入式OS编程,可扩展性强,air32频率为144Mhz,理论上比32更加快
3.使用说明
3.1下载说明
- 第一次下载请使用下载器下载uf2boot.bin文件,之后按住旋钮按键插入USB即可进行uf2模式,电脑会出现U盘,将uf2格式文件拖入即可完成下载,uf2文件起始地址为0x8004000
- 灯闪烁即为uf下载模式
3.2使用说明
3.2.1上位机使用
刷新后会出现多个,请尝试连接如图所示的VID和PID设备,连接的上会连接成功,连接不上会提示连接失败,都不行请尝试重新拔插。连接郭一次,会记录,下次可以直接连接。
连接成功后,需要先读取层数,然后读取按键配置,之后点击按键就可以显示当前按键的情况,点击更改配置就可以更改
建议在输入捕获框中输入按键,会自动增加按键,不过注意删除要在按键值框中删除,实际上是以“+”作为分隔符,因此也可以自己输入,按键名在右边,必须对于,否则会提示错误
按键确认后不用点击重新读取就可以读取,重新读取只适用点击单个按键读取这个按键
灯光控制一看就会就不多说了
注意:按键层的切换在下位机,如果上位机没读取,切换层是不显示的,你在上位机1层改按键,下位机如果是2层的话,修改按键也是2层的
3.2.2下位机说明
下位机按键布局同上位机一样,这里就说按键多少对应位置和上位机相同
3.2.2.1层切换
下位机一共5层,分别是按键123层,RGB和OLED设置层,鼠标层
通过按住旋钮按键,然后点击4或者6进行前后切换,切换后松开
3.2.2.2 RGB和OLED设置
松开旋钮
- 8和9控制R大小
- 9和12控制G大小
- 10和11控制B大小
- 7和14控制RGB模式(其中模式8还没有)
- 4和5控制oled亮度
- 1和2控制OLED休眠时间
3.2.2.3 鼠标设置
松开按键
- 5 12 8 10分别为鼠标上下左右
- 4和6位鼠标左右键
- 9为中间
- 7和14位滚轮
- 11和13为鼠标移动距离秀海
- 1和2位为滚轮距离修改
4.二次开发说明
注意:二次开发需要经验,由于程序xjb乱写的,且相比stm32有很多不同,理论上是可以通用,但是有写地方需要重新修改
4.1替换其他32说明
- 整体采用stm32cubemx生成,但是进行了诸多魔改,直接用ioc生成会替换很多修改过的文件,请合理备份USB库和main.c文件
- mian.c中
USB_Port_Set(0);
HAL_Delay(100);
USB_Port_Set(1);
这个为air32专用实现usb重新枚举
3. SystemClock_Config();实现了完全修改,使系统频率为144mhz
4. 虽然用的mdk编程,但是用的vscode的eide,不能直接使用mdk,要用的话需要添加相关文件,用vscode安装eide后应该可以直接导入
4.2 其他说明
- 上位机采用vs2022 c# .net4.6编写,调用了hidsharp库
- 查看代码建议从rtx5.c入手,因为采用rtos,这里面是创建的线程,文件尽量采用一个功能一个文件
- eide中以下设置需要注意,安装目录不同,需要添加引用
- 起始地址如下
main.c开头需要添加中断向量表重映射到0x8004000 - 转换uf2格式需要配合脚本并添加生成后任务
- uf2.bin固件编译环境为ubuntu 16.04
目前还未完成的工作
- 上位机捡漏
- oled没有动画
- typec缺少cc两个5.1k电阻,c to c线可能有问题
设计图

BOM


评论