【花雕体验】20 音乐可视化:ESP32_C3与WS2812B的系列尝试

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

在这里插入图片描述

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

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

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
WS2812模块电原理图

在这里插入图片描述

合宙CORE ESP32-C3核心板,是基于乐鑫ESP32-C3芯片进行设计的一款开发板。尺寸仅有21mm×51mm,板边采用邮票孔设计,板载 Wi-Fi/BLE天线,方便开发者在不同场景下的使用。核心板支持UART、GPIO、SPI、I2C、ADC、PWM等接口,可根据实际需要选用。

主要特色
(1)功能强,应用广
合宙ESP32-C3开发板高集成化设计,板载 Wi-Fi/BLE天线、4MB Flash,支持UART、GPIO、SPI、I2C、ADC、PWM等接口,满足大多数应用;板载CH343P芯片实现更高速率的USB转串口,固件下载更快更稳。
(2)用料足,信号好
合宙ESP32-C3开发板采用4层PCB,板载2.4G天线,经过调试达到了比较好的使用效果。实测2.38到2.48GHz范围内的驻波比(VSWR)值比较好,能够有效的将发射功率辐射到无线空间。
(3)多样化开发更便捷
合宙ESP32-C3开发板目前支持:LuatOS/乐鑫IDF/Arduino/MicroPython等多样化开发方式,使用更便捷。LuatOS固件在社区大神梦程的努力下现已支持以下功能,其他内容正在不断更新。

在这里插入图片描述
合宙CORE ESP32-C3核心板 IO引脚

1路SPI FLASH,板载4MB,支持最高 16MB
2路UART接口,UART0~UART1,其中下载口为UART0
6 路 12 比特 ADC,最高采样率 100KSPS
1路低速SPI接口,支持主模式
1路IIC控制器
4路PWM接口
GPIO外部管脚15路,可复用
2路贴片LED指示灯
1路复位按键+1路BOOT按键
1路USB转TTL下载调试口
2.4G PCB板载天线

在这里插入图片描述

【花雕体验】20 音乐可视化:ESP32_C3与WS2812B的系列尝试
实验程序一:简单测试MAX9814麦克风放大器模块
模块接线:
MAX9814 ESP32_C3
VCC 5V
GND GND
OUT 4(ADC4)

/*
  【花雕体验】20 音乐可视化:ESP32_C3与WS2812B的系列尝试
  实验程序一:简单测试MAX9814麦克风放大器模块
  模块接线:
  MAX9814   ESP32_C3
  VCC          5V
  GND         GND
  OUT       4(ADC4)
*/

void setup() {
  Serial.begin(9600);
  pinMode(4, INPUT);
}

void loop() {
  Serial.println(analogRead(4));
  delay(1000);
}

实验串口返回情况

在这里插入图片描述
打开Arduino IDE——工具——串口绘图器,查看实验波形

在这里插入图片描述

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

在这里插入图片描述

实验串口绘图器返回情况(实测播放音乐<当中部分>的波形)

在这里插入图片描述

实验场景图

在这里插入图片描述
【花雕体验】20 音乐可视化:ESP32_C3与WS2812B的系列尝试
实验程序二:声级测量
模块接线:
MAX9814 ESP32_C3
VCC 5V
GND GND
OUT 4(ADC4)

/*
  【花雕体验】20 音乐可视化:ESP32_C3与WS2812B的系列尝试
  实验程序二:声级测量
  模块接线:
  MAX9814   ESP32_C3
  VCC          5V
  GND         GND
  OUT       4(ADC4)
*/

const int sampleWindow = 50; // 以mS为单位的采样窗口宽度(50 mS = 20Hz)
unsigned int sample;

void setup() {
  Serial.begin(9600);
  pinMode(4, INPUT);
}


void loop() {
  unsigned long startMillis = millis(); // 样本窗口的开始
  unsigned int peakToPeak = 0;   // 峰峰值

  unsigned int signalMax = 0;
  unsigned int signalMin = 3000;

  // collect data for 50 mS
  while (millis() - startMillis < sampleWindow)
  {
    sample = analogRead(4);
    if (sample < 3000)  // 抛出错误的读数
    {
      if (sample > signalMax)
      {
        signalMax = sample;  // 只保存最大级别
      }
      else if (sample < signalMin)
      {
        signalMin = sample;  // 仅保存最低级别
      }
    }
  }
  peakToPeak = signalMax - signalMin;  // max-min =峰峰值幅度
  double volts = (peakToPeak * 5.0) / 50;  // 转换为伏特

  Serial.println(volts);
}

实验串口绘图器返回情况

在这里插入图片描述

搭配的第二款数字声音模块INMP441(实物还在快递路上)

在这里插入图片描述
【花雕体验】20 音乐可视化:ESP32_C3与WS2812B的系列尝试
实验程序三:点亮LED—WS2812FX自动模式循环20种

/*
  【花雕体验】20 音乐可视化:ESP32_C3与WS2812B的系列尝试
  实验程序三:点亮LED—WS2812FX自动模式循环20种
  模块接线:WS2812B接D9
  MAX9814   ESP32_C3
  VCC          5V
  GND         GND
  OUT       D4(ADC4)
*/

#include <WS2812FX.h>

#define LED_COUNT 256
#define LED_PIN    9

#define TIMER_MS 5000

WS2812FX ws2812fx = WS2812FX(LED_COUNT, LED_PIN, NEO_RGB + NEO_KHZ800);

unsigned long last_change = 0;
unsigned long now = 0;

void setup() {
  ws2812fx.init();
  ws2812fx.setBrightness(28);
  ws2812fx.setSpeed(1000);
  ws2812fx.setColor(0x007BFF);
  ws2812fx.setMode(FX_MODE_STATIC);
  ws2812fx.start();
}

