
桌面级便携式音乐律动蓝牙音响
简介
采用驻极体麦克风接受音乐信号,传入ESP32开发板中做快速傅立叶变换,转化为WS2812灯板的律动信号。小尺寸蓝牙功放板,采用便携式设计。
简介:采用驻极体麦克风接受音乐信号,传入ESP32开发板中做快速傅立叶变换,转化为WS2812灯板的律动信号。小尺寸蓝牙功放板,采用便携式设计。开源协议
:GPL 3.0
描述
项目简介
采用驻极体麦克风接受音乐信号,传入ESP32开发板中做快速傅立叶变换,转化为WS2812灯板的律动信号。小尺寸蓝牙功放板,采用便携式设计。
项目功能
桌面级便携蓝牙音乐律动音响
项目参数
采用驻极体麦克风搭配MAX9814放大器模块,利用其自动增益控制(AGC)和低噪声偏置特性,优化音频信号的信噪比。信号通过ESP32的ADC引脚(如ADC4)输入,支持最高100KSPS采样率
采用ESP32系列芯片(如ESP32-C3),支持Wi-Fi/蓝牙双模(但是蓝牙效果不好,因此另外设计蓝牙功放),集成FFT运算能力。
WS2812B灯板采用级联设计,单线控制(如GPIO9),支持最高800Kbps数据传输速率。每颗灯珠并联0.1μF去耦电容,减少信号干扰。某宝可买8r/个。
原理解析(硬件说明)
信号链路:
声音信号 → 驻极体麦克风 → 信号放大 → ESP32 ADC采样 → FFT频谱分析 → 灯光控制信号 → WS2812灯板

......
软件代码(部分)
const uint8_t max_bright = 15; //亮度 *********************************(可修改)
const uint16_t samples = NUM_LEDS / 4; //采样点数 需是2的平方数
const byte halfsamples = samples / 2; //取采样的一半数量
uint8_t gHue; //颜色变化的变量
int value; //存放读取到声音的adc值
double vReal[samples]; //存放FFT数据必要的数组 无需变动复制粘贴即可
double vImag[samples]; //存放FFT数据必要的数组 无需变动复制粘贴即可
char toData[halfsamples]; //存放一半FFT数据的临时数组
int pointJump[halfsamples]; //顶端跳动的点
int uJump[halfsamples]; // led柱子增长
int dJump[halfsamples]; // led柱子减少
/*****************************************************/
int uValue; //存放fft增长的变量
int dValue; //存放fft减小的变量
int tValue; //存放顶点下降的变量
int toDown = 0; //柱子下降的数据
uint8_t toDownSpeed = 3; //柱子下降的速度
int pointDown = 0; //顶端点下降的变量
uint8_t pointDownSpeed = 9; //顶端点下降的速度
/*****************单次循环setyp函数*********************/
void setup()
{
delay(100); //上电延迟
Serial.println("Ready"); //响应结束发送准备好
FastLED.addLeds(leds, NUM_LEDS).setCorrection(TypicalLEDStrip);
//初始化灯带模板 无需变动复制粘贴即可
FastLED.setBrightness(max_bright); //亮度设置函数
}
材料实物图
3D打印外壳 👍👍推荐嘉立创3D打印👍👍打印文件见附件

WS2812B灯板

ESP32开发板
驻极体麦克风
设计图

BOM


评论