0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

迷你键盘制作图解

454398 来源:工程师吴畏 2019-08-15 10:42 次阅读

第1步:材料和说明

迷你键盘制作图解

根据您的项目制作方式,您可能需要不同的组件,但这些组件是te我用过的。

1 Arduino pro micro + USB线

3个Kailh BOX红色开关

3 10k电阻(0805 SMD)

3 100nF电容(0805 SMD)

4 APA102 rgb LED(5050 SMD)

3键帽

1本项目提供的印刷电路板(PCB

1项目中提供的3D打印案例

为什么我要使用Arduino专业版微?

大多数像Uno(Atmega328)这样的arduino主板都不支持USB通信。是的,您可以非常轻松地通过USB编程,我认为有解决方法,但我喜欢在USB通信方面保持简单,我不知道解决方法是否具有响应性。这些主板使用外部芯片进行USB通信,而Arduino pro micro(Atmega32U4)则内置。

开关

有很多你可以使用的机械开关。来自Kailh或Cherry MX的线性,触感或咔哒声。选择你喜欢的任何一个。我使用Kailh开关,因为它们在Ailexpress上很便宜。如果您选择使用PCB,则需要Kailh BOX开关。颜色决定了感觉。

电子元件

在本章中没有太多解释它们,但如果你不使用PCB我会推荐只是普通的槽孔组件,便于焊接。不幸的是,所使用的LED不适用于槽孔封装。除非您对焊接技术非常有信心,否则我也不建议在SMD封装上使用电线。即使对于PCB上的SMD,也需要“高级”焊接技术。

住房

我确实在这个项目中提供住房,但此时此刻有缺陷。需要进行修改以安装螺栓,LED的开口不是最佳的,arduino是暴露的,需要切出一部分以便USB适合。将来可能会增加新的住房。如果您有一台3D打印机,请继续打印,但如果您不打算使用某种项目盒,请不要用它来打印这个有缺陷的盒子。

第2步:原理图

此项目的原理图非常简单,但我想为感兴趣的人解释组件知道这个实现。

切换到Arduino的连接

交换机连接到Arduino引脚0,2和3,因为这些引脚可以用作外部中断。这在代码部分进一步说明。

去抖电路

原理图左侧是一个复制3次的电路。该电路用于去抖开关。要知道什么是去抖动,你需要了解开关弹跳,这并不难理解。

首先看看这个模拟画第一张照片(快速点击开关然后看下面的信号)http://tinyurl.com/yajdtndw

当你按或发布时一个开关它反弹,你的信号在高和低之间交替几次,持续几毫秒。 Arduino非常快,在这么短的时间内读取每一个高低。每次读取高或低时,程序将发送按键或释放按键,因此每次按下您的计算机将接收多次按键。不适合节奏游戏。

此去抖电路将减慢信号的下降沿。到Arduino的信号将无法像弹跳一样快地改变,所以它将被读作一次按下。不要担心下一次真正的新闻会因为下降而放慢速度。

高级:

Atmaga32U4读取0.2Vcc - 0.1V = 0.9伏的数字低电平。电容器在其放电中的任何时间的电压都是Vcc * e ^( - t/RC)。如果您在开关上测量不同的去抖时间,则可以计算电阻和电容值。

LED

rgb LED是APA102 LED,可通过时钟和数据线单独寻址。无需外部组件即可使其正常工作。对于许多LED,你应该使用一个平行于5伏和地的电容,但只有4个LED你不需要它。

步骤3:电路板设计

PCB是在JLCPCB中设计的。我不是他们赞助的,但是对于便宜的原型,他们制作了优秀的PCB。 2美元你得到同一块板的10块,但对我来说运费大约是11美元。如果你不喜欢rgb照明并计划制作一个,你应该考虑让你的键盘没有PCB。

电路板的设计非常简单。我只需要为交换机添加一个组件,但在看了一些视频之后我就掌握了它。我发现的唯一缺陷是孔的位置与开关有点太接近。

要订购PCB,请访问https://jlcpcb.com/并选择2层选项。它会要求您提供Gerber文件。下载“.zip”文件并将其拖到窗口中。你不需要解压缩它。设置应该没问题,你可以继续完成订单。

第4步:案例设计和装配提示

设计

如前所述,我的设计存在缺陷,但如果您愿意,仍然可以打印。这个设计是在Fusion 360中完成的。它是一个免费的3D建模软件,凭借我从发明者和solidworks的经验,它很容易使用。表壳边角上的圆圈是为了防止从打印件上剥落。

如果你制作自己的表壳只有一件事是非常重要的。您的开关需要牢固放置,无法移动。我提供了带有尺寸的方形切口图片,因此您可以将它用于您自己的设计,假设您使用Kailh BOX开关。

装配

现在你有组装所需的所有组件。由于开关是焊接的,因此需要组装第一个版本。

1。焊接SMD元件。这些是电阻器,电容器和LED。

2。焊接Arduino pro micro。

3。在焊接之前,将3个开关放入3D打印的盖板中。焊接开关后,无法拆下盖板。不建议拆焊开关,可能会毁坏它们。

4。现在将开关焊接到位。尽快这样做是因为塑料开关会熔化并毁坏它们或大幅减少咔嗒声。

5。将装配好的盖板放入3D打印的外壳中,如果它们不干扰键帽,则用胶带固定或使用螺栓。

6。将keyCaps放在开关上即可完成。

Recomendations

上传代码后,拆焊或屏蔽arduino上的LED。如果你的代码没有上传但是作为成品看起来不好看,那么很好。需要技巧和尖头镊子。

底部的一些抓握脚也很好防滑,让rgb光线透过。

步骤5:代码(硬件去抖动)

这个项目的代码不是初学友好的,所以如果你刚刚开始用arduino编程那么这个代码可能会吓到你一点。但是,我会尽力解释发生了什么事情。有些事情将在后面的tex中解释,所以如果您有疑问,请先阅读整篇文章。

上传代码

首先下载所有3“ .ino“文件并将它们放在一个文件夹中。

将您的Arduino连接到您的PC并打开“OSU_Keyboard_code_V1.ino”。在工具 - 》板上选择“Arduino/Genuino Micro”。同样在工具中选择正确的COM端口。这有时可能会改变。要将代码上传到您的Arduino,只需单击屏幕左上角的箭头,然后等到它告诉您它已在左下角完成。

OSU_Keyboard_code_V1

包含和定义

首先,您需要包含键盘库。这使得可以将Arduino用作键盘。

接下来我定义一些值。定义就像一个变量,但在程序运行时它们不能改变。

前9个用于键盘字符,arduino引脚编号和端口位。

然后是LED数据和时钟的端口位。

还定义了LED的数量和色轮角度的变量。

设置

这部分代码只会在插入arduino时执行一次。

首先设置LED的时钟和数据引脚作为输出和开关引脚作为输入。这是pinMode()的高级版本。如果您有兴趣搜索“直接端口操作”。

Keyboard.begin()只是以键盘的形式启动usb连接。

接下来的3个中断是链接到开关引脚。每次在开关引脚上检测到变化时,都会执行一个小程序。这个小程序将继续进行。

循环

这部分将在arduino上电时不断重复。

I仅用它来改变和更新LED的颜色。

中断

这里是小程序,只有在检测到变化时才会执行在开关引脚上,制作。它们是相同的,除了它们对它们作出反应。

首先它检查按钮是否被按下或释放并发送正确的键盘命令。

LED (以不同的顺序解释)

如果您对LED的控制方式感到好奇,那么您应该查看APA102数据表。 https://cdn-shop.adafruit.com/datasheets/APA102.pd.。.

OneBit

这又是直接端口操作版本数字写作。

首先检查它是否应发送0或1,并分别将数据引脚拉低或拉高。然后它将时钟引脚写入非常短并再次写入低电平。

OneByte

这将使用“for”循环重复oneBit 8次。它读取一个字节中的第一位并将其值传递给oneBit函数,并对接下来的7位执行相同操作。

LedData

重复此操作oneByte 4次提供一个led所需的数据。第一个字节以111xxxxx开头,而xxxxx位置的亮度值为5位。亮度可以设置为0到31(2 ^ 5 = 32级)。

接下来的3个字节用于蓝色,绿色和红色值。每种颜色一个字节。

ColorWheelThisLed

此函数调用ledData根据色轮中的角度为其提供rgb颜色。

16位值是6个等间距60度的分红。查看图像可能会帮助您更好地理解。

(还提供了8位版本但注释掉了,因为它过于闪烁)

StartEndFrame

每次想要向LED发送新颜色并想要更新LED的实际颜色时都需要使用起始帧

我只使用起始帧,因为endframe是不需要。起始帧是4个字节的0.结束帧是4个255字节(11111111)。

步骤6:代码(软件去抖动)

经过一段时间的游戏,我注意到硬件去抖的一些双击问题。这可以通过一些其他值电阻器或电容器来修复,但由于按钮和盖子不可拆卸,我认为软件去抖将是一个不错的解决方案。软件去抖应该工作,或者是否实现硬件去抖。在我目前的设置中,我不能取下盖子,所以我只是将电阻器和电容器留在原位。

我不会像以前的版本那样广泛地解释代码,因为它有点难以解释。

基本上大多数代码都是一样的,并且led代码是左边的不变。更改的是外部中断不再使用arduino函数。现在它适用于纯C代码。现在添加的是软件中断。为此,我使用AVR计时器等待一段时间,直到弹跳停止。由于定时器是基于中断的,因此衰减时间不受循环中发生的任何事情的影响。

我能想到的唯一缺点是arduino延迟功能不能再使用了。因为延迟功能使用定时器0,并且该程序使用定时器0去抖动。

在图像中,您可以看到代码大致如何工作。 mem位指示定时器是否正在运行。未描述的是在按钮结束时按下输入的情况。在这种情况下,只有按钮已经释放时才会发送按键。这意味着就计算机而言,密钥将被按下。对于这种罕见的例外,当计时器到期时将执行检查。如果在计时器结束时未按下按钮,将发送keyrelease命令。

步骤7:结果

如果一切顺利,你现在应该有一个工作键盘来玩Osu!上。我个人没有注意到任何延迟。如果你这样做,请告诉我。如果有任何问题,请随时提出任何问题。

前面提到的关于V2并不是一个承诺,所以不要推迟这个项目,因为你想要等待V2。

我希望你喜欢你的键盘!

奥苏!名称:Thomazzz3

疑难解答

如果您认为键盘出现问题,请先打开文本编辑器,然后短按一次。 。

一个或多个键不起作用吗?

焊接时可能会在内部销毁开关。如果万用表将其连续/嘟嘟声,请在未连接Arduino时将其与开关平行,然后按键。它应该是哔哔声。

您输入的字符是否与您在Osu中配置的键匹配! ?

更改前3个#defines中的arduino代码中的字符(‘’是nessecary!)。

或者更改你的Osu!使用配置键的设置。

一个或多个键是否重复几次?

去抖电路可能不适用于您的开关或没有正确焊接。检查焊接连接。如果仍然发生,请尝试1uF的电容值。这对PCB用户来说非常困难。

如果您的LED出现问题

LED是否会闪烁?

焊接连接可能松动。如果你使用PCB确认焊锡真的在印刷品的焊盘上流动。

没有LED工作或一定数量的LED停止工作?

检查第一个LED的连接线之间的短路(跟踪轨道),并检查Arduino输出端和第一个LED输出端是否连接良好。如果确认正确且仍有缺陷,则可能需要更换第一个LED。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 键盘
    +关注

    关注

    4

    文章

    843

    浏览量

    39002
收藏 人收藏

    评论

    相关推荐

    薄膜键盘领域设计#键盘

    薄膜键盘
    泰达克电子材料
    发布于 :2024年01月09日 11:30:41

    四款迷你台式主机参数概述,高性能迷你桌面电脑

    qotom主要生产多网或多串口的迷你ITX主板和工业电脑的工厂,产品主要销往国外,国内知道的人比较少,近期qotom推出四款外观好看的台式迷你主机,使用12代13代因特尔处理器,颜值高,硬件强,价格
    的头像 发表于 01-02 09:58 282次阅读
    四款<b class='flag-5'>迷你</b>台式主机参数概述,高性能<b class='flag-5'>迷你</b>桌面电脑

    AI电脑大潮来了!创盈芯AI迷你主机F1A正式面世

    什么是AI Mini PC?创盈芯 F1A AI迷你主机怎么样?简单来说,AI Mini PC就是加入AI功能的迷你电脑。
    的头像 发表于 12-21 16:38 340次阅读
    AI电脑大潮来了!创盈芯AI<b class='flag-5'>迷你</b>主机F1A正式面世

    不同接口配置的迷你电脑主机,都有不同的功能以及需求

    在数字科技的飞速发展中,迷你电脑主机以其小巧便携、低功耗和出色性能而备受瞩目。相较于传统的台式电脑主机,迷你电脑主机在各个领域都展现了强大的应用潜力。Qotom上市几款迷你电脑主机,配置不同的接口应对更多市场需求,本文将深入探讨
    的头像 发表于 12-21 16:12 364次阅读
    不同接口配置的<b class='flag-5'>迷你</b>电脑主机,都有不同的功能以及需求

    写字机的制作过程

    写字机的制作过程,图解,利用了core——XY的结构,详细制作图解,需要有一定制作基础的DIY同学。
    发表于 09-27 07:41

    电竞键盘M0系列: 玩家级酷炫灯光效果

    的灯光效果。并且键盘也支持USB功能,它还有高达7组可同时双向通讯的USB端点,让开发者可尽情地扩展额外功能,例如: 指示灯、语音设定、放音、迷你屏幕、温度计 .....等,完全不须担心端点不够用的窘境。
    发表于 08-29 15:34

    印制板模版制作工艺技术及品质控制

    印制板的模版制作,是印制板生产的首道工序。印制板模版的质量,将直接影响到印制板的制作质量。在制作加工某个品种印制板时,必须具有一套与之相应的模版,它包括印制板每层导电图形(信号层电路图形和地、电源层图形)和非导电图形(阻焊膜
    发表于 08-23 14:20 264次阅读

    印制板模版制作工艺技术及品质控制

    印制板的模版制作,是印制板生产的首道工序。印制板模版的质量,将直接影响到印制板的制作质量。在制作加工某个品种印制板时,必须具有一套与之相应的模版,它包括印制板每层导电图形(信号层电路图形和地、电源层图形)和非导电图形(阻焊膜
    发表于 08-21 14:37 383次阅读

    基于RT-Thread和N32G457的迷你键盘设计方案

    机械键盘在最近几年发展迅猛,功能也逐渐丰富,在开源环境中也存在几个发展迅猛的开源项目,比如QMK。
    的头像 发表于 08-07 16:04 724次阅读
    基于RT-Thread和N32G457的<b class='flag-5'>迷你</b><b class='flag-5'>键盘</b>设计方案

    自动化迷你温室的构建

    电子发烧友网站提供《自动化迷你温室的构建.zip》资料免费下载
    发表于 07-13 10:14 0次下载
    自动化<b class='flag-5'>迷你</b>温室的构建

    迷你电脑键盘的构建

    电子发烧友网站提供《迷你电脑键盘的构建.zip》资料免费下载
    发表于 07-06 11:32 0次下载
    <b class='flag-5'>迷你</b>电脑<b class='flag-5'>键盘</b>的构建

    Arduino迷你红绿灯

    电子发烧友网站提供《Arduino迷你红绿灯.zip》资料免费下载
    发表于 06-30 14:30 0次下载
    Arduino<b class='flag-5'>迷你</b>红绿灯

    Arduino娃娃屋迷你电视开源设计

    电子发烧友网站提供《Arduino娃娃屋迷你电视开源设计.zip》资料免费下载
    发表于 06-20 09:37 0次下载
    Arduino娃娃屋<b class='flag-5'>迷你</b>电视开源设计

    Arduino UNO迷你气象站

    电子发烧友网站提供《Arduino UNO迷你气象站.zip》资料免费下载
    发表于 06-16 10:24 0次下载
    Arduino UNO<b class='flag-5'>迷你</b>气象站

    imx8m迷你cpu频率问题求解

    BSP 版本 - 5.4.24 1)我们使用 imx8m 迷你双核工业处理器(1.6 MHZ)的定制板我们使用了相同的 imx8m 迷你 evk sdk 但 evk 包含四核消费者处理器(1.8
    发表于 04-27 07:05