void loop() {
  now = millis();
  ws2812fx.service();
  if(now - last_change > TIMER_MS) {
    ws2812fx.setMode((ws2812fx.getMode() + 1) % ws2812fx.getModeCount());
    last_change = now;
  }
}

实验场景图

在这里插入图片描述

实验的视频记录

https://v.youku.com/v_show/id_XNTg4ODEwMjEyNA==.html?spm=a2hcb.playlsit.page.1

【花雕体验】20 音乐可视化:ESP32_C3与WS2812B的系列尝试
实验程序四:MegunoLink音乐反应式LED灯带
模块接线:WS2812B接D9
MAX9814 ESP32_C3
VCC 5V
GND GND
OUT D4(ADC4)

/*
  【花雕体验】20 音乐可视化:ESP32_C3与WS2812B的系列尝试
  实验程序四:MegunoLink音乐反应式LED灯带
  模块接线:WS2812B接D9
  MAX9814   ESP32_C3
  VCC          5V
  GND         GND
  OUT       D4(ADC4)
*/

#include<FastLED.h>
#include<MegunoLink.h>
#include<Filter.h>

// define necessary parameters
#define N_PIXELS  24
#define MIC_PIN   4
#define LED_PIN   9 
// the following parameters can be tweaked according to your audio levels
#define NOISE 150
#define TOP   (N_PIXELS+2) // allow the max level to be slightly off scale
#define LED_TYPE  WS2811
#define BRIGHTNESS  18     // a little dim for recording purposes
#define COLOR_ORDER GRB

// declare the LED array
CRGB leds[N_PIXELS];

// define the variables needed for the audio levels
int lvl = 0, minLvl = 0, maxLvl = 100; // tweak the min and max as needed

// instantiate the filter class for smoothing the raw audio signal
ExponentialFilter<long> ADCFilter(5,0);

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  // initialize the LED object
  FastLED.addLeds<LED_TYPE,LED_PIN,COLOR_ORDER>(leds,N_PIXELS).setCorrection(TypicalLEDStrip);
  FastLED.setBrightness(BRIGHTNESS);
}

void loop() {
  // put your main code here, to run repeatedly:
  // read the audio signal and filter it
  int n, height;
  n = analogRead(MIC_PIN);
  // remove the MX9614 bias of 1.25VDC
  n = abs(1023 - n);
  // hard limit noise/hum
  n = (n <= NOISE) ? 0 : abs(n - NOISE);
  // apply the exponential filter to smooth the raw signal
  ADCFilter.Filter(n);
  lvl = ADCFilter.Current();
//  // plot the raw versus filtered signals
//  Serial.print(n);
//  Serial.print(" ");
//  Serial.println(lvl);
  // calculate the number of pixels as a percentage of the range
  // TO-DO: can be done dynamically by using a running average of min/max audio levels
  height = TOP * (lvl - minLvl) / (long)(maxLvl - minLvl);
  if(height < 0L) height = 0;
  else if(height > TOP) height = TOP;
  // turn the LEDs corresponding to the level on/off
  for(uint8_t i = 0; i < N_PIXELS; i++) {
    // turn off LEDs above the current level
    if(i >= height) leds[i] = CRGB(0,0,0);
    // otherwise, turn them on!
    else leds[i] = Wheel( map( i, 0, N_PIXELS-1, 30, 150 ) );
  }
  FastLED.show();
}

CRGB Wheel(byte WheelPos) {
  // return a color value based on an input value between 0 and 255
  if(WheelPos < 85)
    return CRGB(WheelPos * 3, 255 - WheelPos * 3, 0);
  else if(WheelPos < 170) {
    WheelPos -= 85;
    return CRGB(255 - WheelPos * 3, 0, WheelPos * 3);
  } else {
    WheelPos -= 170;
    return CRGB(0, WheelPos * 3, 255 - WheelPos * 3);
  }
}

实验场景图 动态图

在这里插入图片描述

实验的视频记录(21秒)

https://v.youku.com/v_show/id_XNTg4NzI0MzU0NA==.html?spm=a2hcb.playlsit.page.1

实验的视频记录(4分28秒)

https://v.youku.com/v_show/id_XNTg4ODI4Nzc1Mg==.html?spm=a2hcb.playlsit.page.5

(待续)

  • 4
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
WS2812B是一种常见的LED灯带,它具有独立控制每个LED灯的能力。通过控制每个LED的亮度和颜色,可以创建出火焰模拟效果。在使用Beetle ESP32 C3控制8X32位WS2812灯板时,可以使用Arduino开发板和ESP8266来控制火焰效果。通过编写相应的程序,可以逐一点亮256个绿色LED灯,从而实现火焰的效果。\[1\]\[2\] Beetle ESP32-C3是一款基于ESP32-C3 RISC-V 32位单核处理器芯片的主控板,专为物联网(IoT)设备而设计。它具有多个IO口,可以满足项目制作的需求。此外,Beetle ESP32-C3还集成了锂电池充电管理功能,可以直接连接锂电池,无需外围模块。它的配套扩展板还提供了更多的电源和GDI显示屏接口,方便项目制作和使用屏幕。在实验中,使用的引脚为A0和D6。\[3\] #### 引用[.reference_title] - *1* [使用ESP8266和Neopixels营造酷炫的火焰效果](https://blog.csdn.net/woshi_ziyu/article/details/88012225)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [【花雕体验】16 使用Beetle ESP32 C3控制8X32位WS2812硬屏](https://blog.csdn.net/weixin_41659040/article/details/125680025)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

驴友花雕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值