嘉立创产业服务站群
发作品签到
标准版

【课程设计】多功能小键盘

工程标签

6.2k
0
0
11

简介

基于CH55x的多功能小键盘

简介:基于CH55x的多功能小键盘

开源协议

CC-BY-NC-SA 3.0

创建时间:2021-05-23 07:48:37更新时间:2021-12-15 07:27:24

描述

多功能小键盘

固件开源地址: https://github.com/panyihang/MiniKeyboard

1 简介

使用ch55x (ch551 / ch552 / ch554)单片机,使用ch55xarduino实现USB HID,不仅完全兼容普通的数字小键盘,还有更多扩展功能。

2 知识点

(1)学习键盘的设计思路和方法;

(2)了解CH552的外围;

(3)使用arduino写程序;

(4)学习使用立创EDA设计原理图及PCB图;

(5)学习PCB板的组成及工厂生产流程;

3 板载资源介绍

(1)一个16P的TYPE-C接口;

(2)17颗机械轴;

(3)两颗LED,用于指示当前的模式;

4.1 单片姬外围

ch55x的外围没什么好说的,采用5V输入,根据Datasheet分别在5V和3V3处加俩退耦电容即可

下载电路也十分简洁,启动时把DP拉低即可进入下载模式

4.2 按键阵列

为了确保各个按键没有冲突,采用的这种接线方法有点费IO,开源平台上有个大佬有个更精妙的方式实现了64键的全键无冲,这边其实用不着

4.3 LED

由于仅剩下1个IO,所以运用了一个IO控制两颗LED

众所周知,GPIO有三种状态,即高低电平和高阻,因此使用了一个NMOS来实现

  • 当IO为低电平时,NMOS关断,LED4亮起 ;
  • IO为高电平时,NMOS导通,LED3亮起 ;
  • IO为高阻时,两颗LED都不亮;
  • IO配置为PWM,当频率足够高时可以近似看为两颗LED同时亮起;
    深度截图_选择区域_20210529001217.png

5.PCB绘制

这块板子扯线没什么难度,注意两层之间走线基本是垂直的即可

6.焊接

先在焊盘上一点锡浆,把元件都放上去

IMG_20210528_170913.jpg

风枪开370度,风速2,吹十秒左右即可

IMG_20210528_175521.jpg

上电测试,插入TYPE-C线,可以正常识别(下载模式)

深度截图_选择区域_20210528172627.png

焊上茶轴

IMG_20210529_120824.jpg

7.代码

7.1 按键扫描的思路

根据按键阵列,我们先在A1-A5中依次拉低这些IO,每拉低一个IO,就把A6-A9配置为输入上拉模式,依次扫描记录

深度截图_选择区域_20210529002624.png

7.2 软件滤波

考虑到了可能出现的噪音,进行一次滤波和按键模拟

深度截图_选择区域_20210529003253.png
深度截图_选择区域_20210529003755.png

7.3 模式切换(已删除)

这边的模式切换采用的是对数组进行偏移来实现的

深度截图_选择区域_20210529003831.png

8.固件现存的问题

  • ch55xarduino疑似无法将引脚配置为高阻态,pinMode设为INPUT,实际为高电平,无法实现两个LED同时熄灭,不影响使用

由于模式切换导致了一些问题,现已删除模式切换功能,以下BUG均解决

  • 在已经按下其他按键的情况下切换模式,会导致OS认为该按键一直被按下,按下任意键即可恢复
  • 按键矩阵的(A1,A7)按下第一次扫描后会被识别为(A1,A6),该问题较为严重,建议暂时屏蔽掉这个按键,原因还没查出来

9.外观

IMG_20210530_164039.jpg

IMG_20210530_163805.jpg

底座使用另一块板子用热熔胶粘在一起

考虑到隔壁jp出了白嫖3d打印的活动,后续可能会画外壳

2021/6/15 隔壁玩不起了,没法白嫖3d打印了,外壳就不画了

10.踩过的坑

0.0.9的ch55xrduino linux版本有一处路径异常(或者是打包有遗漏),编译报错找不到avr-objcopy,Arch系解决方法如下

sudo pacman -S avr-gcc

vim /home/[YOUR-USER-NAME]/.arduino15/packages/CH55xDuino/hardware/mcs51/0.0.9/platform.txt

第41行

compiler.tools.path=xxxxxxxxxxxxx

改为

compiler.tools.path=/usr/bin

保存退出即可

window版没法用自带的下载工具烧录程序,好像是权限的问题?反正没有解决,可以导出hex然后用官方给的烧录软件烧录






最后吐槽两句,黑轴的手感是真的不行,到底是哪个b说黑轴适合打游戏

原神官服54级老咸鱼了,UID:163114852,欢迎来骚扰~


注意,附件中的文件可能不会及时更新

设计图

原理图
PCB

BOM

IDNameDesignatorFootprintQuantity
1CHERRY0,+,ENTERCHERRY_MX_2U3
2CHERRY1,2,3,4,5,6,7,8,9,*,-,.,/,NUMCHERRY-MX-1U14
3100nFC1,C2C06032
41N4148W_C109203D1,D2,D3,D4,D5,D6,D7,D8,D9,D10,D11,D12,D13,D14,D15,D16,D17SOD-123_L2.8-W1.8-LS3.7-RD17
5LTST-C230TGKTLED3,LED4LED1206-RD2

附件

序号文件名称下载次数
1
游戏模式.mp4
333
2
MiniKeyboard-1.0.0.tar.gz
47
3
MiniKeyboard-ch552-normalmode.hex
22
4
MiniKeyboard-ch552-gamemode.hex
24
克隆工程
添加到专辑
0
0
分享
侵权投诉

工程成员

评论

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

底部导航