站内搜索
发作品签到
【基于Air001的智能彩灯钥匙扣】
专业版

【基于Air001的智能彩灯钥匙扣】

简介

爆肝手搓!我为8x8像素钥匙扣打造了专属灵魂固件!它能展示酷炫光效,还能玩转贪吃蛇、弹珠游戏,更有充电动画和掉电记忆亮度调节,科技感爆棚!项目基于Arduino,代码完全开源,初学者也能轻松上手!

简介:爆肝手搓!我为8x8像素钥匙扣打造了专属灵魂固件!它能展示酷炫光效,还能玩转贪吃蛇、弹珠游戏,更有充电动画和掉电记忆亮度调节,科技感爆棚!项目基于Arduino,代码完全开源,初学者也能轻松上手!
星火计划2025
复刻成本:13

开源协议

GPL 3.0

(未经作者授权,禁止转载)
创建时间:2025-09-23 22:19:40更新时间:2025-10-16 08:54:52

描述

个人主页

💌 项目介绍

这不仅是一个可以亮灯的钥匙扣,还实现了炫酷的动画效果,你甚至可以在上面玩游戏!

该项目基于极具性价比的Air001芯片,整体尺寸(含3D外壳)仅有2.5cm * 3.5cm,小巧便携,软件基于 Arduino IDE 开发,拥有极低的入门门槛,代码结构清晰,对初学者和小白非常友好。

  • 硬件成本低,将更多的注意力放在了软件上。它不仅仅可以亮灯,还实现了炫酷的动画效果,甚至可以在上面玩游戏。
  • 小巧便携,该钥匙扣的大小仅为2.5cm * 3.5cm(包含3D外壳)
  • 电源管理:精确检测电池电量,而且充电可触发充电动画
  • 二次开发:资料完善,软硬件全开源,喜欢什么图案可以自己DIY设计,非常浪漫的礼物

🕹 项目功能

💡 动画效果

  • 火焰效果:实现动态逼真的火焰燃烧效果。
  • 流星雨:随机生成颜色各异的流星,带有优雅的拖尾渐隐效果。
  • 彩虹渐变:丝滑的全屏彩虹渐变,色彩过渡自然,且性能经过优化。
  • 彩虹心形:在正确的心形图案上实现整体彩虹色的平滑呼吸渐变。
  • 跳动的心:经典的大小交替心形图案,模拟心跳效果。
火焰.gif 流星雨.gif

🎮 复古游戏 (Game)

  • 动态菜单图标:所有游戏在选择菜单中都设计了独特的动态Logo
  • 贪吃蛇 (Snake):经典的贪吃蛇游戏,支持四向控制,详细操作方法参照 使用手册 章节
  • 弹珠游戏 (Pinball):可控制的挡板,物理反弹的小球,每次被挡板反弹后小球都会加速
  • 生命游戏 (Game of Life):康威生命游戏的经典模拟,可作为一种程序化的屏保。
贪吃蛇.gif

🖼️ 静态图片 (Picture)

内置多种像素画

  • 修猫
  • 桃子
  • 爱心
  • 小鸭
  • 修勾
桃子 剑

🆎 字母 (Letter)

显示26个字母

字母.gif

🔢 数字 (Letter)

显示10个数字

数字.gif

🔧 工具 (Tool)

  • 亮度调节:支持五级亮度调节,拥有直观的UI界面。
  • EEPROM掉电保存:亮度设置后会自动保存在EEPROM中,断电重启后无需重新设置。
工具.gif

🔋 电源管理 (Power Management)

  • 电量检测:ADC电池检测电路。
  • 充电动画:基于硬件引脚状态变化检测,接入USB即显示充电动画。
  • 电量显示:在非游戏状态下,可随时通过左右组合键查看当前电量,不同电量等级对应不同电量格数。
火焰.gif 流星雨.gif

🔍 原理解析(硬件说明)

主控Air001

