ESP32 LED 音频灯 V1.0
ESP32灯屏-V1.0
一、项目基本信息
-
项目名称:ESP32 LED 音频灯
-
目标功能:根据声音的做出节奏灯(因为分辨率太低放弃了),换成根据振幅来显示。
-
硬件清单:
- ESP32 C3 MINI
- 显示模组类型 WS2812 10X8的点阵屏
- 麦克使用的是淘宝买的 434模组
二、硬件连接
1.麦克风 I2S 接线(ESP32-C3)
1 | GPIO 2 → SCK (I2S BCLK) |
2.灯屏(WS2812)接线
1 | GPIO 5 → WS2812 DIN |
控制灯的亮度使得电流在1A内以方便usb供电
三、软件部分
1. I2S 音频采集
- 使用 I2S 数字麦克风(右声道)
- 采样率 16 kHz、32bit、双声道格式
- 每次读取固定长度的 DMA 数据缓冲
2. 信号处理
- 一阶高通滤波去直流偏移
- 计算平均振幅(Envelope)
- 通过滑动窗口(长度 10)平滑音量变化
- 对振幅进行对数映射(类似 dB)
- 设置噪声门限(-45dB),无声时保持熄灭
3. LED 显示(10×8 WS2812)
- 根据 10 个历史振幅绘制 10 列音量柱
- 从下向上亮灯,列高度代表音量
- 使用 HSV 色相渐变 + gamma 校正提升效果
- 随时间流动的动态彩虹色
- 约 20–30 FPS 刷新率(delay 50ms)
四、结构

整体外壳采用 分层堆叠式结构,从上到下依次为:
-
上盖(Front Shell)
- 外观外壳,带 USB 开孔、螺丝孔
- 起到遮挡与整体外观功能
-
遮光面板 / 扩散板(薄片)
- 放在 LED 点阵前面,用于柔化光线、提升对比度
-
LED 阵列固定框
- 具有网格状结构,用来固定 WS2812 10×8 点阵灯板位置
- 保证 LED 与面板之间保持一致的间距
-
LED 点阵模组(蓝色)
- 10×8 WS2812 灯板本体
-
主控板平台(黄色)
- 用于安装 ESP32-C3 MINI
- 留有固定孔、走线槽
-
底座(Back Shell)
- 承载所有部件的主底盘
- 包含 USB 线槽、卡扣结构、螺柱位置
- 提供整个设备的结构支撑
五、调试问题与解决方案
1. 遮光材料导致显示模糊
- 初始使用白色柔光板,散射过强、画面发白发糊。
- 解决: 改用 光膜 + 黑色半透明亚克力,既柔光又保持清晰对比。
2. FFT 频谱效果不佳
-
10×8 分辨率太低,无法显示细节,频谱模式杂乱。
-
解决: 放弃频谱,改为 基于振幅的柱状显示,配合去直流、对数映射和噪声门限,效果更稳定清晰。


六、版本变更记录
v1.0 – 初版完整实现
- 完成 ESP32-C3 与 WS2812 10×8 点阵屏的驱动与控制
- 实现 I2S 数字麦克风采集与振幅计算
- 使用一阶高通滤波去直流,并加入振幅滑动窗口平滑处理
- 引入 HSV 彩色渐变与 gamma 校正,灯效更自然
- 设置噪声门限(-45dB),无声时保持稳定
- 控制 LED 亮度,使整机功耗 ≤ 1A(USB 供电稳定)
- 因 10×8 分辨率较低,放弃 FFT 频谱模式,改为振幅柱状灯效果
- 外壳材料从白色柔光板改为“光膜 + 黑色半透明亚克力”,视觉更清晰
- 完成三层外壳结构设计(面板 / 灯板框架 / 底壳),并增加 USB 开孔与散热槽
七、未来规划
- 增加像素点
- 找到好的供电方案
- 用傅里叶变换来执行
- 加入交互案件
- 增加测试点
- 考虑电源
- 散热
- io驱动能力
- 找好的算法-FLIP