
【基于Air001的智能彩灯钥匙扣】
简介
爆肝手搓!我为8x8像素钥匙扣打造了专属灵魂固件!它能展示酷炫光效,还能玩转贪吃蛇、弹珠游戏,更有充电动画和掉电记忆亮度调节,科技感爆棚!项目基于Arduino,代码完全开源,初学者也能轻松上手!
简介:爆肝手搓!我为8x8像素钥匙扣打造了专属灵魂固件!它能展示酷炫光效,还能玩转贪吃蛇、弹珠游戏,更有充电动画和掉电记忆亮度调节,科技感爆棚!项目基于Arduino,代码完全开源,初学者也能轻松上手!开源协议
:GPL 3.0
(未经作者授权,禁止转载)描述
个人主页
💌 项目介绍
这不仅是一个可以亮灯的钥匙扣,还实现了炫酷的动画效果,你甚至可以在上面玩游戏!
该项目基于极具性价比的Air001芯片,整体尺寸(含3D外壳)仅有2.5cm * 3.5cm,小巧便携,软件基于 Arduino IDE 开发,拥有极低的入门门槛,代码结构清晰,对初学者和小白非常友好。
- 硬件成本低,将更多的注意力放在了软件上。它不仅仅可以亮灯,还实现了炫酷的动画效果,甚至可以在上面玩游戏。
- 小巧便携,该钥匙扣的大小仅为2.5cm * 3.5cm(包含3D外壳)
- 电源管理:精确检测电池电量,而且充电可触发充电动画
- 二次开发:资料完善,软硬件全开源,喜欢什么图案可以自己DIY设计,非常浪漫的礼物
🕹 项目功能
💡 动画效果
- 火焰效果:实现动态逼真的火焰燃烧效果。
- 流星雨:随机生成颜色各异的流星,带有优雅的拖尾渐隐效果。
- 彩虹渐变:丝滑的全屏彩虹渐变,色彩过渡自然,且性能经过优化。
- 彩虹心形:在正确的心形图案上实现整体彩虹色的平滑呼吸渐变。
- 跳动的心:经典的大小交替心形图案,模拟心跳效果。
🎮 复古游戏 (Game)
- 动态菜单图标:所有游戏在选择菜单中都设计了独特的动态Logo
- 贪吃蛇 (Snake):经典的贪吃蛇游戏,支持四向控制,详细操作方法参照 使用手册 章节
- 弹珠游戏 (Pinball):可控制的挡板,物理反弹的小球,每次被挡板反弹后小球都会加速
- 生命游戏 (Game of Life):康威生命游戏的经典模拟,可作为一种程序化的屏保。
🖼️ 静态图片 (Picture)
内置多种像素画
- 修猫
- 桃子
- 爱心
- 小鸭
- 剑
- 修勾
🆎 字母 (Letter)
显示26个字母
🔢 数字 (Letter)
显示10个数字
🔧 工具 (Tool)
- 亮度调节:支持五级亮度调节,拥有直观的UI界面。
- EEPROM掉电保存:亮度设置后会自动保存在EEPROM中,断电重启后无需重新设置。
🔋 电源管理 (Power Management)
- 电量检测:ADC电池检测电路。
- 充电动画:基于硬件引脚状态变化检测,接入USB即显示充电动画。
- 电量显示:在非游戏状态下,可随时通过左右组合键查看当前电量,不同电量等级对应不同电量格数。
🔍 原理解析(硬件说明)
主控Air001
钥匙扣主控选择的是Air001,我一直对这个芯片很感兴趣,合宙公司的 32位芯片,虽然引脚少了一点,但成本这么低而且功能齐全,还要啥自行车。
- 成本巨低 在淘宝上可以单买,不算上邮费的话大概是五毛钱一颗芯片,现在好像涨价了。
- 易焊接 芯片封装为TSSOP-20,焊接难度很低。
- 开发 主流可以使用Keil、Arduino开发,资料很齐全,即使是初学者也可以很快的上手,官方资料链接