钥匙扣主控选择的是Air001,我一直对这个芯片很感兴趣,合宙公司的 32位芯片,虽然引脚少了一点,但成本这么低而且功能齐全,还要啥自行车。

  • 成本巨低 在淘宝上可以单买,不算上邮费的话大概是五毛钱一颗芯片,现在好像涨价了。
  • 易焊接 芯片封装为TSSOP-20,焊接难度很低。
  • 开发 主流可以使用Keil、Arduino开发,资料很齐全,即使是初学者也可以很快的上手,官方资料链接

Air001.png

灯珠矩阵

钥匙扣的主体是由64颗WS2812彩灯(2020封装)组成的8x8矩阵,焊接的时候有点难度,可以用低温锡膏配合热风枪。

  • 供电方案: 整个灯珠矩阵由3.7V锂电池直接供电。经过实测,在这一电压下,WS2812灯珠能够被有效驱动,亮度表现出色,同时也简化了电源部分的电路设计,无需额外的升压(Boost)电路。

  • 驱动协议与控制: 控制引脚选择了PA7,使用SPI协议驱动,彩灯的驱动代码我封装到了Arduino库中,可以直接调用使用,库的名称是 WS2812_SYC_Air001,想要学习底层驱动的可以通过链接直接参考代码源文件

  • PCB布局: 在PCB设计阶段,灯珠矩阵的物理排布采用了特定的 “Z”字形布局。这种布局决定了从灯珠0到灯珠63的线性索引与其在二维矩阵中的 (x, y) 坐标之间的映射关系,二次开发时需要特别注意,这样才能在代码中精确控制亮起哪些灯。

8x8灯珠.png

调试接口

为了节省体积,选了ZX-SH1.0-6P封装,调试的时候需要一条转接线

转接线.jpg

调试接口

单开关电路

使用拨动开关非常容易损坏,使用自锁开关又有点占体积,因此最后选择了使用单开关电路,效果还不错
开关.png

Type-c

选择了6pin贴片Type-c,现在最常用的接口,方便充电,使用6pin也比较好焊接。

Type-C 接口图

按键

钥匙扣有左右两个按键,电路中并没有过多的处理。因此在代码中需要配置为上拉输入

按键

锂电池充电电路

使用CL4064M,封装为SOT-23-5,焊接难度低,还有一个引脚可以检测是否在充电

充电电路

📖 使用手册

钥匙扣有三个开关,分别是左按键、电源开关、右按键
按键只设置了单击和长按这两种方式

主菜单

在主菜单中可以切换不同的一级菜单,分别为动画、游戏、图片、字母、数字、工具

  • 左键:
    • 单击:切换
    • 长按:无效果
  • 右键:
    • 单击:确认
    • 长按:无效果

💡 动画效果

可以切换不同的动画效果,分别为火焰、彩虹灯、跳动的心、流星雨

  • 左键:
    • 单击:切换
    • 长按:无效果
  • 右键:
    • 单击:无效果
    • 长按:退回到主菜单

🎮 复古游戏

可以切换不同的游戏,分别为弹珠游戏、贪吃蛇、康威生命游戏

  • 左键:
    • 单击:切换
    • 长按:无效果
  • 右键:
    • 单击:无效果
    • 长按:退回到主菜单

弹珠游戏

游戏失败时,点击任意键重新开始

  • 左键:
    • 单击:挡板左移一格
    • 长按:无效果
  • 右键:
    • 单击:挡板右移一格
    • 长按:退回到主菜单

贪吃蛇

游戏失败时,点击任意键重新开始
以下描述的方向的参考系均为钥匙扣本身
当蛇头朝左时

  • 左键:
    • 单击:蛇头朝下转
    • 长按:无效果
  • 右键:
    • 单击:蛇头朝上转
    • 长按:退回到主菜单

当蛇头朝右时

  • 左键:
    • 单击:蛇头朝下转
    • 长按:无效果
  • 右键:
    • 单击:蛇头朝上转
    • 长按:退回到主菜单

当蛇头朝上时

  • 左键:
    • 单击:蛇头朝左转
    • 长按:无效果
  • 右键:
    • 单击:蛇头朝右转
    • 长按:退回到主菜单

