# Методическое пособие: урок «Как компьютер слышит звук» на INMP441

Стенд: ESP32 + `Inmp441` (цифровой MEMS-микрофон) + метр громкости в Serial Monitor +
Python-визуализатор [`tools/visualizer.py`](tools/visualizer.py) (осциллограмма, спектр,
спектрограмма в реальном времени). Пособие связывает показания реального микрофона с темами
физики (механические волны, звук) и информатики (аналого-цифровое преобразование, Фурье-анализ)
8–11 класса.

Рассчитано на **2 урока по 40–45 минут**: первый — физика звука и как микрофон превращает
давление воздуха в числа; второй — спектральный анализ и преобразование Фурье. Уроки можно
провести отдельно или подряд как один расширенный блок.

## Кто чем пользуется

1. **Инженер** собирает схему по [WIRING.md](WIRING.md) (главное — не перепутать пин L/R, см.
   там же), прошивает `src/main.cpp`, один раз ставит зависимости Python
   (`pip install -r tools/requirements.txt`, см. README.md).
2. **Учитель** на уроке открывает Serial Monitor (метр громкости — сразу видно, жив ли
   микрофон) и/или запускает `python3 tools/visualizer.py` для графиков — заходить в код
   не обязательно.

## Что уже готово, а что придётся включить на уроке

| Что | Как включить | Комментарий |
|---|---|---|
| Метр громкости (пик/RMS/дБFS) | Работает сразу после прошивки, Serial Monitor 921600 бод | Не требует Python — минимальный вариант для урока без компьютера с графикой |
| Serial Plotter (сырая волна) | Отправить `p` в Serial Monitor | Встроенный в Arduino IDE график, без установки Python |
| Три графика (осциллограмма/спектр/спектрограмма) | `python3 tools/visualizer.py`, стенд в режиме Plotter (`p`) | Главный инструмент для Урока 2 |

---

## Урок 1. Звук — это волна, а микрофон — линейка для воздуха

**Тема:** механические волны, звуковое давление, аналого-цифровое преобразование, частота
дискретизации.

**Ход работы.**
1. Включить стенд, открыть Serial Monitor — на экране бежит метр громкости
   ([README.md, "Тестовый стенд"](README.md#тестовый-стенд-serial-monitor-921600-бод)):
   ```
   [-18dBFS] peak= 4200 rms=3120.4 isAlive=1 ##############
   ```
2. Постучать пальцем по корпусу микрофона рядом с отверстием мембраны — `peak` и число `#`
   резко подскочат. Замолчать всем классом на 10 секунд — посмотреть на показания в тишине
   (они не будут нулевыми — см. шаг 4).
3. Сказать по очереди несколько имён — заметить, что `peak` разный у разных голосов и разной
   громкости речи.
4. **Вопрос классу:** «Если в классе никто не говорит, почему `rms` не показывает ровно 0?» —
   разбор в THEORY.md, [раздел 2](THEORY.md#2-микрофон-inmp441--как-звук-становится-числом):
   даже полная тишина содержит слабый электронный шум самого микрофона и едва слышный шум
   помещения (вентиляция, соседние комнаты) — абсолютной тишины физически не бывает.

**Разбор.** Звук — волна давления воздуха ([THEORY.md, раздел 1](THEORY.md#1-что-такое-звук-физически)).
Мембрана INMP441 физически прогибается под этим давлением, а встроенный 24-битный АЦП
оцифровывает прогиб 16000 раз в секунду — это и есть *частота дискретизации*
([THEORY.md, раздел 4](THEORY.md#4-частота-дискретизации-и-теорема-найквиста)). Число `peak` в
метре — это амплитуда, `dBFS` — насколько сигнал близок к "потолку" 16-битной шкалы; это не
абсолютная громкость в децибелах, которую печатают на коробках от колонок (объяснение —
[THEORY.md, раздел 6](THEORY.md#6-почему-нет-абсолютных-дб-spl)) — важно не путать эти две вещи
с учениками.

**Практическое задание.** Найти для класса три источника звука разной громкости (шёпот, обычная
речь, хлопок в ладоши на расстоянии 1 м) и записать `peak`/`dBFS` для каждого. Построить
таблицу и обсудить: во сколько раз отличаются числа `peak` при том, что на слух хлопок кажется
"не в 10 раз громче" шёпота — повод поговорить о том, что человеческое восприятие громкости
нелинейно (отсюда и логарифмическая шкала дБ в технике).

---

## Урок 2. Из чего состоит звук: преобразование Фурье

**Тема:** спектральный анализ, гармоники, форманты речи, преобразование Фурье.

**Подготовка:** запустить `python3 tools/visualizer.py` (см.
[README.md, "Python-визуализатор"](README.md#️-python-визуализатор)), стенд переключить в режим
Plotter клавишей `p`. На экране — три синхронных графика: осциллограмма, спектр, спектрограмма.

**Ход работы.**
1. Кто-то из класса свистит одной ровной нотой несколько секунд. Все смотрят на график —
   осциллограмма превращается в почти идеальную синусоиду, а на спектре появляется один острый
   узкий пик.
2. Тот же ученик произносит гласный звук "А-А-А" на той же громкости. Осциллограмма становится
   "рваной" и сложной, а на спектре — сразу несколько пиков (форманты).
3. Хлопнуть в ладоши один раз. Осциллограмма — короткий острый импульс; спектр в этот момент —
   широкий, размазанный по всей ширине графика.

**Разбор.** Преобразование Фурье раскладывает сложную волну на сумму простых синусоид разных
частот — график "давление от времени" превращается в график "энергия от частоты"
([THEORY.md, раздел 7](THEORY.md#7-спектр-и-преобразование-фурье)). Свист близок к одной чистой
синусоиде — поэтому один пик. Голос — наложение нескольких резонансов голосового тракта
(форманты) — поэтому несколько пиков, и именно их расположение делает голоса разных людей
узнаваемыми. Хлопок — очень короткий во времени сигнал, а преобразование Фурье гарантирует:
чем короче сигнал во времени, тем шире его спектр по частоте — фундаментальный факт, а не
особенность конкретного микрофона.

**Про частоту Найквиста.** При частоте дискретизации 16000 Гц корректно различимы частоты
только до 8000 Гц ([THEORY.md, раздел 4](THEORY.md#4-частота-дискретизации-и-теорема-найквиста)) —
это видно на графике спектра: он обрывается на середине оси частот, а не продолжается до
бесконечности. Попросите класс попробовать свистеть максимально высоко — пик на спектре не
может уйти правее этой границы.

**Практическое задание.** Каждый ученик по очереди произносит гласные "А", "О", "У" одинаковой
громкости, класс фотографирует/зарисовывает форму спектра для каждой. Сравнить: у всех ли
учеников гласный "А" даёт пики в одних и тех же местах, или узор индивидуален — обсудить, как
этот принцип используется в распознавании речи и биометрии по голосу.

---

## Приложение: тайминг и оборудование

| Урок | Длительность | Обязательное оборудование | Предмет |
|---|---|---|---|
| 1. Звук — это волна | 40–45 мин | Стенд, Serial Monitor (компьютер с Arduino IDE/PlatformIO) | Физика |
| 2. Преобразование Фурье | 40–45 мин | Стенд + Python-визуализатор (`tools/visualizer.py`) | Физика, информатика |

Оба урока требуют тихого помещения хотя бы на пару минут для демонстрации шума тишины
(Урок 1, шаг 2) — по возможности проводите в кабинете, где можно ненадолго попросить класс
замолчать.
