# 🔌 Подключение: ESP32 DevKit v1 + INMP441

## Таблица подключения

| INMP441 | ESP32 DevKit v1 | Назначение |
| :--- | :--- | :--- |
| VDD | 3.3V | Питание. **Только 3.3V** — модуль не 5V-толерантен, INMP441 рассчитан на 1.8–3.3В (datasheet). |
| GND | GND | Земля |
| SD  | GPIO32 | Serial Data — выход 24-битных сэмплов |
| WS  | GPIO25 | Word Select (LRCLK) — определяет, в каком слоте (левом/правом) сейчас данные |
| SCK | GPIO26 | Serial Clock (BCLK) — тактовый сигнал для каждого бита данных |
| L/R | GND **или** 3.3V | Выбор стереослота — см. ниже |
| NC (2 пина) | не подключать | Зарезервированы производителем |

Пины GPIO25/26/32 заданы по умолчанию в [`Inmp441.h`, Config](include/Inmp441.h#L18-L26) — измените их
там или передайте свою `Inmp441::Config` в конструктор, если разводка другая.

## L/R: выбор канала

INMP441 — моно-микрофон, но передаёт данные в одном из двух стереослотов I2S в зависимости от
напряжения на пине L/R:

| L/R | Слот на шине I2S | `Channel` в коде |
| :--- | :--- | :--- |
| GND | LEFT | `Inmp441::Channel::Left` (значение по умолчанию) |
| VDD / 3.3V | RIGHT | `Inmp441::Channel::Right` |

Это стандартная логика по даташиту INMP441 — L/R не меняет ничего в самом звуке, только то, в
каком из двух слотов I2S-кадра микрофон кладёт свои данные. Если подключили L/R к 3.3V, а в
коде оставили `Channel::Left` (или наоборот), `mic.read()` будет исправно возвращать ESP_OK, но
все сэмплы окажутся нулевыми — микрофон отдаёт данные в слот, который драйвер не слушает.

**Если после сборки в режиме метра громкости (см. [README.md](README.md)) вы видите только
`peak=0 rms=0.0`, а `isAlive=1`** — это первое, что нужно проверить: соответствие пина L/R и
поля `Config::channel`.

## Проверка перед первым включением

1. Мультиметром между VDD и GND — должно быть 3.2–3.4В. Не 5В.
2. L/R подключен либо к GND, либо к 3.3V (не оставлен "в воздухе" — плавающий вход даст
   непредсказуемый слот).
3. Все 6 сигнальных линий (VDD, GND, SD, WS, SCK, L/R) на своих местах, NC-пины не подключены.

## Если нужны другие GPIO

INMP441 не требует конкретных номеров пинов — I2S на ESP32 может быть переключён почти на
любые GPIO. Не годятся:
- `GPIO0`, `GPIO2` — участвуют в загрузке платы (bootstrapping).
- `GPIO6–11` — заняты встроенной Flash-памятью.
- `GPIO34–39` — только вход, без подтяжки; для SCK/WS (выходы ESP32 → микрофон) не подойдут, но
  теоретически годятся для SD (вход в ESP32).
