kubo
文章14
标签40
分类5

文章归档

ESP32 LED 音频灯 V1.0

ESP32 LED 音频灯 V1.0

ESP32灯屏-V1.0

一、项目基本信息

  • 项目名称:ESP32 LED 音频灯

  • 目标功能:根据声音的做出节奏灯(因为分辨率太低放弃了),换成根据振幅来显示。

  • 硬件清单

    • ESP32 C3 MINI
    • 显示模组类型 WS2812 10X8的点阵屏
    • 麦克使用的是淘宝买的 434模组

二、硬件连接

1.麦克风 I2S 接线(ESP32-C3)

1
2
3
GPIO 2   → SCK       (I2S BCLK)
GPIO 3 → WS/LRCLK (I2S LRCLK)
GPIO 10 → SD (I2S DATA – mic → ESP32C3)

2.灯屏(WS2812)接线

1
2
3
GPIO 5 → WS2812 DIN
5V 电源 → LED +5V
GND → LED GND(注意与 ESP32 共地)

控制灯的亮度使得电流在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)

四、结构

image

整体外壳采用 ​分层堆叠式结构,从上到下依次为:

  1. 上盖(Front Shell)

    • 外观外壳,带 USB 开孔、螺丝孔
    • 起到遮挡与整体外观功能
  2. 遮光面板 / 扩散板(薄片)

    • 放在 LED 点阵前面,用于柔化光线、提升对比度
  3. LED 阵列固定框

    • 具有网格状结构,用来固定 WS2812 10×8 点阵灯板位置
    • 保证 LED 与面板之间保持一致的间距
  4. LED 点阵模组(蓝色)

    • 10×8 WS2812 灯板本体
  5. 主控板平台(黄色)

    • 用于安装 ESP32-C3 MINI
    • 留有固定孔、走线槽
  6. 底座(Back Shell)

    • 承载所有部件的主底盘
    • 包含 USB 线槽、卡扣结构、螺柱位置
    • 提供整个设备的结构支撑

五、调试问题与解决方案

1. 遮光材料导致显示模糊

  • 初始使用白色柔光板,散射过强、画面发白发糊。
  • 解决: 改用 光膜 + 黑色半透明亚克力,既柔光又保持清晰对比。

2. FFT 频谱效果不佳

  • 10×8 分辨率太低,无法显示细节,频谱模式杂乱。

  • 解决: 放弃频谱,改为 基于振幅的柱状显示,配合去直流、对数映射和噪声门限,效果更稳定清晰。

image

屏幕截图 2025-11-19 141540

六、版本变更记录

v1.0 – 初版完整实现

  • 完成 ESP32-C3 与 WS2812 10×8 点阵屏的驱动与控制
  • 实现 I2S 数字麦克风采集与振幅计算
  • 使用一阶高通滤波去直流,并加入振幅滑动窗口平滑处理
  • 引入 HSV 彩色渐变与 gamma 校正,灯效更自然
  • 设置噪声门限(-45dB),无声时保持稳定
  • 控制 LED 亮度,使整机功耗 ≤ 1A(USB 供电稳定)
  • 因 10×8 分辨率较低,放弃 FFT 频谱模式,改为振幅柱状灯效果
  • 外壳材料从白色柔光板改为“光膜 + 黑色半透明亚克力”,视觉更清晰
  • 完成三层外壳结构设计(面板 / 灯板框架 / 底壳),并增加 USB 开孔与散热槽

七、未来规划

  • 增加像素点
  • 找到好的供电方案
  • 用傅里叶变换来执行
  • 加入交互案件
  • 增加测试点
  • 考虑电源
  • 散热
  • io驱动能力
  • 找好的算法-FLIP