发作品签到
专业版

my_Megu Pad_v2

工程标签

3.7k
0
0
9

简介

整体外形复刻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

创建时间:2022-07-27 12:22:08更新时间:2022-10-10 01:44:48

描述

a5ad796d9abdb22d88982cf0f9d95f6.jpg
4db5b7c94cde2772f8cc13f2686a3d4.jpg
2b5d04a83093072452b072691576878.jpg
4de0420b81942c2e58bf82800e679d9.jpg
有几个按键没有键帽,见谅
打定位板的话大概率出现50元,请使用亚克力
外形来源于,因此螺丝可以查考他的,做了修改,最最重要的是原点对齐!强迫症好受多了
贴图基本都是原神图片,不喜欢请替换

1.系统说明

采用AIR32F103CBT6芯片,RGB为SPI驱动WS2812,带0.96寸OLED,AT24C128进行存储,热插拔按键,使用二极管实现全键无冲设计,旋钮目前只能调节音量。
注意1:oled不能直接焊接排针,需要对比上板进行焊接,否则上板不能安装
注意2:oled模块自带上拉电阻,r9,r8可以不焊接,没有oled的话需要焊接

2.软件说明

2.1QMK固件说明

尝试过QMK固件,我也会在后面把配置方案发出来,qmk可以实现不用外置eeprom存储,可以使用via,但是不建议,有以下问题

  1. ws2812无法使用spi或者pwm驱动,应该是air32的问题
  2. oled挂载总线为PB8 PB9的i2C,编译qmk固件后下载后会卡死不能运行,不用i2c可以运行,应该也是air32的问题

2.2自制固件

为了解决qmk的弊端,包括我觉得qmk的

  1. 自定义程度不高,很多不可见
  2. 每次编译耗时超久
  3. VIA软件真不好用
    等原因

我自己编写了软件,软件整体框架可以查看源码,基本思路和之前键盘一样,不过那个键盘是我的第一个复杂设计,很多问题,包括晶振,usb乱放,瞎几把放电阻和电容等问题,目前主要实现了以下功能

  1. 按键输入(一次最多14个按键,实际上理论上可以支持62个键一起,但是太多没啥用)
  2. 鼠标功能模拟
  3. 离线设置,可以在键盘上切换键盘层、RGB、OLED休眠时间、亮度、鼠标、滚轮移动距离
  4. 音量控制
  5. UF2固件更新,一次下载后不用下载器
  6. 采用RTX5嵌入式OS编程,可扩展性强,air32频率为144Mhz,理论上比32更加快

3.使用说明

3.1下载说明

  1. 第一次下载请使用下载器下载uf2boot.bin文件,之后按住旋钮按键插入USB即可进行uf2模式,电脑会出现U盘,将uf2格式文件拖入即可完成下载,uf2文件起始地址为0x8004000
  2. 灯闪烁即为uf下载模式

3.2使用说明

3.2.1上位机使用

Snipaste_2022-10-09_16-53-02.png
刷新后会出现多个,请尝试连接如图所示的VID和PID设备,连接的上会连接成功,连接不上会提示连接失败,都不行请尝试重新拔插。连接郭一次,会记录,下次可以直接连接。
Snipaste_2022-10-09_16-56-46.png
连接成功后,需要先读取层数,然后读取按键配置,之后点击按键就可以显示当前按键的情况,点击更改配置就可以更改
image.png
建议在输入捕获框中输入按键,会自动增加按键,不过注意删除要在按键值框中删除,实际上是以“+”作为分隔符,因此也可以自己输入,按键名在右边,必须对于,否则会提示错误
image.png
按键确认后不用点击重新读取就可以读取,重新读取只适用点击单个按键读取这个按键
灯光控制一看就会就不多说了
注意:按键层的切换在下位机,如果上位机没读取,切换层是不显示的,你在上位机1层改按键,下位机如果是2层的话,修改按键也是2层的

3.2.2下位机说明

下位机按键布局同上位机一样,这里就说按键多少对应位置和上位机相同

3.2.2.1层切换

下位机一共5层,分别是按键123层,RGB和OLED设置层,鼠标层
通过按住旋钮按键,然后点击4或者6进行前后切换,切换后松开

3.2.2.2 RGB和OLED设置

松开旋钮

  1. 8和9控制R大小
  2. 9和12控制G大小
  3. 10和11控制B大小
  4. 7和14控制RGB模式(其中模式8还没有)
  5. 4和5控制oled亮度
  6. 1和2控制OLED休眠时间

3.2.2.3 鼠标设置

松开按键

  1. 5 12 8 10分别为鼠标上下左右
  2. 4和6位鼠标左右键
  3. 9为中间
  4. 7和14位滚轮
  5. 11和13为鼠标移动距离秀海
  6. 1和2位为滚轮距离修改

4.二次开发说明

注意:二次开发需要经验,由于程序xjb乱写的,且相比stm32有很多不同,理论上是可以通用,但是有写地方需要重新修改

4.1替换其他32说明

  1. 整体采用stm32cubemx生成,但是进行了诸多魔改,直接用ioc生成会替换很多修改过的文件,请合理备份USB库和main.c文件
  2. 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 其他说明

  1. 上位机采用vs2022 c# .net4.6编写,调用了hidsharp库
  2. 查看代码建议从rtx5.c入手,因为采用rtos,这里面是创建的线程,文件尽量采用一个功能一个文件
    image.png
  3. eide中以下设置需要注意,安装目录不同,需要添加引用
    image.png
  4. 起始地址如下
    image.png
    main.c开头需要添加中断向量表重映射到0x8004000
  5. 转换uf2格式需要配合脚本并添加生成后任务
    image.png
  6. uf2.bin固件编译环境为ubuntu 16.04

目前还未完成的工作

  1. 上位机捡漏
  2. oled没有动画
  3. typec缺少cc两个5.1k电阻,c to c线可能有问题

设计图

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

BOM

暂无BOM

附件

序号文件名称下载次数
1
uf2格式相关.zip
41
2
键盘源代码及文件.zip
184
3
上位机源代码.zip
47
4
上位机.zip
31
克隆工程
添加到专辑
0
0
分享
侵权投诉

工程成员

评论

全部评论(1)
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航