适用平台
推荐 ESP32、SAMD21/SAMD51、RP2040/RP2350、树莓派等带 I2S 输入的平台。
I2S MEMS Microphone · SKU 02630
数字 I2S 输出 MEMS 麦克风模块,适合 ESP32、SAMD、RP2040/RP2350、树莓派等带 I2S 输入的平台。普通 UNO/Nano 不建议直接使用。
Quick Facts
Overview
ICS-43434 集成 MEMS 声学传感器、信号调理、ADC、抽取/抗混叠滤波、电源管理和 I2S 数字接口。它输出数字音频数据,不需要外接音频编解码芯片,也不能像模拟麦克风那样接 ADC 读数。
推荐 ESP32、SAMD21/SAMD51、RP2040/RP2350、树莓派等带 I2S 输入的平台。
常见 ATmega328P UNO/Nano 没有标准 I2S 外设,不建议直接接本模块。
LR/SEL 接 GND 通常输出左声道,接 3.3V 输出右声道,代码读取声道要一致。
Wiring
下面是常用 ESP32 测试接线。ESP32 的 I2S 引脚可重映射,实际以代码配置为准。
| ICS-43434 模块 | ESP32 | 说明 |
|---|---|---|
| VDD / 3V3 | 3V3 | 推荐 3.3V |
| GND | GND | 共地 |
| SCK / BCLK | GPIO26 | I2S BCLK |
| WS / LRCLK | GPIO22 | I2S WS |
| SD / DOUT | GPIO21 | I2S DIN |
| LR / SEL | GND | 左声道;接 3V3 为右声道 |
Stereo
两个 ICS-43434 可以共用 SCK、WS、SD。左麦 LR 接 GND,右麦 LR 接 3.3V。若 SD 线释放异常,可参考数据手册在 SD 线上加下拉电阻,常见示例为 100kΩ。
Arduino Example
下面例程使用 Espressif 新版 I2S Standard RX 接口,适合 Arduino-ESP32 3.x / ESP-IDF 5.x 思路。不同核心版本 API 可能不同,编译报错时先确认版本。
#include
#include "driver/i2s_std.h"
#define I2S_BCLK GPIO_NUM_26
#define I2S_WS GPIO_NUM_22
#define I2S_DIN GPIO_NUM_21
static i2s_chan_handle_t rx_chan;
void setup() {
Serial.begin(115200);
delay(1000);
i2s_chan_config_t chan_cfg = I2S_CHANNEL_DEFAULT_CONFIG(I2S_NUM_AUTO, I2S_ROLE_MASTER);
ESP_ERROR_CHECK(i2s_new_channel(&chan_cfg, NULL, &rx_chan));
i2s_std_config_t std_cfg = {
.clk_cfg = I2S_STD_CLK_DEFAULT_CONFIG(16000),
.slot_cfg = I2S_STD_PHILIPS_SLOT_DEFAULT_CONFIG(I2S_DATA_BIT_WIDTH_32BIT, I2S_SLOT_MODE_MONO),
.gpio_cfg = {
.mclk = I2S_GPIO_UNUSED,
.bclk = I2S_BCLK,
.ws = I2S_WS,
.dout = I2S_GPIO_UNUSED,
.din = I2S_DIN,
.invert_flags = {
.mclk_inv = false,
.bclk_inv = false,
.ws_inv = false,
},
},
};
std_cfg.slot_cfg.slot_mask = I2S_STD_SLOT_LEFT;
ESP_ERROR_CHECK(i2s_channel_init_std_mode(rx_chan, &std_cfg));
ESP_ERROR_CHECK(i2s_channel_enable(rx_chan));
Serial.println("ICS-43434 I2S mic ready. Open Serial Plotter.");
}
void loop() {
int32_t samples[256];
size_t bytes_read = 0;
esp_err_t ret = i2s_channel_read(rx_chan, samples, sizeof(samples), &bytes_read, pdMS_TO_TICKS(1000));
if (ret != ESP_OK || bytes_read == 0) {
Serial.println(0);
return;
}
int sample_count = bytes_read / sizeof(int32_t);
int32_t peak = 0;
for (int i = 0; i < sample_count; i++) {
int32_t v = samples[i] >> 8;
if (v < 0) v = -v;
if (v > peak) peak = v;
}
Serial.println(peak);
}
FAQ
检查 3.3V 供电、GND 共地、SCK/WS/SD 是否接反、LR 接法与代码声道是否一致,并确认使用的是 I2S 例程而不是 PDM 或模拟麦克风例程。
缩短 SCK/WS/SD 线长,确保供电旁路良好、接地可靠,不要让声孔被焊剂、胶水、灰尘或外壳堵住。
芯片资料供电范围是 1.65V~3.63V。未确认模块有稳压和电平转换前,不建议直接接 5V。
UNO/Nano 常见 ATmega328P 板没有标准 I2S 外设,不建议直接使用。建议换 ESP32、SAMD、RP2040/RP2350 或树莓派。
Customer Reply
References