INFORMACIÓN
El INMP441 Módulo de Micrófono Omnidireccional I2S es un sensor de audio digital basado en un micrófono MEMS (Micro-Electro-Mechanical System) capaz de captar sonido desde todas las direcciones con alta sensibilidad y bajo nivel de ruido. A diferencia de los micrófonos analógicos tradicionales, este módulo integra un convertidor analógico-digital interno que transforma directamente las ondas sonoras en señales digitales mediante el protocolo de comunicación I2S (Inter-IC Sound).
El INMP441 Módulo de Micrófono Omnidireccional I2S se utiliza principalmente en proyectos de captura y procesamiento digital de audio gracias a su salida digital directa y buena calidad sonora. Entre sus usos y aplicaciones destacan los sistemas de reconocimiento de voz, asistentes virtuales, monitoreo ambiental de sonido, grabación digital, detección de ruido y análisis acústico en tiempo real. Este módulo puede trabajar con diversas tarjetas de desarrollo que soporten comunicación I2S, como ESP32, Arduino (modelos con soporte I2S o mediante librerías específicas), Raspberry Pi, STM32, Teensy y otras plataformas similares.
ESPECIFICACIONES Y CARACTERÍSTICAS
- Modelo: INMP441.
- Color del PCB: Negro.
- Direccionalidad: Omnidireccional.
- Tipo: MEMS.
- Sensibilidad: – 29 a – 23 dBFS.
- Relación señal a ruido: 61 dBA.
- Interfaz: I2S digital de 24 bits.
- Respuesta de frecuencia:
- Baja frecuencia: 60 Hz.
- Alta frecuencia: 15 kHz.
- Voltaje de alimentación:
- Mínimo: 1.62 VDC.
- Máximo: 3.63 VDC.
- Consumo de corriente: 1.4 mA.
- Nivel de presión sonora: 160dB Máximo.
- Temperatura de operación: -40 a 85 °C.
- Incluye 2 Headers macho de 3 pines con 2.5 mm de Pitch.
- Dimensiones: 15 mm de diámetro.
- Peso: 1.5 g.
Nota: Debido a que el micrófono se comunica a través de una interfaz I2S debes tener en cuenta que tu microcontrolador o tarjeta de desarrollo sea compatible con esta interfaz.
DOCUMENTACIÓN Y RECURSOS
INFORMACIÓN ADICIONAL
Descripción de Pines.
- SCK: Serial-Data Clock para la interfaz I2S.
- WS: Selección de la palabra de datos seriales para la interfaz I2S.
- L/R: Selección de canal izquierdo / Derecho. Cuando su nivel es bajo, la señal de salida estará en el canal izquierdo del marco I2S, cuando se configura en alto, la salida estará en el canal derecho.
- GND: Tierra.
- VDD: Voltaje de alimentación, máximo 3.63 V.
- SD: Salida de datos seriales para la interfaz I2S.
¿Qué es el protocolo I2S?
I2S es un protocolo de transferencia digital, la calidad del audio puede estar en el rango desde el grado de telefonía, hasta ultra alta fidelidad únicamente usando 1 o 2 canales. Este protocolo surge de la necesidad de tener compatibilidad entre circuitos integrados que manejan datos e información sonora.
El protocolo I2S maneja datos modulados por PCM (Modulación por Impulsos Codificados) a través de un bus que consiste de al menos 3 líneas de conexión:
- SCK: Serial Clock Line.
- WS: Word Select.
- SD: Serial Data, datos de audio PCM.
¿Cómo usar el INMP441 módulo de micrófono con ESP32?
Antes de empezar es importante definir que tipo de microcontrolador se va a usar ya que el microcontrolador debe ser compatible con interfaz I2S, para este ejemplo usaremos un ESP32 DevKitC V4 con ESP32 WROOM 32D y el Arduino IDE para programar.
El diagrama del circuito es el siguiente:

