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

    文章

    868

    浏览量

    41548
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    迷你舵机的运用范围?

    迷你舵机因体积小、重量轻、控制精准的特点,主要应用于对空间和重量有严格限制的小型设备中,核心运用范围集中在机器人、模型、消费电子及教育 DIY 四大领域。 1. 小型机器人领域 这是迷你舵机最核心
    的头像 发表于 10-16 10:36 166次阅读

    如何制作字母数字键盘

    制作字母数字键盘
    发表于 09-05 07:24

    键盘常见问题的解决方法

    用户点击输入框时,软键盘默认弹出。但在特定场景下,需要对软键盘的弹出和收起进行控制,如点击空白区域收起软键盘,进入页面时输入框主动获焦。开发者还需根据软键盘状态和高度调整页面布局。
    的头像 发表于 09-04 09:11 544次阅读

    面向AI应用的新一代迷你电脑架构解析 — Q51251AI

    AI迷你电脑
    的头像 发表于 08-20 10:02 472次阅读
    面向AI应用的新一代<b class='flag-5'>迷你</b>电脑架构解析 — Q51251AI

    使用HCI UART端口更新CYBT-343026模块固件,这个进程需要迷你驱动程序吗?

    迷你驱动程序本身 是可选的。\" 我的问题是我真的需要下载这个 minidriver 吗? 或者迷你驱动器已经在模块闪存中?
    发表于 07-07 06:53

    M1A AI迷你电脑加持,5分钟搞定PPT制作

    在学习和工作中,PPT已成为展示内容的重要工具。然而,如何高效地制作出一份既清晰又富有吸引力的PPT,常常让人感到困扰。今天,小编将用创盈芯M1A AI迷你电脑结合当前大热的AI技术,与大家探讨如何高效打造一份令人满意的PPT。
    的头像 发表于 06-18 14:12 617次阅读

    图解单片机功能与应用(完整版)

    从基础知识的介绍出发,图文并茂,直观、系统地介绍了单片机的内部结构、工作原理和应用技巧。全书分为10章,内容包括51单片机编程资源图解、51单片机指令系统图解、汇编语言程序设计图解、输入/输出
    发表于 06-16 16:52

    HarmonyOS应用自定义键盘解决方案

    自定义键盘是一种替换系统默认键盘的解决方案,可实现键盘个性化交互。允许用户结合业务需求与操作习惯,对按键布局进行可视化重构、设置多功能组合键位,使输入更加便捷和舒适。在安全防护层面,自定义键盘
    的头像 发表于 06-05 14:19 1583次阅读

    无风扇迷你工控机选购指南

    无风扇迷你工控机是许多工业应用的重要工具,特别是随着工业在自动化、人工智能和边缘计算等领域朝着更集成、更坚固的计算解决方案发展。无论您是在寻找用于边缘人工智能处理的无风扇迷你工控机、工业4.0
    的头像 发表于 06-04 14:28 412次阅读
    无风扇<b class='flag-5'>迷你</b>工控机选购指南

    漫画图解 电感器 抗干扰元器件指南(全彩PDF版)

    漫画图解电感基础知识(高清PDF) 内容:很形象的漫画和语言图解关于电感器的入门基础知识,让电子初学者也能轻松的看懂电子电路。 纯分享贴,有需要可以直接下载附件获取完整资料! (如果内容有帮助可以关注、点赞、评论支持一下哦~)
    发表于 05-13 15:49

    PCB封装图解

    PCB封装图解——详细介绍了各种封装的具体参数,并介绍了如何进行封装制作 纯分享贴,有需要可以直接下载附件获取文档! (如果内容有帮助可以关注、点赞、评论支持一下哦~)
    发表于 04-22 13:44

    无刷电机的绕制和接线方法及实物图解

    下方附件可打开*附件:无刷电机的绕制和接线方法及实物图解.doc
    发表于 03-17 20:00

    提升企业效能:迷你工作站的潜力

    杰和科技迷你工作站WA814正式上线以来,客户们和合作伙伴就对这款产品表现出了浓厚的兴趣,迫不及待地想要深入了解并亲身体验它所带来的价值。对比传统的工作站,杰和迷你工作站WA814只有3.4L的小巧体积,外出工作也能随身携带。接下来,就给大家讲解
    的头像 发表于 01-06 11:02 650次阅读
    提升企业效能:<b class='flag-5'>迷你</b>工作站的潜力

    DRV2605LDGS触觉驱动迷你板用户指南

    电子发烧友网站提供《DRV2605LDGS触觉驱动迷你板用户指南.pdf》资料免费下载
    发表于 01-02 16:07 3次下载
    DRV2605LDGS触觉驱动<b class='flag-5'>迷你</b>板用户指南

    DRV2604LDGS触觉驱动迷你板用户指南

    电子发烧友网站提供《DRV2604LDGS触觉驱动迷你板用户指南.pdf》资料免费下载
    发表于 01-02 16:06 0次下载
    DRV2604LDGS触觉驱动<b class='flag-5'>迷你</b>板用户指南