一、接线说明
使用不同传感器前需要了解其连接及通信方式。对于ESP-WROOM-32 and INMP441麦克风是通过I2S方式进行通信。具体连接引脚参照下图:
使用的麦克风为MEMS麦克风,具体规格可参照芯片规格数说明。
I2S音频连接:
PIN 14——SCK;PIN 15——WS;PIN 32——SD;VDD——3.3;GND——GND
二、数据采集测试
确定接线完成后,这里利用Arduino IDE进行数据采集测试,代码如下:
// 头文件
#include <driver/i2s.h>
//按照接线确定编号
#define I2S_WS 15
#define I2S_SD 32
#define I2S_SCK 14
// 使用I2S处理器
#define I2S_PORT I2S_NUM_0
// 定义缓冲区长度
#define bufferLen 64
int16_t sBuffer[bufferLen];
void i2s_install() {
//设置I2S处理器配置
const i2s_config_t i2s_config = {
.mode = i2s_mode_t(I2S_MODE_MASTER | I2S_MODE_RX),
.sample_rate = 44100,
.bits_per_sample = i2s_bits_per_sample_t(16),
.channel_format = I2S_CHANNEL_FMT_ONLY_LEFT,
.communication_format = i2s_comm_format_t(I2S_COMM_FORMAT_STAND_I2S),
.intr_alloc_flags = 0,
.dma_buf_count = 8,
.dma_buf_len = bufferLen,
.use_apll = false
};
i2s_driver_install(I2S_PORT, &i2s_config, 0, NULL);
}
void i2s_setpin() {
// 设置I2S引脚配置
const i2s_pin_config_t pin_config = {
.bck_io_num = I2S_SCK,
.ws_io_num = I2S_WS,
.data_out_num = -1,
.data_in_num = I2S_SD
};
i2s_set_pin(I2S_PORT, &pin_config);
}
void setup() {
// 设置串口监视器
Serial.begin(115200);
Serial.println(" ");
delay(1000);
// 设置I2S
i2s_install();
i2s_setpin();
i2s_start(I2S_PORT);
delay(500);
}
void loop() {
// 获取I2S数据并将其放入数据缓冲区
size_t bytesIn = 0;
esp_err_t result = i2s_read(I2S_PORT, &sBuffer, bufferLen, &bytesIn, portMAX_DELAY);
if (result == ESP_OK)
{
// 读取I2S数据缓冲区
int16_t samples_read = bytesIn / 8;
if (samples_read > 0) {
float mean = 0;
for (int16_t i = 0; i < samples_read; ++i) {
mean += (sBuffer[i]);
}
// 取数据读数的平均值
mean /= samples_read;
// 串口绘图
Serial.println(mean);
}
}
}
在串口监视器处能够看到实时读取的声音数据:
当打开串口绘图时,可以观察到实时采集的声学数据图:
三、Matlab上位机读取串口数
接下来通过Matlab中的APP designer实现数据的读取和显示,并编写了一个简易的操作界面
文章来源:https://www.toymoban.com/news/detail-700059.html
需要定制不同传感器操作界面可联系~文章来源地址https://www.toymoban.com/news/detail-700059.html
到了这里,关于传感器使用——ESP-WROOM-32 and INMP441麦克风音频采集的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!