Codey OnlineArduino- & ESP32-componentenbibliotheek › INMP441 microphone
INMP441 microphone
Sensoren

INMP441 microphone

De INMP441 is een digitale MEMS-microfoon die audio via een I2S-interface levert. Sluit SCK aan als I2S-klok, WS als het word-select- of links/rechts-signaal en SD als de seriële audiolijn, en voed hem met 1,8–3,3 V met een gemeenschappelijke GND.

Breedte: 14 mm

Pinout — INMP441 microphone

Pin Signaal Beschrijving
SCK SCK top-left through-hole pin
WS data top-center through-hole pin
L/R digital top-right through-hole pin
SD data bottom-left through-hole pin
VDD power 1.8v - 3.3v bottom-center through-hole pin
GND ground bottom-right through-hole pin

Voorbeeld-aansluitschema — INMP441 microphone

Van Naar Draad
board:5V x1:VDD red
board:GND x1:GND black
board:D3 x1:WS green
board:D2 x1:SCK blue
board:D4 x1:SD yellow
board:GND.1 x1:L/R black

Voorbeeld-Arduinocode — INMP441 microphone

Dit voorbeeld is geschreven en compile-gecheckt voor de arduino-uno. Codey Online past het voor je aan naar elk ander ondersteund board.

// INMP441 microphone example for Arduino Uno
//
// Note: The Arduino Uno (AVR) does not have a built-in I2S peripheral or
// a standard preinstalled I2S library, so this sketch demonstrates a simple
// software-based read of the microphone clock/data lines using direct pin reads.
// This is not a full audio recorder, but it is a beginner-friendly example that
// compiles on Uno and shows how to detect microphone activity.

#include <Arduino.h>

const byte PIN_BCLK = 2;   // SCK on the INMP441
const byte PIN_LRCLK = 3;  // WS on the INMP441
const byte PIN_DATA = 4;   // SD on the INMP441

volatile bool lastBclk = LOW;

uint32_t readOneI2SSample() {
  // Wait for a rising edge on BCLK, then sample DATA.
  bool current = digitalRead(PIN_BCLK);
  while (current == lastBclk) {
    current = digitalRead(PIN_BCLK);
  }
  lastBclk = current;

  uint32_t sample = 0;
  for (int i = 0; i < 24; i++) {
    // Wait for next clock edge
    bool clk = digitalRead(PIN_BCLK);
    while (clk == lastBclk) {
      clk = digitalRead(PIN_BCLK);
    }
    lastBclk = clk;

    sample <<= 1;
    if (digitalRead(PIN_DATA)) {
      sample |= 1;
    }
  }
  return sample;
}

void setup() {
  Serial.begin(115200);

  pinMode(PIN_BCLK, INPUT);
  pinMode(PIN_LRCLK, INPUT);
  pinMode(PIN_DATA, INPUT);

  Serial.println("INMP441 microphone demo started");
  Serial.println("L/R connected to GND selects the left channel.");
  Serial.println("Speak near the microphone and watch the values change.");
}

void loop() {
  // The INMP441 sends 24-bit audio data synchronized to BCLK/WS.
  // On an Uno this software example is only suitable for basic learning.
  uint32_t raw = readOneI2SSample();

  // Convert to signed-ish 24-bit range for display.
  int32_t sample = (int32_t)(raw & 0x00FFFFFF);
  if (sample & 0x00800000) {
    sample |= 0xFF000000;
  }

  long magnitude = labs(sample);

  Serial.print("Raw: ");
  Serial.print(sample);
  Serial.print("  Magnitude: ");
  Serial.println(magnitude);

  delay(20);
}

Vergelijkbare componenten

18650 Battery Shield with USB-C Charger and 5V Boost Converter

18650 Battery Shield with USB-C Charger and 5V Boost Converter

2.4 inch OLED Display I2C 3.3V

2.4 inch OLED Display I2C 3.3V

3.5 inch TFT LCD Shield

3.5 inch TFT LCD Shield

50kg Load Cell Weight Sensor

50kg Load Cell Weight Sensor

Bouw je Arduino- of ESP32-project met AI

Beschrijf wat je wilt bouwen. Codey Online schrijft de code, tekent het aansluitschema, compileert het en flasht je board rechtstreeks vanuit de browser.

Gratis starten