Codey OnlineBibliothèque de composants Arduino & ESP32 › INMP441 microphone
INMP441 microphone
Capteurs

INMP441 microphone

Le INMP441 est un microphone MEMS numérique qui fournit des données audio via une interface I2S. Connectez SCK comme horloge I2S, WS comme signal word-select (gauche/droite) et SD comme ligne de données audio série, et alimentez-le en 1,8–3,3 V avec une masse commune.

Largeur: 14 mm

Brochage — INMP441 microphone

Broche Signal Description
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

Exemple de schéma de câblage — INMP441 microphone

De Vers Fil
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

Exemple de code Arduino — INMP441 microphone

Cet exemple a été écrit et vérifié à la compilation pour le arduino-uno. Codey Online l'adapte pour vous à toute autre carte prise en charge.

// 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);
}

Composants similaires

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

Construisez votre projet Arduino ou ESP32 avec l'IA

Décrivez ce que vous voulez créer. Codey Online écrit le code, dessine le schéma de câblage, le compile et flashe votre carte directement depuis le navigateur.

Commencez gratuitement