

The INMP441 is a digital MEMS (Micro-Electro-Mechanical Systems) microphone designed for high-quality audio capture with low power consumption. It features an I2S (Inter-IC Sound) output, which eliminates the need for an external ADC (Analog-to-Digital Converter), making it ideal for digital audio applications. The INMP441 is widely used in devices such as smartphones, tablets, voice-controlled systems, and other portable electronics requiring clear audio input.








The INMP441 microphone is designed to deliver high performance in a compact package. Below are its key technical details:
| Parameter | Value |
|---|---|
| Supply Voltage | 1.8V to 3.3V |
| Current Consumption | 1.4 mA (typical) |
| Output Format | I2S (Inter-IC Sound) |
| Signal-to-Noise Ratio | 61 dB |
| Acoustic Overload Point | 120 dB SPL |
| Frequency Response | 60 Hz to 15 kHz |
| Sensitivity | -26 dBFS ±1 dB |
| Dimensions | 3.5 mm × 2.65 mm × 0.98 mm |
The INMP441 has a total of 5 pins. Below is the pinout and description:
| Pin Name | Pin Number | Description |
|---|---|---|
| VDD | 1 | Power supply input (1.8V to 3.3V). |
| GND | 2 | Ground connection. |
| WS | 3 | Word Select (I2S left/right channel selection). |
| SCK | 4 | Serial Clock for I2S communication. |
| SD | 5 | Serial Data output (I2S audio data). |
The INMP441 microphone is straightforward to use in digital audio applications, thanks to its I2S output. Below are the steps and considerations for integrating it into a circuit:
SCK pin to the I2S clock line of your microcontroller or audio processor.WS pin to the I2S word select line.SD pin to the I2S data input line of your microcontroller.The Arduino UNO does not natively support I2S communication. However, you can use an external I2S interface or a compatible microcontroller like the ESP32. Below is an example of using the INMP441 with an ESP32:
#include <driver/i2s.h>
// I2S configuration for ESP32
#define I2S_NUM I2S_NUM_0 // I2S port number
#define I2S_WS 25 // Word Select pin (WS)
#define I2S_SCK 26 // Serial Clock pin (SCK)
#define I2S_SD 22 // Serial Data pin (SD)
// I2S configuration structure
void setupI2S() {
i2s_config_t i2s_config = {
.mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_RX), // Master mode, receive
.sample_rate = 16000, // Sampling rate
.bits_per_sample = I2S_BITS_PER_SAMPLE_16BIT, // 16-bit audio
.channel_format = I2S_CHANNEL_FMT_ONLY_LEFT, // Left channel only
.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 // Buffer length
};
// Pin configuration
i2s_pin_config_t pin_config = {
.bck_io_num = I2S_SCK, // Serial Clock (SCK)
.ws_io_num = I2S_WS, // Word Select (WS)
.data_out_num = -1, // Not used (output)
.data_in_num = I2S_SD // Serial Data (SD)
};
// Install and start I2S driver
i2s_driver_install(I2S_NUM, &i2s_config, 0, NULL);
i2s_set_pin(I2S_NUM, &pin_config);
}
void setup() {
Serial.begin(115200);
setupI2S(); // Initialize I2S
Serial.println("INMP441 Microphone Initialized");
}
void loop() {
uint8_t data[128]; // Buffer to store audio data
size_t bytesRead;
// Read audio data from I2S
i2s_read(I2S_NUM, data, sizeof(data), &bytesRead, portMAX_DELAY);
// Process or transmit audio data as needed
Serial.print("Bytes read: ");
Serial.println(bytesRead);
}
No Audio Output:
Distorted Audio:
Microphone Not Detected:
Q: Can the INMP441 be used with 5V logic?
A: No, the INMP441 operates at a maximum voltage of 3.3V. Use a level shifter if interfacing with 5V logic.
Q: Does the INMP441 support stereo audio?
A: The INMP441 outputs mono audio. However, multiple microphones can be used for stereo setups by configuring their WS pins for left and right channels.
Q: What is the maximum sampling rate supported?
A: The INMP441 supports sampling rates up to 48 kHz, depending on the I2S clock configuration.
Q: Can I use the INMP441 with an Arduino UNO?
A: The Arduino UNO does not natively support I2S. Use a microcontroller like the ESP32 or an external I2S interface for compatibility.