INFORMACIÓN
El INMP441 Módulo de Micrófono es un dispositivo avanzado que permite la captura de audio digital con alta precisión y bajo consumo de energía. Gracias a su interfaz I2S de 24bits, se puede conectar fácilmente a microcontroladores y tarjetas de desarrollo compatibles, como el ESP32, sin necesidad de un códec de audio adicional. Este módulo contiene dentro de su encapsulado un acondicionador de señales, un convertidor analógico-digital, filtros anti-aliasing, entre otras características.
El INMP441 Módulo de Micrófono es ideal para aplicaciones de grabación de voz, procesamiento de audio, sistemas de seguridad y equipos electrónicos que requieren una entrada de audio clara y precisa.
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 V
- Máximo: 3.63 V
- 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.5mm de Pitch
- Dimensiones: 14mm de diámetro
- Peso: 1.5g
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.63V
- 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:
Valoraciones
No hay valoraciones aún.