当蛇头朝下时

  • 左键:
    • 单击:蛇头朝左转
    • 长按:无效果
  • 右键:
    • 单击:蛇头朝右转
    • 长按:退回到主菜单

康威生命游戏

康威的生命游戏无需操作,会在最后趋向于一个平衡的状态

  • 左键:
    • 单击:无效果
    • 长按:无效果
  • 右键:
    • 单击:无效果
    • 长按:退回到主菜单

🖼️ 静态图片

可以切换不同的图片,分别为修猫、桃子、爱心、小鸭、剑、修勾

  • 左键:
    • 单击:切换
    • 长按:无效果
  • 右键:
    • 单击:无效果
    • 长按:退回到主菜单

🆎 字母

可以切换不同的字母,共26个

  • 左键:
    • 单击:切换
    • 长按:无效果
  • 右键:
    • 单击:无效果
    • 长按:退回到主菜单

🔢 数字

可以切换不同的数字,共10个

  • 左键:
    • 单击:切换
    • 长按:无效果
  • 右键:
    • 单击:无效果
    • 长按:退回到主菜单

🔧 工具

可以切换不同的亮度,共5档

  • 左键:
    • 单击:切换
    • 长按:无效果
  • 右键:
    • 单击:确认并保存亮度
    • 长按:退回到主菜单,不保存

🔋 电量检测

在非游戏运行中的状态下时,同时按下左右键可以显示当前电量,共有5档,电量显示3s后恢复之前的状态

注意事项

锂电池

电池推荐购买602025,3.7V锂电池

有三种方法连接电池,都需要有一定的动手能力

1、购买带接头的电池,购买对应的母线,将母线焊接在PCB上并连接电池
2、购买不带接头的电池,购买对应的母线和公线,将公线焊接在电池上,并将母线焊接在PCB上并连接电池
3、购买不带接头的电池,并直接将电池焊接在PCB上,最方便但不推荐,线容易断,打个胶的话那就没问题

记得把电池线中裸露的金属部位用电工胶布捆一捆,避免出现短路情况

遮光板

实际上使用的时候,灯光会比较闪,因此可以买1mm厚的遮光板来让效果更好(照片中没有安装),遮光板的厚度在设计外壳时有考虑到,会有一个槽

实物图

钥匙扣斜刘海顺便致敬陶喆

实物图 结构图
实物图.gif

硬件清单

遮光板(1mm)、钥匙扣、602025锂电池、PCB、3D外壳(表壳)、3D外壳(背壳)、TTL转串口模块(烧录)

请参照附件中的 购买链接

下单步骤

PCB下单

嘉立创每个月都有两次免费打样的机会

在项目的PCB中点击下单

image.png

板厚选择1.2或1.6都可以

image.png

层压顺序直接选择我是采购(手动狗头)

image.png

其他的根据系统提示以及个人爱好完成选择

3D外壳下单

嘉立创每个月有一次免费的3D打样机会

点击进入3D打印下单界面

将附件中的3D文件(表壳和底壳)拖动进去

image.png

免费打样需要选择X树脂

image.png

选择完成后即可免费打样

image.png

环境准备步骤

点击打开环境资料,提取码1234

Arduino下载

Arduino IDE下载地址

点击download下载并自行安装,也可以在网盘的环境资料中下载直接安装

image.png

安装必要的库

打开库管理器

image.png

点击INSTALL安装这个库,等待安装完成

Arduino库

这个库也是我写的,在里面实现了较为底层的代码,封装好了方便二次开发调用,感兴趣的话可以去Github仓库看一下原理是什么,开发的语言是C++,但假如你有C语言的基础也是很容易能理解的

https://github.com/Eason-SYC/WS2812_SYC_Air001

安装板级支持包

在线安装

打开File -> Preferences

image.png

点击箭头位置

image.png

输入以下地址:https://espressif.github.io/arduino-esp32/package_esp32_index.json

image.png

点击板级支持包图标

image.png

搜索框输入Air,就会弹出以下信息,点击INSTALL

image.png

安装完成

image.png

正确选择芯片

image.png

尝试编译
image.png

编译成功,说明环境成功安装

image.png

如果在线安装失败,可以看下面的离线安装

