Skip to Content

Microphone INMP441 I2S Omnidirectional Module

The INMP441 is a popular I2S microphone module featuring an omnidirectional MEMS microphone with a bottom port. It provides high performance, low power consumption, and digital output. The module integrates a MEMS sensor, signal conditioning, analog-to-digital converter (ADC), anti-aliasing filter, power management, and a 24-bit I2S interface.

Package Includes:

  • 1x INMP441 I2S Microphone Module

44.10 AED 44.10 AED Tax Included
44.10 AED Tax Included

Not Available For Sale

This combination does not exist.

Terms and Conditions
30-day money-back guarantee
Shipping: 2-3 Business Days

 

Features:

  • Low noise
  • Low power consumption
  • Suitable for various electronic products
  • Stereo input capability (Left/Right channels)
  • Omnidirectional microphone response
  • 24-bit I2S digital output

 

Principle of Work:

Sampling high-quality audio requires sample rates of 16-40 KHz. While you can use a timer to sample the ADC directly, this is inefficient for ESP32 CPU usage. Instead, the built-in I2S interface reads samples from the ADC directly into memory via DMA buffers in the background, enabling efficient continuous audio capture.

Pinout:

INMP441 Pinout

  • SCK: Serial clock for I2S interface
  • WS: Word select for I2S (frame sync)
  • L/R: Left/Right channel select (Low = left channel, High = right channel)
  • SD: Serial data output
  • VCC: Power supply, 1.8V to 3.3V
  • GND: Ground

Channel Selection (L/R pin):

  • LEFT – Connect L/R to GND
  • RIGHT – Connect L/R to VDD

Applications:

  • Noise detectors
  • Voice control modules
  • Sound recorders
  • Activity monitors

Circuit Example with ESP32:

Below is a simple wiring diagram connecting the INMP441 module to an ESP32. Use GPIO numbers for connections, as ESP32 pinouts may vary.

INMP441 ESP32 Circuit

Library:

The ESP32 Arduino core includes an I2S driver library by default, which supports communication with the INMP441 module.

Example Code (Arduino IDE):

// Include I2S driver
#include "driver/i2s.h"

// INMP441 I2S microphone pins
#define I2S_WS 25
#define I2S_SD 33
#define I2S_SCK 32

#define I2S_PORT I2S_NUM_0
#define bufferLen 64
int16_t sBuffer[bufferLen];

void i2s_install() {
  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_STAND_I2S),
    .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() {
  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() {
  Serial.begin(115200);
  delay(1000);
  i2s_install();
  i2s_setpin();
  i2s_start(I2S_PORT);
  delay(500);
}

void loop() {
  int rangelimit = 3000;
  Serial.print(rangelimit * -1);
  Serial.print(" ");
  Serial.print(rangelimit);
  Serial.print(" ");

  size_t bytesIn = 0;
  esp_err_t result = i2s_read(I2S_PORT, &sBuffer, bufferLen * sizeof(int16_t), &bytesIn, portMAX_DELAY);

  if (result == ESP_OK) {
    int16_t samples_read = bytesIn / sizeof(int16_t);
    if (samples_read > 0) {
      float mean = 0;
      for (int i = 0; i < samples_read; i++) {
        mean += sBuffer[i];
      }
      mean /= samples_read;
      Serial.println(mean);
    }
  }
}

Technical Details:

  • Signal-to-noise ratio (SNR): 61 dBA
  • Frequency response: 60 Hz – 15 kHz
  • Board size: 14 mm diameter, low profile
  • Sensitivity: -26 dBFS at 1 kHz, 94 dB input
  • Noise floor: -87 dBFS
  • Supported sample rates: 44.1 kHz to 48 kHz

Resources:

Comparisons:

Omnidirectional microphones like the INMP441 have a wide pickup radius (up to several meters), making them sensitive to multiple voices and background noise. While excellent for informal meetings, short-distance conversations, and remote activities, their sound quality can be lower than single-point microphones unless effective noise reduction is implemented.

 

Features

  • LoRa SX1276 Wireless Module: Built around the SX1276 chip, the module employs LoRa technology, allowing for long-range data transmission and excellent penetration capabilities.
  • Configurable Output Power: The module's output power can be adjusted from +13 to +20 dBm (up to 100 mW) through software settings, providing flexibility in balancing communication distance and power consumption.
  • Low Power Consumption: During transmission, power consumption ranges from 50mA (+13 dBm) to 150mA (+20dBm), while in listening mode, it requires approximately 30mA, making it energy-efficient for battery-operated applications.
  • AES-128 Encryption Support: The module offers AES-128 encryption, ensuring secure and private data transmission, making it suitable for applications that require data confidentiality.
  • Multipoint Network Capabilities: It supports multipoint networks, allowing the establishment of individual nodes within the network for seamless and efficient communication.
  • Wide Power Supply Range: The module can be powered with a voltage range from 3V to 5V, making it compatible with various power sources and microcontrollers.

NOTE: It is important to solder a 16cm length of cable to the antenna pin before using it since not connecting any antenna can damage it. Optionally, the board has pads to solder an SMA connector with antenna thread.

Specifications

  • LoRa SX1276 wireless module with SPI interface (900 MHz)
  • Output power: +13 to +20 dBm up to 100 mW configurable by software
  • Consumption: 50mA (+13 dBm) to 150mA (+20dBm) in transmission, approx 30mA in listening
  • Supports AES-128 encryption
  • Supports multipoint networks with individual nodes
  • Power: 3 to 5V