

The INMP441 is a low-power, high-performance MEMS (Micro-Electro-Mechanical Systems) microphone with a digital I²S (Inter-IC Sound) output. It is designed to deliver high signal-to-noise ratio (SNR) and excellent acoustic performance, making it ideal for applications such as voice recognition, audio recording, and sound sensing in portable devices. Unlike traditional analog microphones, the INMP441 outputs digital audio data, which reduces noise interference and simplifies integration with microcontrollers and digital signal processors.








The INMP441 is a compact and efficient microphone with the following key specifications:
| Parameter | Value |
|---|---|
| Supply Voltage (VDD) | 1.8V to 3.3V |
| Current Consumption | 1.4 mA (typical) |
| Signal-to-Noise Ratio (SNR) | 61 dB |
| Acoustic Overload Point | 120 dB SPL |
| Frequency Response | 60 Hz to 15 kHz |
| Output Format | I²S (Inter-IC Sound) |
| Sensitivity | -26 dBFS ±1 dB |
| Operating Temperature | -40°C to +85°C |
| Package Dimensions | 3.5 mm × 2.65 mm × 0.98 mm |
The INMP441 has a total of 5 pins, as described in the table below:
| Pin Name | Pin Number | Description |
|---|---|---|
| VDD | 1 | Power supply input (1.8V to 3.3V). |
| GND | 2 | Ground connection. |
| WS | 3 | Word Select (I²S left/right channel selection). |
| SCK | 4 | Serial Clock (I²S clock input). |
| SD | 5 | Serial Data (I²S digital audio data output). |
The Arduino UNO does not have a native I²S interface, so you will need an external I²S-compatible microcontroller (e.g., ESP32). Below is an example of how to connect the INMP441 to an ESP32 and read audio data.
| INMP441 Pin | ESP32 Pin |
|---|---|
| VDD | 3.3V |
| GND | GND |
| WS | GPIO25 |
| SCK | GPIO26 |
| SD | GPIO22 |
#include <driver/i2s.h>
// I2S configuration for ESP32
#define I2S_WS_PIN 25 // Word Select pin
#define I2S_SCK_PIN 26 // Serial Clock pin
#define I2S_SD_PIN 22 // Serial Data pin
void setup() {
Serial.begin(115200);
// Configure 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 communication 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 I2S pins
i2s_pin_config_t pin_config = {
.bck_io_num = I2S_SCK_PIN, // Serial Clock pin
.ws_io_num = I2S_WS_PIN, // Word Select pin
.data_out_num = I2S_PIN_NO_CHANGE, // No data output
.data_in_num = I2S_SD_PIN // Serial Data pin
};
// Install and start I2S driver
i2s_driver_install(I2S_NUM_0, &i2s_config, 0, NULL);
i2s_set_pin(I2S_NUM_0, &pin_config);
}
void loop() {
int16_t audio_data[64]; // Buffer to store audio samples
size_t bytes_read;
// Read audio data from INMP441
i2s_read(I2S_NUM_0, audio_data, sizeof(audio_data), &bytes_read, portMAX_DELAY);
// Print the first sample to the Serial Monitor
Serial.println(audio_data[0]);
}
No Audio Data Output:
Noise in Audio Signal:
Incorrect Sampling Rate:
Q: Can the INMP441 be used with 5V microcontrollers?
A: The INMP441 operates at 1.8V to 3.3V. If using a 5V microcontroller, level shifters are required for the I²S signals.
Q: Does the INMP441 support stereo audio?
A: No, the INMP441 is a mono microphone. However, multiple microphones can be used for stereo or multi-channel audio setups.
Q: What is the maximum sampling rate supported?
A: The INMP441 supports sampling rates up to 48 kHz, depending on the clock frequency provided to the SCK pin.