离线安装

打开File -> Preferences

image.png

在电脑中打开这个位置

image.png

将网盘中的AirM2M文件直接拖到此电脑的这个位置,重启Arduino IDE

image.png

正确选择芯片

image.png

尝试编译
image.png

编译成功,说明环境成功安装

image.png

烧录步骤

请注意,为了优化成本与空间,本设计省略了Boot与Rst物理按键。在调试阶段,可利用面包板构建外部按键电路,并配合TTL电平转换模块进行操作。

烧录程序时,需将Boot引脚置于高电平;烧录完成后,将RST引脚置于低电平,即可启动程序运行。

087d228ce2f0e784c9880fe02fea5e0c.jpg

首先要准备一个TTL转串口模块,我这个是无聊的时候自己设计的,市面买不到同款,但是淘宝上可以找到其他款式的,功能一样的

image.png

image.png

再准备一根转接线,购买链接在附件有。连接一下

image.png

在讲解如何烧录前,我们需要先知道这几个引脚分别都对应了什么

c894cff6-dd52-4f75-81ef-0c829bfe5845.png

这下就一目了然了,我们还需准备两个按键、一块面包板、若干公对公杜邦线就可以开始接线了

01c4321d1fd3c3f6067bc617b1aaba81.jpg

如图先连接四根线,
1、钥匙扣的3.7V连接到TTL转串口模块上的3.3V
2、钥匙扣的GND连接到TTL转串口模块上的GND
3、钥匙扣的TX连接到TTL转串口模块上的RX上(重要!勿接错)
4、钥匙扣的RX连接到TTL转串口模块上的TX上(重要!勿接错)
这样就接完一半了
image.png

连接BOOT按键,需要连接两根线
1、BOOT按键的任意一端连接到TTL转串口模块上的3.3V
2、BOOT按键的另一端连接到钥匙扣的Boot
这样就可以实现按下按键的时候,Boot引脚置高电平啦!

3404e787ac45ddcae4ba20e4785a4af0.jpg

紧接着连接RST按键(复位按键),也需要连接两根线
1、RST按键的任意一端连接到TTL转串口模块上的GND
2、RST按键的另一端连接到钥匙扣的NRST
这样就可以实现按下按键的时候,NRST引脚置低电平复位啦!

3d17be8e435e1d1ca802c81bae67d9da.jpg

用type-c连接TTL转串口的Type-c,别接错!

image.png

开始在Arduino中进行配置

选择正确的芯片

image.png

选择正确的串口,每个人电脑的串口名称不一定一样,以自己的为准

image.png

正确配置频率,否则上传之后彩灯会不亮

image.png

耶!马上进行最后一步,烧录代码到钥匙扣中

一直按住Boot按键,再按一下复位按键,再把两个按键都松开,此时芯片进入烧录模式(注意是要在通电的时候操作)
点击图标上传代码,等待代码编译
image.png

芯片编译完成后自动开始上传

ed75c5f4ba3c41c4234790f645a59ea3.png

再次按下复位按键,恭喜你,此时程序将开始运行,会显示一个跳动的心

此时可以组装外壳和电池开始愉快的玩耍了,要注意的是,仅用串口模块的3.3V供电时可能会出现灯珠很暗或者有色差的情况,用电池供电就正常了

部分代码分析

持续更新中

脚本使用方法

持续更新中

版本更新记录

2025/10/09:首次上传
2025/10/10:更新烧录步骤
2025/10/13:附件更新 购买链接,资料更新下单步骤环境安装步骤
2025/10/16:附件的 购买链接 更新,资料更新 烧录步骤 ,教程已非常完整

设计图

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

BOM

暂无BOM

3D模型

序号文件名称下载次数
暂无数据

附件

序号文件名称下载次数
1
WS2812_Keychain.zip
275
2
背壳_V1.4.stl
181
3
表壳_V1.2.stl
152
4
演示视频.mp4
64
5
购买链接.xlsx
278
克隆工程
添加到专辑
0
0
分享
侵权投诉
知识产权声明&复刻说明

本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。

请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。

底部导航