ROBOTKODLA
ROBOTKODLA Genç Mucit

Eğlen, Kodla, Geleceği Tasarla

Model: INMP441 Sensör Modülü (Breakout) İleri Seviye Üretici: TDK / InvenSense

INMP441 Çok Yönlü (Omnidirectional) I2S Dijital Mikrofon Modülü

Analog gürültülerden tamamen arındırılmış, 24-bit stüdyo kalitesinde sesi doğrudan I2S protokolüyle ESP32 ve ses tanıma yapay zekasına aktaran dijital mikrofondur.

Önemli Güvenlik ve Teknik Sınırlama Bilgisi

Analog çıkış üretmez! Dijital I2S protokolü kullanır. Arduino Uno I2S protokolünü desteklemez; ESP32, Raspberry Pi veya STM32 ile sesli yapay zeka ve ses tanıma için kullanılır.

Teknik Özellikler ve Elektriksel Parametreler

Çalışma Voltajı 1.62V - 3.63V Lojik Seviye Giriş/Çıkış
Akım Tüketimi 1.4 mA (çalışma), 10 µA (standby) Tipik çalışma modu
Haberleşme Arayüzü I2S Dijital Ses Arayüzü (SCK, WS, SD) Protokol türü
Ölçüm Aralığı 61 dBA SNR, 24-bit yüksek sadakat Etkili çalışma sınırı
Hassasiyet / DoğrulukStüdyo sınıfı dijital ses akışıÖlçüm sapma payı
Tepki SüresiGerçek zamanlı I2S DMA transferiÖrnekleme hızı
Ölçüm TürüMEMS Akustik Dijital Ses Veri Akışı (24-Bit)Fiziksel büyüklük
Pin Sayısı6 PinModül header pinleri

Pin Bağlantıları ve Görevleri (Pinout)

Pin #Pin AdıSinyal TürüGörev & Açıklama
1 VDD Güç +1.8V - +3.3V DC (5V VERMEYİN!)
2 GND Toprak Toprak 0V
3 SD I2S Veri Serial Data çıkışı
4 WS I2S Sözcük Seçim Word Select (Sol/Sağ Kanal Saati)
5 SCK I2S Bit Saati Serial Clock
6 L/R Kanal Seçim GND: Sol Kanal, VDD: Sağ Kanal

Geliştirme Kartı Uyumluluk Durumu

Arduino Uno / Nano ✓ Uyumlu
5V Lojik

Doğrudan bağlantı ve yerleşik 5V desteği.

ESP32 (NodeMCU) ✓ Uyumlu
3.3V Lojik

3.3V ile tam uyumlu çalışır.

Raspberry Pi Pico ✓ Uyumlu
3.3V Lojik

MicroPython veya C/C++ SDK ile desteklenir.

BBC Micro:bit ✓ Uyumlu
3.3V Lojik

MakeCode blokları veya MicroPython ile uyumlu.

STM32 (BluePill) ✓ Uyumlu
3.3V (5V Tolerant)

5V tolerant GPIO pinleri doğrudan bağlanabilir.

Örnek Kaynak Kod Kütüphanesi

ESP32 Arduino C++ ✓ Test Edildi

ESP32 ile INMP441 I2S Dijital Ses Kaydı

Gerekli Kütüphaneler: Dahili ESP32 driver/i2s.h
#include <driver/i2s.h>

#define I2S_WS 25
#define I2S_SD 22
#define I2S_SCK 26
#define I2S_PORT I2S_NUM_0

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

  i2s_config_t i2s_config = {
    .mode = (i2s_mode_t)(I2S_MODE_MASTER | I2S_MODE_RX),
    .sample_rate = 16000,
    .bits_per_sample = I2S_BITS_PER_SAMPLE_32BIT,
    .channel_format = I2S_CHANNEL_FMT_ONLY_LEFT,
    .communication_format = I2S_COMM_FORMAT_STAND_I2S,
    .intr_alloc_flags = ESP_INTR_FLAG_LEVEL1,
    .dma_buf_count = 4,
    .dma_buf_len = 512,
    .use_apll = false
  };

  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_driver_install(I2S_PORT, &i2s_config, 0, NULL);
  i2s_set_pin(I2S_PORT, &pin_config);
}

void loop() {
  int32_t sample = 0;
  size_t bytes_read;
  i2s_read(I2S_PORT, &sample, sizeof(sample), &bytes_read, portMAX_DELAY);
  
  // 32-bit veriyi anlamlı 16-bit seviyeye kaydır
  int16_t sample16 = sample >> 14;
  Serial.println(sample16);
}
Seri Monitör Çıktısı (Simülasyon):
I2S Ses Verisi Okunuyor... Genlik: 14205

Çalışma Mantığı ve Fiziksel İlkeler

I2S Dijital Mikrofon Nedir?

Geleneksel analog mikrofonlar ortamdaki elektriksel parazitleri kablo üzerinden toplayarak cızırtı oluşturur.

INMP441, minyatür MEMS mikrofonun hemen arkasına entegre bir 24-bit ADC ve I2S arayüzü barındırır. Ses analog olarak kabloya hiç çıkmadan doğrudan mikrometre mesafede dijitalleştirilir. ESP32'nin donanımsal I2S DMA kontrolcüsü ile Alexa / Siri benzeri sesli asistanlar, kelime tanıma yapay zekası ve WiFi üzerinden telsiz projeleri için en temiz kaydı sunar.

Artıları ve Sınırlamaları

Güçlü Yönleri (Avantajlar)
  • Sıfır analog dip gürültüsü (tamamen dijital 24-bit ses)
  • I2S arayüzü ile işlemciyi yormadan DMA üzerinden aktarım
  • 61 dBA yüksek sinyal-gürültü oranı (SNR)
  • Sınırlamaları (Dezavantajlar)
  • 8-bit Arduino Uno ile çalışmaz (I2S donanımı gerektirir)
  • 3.63V üzeri voltaj dayanıksızlığı
  • Sık Karşılaşılan Sorunlar ve Çözümleri

  • L/R pini GND'ye bağlanırsa Sol kanal, VCC'ye bağlanırsa Sağ kanal olarak veri gönderir.