10个IO口竟然能驱动90颗LED做成的耳环,还有各种灯光效果,怎么做到的?(项目开源)

21ic电子网 2026-09-21 14:03

见过LED流水灯,也见过各种RGB灯环,但把90颗LED塞进一块直径只有24mm的PCB里,做成一副可以戴在耳朵上的电子耳环,还是挺有意思的。

最近看到一个国外的开源项目,叫做HALO-90。

10个IO口竟然能驱动90颗LED做成的耳环,还有各种灯光效果,怎么做到的?(项目开源)图1

整个耳环就是一块圆形PCB,正面排满了红色LED,背面则是单片机、麦克风和纽扣电池。不仅能显示各种灯光效果,还能跟着周围的音乐节奏闪烁。

10个IO口竟然能驱动90颗LED做成的耳环,还有各种灯光效果,怎么做到的?(项目开源)图2

项目的硬件、固件、PCB和外壳设计资料都已经开源,喜欢折腾的朋友可以自己复刻一套。

90颗LED,10个IO口就能搞定。

HALO-90的正面排列了90颗0402封装的红色LED,每颗间隔4°,刚好组成一个完整的圆环。

10个IO口竟然能驱动90颗LED做成的耳环,还有各种灯光效果,怎么做到的?(项目开源)图3

这里采用的是Charlieplexing(查理复用)驱动方式,利用GPIO高电平、低电平和高阻态之间的切换,让10根IO线实现90颗LED的独立控制。

10个IO口竟然能驱动90颗LED做成的耳环,还有各种灯光效果,怎么做到的?(项目开源)图4

当然,这些LED并不是同时持续点亮的,而是通过高速扫描,利用人眼的视觉暂留形成完整的发光效果。

下面所示的函数可以根据 LED 编号获取列和行:

void setLed(uint8_t led);void ledHigh(uint8_t led);void ledLow(uint8_t led);uint8_t col = led / 9;uint8_t topElements = 9 - col;uint8_t row = 9 - (led % 9);if (topElements <= (9 - row)) {  row--;}

要关闭 LED 灯,需要将列和行都设置为高阻抗。要打开 LED 灯,需要将列设置为高阻抗,将行设置为低阻抗。

相比给每颗LED单独分配一个GPIO,这种方案省下了大量引脚,也不需要额外增加LED驱动芯片。

灯珠成本对比WS2812便宜很多,不过这个就只能单色了。

不过,驱动程序和PCB布线就没那么简单了。

灯珠用普通0402红色灯珠。

10个IO口竟然能驱动90颗LED做成的耳环,还有各种灯光效果,怎么做到的?(项目开源)图5

主控选用意法半导体的STM8L151G4,一颗主频16MHz的8位低功耗单片机,后面给它移植到国产MCU上。

10个IO口竟然能驱动90颗LED做成的耳环,还有各种灯光效果,怎么做到的?(项目开源)图6

为了让灯光能跟着音乐变化,板上还集成了一颗MEMS麦克风,通过ADC采集声音信号,再由程序控制LED显示。麦克风选择了Knowles SPW2430HR5H-B,可以使用Adafruit的扩展板轻松进行测试。

10个IO口竟然能驱动90颗LED做成的耳环,还有各种灯光效果,怎么做到的?(项目开源)图7

按钮采用超薄微型触觉开关,KXT311LHS,触发力很低,100g,用指甲边缘可以轻松按下。

10个IO口竟然能驱动90颗LED做成的耳环,还有各种灯光效果,怎么做到的?(项目开源)图8

惯性测量单元也是ST的6 自由度惯性测量单元 (IMU),集成了三轴加速度计和三轴陀螺仪。

10个IO口竟然能驱动90颗LED做成的耳环,还有各种灯光效果,怎么做到的?(项目开源)图9

板子采用4层PCB设计,厚度只有1mm,背面安装了一颗CR2032纽扣电池,装上电池后,整个耳环重量约5.2g。

10个IO口竟然能驱动90颗LED做成的耳环,还有各种灯光效果,怎么做到的?(项目开源)图10

目前固件提供了三种灯光模式:

  • 音乐律动模式: 根据麦克风采集到的声音幅度,让LED跟着音乐变化。
  • HALO光环模式: 通过高速扫描,形成连续发光的圆环效果。
  • Sparkle闪烁模式: 随机点亮少量LED,看起来就像星星一样闪烁。

几种模式可以通过板上的微型按键切换,长按500ms还可以关闭LED,让单片机进入深度休眠。

一颗纽扣电池,续航能有多久?

90颗LED挤在这么小的PCB上,功耗自然是个需要考虑的问题。

根据作者公布的测试数据,音乐律动模式的平均电流约为11.71mA,HALO光环模式约10.88mA,而Sparkle闪烁模式只有2.01mA。

