Skip to content

ICS-43434 — цифровой MEMS-микрофон

Цифровой микрофон с 24-битным АЦП на кристалле, выход по интерфейсу I2S. Протокольно и электрически близкий аналог INMP441, но с более широким паспортным диапазоном частот и SNR.

🎵 Цифровой MEMS-микрофон ICS-43434

ICS-43434 — цифровой микрофон с 24-битным АЦП прямо на кристалле, выход по интерфейсу I2S. Протокольно и электрически он близкий аналог INMP441 (тот же формат I2S, та же логика выбора канала L/R), но с более широким паспортным диапазоном частот и SNR — см. THEORY.md, раздел 3.

Этот компонент делает акцент только на самом датчике: чтение через I2S/DMA, метр громкости, Serial Plotter — и даёт максимум физики звуковой волны через набор Python-инструментов, включая работу с камертоном (точная частота, биения) и модель восприятия высоты звука ухом (мел-шкала).

📋 Навигация

ФайлЧто внутри
WIRING.mdПодключение, таблица пинов, логика L/R-канала
THEORY.mdФизика звуковой волны, I2S, Найквист, БПФ, биения, мел-шкала, почему нет абсолютных дБ SPL
Lesson.mdМетодический план уроков — звук, спектр, камертон и биения
PREZ.mdПрезентация модуля — тезисы для урока

🛠 Состав компонента

  • include/Ics43434.h — интерфейс класса драйвера.
  • src/Ics43434.cpp — настройка канала I2S и чтение через DMA.
  • src/main.cpp — тестовый стенд: метр громкости и режим Serial Plotter.
  • tools/ — четыре Python-инструмента (см. ниже).

🚀 Сборка и прошивка (PlatformIO)

cd Sensors/Sound/ICS43434
pio run -t upload && pio device monitor

По умолчанию пины настроены под ESP32 DevKit v1 (GPIO5/18/19) — см. Ics43434::Config и WIRING.md. Перед первым запуском обязательно проверьте пин L/R (SEL) — от него зависит поле Config::channel, при несовпадении микрофон будет отдавать одни нули (см. WIRING.md).

Тестовый стенд (Serial Monitor, 921600 бод)

По умолчанию стенд печатает метр громкости — пик, RMS и статус связи 10 раз в секунду:

[-18dBFS] peak= 4200 rms=3120.4 isAlive=1 ##############

Команда p переключает в режим Serial Plotter/Python — сырая волна звука, тот же поток читают все скрипты из tools/.

🖥️ Python-инструменты

cd tools
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt

Перед запуском любого скрипта переключите стенд в режим Plotter командой p в Serial Monitor.

СкриптЧто показываетФизика
01_noise_meter.pyОсциллограмма + метр громкости (дБFS)Звук как волна давления во времени
02_spectrum_fft.pyСпектр (БПФ) + спектрограммаПреобразование Фурье, форманты
03_tuning_fork.py--mode pitch: точная частота камертона (pYIN); --mode beats: запись биений двух реальных источниковРезонанс, биения, тон Тартини
04_mel_hearing.pyЛинейный спектр vs мел-спектрограмма одной записиПсихоакустика, нелинейность слуха
python3 01_noise_meter.py /dev/ttyUSB0
python3 02_spectrum_fft.py /dev/ttyUSB0
python3 03_tuning_fork.py --mode pitch /dev/ttyUSB0
python3 03_tuning_fork.py --mode beats /dev/ttyUSB0
python3 04_mel_hearing.py /dev/ttyUSB0

Все относительные шкалы (LSB, дБFS) — не калиброванные дБ SPL, см. THEORY.md, раздел 8. 03_tuning_fork.py и 04_mel_hearing.py требуют librosa (тяжёлая зависимость, ставится через requirements.txt); beats-режим также использует scipy.signal.hilbert для огибающей.