Si no sabes como programar un ESP 32 en el Arduino IDE, puedes visitar nuestro articulo en el blog sobre ¿Cómo programar el DEVKITV1 ESP32 con el IDE Arduino? en donde te explicamos como instalar el soporte para tarjetas de desarrollo ESP y como programarlas.
Una vez instaladas las tarjetas ESP32, cargaremos el siguiente código de prueba:
/*
ESP32 I2S Ejemplo de uso del micrófono
Muestrea sonido con el micrófono y lo despliega en el graficador serial
Requiere un Micrófono INMP441
*/
// Incluir el driver I2S
#include <driver/i2s.h>
// Conexiones al INMP441
#define I2S_WS 25
#define I2S_SD 32
#define I2S_SCK 33
// Uso del procesador 0 I2S
#define I2S_PORT I2S_NUM_0
// Define la longitud del buffer de entrada
#define bufferLen 64
int16_t sBuffer[bufferLen];
void i2s_install() {
// Configuración del 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_I2S | I2S_COMM_FORMAT_I2S_MSB),
.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() {
// Configuración de los pines 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() {
// Configuración del monitor serial
Serial.begin(115200);
Serial.println(" ");
delay(1000);
// Inicialización del I2S
i2s_install();
i2s_setpin();
i2s_start(I2S_PORT);
delay(500);
}
void loop() {
// Impresión de valores falsos para "bloquear el rango" en el graficador serial
// Cambiar el valor de rangelimit para modificar la resolución de la gráfica
int rangelimit = 3000;
Serial.print(rangelimit * -1);
Serial.print(" ");
Serial.print(rangelimit);
Serial.print(" ");
// Obtención de los datos I2S y moverlos al buffer de datos
size_t bytesIn = 0;
esp_err_t result = i2s_read(I2S_PORT, &sBuffer, bufferLen, &bytesIn, portMAX_DELAY);
if (result == ESP_OK) {
// Lectura del buffer de datos I2S
int16_t muestras = bytesIn / 8;
if (muestras > 0) {
float promedio = 0;
for (int16_t i = 0; i < muestras; ++i) {
promedio += (sBuffer[i]);
}
// Promedio de los datos leídos
promedio /= muestras;
// Gráfica de los datos obtenidos
Serial.println(promedio);
}
}
}
Una vez cargado el código, el micrófono comenzará a detectar sonido y a enviar estos datos al microcontrolador, para visualizar los datos que recibe el micrófono solo basta con abrir el graficador serial del IDE:

Las dos líneas de color que se muestran es el valor de la variable “rangelimit” la cual establece los límites de la gráfica, si se modifica este valor también se cambia la resolución de la gráfica, mientras que las líneas verdes son los valores muestreados del sonido captado por el micrófono, en la siguiente gráfica el valor de rangelimit fue reducido a 800:


Cloruro Férrico de 250 ML
Cargador para Baterías de litio CN3165 - UNIT DevLab
CAU-118 Punta Conica para Cautin CAU-105 y CAU-115
Soporte para Cautín Tipo Lápiz
PJ-301M Jack 3.5mm N.C Conector de Audio
Pinzas Antiestáticas SMD Kit 6 Piezas
Kit de 250 Capacitores Cerámicos
1uH a 470uH Inductores 14 valores
Espuma Limpiadora para Equipos Electrónicos 454 ml SILIMPO
Terminal ZH1.5mm ZH 1.5mm
UNIT MP34DT05TR-A Módulo Micrófono PDM
Módulo PWM AO4410 de 2 Canales - UNIT DevLab
Alicates de Pico de Pato Multifuncionales
Set de Pinzas con Punta de Cerámica
Maletin de Soldadura con Cautín Regulable 60W
Boquilla de Acero Endurecido 0.4mm para P1/X1 Bambu Lab
Banda Dentada GT2 2GT 10mm 10 Metros
Puntas para Multímetro de 1000V 10A
Cepillo de Alambre de Latón y Acero Inoxidable para Limpieza de Boquillas
Limpiador de Filamentos para Impresoras 3D
WEMOS D1 Mini ESP32 WiFi CH9102 USB Tipo-C
R502-F Sensor Dactilar TTL


























Valoraciones
No hay valoraciones aún.