灯珠矩阵
钥匙扣的主体是由64颗WS2812彩灯(2020封装)组成的8x8矩阵,焊接的时候有点难度,可以用低温锡膏配合热风枪。
-
供电方案: 整个灯珠矩阵由3.7V锂电池直接供电。经过实测,在这一电压下,WS2812灯珠能够被有效驱动,亮度表现出色,同时也简化了电源部分的电路设计,无需额外的升压(Boost)电路。
-
驱动协议与控制: 控制引脚选择了PA7,使用SPI协议驱动,彩灯的驱动代码我封装到了Arduino库中,可以直接调用使用,库的名称是 WS2812_SYC_Air001,想要学习底层驱动的可以通过链接直接参考代码源文件
-
PCB布局: 在PCB设计阶段,灯珠矩阵的物理排布采用了特定的 “Z”字形布局。这种布局决定了从灯珠0到灯珠63的线性索引与其在二维矩阵中的 (x, y) 坐标之间的映射关系,二次开发时需要特别注意,这样才能在代码中精确控制亮起哪些灯。

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

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

Type-c
选择了6pin贴片Type-c,现在最常用的接口,方便充电,使用6pin也比较好焊接。
按键
钥匙扣有左右两个按键,电路中并没有过多的处理。因此在代码中需要配置为上拉输入
锂电池充电电路
使用CL4064M,封装为SOT-23-5,焊接难度低,还有一个引脚可以检测是否在充电
📖 使用手册
钥匙扣有三个开关,分别是左按键、电源开关、右按键
按键只设置了单击和长按这两种方式
主菜单
在主菜单中可以切换不同的一级菜单,分别为动画、游戏、图片、字母、数字、工具
- 左键:
- 单击:切换
- 长按:无效果
- 右键:
- 单击:确认
- 长按:无效果
💡 动画效果
可以切换不同的动画效果,分别为火焰、彩虹灯、跳动的心、流星雨
- 左键:
- 单击:切换
- 长按:无效果
- 右键:
- 单击:无效果
- 长按:退回到主菜单
🎮 复古游戏
可以切换不同的游戏,分别为弹珠游戏、贪吃蛇、康威生命游戏
- 左键:
- 单击:切换
- 长按:无效果
- 右键:
- 单击:无效果
- 长按:退回到主菜单
弹珠游戏
游戏失败时,点击任意键重新开始
- 左键:
- 单击:挡板左移一格
- 长按:无效果
- 右键:
- 单击:挡板右移一格
- 长按:退回到主菜单
贪吃蛇
游戏失败时,点击任意键重新开始
以下描述的方向的参考系均为钥匙扣本身
当蛇头朝左时
- 左键:
- 单击:蛇头朝下转
- 长按:无效果
- 右键:
- 单击:蛇头朝上转
- 长按:退回到主菜单
当蛇头朝右时
- 左键:
- 单击:蛇头朝下转
- 长按:无效果
- 右键:
- 单击:蛇头朝上转
- 长按:退回到主菜单
当蛇头朝上时
- 左键:
- 单击:蛇头朝左转
- 长按:无效果
- 右键:
- 单击:蛇头朝右转
- 长按:退回到主菜单
当蛇头朝下时
- 左键:
- 单击:蛇头朝左转
- 长按:无效果
- 右键:
- 单击:蛇头朝右转
- 长按:退回到主菜单
康威生命游戏
康威的生命游戏无需操作,会在最后趋向于一个平衡的状态
- 左键:
- 单击:无效果
- 长按:无效果
- 右键:
- 单击:无效果
- 长按:退回到主菜单
🖼️ 静态图片
可以切换不同的图片,分别为修猫、桃子、爱心、小鸭、剑、修勾
- 左键:
- 单击:切换
- 长按:无效果
- 右键:
- 单击:无效果
- 长按:退回到主菜单
🆎 字母
可以切换不同的字母,共26个
- 左键:
- 单击:切换
- 长按:无效果
- 右键:
- 单击:无效果
- 长按:退回到主菜单
🔢 数字
可以切换不同的数字,共10个
- 左键:
- 单击:切换
- 长按:无效果
- 右键:
- 单击:无效果
- 长按:退回到主菜单
🔧 工具
可以切换不同的亮度,共5档
- 左键:
- 单击:切换
- 长按:无效果
- 右键:
- 单击:确认并保存亮度
- 长按:退回到主菜单,不保存
🔋 电量检测
在非游戏运行中的状态下时,同时按下左右键可以显示当前电量,共有5档,电量显示3s后恢复之前的状态
注意事项
锂电池
电池推荐购买602025,3.7V锂电池
有三种方法连接电池,都需要有一定的动手能力
1、购买带接头的电池,购买对应的母线,将母线焊接在PCB上并连接电池
2、购买不带接头的电池,购买对应的母线和公线,将公线焊接在电池上,并将母线焊接在PCB上并连接电池
3、购买不带接头的电池,并直接将电池焊接在PCB上,最方便但不推荐,线容易断,打个胶的话那就没问题
记得把电池线中裸露的金属部位用电工胶布捆一捆,避免出现短路情况
遮光板
实际上使用的时候,灯光会比较闪,因此可以买1mm厚的遮光板来让效果更好(照片中没有安装),遮光板的厚度在设计外壳时有考虑到,会有一个槽
实物图
钥匙扣斜刘海顺便致敬陶喆 ⬇
硬件清单
遮光板(1mm)、钥匙扣、602025锂电池、PCB、3D外壳(表壳)、3D外壳(背壳)、TTL转串口模块(烧录)
请参照附件中的 购买链接
下单步骤
PCB下单
嘉立创每个月都有两次免费打样的机会
在项目的PCB中点击下单

