麦克风模块 SEN0327 的测试

2022-07-026588
AI 快速预览详细 收起
本文介绍了如何使用麦克风模块SEN0327配合ESP32进行音频采集测试。通过Arduino-audio-tools库驱动,实现了从I2S接口读取音频数据并在网页上展示的功能。文章详细说明了硬件接线方法、代码修改步骤以及完整的示例代码。适合初学者和STEM教育项目,能够帮助用户快速部署音频采集系统。


前一段在商城购买了“麦克风模块”(SEN0327),拿到收之后发现没有例子。于是开始一番探索,配合ESP32进行一下测试。
麦克风模块 SEN0327 的测试图1
这款麦克风是基于 MSM261S4030H0传感器的 I2S 接口麦克风(数字麦克风)。经过研究
可以使用Arduino-audio-tools这个Library进行驱动。接线如下:
  
MSM261S4030H0
  
FireBeetle ESP32
说明
V
3.3
3.3V供电
G
GND
GND
WS
IO15
Word Select
LR
GND
输出左右声道选择
CK
IO14
Serial  Clock(BCLK)
DA
IO4
Serial Data 数字麦克风输出的数据

安装好库之后在arduino-audio-tools-0.8.7\src\AudioConfig.h做一点修改,修改的原因是 FireBeetle ESP32 32 Pin 已经被占用。

  1. #define PWM_FREQENCY 30000
  2. #define PIN_PWM_START 12
  3. #define PIN_I2S_BCK 14
  4. #define PIN_I2S_WS 15
  5. //LABZDebug #define PIN_I2S_DATA_IN 32
  6. #define PIN_I2S_DATA_IN 4
复制代码
之后按照上述要求连接好。加载 arduino-audio-tools-0.8.7\examples\examples-webserver\streams-i2s-webserver_wav这个代码,在其中下面的位置填写你家的 WIFI SSID 和密码:

  1. AudioWAVServer server("ssid","password");
复制代码
这个示例的作用是从I2S的麦克风中读取数据,然后展示在网页上。启动之后从串口调试器中能够看到当前的 IP ,用浏览器访问这个地址即可。还需要注意的是:需要使用esp32package 中的 FireBeetle 进行编译(如果使用 DFRobot ESP32 Arduino 中的 FireBeetle 会出现错误):

麦克风模块 SEN0327 的测试图2

完整代码:
  1. #include "AudioTools.h"
  2. AudioWAVServer server("ssid","password"); // the same a above
  3. I2SStream i2sStream;    // Access I2S as stream
  4. ConverterFillLeftAndRight<int16_t> filler(LeftIsEmpty); // fill both channels - or change to RightIsEmpty
  5. void setup(){
  6.   Serial.begin(115200);
  7.   AudioLogger::instance().begin(Serial, AudioLogger::Info);
  8.   // start i2s input with default configuration
  9.   Serial.println("starting I2S...");
  10.   auto config = i2sStream.defaultConfig(RX_MODE);
  11.   config.i2s_format = I2S_STD_FORMAT; // if quality is bad change to I2S_LSB_FORMAT https://github.com/pschatzmann/arduino-audio-tools/issues/23
  12.   config.sample_rate = 22050;
  13.   config.channels = 2;
  14.   config.bits_per_sample = 16;
  15.   i2sStream.begin(config);
  16.   Serial.println("I2S started");
  17.   // start data sink
  18.   server.begin(i2sStream, config, &filler);
  19. }
  20. // Arduino loop  
  21. void loop() {
  22.   // Handle new connections
  23.   server.doLoop();  
  24. }
复制代码

测试的视频:


创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(1)
光速陀螺
光速陀螺
AudioTools.h 这个库文件找不到,up主有吗
- 没有更多了 -