-
I2S 麦克风是一种使用 I2S(Inter-IC Sound)总线传输数字音频数据的麦克风,广泛用于嵌入式系统中。它省去了模拟电路处理,抗干扰能力强,非常适合接入 STM32、ESP32、树莓派等平台。
-
INMP441(TDK InvenSense)MEMS 数字麦克风:
- 底部端口 + 24 位 I²S 数字输出,无需额外 ADC 或音频编解码器
- 高信噪比 (SNR):61 dBA,灵敏度:−26 dBFS(1 kHz,94 dB SPL)
- 频率响应扁平:60 Hz—15 kHz,适合语音、录音、检测
- 低功耗:工作电流约 1.4 mA;待机约 0.8 mA,掉电模式仅几微安
- 封装尺寸:约 4.72 × 3.76 × 1 mm,兼容重流焊和环保;工作温度范围 −40 °C 至 +85 °C
🛠️ 3. 工作模式 & 滤波特性
- 三种电源状态:工作、备用、掉电模式;通过控制 VDD 引脚可进入不同状态 (invensense.tdk.com)。
- 内部数字滤波器:高通滤除低于 ~60 Hz(低频滤波点 ~3.7 Hz),低通滤波器频率随采样率自动调整 。
INMP441 模块
- 模块由组成如下:麦克风芯片+104电容+104电阻
-
引脚说明
引脚 | 说明 |
---|---|
VCC | 接 3.3V |
GND | 接地 |
WS(LRCL) | I2S 左右声道时钟 |
SCK(BCLK) | I2S 比特时钟 |
SD(DOUT) | 数据输出,接 STM32 的 I2S SD input |
L/R | GND(左声道)、 VCC(右声道) |
- 注:淘宝上3.66可以买两个
硬件连接(INMP441 ←→ ESP32-S3)
INMP441 引脚 | ESP32-S3 示例引脚 |
---|---|
VCC | 3.3V |
GND | GND |
SCK (BCLK) | GPIO 4 |
WS (LRCL) | GPIO 5 |
SD (DOUT) | GPIO 6 |
L/R | GND(左声道) |
MicroPython 录音代码示例(保存为 .pcm
)
from machine import I2S, Pin
import os
# === I2S 麦克风参数 ===
SAMPLE_RATE = 16000
BITS_PER_SAMPLE = 16
CHANNELS = 1
BUFFER_SIZE = 1024
gnd = Pin(10, Pin.OUT)
gnd.value(0)# 左声道
# === 定义 I2S 配置 ===
i2s = I2S(
0, # I2S channel
sck=Pin(4), # BCLK
ws=Pin(5), # L/R clock
sd=Pin(6), # SD from mic
mode=I2S.RX, # 接收模式
bits=BITS_PER_SAMPLE,
format=I2S.MONO,
rate=SAMPLE_RATE,
ibuf=BUFFER_SIZE * 8
)
# === 录音函数 ===
def record_pcm(filename, seconds):
print("Start recording...")
total_bytes = SAMPLE_RATE * (BITS_PER_SAMPLE // 8) * seconds
buf = bytearray(BUFFER_SIZE)
with open(filename, "wb") as f:
for _ in range(total_bytes // BUFFER_SIZE):
num_read = i2s.readinto(buf)
if num_read > 0:
f.write(buf)
print(buf)
print("Recording done.")
# === 调用 ===
record_pcm("/pcm_recording.pcm", 5) # 录音 5 秒
CG
- 注:其他常见 I2S 麦克风型号
型号 | 接口 | 工作电压 | 特点 |
---|---|---|---|
INMP441 | I2S | 3.3V | 最常见、广泛兼容 |
SPH0645LM4H | I2S | 1.8V(注意电平转换) | 超小型 |
ICS43434 | I2S | 1.8~3.6V | 高性能 |
MSM261S4030H0 | I2S | 1.8V | 高灵敏度、超小尺寸 |
- 注:立体声模式配置