

The INMP441 is a high-performance digital microphone module manufactured by Arduino. It uses the I2S (Inter-IC Sound) interface for transmitting audio data, making it an excellent choice for digital audio applications. This module is designed to deliver high signal-to-noise ratio (SNR) audio output while maintaining low power consumption. Its compact size and digital output make it ideal for integration into modern audio systems.








The INMP441 module is designed to provide reliable performance in a variety of audio applications. Below are its key technical details:
| Parameter | Value |
|---|---|
| Supply Voltage (VDD) | 1.8V to 3.3V |
| Current Consumption | 1.4 mA (typical) |
| Signal-to-Noise Ratio | 61 dB |
| Acoustic Overload Point | 120 dB SPL |
| Frequency Response | 60 Hz to 15 kHz |
| Output Format | I2S (Inter-IC Sound) |
| Directionality | Omnidirectional |
| Operating Temperature | -40°C to +85°C |
| Module Dimensions | 15 mm x 10 mm x 3 mm |
The INMP441 module has 5 pins, as described in the table below:
| Pin Name | Pin Number | Description |
|---|---|---|
| VDD | 1 | Power supply input (1.8V to 3.3V). Connect to a regulated power source. |
| GND | 2 | Ground connection. Connect to the ground of the circuit. |
| WS | 3 | Word Select (I2S interface). Determines the channel (left or right) for audio. |
| SCK | 4 | Serial Clock (I2S interface). Provides the clock signal for data transmission. |
| SD | 5 | Serial Data (I2S interface). Outputs the digital audio data. |
The INMP441 is straightforward to use in digital audio applications. Below are the steps and considerations for integrating it into a circuit:
WS pin to the Word Select pin of the microcontroller.SCK pin to the Serial Clock pin of the microcontroller.SD pin to the Serial Data input pin of the microcontroller.The Arduino UNO does not natively support I2S, but you can use an external I2S interface or a compatible microcontroller like the ESP32. Below is an example code snippet for the ESP32:
#include <driver/i2s.h>
// I2S configuration for the INMP441 microphone
#define I2S_NUM I2S_NUM_0 // Use I2S port 0
#define I2S_WS_PIN 15 // Word Select pin (WS)
#define I2S_SCK_PIN 14 // Serial Clock pin (SCK)
#define I2S_SD_PIN 32 // Serial Data pin (SD)
void setup() {
// Configure the I2S driver
i2s_config_t i2s_config = {
.mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_RX), // Master mode, receive only
.sample_rate = 16000, // Sampling rate: 16 kHz
.bits_per_sample = I2S_BITS_PER_SAMPLE_16BIT, // 16-bit audio data
.channel_format = I2S_CHANNEL_FMT_ONLY_LEFT, // Single channel (left)
.communication_format = I2S_COMM_FORMAT_I2S, // I2S format
.intr_alloc_flags = ESP_INTR_FLAG_LEVEL1, // Interrupt level
.dma_buf_count = 8, // Number of DMA buffers
.dma_buf_len = 64 // Length of each DMA buffer
};
// Configure the I2S pins
i2s_pin_config_t pin_config = {
.bck_io_num = I2S_SCK_PIN, // Serial Clock (SCK)
.ws_io_num = I2S_WS_PIN, // Word Select (WS)
.data_out_num = I2S_PIN_NO_CHANGE, // Not used for input
.data_in_num = I2S_SD_PIN // Serial Data (SD)
};
// Install and start the I2S driver
i2s_driver_install(I2S_NUM, &i2s_config, 0, NULL);
i2s_set_pin(I2S_NUM, &pin_config);
}
void loop() {
// Buffer to store audio data
int16_t audio_buffer[1024];
size_t bytes_read;
// Read audio data from the INMP441
i2s_read(I2S_NUM, audio_buffer, sizeof(audio_buffer), &bytes_read, portMAX_DELAY);
// Process the audio data (e.g., send to a server, save to SD card, etc.)
}
No Audio Output:
Distorted Audio:
Microphone Not Detected:
By following this documentation, you can effectively integrate the INMP441 I2S Microphone Module into your audio projects.