板厚选择1.2或1.6都可以

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

其他的根据系统提示以及个人爱好完成选择
3D外壳下单
嘉立创每个月有一次免费的3D打样机会
将附件中的3D文件(表壳和底壳)拖动进去

免费打样需要选择X树脂

选择完成后即可免费打样

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

安装必要的库
打开库管理器

点击INSTALL安装这个库,等待安装完成
这个库也是我写的,在里面实现了较为底层的代码,封装好了方便二次开发调用,感兴趣的话可以去Github仓库看一下原理是什么,开发的语言是C++,但假如你有C语言的基础也是很容易能理解的
https://github.com/Eason-SYC/WS2812_SYC_Air001
安装板级支持包
在线安装
打开File -> Preferences

点击箭头位置

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

点击板级支持包图标

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

安装完成

正确选择芯片

尝试编译

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

如果在线安装失败,可以看下面的离线安装
离线安装
打开File -> Preferences

在电脑中打开这个位置

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

正确选择芯片

尝试编译

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

烧录步骤
请注意,为了优化成本与空间,本设计省略了Boot与Rst物理按键。在调试阶段,可利用面包板构建外部按键电路,并配合TTL电平转换模块进行操作。
烧录程序时,需将Boot引脚置于高电平;烧录完成后,将RST引脚置于低电平,即可启动程序运行。

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


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

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

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

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

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

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

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

开始在Arduino中进行配置
选择正确的芯片

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

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

耶!马上进行最后一步,烧录代码到钥匙扣中
一直按住Boot按键,再按一下复位按键,再把两个按键都松开,此时芯片进入烧录模式(注意是要在通电的时候操作)
点击图标上传代码,等待代码编译

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

再次按下复位按键,恭喜你,此时程序将开始运行,会显示一个跳动的心
此时可以组装外壳和电池开始愉快的玩耍了,要注意的是,仅用串口模块的3.3V供电时可能会出现灯珠很暗或者有色差的情况,用电池供电就正常了
部分代码分析
持续更新中
脚本使用方法
持续更新中
版本更新记录
2025/10/09:首次上传
2025/10/10:更新烧录步骤
2025/10/13:附件更新 购买链接,资料更新下单步骤和环境安装步骤
2025/10/16:附件的 购买链接 更新,资料更新 烧录步骤 ,教程已非常完整
设计图
未生成预览图,请在编辑器重新保存一次BOM
暂无BOM
克隆工程知识产权声明&复刻说明
本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。
请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。









