基于ESP-NOW的自同步LED徽章
我在当地一家非营利科技中心担任志愿者,这个项目展示了我们如何制作了一套LED徽章,使其在本地灯光节上自动同步照明效果——无需主控设备、无需配对,也无需中央控制。
每个徽章独立运行,但会定期通过ESP-NOW交换时间信息。由此,它们共同确定一个共享的时间基准,从而实现群体内的协调照明模式。
结果是一个分布式系统,当徽章彼此在范围内时,会自然地“同步”对齐。
功能特点
•基于紧凑型ESP32硬件运行
•使用ESP-NOW实现无线同步
•在主设备(完全分布式系统)中
•稳定视觉对齐的时间量化
•无状态的灯光效果(无需共享状态)
•合理收敛(秒)
它的工作原理
1. 独立时间基准
每个徽章都有独立的内部时钟和灯光效果。
2. 广播时间
徽章会定期通过ESP-NOW将当前时间量化为5毫秒进行传输。
3. 融合
当一个徽章接收到比本地时间更高的另一个徽章的时间戳时,它会将自身的时钟向该时间戳方向调整。
随着时间的推移,所有设备都趋向于共享一个统一的时间参考。
4. 量化(关键技巧)
LED效果并非在精确时间点渲染,而是以固定的时间边界(50毫秒为步长)进行切换。
这可防止抖动,实现视觉上的稳定同步。
5. 无状态效果
光照模式完全由时间生成:
无需历史记录或共享状态,使同步更加可靠。
硬件
主要部件
•ESP32开发板
•WS2812 / NeoPixel LED 环形灯
•电源(锂聚合物电池(+ 充电器)或 USB)
•可选徽章PCB/安装
连线图
在Design Spark中创建的PCB已包含在仓库中,但电路非常简单。
电池和管理电路可省略,如需使用,也可采用ESP-C3 USB电源。
•LED 数据 → ESP32 GPIO 0
•ESP32、电池管理器和LED之间的通用5V电源
•ESP32、电池管理器和LED之间的共通点
注:PCB上有3个较大的焊盘,用于与LED进行有线连接。
软件
关键技术
•ESP-NOW(低延迟广播通信)
•FastLED WS2812 库
•自定义定时同步逻辑
•核心循环概念
每个设备持续:
•更新本地时间
•播出时间
•接收其他时间戳
•如果接收到的时间较高,会略微调整自身时间
•根据当前时间渲染LED
同步逻辑(概念性)
•保持本地时间值
收到另一枚徽章的时间:
•比较差异
•进行微小修正
•自动对齐最近50毫秒的量子时间,实现LED特效。
•这可以避免振荡,并保持所有元素在视觉上的对齐。
结果
•徽章在进入范围后短时间内会同步
•即使出现数据包丢失,效果仍保持稳定
设备之间无可见“战斗”
•支持多个徽章动态加入/退出
演示场景
•会议徽章
•节日可穿戴设备
•互动式团体照明
•群集式视觉效果
构建步骤
•组装ESP32和LED环
•上传固件
•多个徽章的权限
•将它们拉近一些
•让它们自动同步
总结
该项目探讨了如何通过简单的设备实现无需中央控制的协调。通过将轻量级无线通信与基于时间的渲染相结合,构建出一个稳健且可扩展的同步系统。
本文编译自hackster.io