10个IO口竟然能驱动90颗LED做成的耳环,还有各种灯光效果,怎么做到的?(项目开源)图11

HALO光环模式

10个IO口竟然能驱动90颗LED做成的耳环,还有各种灯光效果,怎么做到的?(项目开源)图12
HALO光环模式
10个IO口竟然能驱动90颗LED做成的耳环,还有各种灯光效果,怎么做到的?(项目开源)图13

Sparkle闪烁模式

按照220mAh的电池容量计算,Sparkle模式理论续航约109.5小时,也就是4天多。

不过,这只是按照平均电流估算的结果。CR2032的实际可用容量与放电电流、内阻等因素有关,实际续航还得看具体使用情况。

硬件、固件全部开源https://boardrepo.com/openkolibri/halo-90

作者把原理图、PCB、BOM、固件源码以及3D打印外壳等资料都整理出来了,连用于烧录和测试的弹簧针编程夹具也有介绍。

10个IO口竟然能驱动90颗LED做成的耳环,还有各种灯光效果,怎么做到的?(项目开源)图14
10个IO口竟然能驱动90颗LED做成的耳环,还有各种灯光效果,怎么做到的?(项目开源)图15
10个IO口竟然能驱动90颗LED做成的耳环,还有各种灯光效果,怎么做到的?(项目开源)图16
10个IO口竟然能驱动90颗LED做成的耳环,还有各种灯光效果,怎么做到的?(项目开源)图17
10个IO口竟然能驱动90颗LED做成的耳环,还有各种灯光效果,怎么做到的?(项目开源)图18
10个IO口竟然能驱动90颗LED做成的耳环,还有各种灯光效果,怎么做到的?(项目开源)图19

这个项目的硬件并不复杂,但在这么小的空间里完成90颗LED的布线、复用驱动和电池供电,还是有不少值得参考的地方。

尤其是Charlieplexing驱动方式,平时做一些小型LED显示产品,或者GPIO资源比较紧张的项目,也可以考虑借鉴。

10个IO口竟然能驱动90颗LED做成的耳环,还有各种灯光效果,怎么做到的?(项目开源)图20

当然,如果真打算自己复刻,90颗0402 LED的焊接恐怕是最费眼睛的环节,建议直接安排嘉立创SMT贴片。

最后,耳环钩必须得由纯金的,不然会被女朋友打死!

10个IO口竟然能驱动90颗LED做成的耳环,还有各种灯光效果,怎么做到的?(项目开源)图21

END


10个IO口竟然能驱动90颗LED做成的耳环,还有各种灯光效果,怎么做到的?(项目开源)图22



最后提一句,21ic论坛(bbs.21ic.com)正在招募原创作者,单篇文章奖励最高500元,欢迎广大网友踊跃投稿!10个IO口竟然能驱动90颗LED做成的耳环,还有各种灯光效果,怎么做到的?(项目开源)图23 

往期精选:


10个IO口竟然能驱动90颗LED做成的耳环,还有各种灯光效果,怎么做到的?(项目开源)图24
扫描二维码,关注视频号

请点下【♡】给小编加鸡腿



10个IO口竟然能驱动90颗LED做成的耳环,还有各种灯光效果,怎么做到的?(项目开源)图25



关于科技区角:国内科技展会垂直内容策划服务商,提供从论坛内容全案策划、会展市场化IP打造到精准专业观众一站式邀约服务,以产业内容吸引高质量B端人群,打通展会从议题设计、演讲嘉宾邀约、宣传预热、精准邀观到供需对接全链路。
声明:内容取材于网络,仅代表作者观点,如有内容违规问题,请联系处理。
LED 开源 驱动
more
AI驱动新药研发破局:西湖大学首款1类创新药艾普司韦获批上市
驱动、功率,正在塞进MCU中
数亿!数据驱动全栈脑机接口平台企业,连续完成C轮及D轮融资
告别臃肿与干扰!ADI全新总线+驱动方案,颠覆机器人灵巧手分布式设计
数智聚力盘柜智造|易盼 × 海普锐战略合作,助力打造数据驱动制造新范式
应对AI驱动的攻击,保障数据安全:Oracle 如何从源头保护数据库资产
2026年中国PLC行业相关政策、市场规模及发展前景分析:政策与转型双轮驱动持续释放增量,芯片自主化与软件生态构建成破局关键[图]
AI-YMS 重磅发布|智能驱动良率根因定位,加速半导体工艺闭环
SteamOS迎N卡驱动里程碑,Valve坦言性能磨合仍需数年
2026年中国间充质干细胞培养基产业链、市场规模、及未来趋势预测:临床合规驱动国产替代加速,行业迈入"无血清、成分明确"新纪元[图]
Copyright © 2025-成都区角科技有限公司
蜀ICP备2025143415号-1
  
川公网安备51015602001305号