基于 ESP8266/ESP32 使用 Arduino 开发的物联网小彩灯, 支持多种形态多种光效, 配套自研网页/小程序/PC 客户端, 并支持 HomeAssistant 等智能家居平台(TODO)
产品特色:
- 支持多种产品形态: 如灯带, 圆形灯盘, 方形灯板等, 提供简单易用的接口供用户自行适配
- 支持多种光效模式: 如常亮, 闪烁, 呼吸, 流光, 彩虹, 音乐律动等, 参数均可自定义, 自由度高
- 支持音乐律动灯效: 非通过麦克风采集声音, 而是通过配套上位机采集手机/电脑音频, 经上位机算法计算后将结果传输到下位机, 从而实现更好的音乐律动效果
- 支持自定义灯光动画:
通过网页/小程序可自定义灯光动画现仅支持播放动画, 动画编辑器待开发 - 多客户端支持: 配套自研网页/小程序/PC 客户端
目前已在 ESP8266/ESP32/ESP32-C3/ESP32-S3 上测试过, 理论上简单适配一下即可支持其他单片机
我使用的开发板为 WeMos D1 Mini, 使用 D4 脚连接 WS2812B
目前支持两种灯板:
一种为 1 米长的 WS2812B 灯带
另一种为自己画的 WS2812B 圆形灯板, 共有 21 颗灯珠, 整机最大电流 <1.5A, 原理图详见 pcb 目录
如果你想适配其他形态的灯板, 请参考下方教程
目前仅有投影灯形态的产品, 其模型位于 model 目录下
- ESP8266-Arduino (esp8266)
- arduino-esp32 (esp32)
- FastLED
- ArduinoJSON
- arduinoWebSockets
注意: 如果你在 ESP8266 上遇到了第一个灯会随机闪烁的问题, 请降级 ESP8266-Arduino 至 2.7.4 版本, FastLED 降级至 3.4.0 版本, 详见 esp8266/Arduino#8054
注意: 如果你在 ESP32-C3 上遇到了第一个灯不亮, 其余灯随机闪烁的问题, 请更新 FastLED 至 3.7.0 版本, 详见 FastLED/FastLED#1349
根据您的需求修改 config.h 中的配置
预编译好的前端网页已位于 data/www 目录下, 如果你不需要修改前端网页, 则可以跳过这一步
如果修改了前端页面需要自己编译, 则首先需要安装 Node.js 14 或以上版本, 然后进入 web 目录并执行以下命令:
npm install
npm run build
编译后的网页会自动覆盖 data/www 目录
除了需要烧录程序以外, 还需要上传 LittleFS 文件系统, 具体教程可参考 Uploading files to file system
Arduino IDE 2.2.1+ 可使用此插件为 RP2040/ESP8266/ESP32 上传 LittleFS 文件系统: arduino-littlefs-upload
ArduinoOTA 是支持在线升级文件系统的, 但是遗憾的是并不支持差量更新, 为了不丢失用户配置和自定义动画等数据, 我选择把 bin 和资源文件打包为单个二进制文件, 再由上位机进行解析更新
运行根目录下的 pack_ota_bin.py
即可打包升级包 (需要 Python 3.8 或以上版本), 生成的升级包位于 build/upgrade.bin
, 然后使用网页前端的在线升级
功能即可升级
见 Light.hpp
见 LightEffect.hpp
在使用设备自带的网页端的音乐律动模式时, 若提示 因浏览器策略限制无法启动音频采集
时, 请前往chrome://flags/#unsafely-treat-insecure-origin-as-secure 将 Insecure origins treated as secure
设置为 Enabled
并添加设备网页 url 链接到列表中, 然后重启浏览器即可
灯光动画示例见 data/animations/example.csv
本项目代码采用 GPLv3 协议开源, 允许商用, 但商用必须遵循 GPLv3 协议提供给客户完整源代码. 自制的灯板及外壳模型保留所有权利
本项目在开发的过程中也参考了一些其他项目, 在此一并致以感谢:
祝姐姐妹妹生日快乐!