2837浏览
查看: 2837|回复: 24

[ESP8266/ESP32] 【花雕体验】17 Beetle ESP32C3与WS2812的音乐可视化节奏灯

[复制链接]
本帖最后由 驴友花雕 于 2022-7-21 17:14 编辑

MAX9814
是一款低成本高性能麦克风放大器,具有自动增益控制(AGC)和低噪声麦克风偏置。器件具有低噪声前端放大器、可变增益放大(VGA)、输出放大器、麦克风偏置电压发生器和AGC控制电路。
●自动增益控制(AGC)
●3种增益设置(40dB、50dB、60dB)
●可编程动作时间
●可编程动作和释放时间比
●电源电压范围2.7V~5.5V  
●低THD:0.04% (典型值)
●低功耗关断模式
●内置2V低噪声麦克风偏置


【花雕体验】17 Beetle ESP32C3与WS2812的音乐可视化节奏灯图1

驴友花雕  中级技神
 楼主|

发表于 2022-7-10 18:43:59

  【花雕体验】17 Beetle ESP32C3与WS2812屏音乐可视化节奏灯
  实验程序三:通过快速傅里叶变换在ws2812b灯板上显示频谱

  1. /*
  2.   【花雕体验】17 Beetle ESP32C3与WS2812屏音乐可视化节奏灯
  3.   实验程序三:通过快速傅里叶变换在ws2812b灯板上显示频谱
  4. */
  5. #include  "arduinoFFT.h"
  6. #include <FastLED.h>   
  7. #define NUM_LEDS 256   
  8. #define LED_TYPE WS2812
  9. #define COLOR_ORDER GRB
  10. arduinoFFT FFT = arduinoFFT();
  11. CRGB leds[NUM_LEDS];           
  12. #define CHANNEL A0
  13. #define DATA_PIN 6
  14. const uint8_t max_bright = 2;         
  15. const uint16_t samples = NUM_LEDS / 4;
  16. const byte halfsamples = samples / 2;  
  17. uint8_t gHue;                          
  18. int value;                             
  19. double vReal[samples];                 
  20. double vImag[samples];                 
  21. char toData[halfsamples];              
  22. int pointJump[halfsamples];
  23. int uJump[halfsamples];     
  24. int dJump[halfsamples];   
  25. int uValue;                 
  26. int dValue;                 
  27. int tValue;                 
  28. int toDown = 0;            
  29. uint8_t toDownSpeed = 3;   
  30. int pointDown = 0;         
  31. uint8_t pointDownSpeed = 9;
  32. void setup(){
  33.   delay(100);              
  34.   Serial.println("Ready");
  35.   FastLED.addLeds<LED_TYPE, DATA_PIN, COLOR_ORDER>(leds, NUM_LEDS).setCorrection(TypicalLEDStrip);
  36.   FastLED.setBrightness(max_bright);
  37. }
  38. void loop(){
  39.   FastLED.clear();                        
  40.   EVERY_N_MILLISECONDS(10) {
  41.     gHue += 10;  
  42.   }
  43.   for (int i = 0; i < samples; i++)        
  44.   {
  45.     value = analogRead(CHANNEL);
  46.     vReal[i] = value;      
  47.     vImag[i] = 0.0;         
  48.   }
  49.   
  50.   FFT.Windowing(vReal, samples, FFT_WIN_TYP_HAMMING, FFT_FORWARD);
  51.   FFT.Compute(vReal, vImag, samples, FFT_FORWARD);
  52.   FFT.ComplexToMagnitude(vReal, vImag, samples);
  53.   
  54.   for (int i = 0; i < halfsamples; i++)
  55.   {
  56.     toData[i] = vReal[i + halfsamples / 2];   
  57.     toData[i] = constrain(toData[i], 0, 100);
  58.     toData[i] = map(toData[i], 0, 100, 1, 7);
  59.   }
  60.   for (int i = 0; i < halfsamples; i++)
  61.   {
  62.     uValue = toData[i];   
  63.     uJump[i]++;            
  64.     if (uValue > uJump[i])
  65.     {
  66.       uValue = uJump[i];
  67.     }
  68.     else
  69.     {
  70.       uJump[i] = uValue;
  71.     }
  72.     dValue = uValue;
  73.     toDown++;                     
  74.     if (toDown % toDownSpeed == 0)
  75.     {
  76.       dJump[i]--;
  77.       toDown = 0;
  78.     }
  79.     if (dValue > pointJump[i])
  80.     {
  81.       dJump[i] = dValue;
  82.     }
  83.     else
  84.     {
  85.       dValue = dJump[i];
  86.     }
  87.     tValue = uValue;                     
  88.     pointDown++;                        
  89.     if (pointDown % pointDownSpeed == 0)
  90.     {
  91.       pointJump[i]--;
  92.       pointDown = 0;  
  93.     }
  94.     if (tValue > pointJump[i])
  95.     {
  96.       pointJump[i] = tValue;
  97.     }
  98.     else
  99.     {
  100.       tValue = pointJump[i];
  101.     }
  102.     fill_rainbow(leds + 8 * i, uValue, gHue, 30);
  103.     fill_rainbow(leds + 8 * i, dValue, gHue, 30);
  104.     fill_solid(leds + 8 * i + tValue, 1, CRGB::White);
  105.    
  106.   }
  107.   FastLED.show();
  108.   delay(10);      
  109. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-7-21 17:14:10

  【花雕体验】17 Beetle ESP32C3与WS2812屏音乐可视化节奏灯
  实验程序四:MegunoLink音乐反应式LED灯带
  模块接线:WS2812B接D6
  MAX9814   ESP32_C3
  VCC          5V
  GND         GND
  OUT          A0

  1. /*
  2.   【花雕体验】17 Beetle ESP32C3与WS2812屏音乐可视化节奏灯
  3.   实验程序四:MegunoLink音乐反应式LED灯带
  4.   模块接线:WS2812B接D6
  5.   MAX9814   ESP32_C3
  6.   VCC          5V
  7.   GND         GND
  8.   OUT          A0
  9. */
  10. #include<FastLED.h>
  11. #include<MegunoLink.h>
  12. #include<Filter.h>
  13. // define necessary parameters
  14. #define N_PIXELS  24
  15. #define MIC_PIN   A0
  16. #define LED_PIN   6
  17. // the following parameters can be tweaked according to your audio levels
  18. #define NOISE 150
  19. #define TOP   (N_PIXELS+2) // allow the max level to be slightly off scale
  20. #define LED_TYPE  WS2811
  21. #define BRIGHTNESS  18     // a little dim for recording purposes
  22. #define COLOR_ORDER GRB
  23. // declare the LED array
  24. CRGB leds[N_PIXELS];
  25. // define the variables needed for the audio levels
  26. int lvl = 0, minLvl = 0, maxLvl = 100; // tweak the min and max as needed
  27. // instantiate the filter class for smoothing the raw audio signal
  28. ExponentialFilter<long> ADCFilter(5,0);
  29. void setup() {
  30.   // put your setup code here, to run once:
  31.   Serial.begin(115200);
  32.   // initialize the LED object
  33.   FastLED.addLeds<LED_TYPE,LED_PIN,COLOR_ORDER>(leds,N_PIXELS).setCorrection(TypicalLEDStrip);
  34.   FastLED.setBrightness(BRIGHTNESS);
  35. }
  36. void loop() {
  37.   // put your main code here, to run repeatedly:
  38.   // read the audio signal and filter it
  39.   int n, height;
  40.   n = analogRead(MIC_PIN);
  41.   // remove the MX9614 bias of 1.25VDC
  42.   n = abs(1023 - n);
  43.   // hard limit noise/hum
  44.   n = (n <= NOISE) ? 0 : abs(n - NOISE);
  45.   // apply the exponential filter to smooth the raw signal
  46.   ADCFilter.Filter(n);
  47.   lvl = ADCFilter.Current();
  48. //  // plot the raw versus filtered signals
  49. //  Serial.print(n);
  50. //  Serial.print(" ");
  51. //  Serial.println(lvl);
  52.   // calculate the number of pixels as a percentage of the range
  53.   // TO-DO: can be done dynamically by using a running average of min/max audio levels
  54.   height = TOP * (lvl - minLvl) / (long)(maxLvl - minLvl);
  55.   if(height < 0L) height = 0;
  56.   else if(height > TOP) height = TOP;
  57.   // turn the LEDs corresponding to the level on/off
  58.   for(uint8_t i = 0; i < N_PIXELS; i++) {
  59.     // turn off LEDs above the current level
  60.     if(i >= height) leds[i] = CRGB(0,0,0);
  61.     // otherwise, turn them on!
  62.     else leds[i] = Wheel( map( i, 0, N_PIXELS-1, 30, 150 ) );
  63.   }
  64.   FastLED.show();
  65. }
  66. CRGB Wheel(byte WheelPos) {
  67.   // return a color value based on an input value between 0 and 255
  68.   if(WheelPos < 85)
  69.     return CRGB(WheelPos * 3, 255 - WheelPos * 3, 0);
  70.   else if(WheelPos < 170) {
  71.     WheelPos -= 85;
  72.     return CRGB(255 - WheelPos * 3, 0, WheelPos * 3);
  73.   } else {
  74.     WheelPos -= 170;
  75.     return CRGB(0, WheelPos * 3, 255 - WheelPos * 3);
  76.   }
  77. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-7-10 09:01:43

  【花雕体验】17 Beetle ESP32C3与WS2812屏音乐可视化节奏灯
  实验程序二:简易测量环境声级
  模块接线:
  MAX9814  Beetle ESP32C3
  VCC            5V
  GND            GND
  OUT            A0

  1. /*
  2.   【花雕体验】17 Beetle ESP32C3与WS2812屏音乐可视化节奏灯
  3.   实验程序二:简易测量环境声级
  4.   模块接线:
  5.   MAX9814  Beetle ESP32C3
  6.   VCC            5V
  7.   GND            GND
  8.   OUT            A0
  9. */
  10. const int sampleWindow = 50; // 以mS为单位的采样窗口宽度(50 mS = 20Hz)   
  11. unsigned int sample;
  12. void setup() {
  13.    Serial.begin(115200);
  14.    pinMode(A0,INPUT);
  15. }
  16. void loop() {
  17.    unsigned long startMillis= millis();  // 样本窗口的开始
  18.    unsigned int peakToPeak = 0;   // 峰峰值
  19.    unsigned int signalMax = 0;
  20.    unsigned int signalMin = 3600;
  21.    // collect data for 50 mS
  22.    while (millis() - startMillis < sampleWindow)
  23.    {
  24.       sample = analogRead(A0);
  25.       if (sample < 3600)  // 抛出错误的读数
  26.       {
  27.          if (sample > signalMax)
  28.          {
  29.             signalMax = sample;  // 只保存最大级别
  30.          }
  31.          else if (sample < signalMin)
  32.          {
  33.             signalMin = sample;  // 仅保存最低级别
  34.          }
  35.       }
  36.    }
  37.    peakToPeak = signalMax - signalMin;  // max-min =峰峰值幅度
  38.    double volts = (peakToPeak * 5.0) / 170;  
  39.    Serial.println(volts);
  40. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-7-9 16:43:38

WS2812B主要特点
智能反接保护,电源反接不会损坏IC。
IC控制电路与LED点光源公用一个电源。
控制电路与RGB芯片集成在一个5050封装的元器件中,构成一个完整的外控像素点。
内置信号整形电路,任何一个像素点收到信号后经过波形整形再输出,保证线路波形畸变不会累加。
内置上电复位和掉电复位电路。
每个像素点的三基色颜色可实现256级亮度显示,完成16777216种颜色的全真色彩显示,扫描频率不低于400Hz/s。
串行级联接口,能通过一根信号线完成数据的接收与解码。
任意两点传传输距离在不超过5米时无需增加任何电路。
当刷新速率30帧/秒时,级联数不小于1024点。
数据发送速度可达800Kbps。
光的颜色高度一致,性价比高。

主要应用领域
LED全彩发光字灯串,LED全彩模组, LED全彩软灯条硬灯条,LED护栏管。
LED点光源,LED像素屏,LED异形屏,各种电子产品,电器设备跑马灯。


【花雕体验】17 Beetle ESP32C3与WS2812的音乐可视化节奏灯图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-7-9 16:48:51

Beetle ESP32-C3是一款基于ESP32-C3 RISC-V 32位单核处理器芯片的主控板,专为物联网 (IoT) 设备而设计。Beetle ESP32-C3在仅硬币大小的体积上引出了多达13个IO口,制作项目时不必再担心IO口不够用的情况,同时主控板还集成锂电池充电管理功能,可以直接连接锂电池,不需要外围模块,同时保证应用体积和安全性。Beetle ESP32-C3配套的扩展板在未增加太大体积的情况下,引出了更多的电源,在制作项目时焊接更加方便,板载的GDI显示屏接口解决使用屏幕时的接线烦恼。

Beetle ESP32-C3支持Wi-Fi 和 Bluetooth 5 (LE) 双模通讯,降低了设备配网难度,同时还支持蓝牙 Mesh (Bluetooth Mesh) 协议和乐鑫 Wi-Fi Mesh可以实现更高的通讯稳定性和更大的覆盖面积,适用于广泛的物联网应用场景。Beetle ESP32-C3拥有详细的示例教程,通过教程可以轻松的使用控制器的无线功能,连接阿里云、IFTTT等物联网平台,同时DFRobot商城提供了上千种传感器和执行器,这些传感器和执行器也有详细的教程,因此你可以轻松搭建出自己的物联网系统。



【花雕体验】17 Beetle ESP32C3与WS2812的音乐可视化节奏灯图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-7-9 16:54:20

Beetle ESP32-C3接口引脚
数字I/O x13
LED PWM 控制器 6个通道
SPI x1
UART x2
I2C x1
I2S x1
红外收发器:发送通道 x2、接收通道 x2,(任意管脚)
2 × 12 位 SAR 模/数转换器, 6 个通道
DMA 控制器,3 个接收通道和 3 个发送通道
实验使用的引脚为A0和D6

【花雕体验】17 Beetle ESP32C3与WS2812的音乐可视化节奏灯图1

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-7-9 16:59:51

本帖最后由 驴友花雕 于 2022-7-10 06:36 编辑

MAX9814
是美信公司出品的带AGC控制的麦克放大模块,很适于各种麦克放大和控制电路的前置部分,外围只要10个以内的元件,就能满足一般使用者的需要,麦克放大在0-8米的距离,保证输出电平保持近似一致。是很好的简单代替复杂麦克控制电路的代表之作。MAX9814是一款低成本,高质量的麦克风放大器,具有自动增益控制(AGC)和低噪声麦克风偏置。该器件具有一个低噪声前置放大器,可变增益放大器(VGA),输出放大器,麦克风偏置电压发生器和AGC控制电路。

低噪声前置放大器具有固定的12dB增益,而VGA增益则根据输出电压和AGC阈值自动从20dB调整至0dB。输出放大器提供8dB,18dB和28dB的可选增益。在没有压缩的情况下,放大器的级联会导致总增益为40dB,50dB或60dB。三级数字输入对输出放大器的增益进行编程。外部电阻分压器控制AGC阈值,单个电容器设定启动/释放时间。三级数字输入可设定起效时间与释放时间的比率。AGC的保持时间固定为30ms。低噪声麦克风偏置电压发生器可以使大多数驻极体麦克风偏置。

MAX9814采用节省空间的14引脚TDFN封装。该器件的额定温度范围为-40°C至+ 85°C。
【花雕体验】17 Beetle ESP32C3与WS2812的音乐可视化节奏灯图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-7-9 17:03:37

本帖最后由 驴友花雕 于 2022-7-10 06:40 编辑

【花雕体验】17 Beetle ESP32C3与WS2812的音乐可视化节奏灯图1
MAX9814主要特征
自动增益控制(AGC)
三种增益设置(40dB,50dB,60dB)
可编程攻击时间
可编程的攻击和释放比率
2.7V至5.5V电源电压范围
30nV /的低输入参考噪声密度
低总谐波失真(THD):0.04%(典型值)
低功耗关机模式
内部低噪声麦克风偏置,2V
采用节省空间的14引脚TDFN(3mm×3mm)封装
-40°C至+ 85°C扩展温度范围


【花雕体验】17 Beetle ESP32C3与WS2812的音乐可视化节奏灯图2
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-7-9 17:10:35

本帖最后由 驴友花雕 于 2022-7-10 06:46 编辑

【花雕体验】17 Beetle ESP32C3与WS2812的音乐可视化节奏灯图1

模块电原理图
【花雕体验】17 Beetle ESP32C3与WS2812的音乐可视化节奏灯图2
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-7-10 07:10:37

  【花雕体验】17 Beetle ESP32C3与WS2812屏音乐可视化节奏灯
  实验程序一:测试MAX9814麦克风放大器模块
  模块接线:
  MAX9814  Beetle ESP32C3
  VCC            5V
  GND            GND
  OUT            A0

  1. /*
  2.   【花雕体验】17 Beetle ESP32C3与WS2812屏音乐可视化节奏灯
  3.   实验程序一:测试MAX9814麦克风放大器模块
  4.   模块接线:
  5.   MAX9814  Beetle ESP32C3
  6.   VCC            5V
  7.   GND            GND
  8.   OUT            A0
  9. */
  10. void setup() {
  11.   Serial.begin(9600);
  12.   pinMode(A0, INPUT);
  13. }
  14. void loop() {
  15.   Serial.println(analogRead(A0));
  16.   delay(100);
  17. }
复制代码


回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-7-10 07:17:54

实验串口返回情况

【花雕体验】17 Beetle ESP32C3与WS2812的音乐可视化节奏灯图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-7-10 07:28:49

打开Arduino IDE——工具——串口绘图器,查看实验波形

【花雕体验】17 Beetle ESP32C3与WS2812的音乐可视化节奏灯图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-7-10 07:39:41

实验串口绘图器返回情况

【花雕体验】17 Beetle ESP32C3与WS2812的音乐可视化节奏灯图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-7-10 08:07:13

实验场景图

【花雕体验】17 Beetle ESP32C3与WS2812的音乐可视化节奏灯图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-7-10 09:04:33

实验串口绘图器返回情况(环境噪音)


【花雕体验】17 Beetle ESP32C3与WS2812的音乐可视化节奏灯图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-7-10 09:07:49

实验串口绘图器返回情况(时事播音)


【花雕体验】17 Beetle ESP32C3与WS2812的音乐可视化节奏灯图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-7-10 18:48:23

实验场景图

【花雕体验】17 Beetle ESP32C3与WS2812的音乐可视化节奏灯图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-7-10 18:54:09

回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-7-21 17:20:33

实验场景图

【花雕体验】17 Beetle ESP32C3与WS2812的音乐可视化节奏灯图1
回复

使用道具 举报

驴友花雕  中级技神
 楼主|

发表于 2022-7-21 17:26:30

实验场景图  动态图
【花雕体验】17 Beetle ESP32C3与WS2812的音乐可视化节奏灯图1


回复

使用道具 举报

12下一页
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail