CelloPickUP: активный звукосниматель и DSP-процессор студийного уровня
Паспорт модуля
| Параметр | Значение |
|---|---|
| Аудитория | 1 обучающийся, подросток; ученик музыкальных школ(виолончель); в электронике — стартовый уровень «новичок»; мотивация высокая, внутренняя (свой инструмент, свой звук); формат — индивидуально с наставником |
| Аутентичная задача (зачем) | Спроектировать, собрать и защитить активный звукосниматель с DSP-обработкой для виолончели; выступить с проектом на соревновательном треке («Инженеры будущего», проектные конкурсы НТО); провести пилотные испытания комплекта с музыкантами оркестра/филармонии |
| Объём и формат | ≈ 72 акад. часа: 36 занятий × 2 ч, 2 раза в неделю (~4,5 месяца, «ближайший горизонт»); + самостоятельная практика между занятиями; принцип «часов столько, сколько нужно голове» — контрольные точки пропускают вперёд только при достижении цели фазы |
| Оборудование и среда | Платы WeAct: STM32H743VIT6 (DSP-флагман), STM32U585CIU6 (бортовой блок), STM32F411 BlackPill (учебная), STM32G031 (сервисная), ESP32-C6 (BLE-управление); Arduino-совместимая плата (STEMduino) — мост фазы A и измерительный инструмент; 2× кодек ES8311+NS4150B; датчик MEAS LDT0-028K; осциллограф Rigol DHO804 (4 канала, 12 бит — методики в «Лабораторном практикуме»); макетная плата, мультиметр, паяльная станция; ПО: Falstad + ngspice/LTspice (готовый проект frontend.cir), KiCad (трек в Приложении 3), STM32CubeIDE/CubeMX, CMSIS-DSP, REW/Audacity; докупить: ОУ (OPA1671/MCP6022; альтернативы — в компаньоне), пассив 100 кОм–33 МОм, BAT54S, экранированный кабель и корпус, LiPo 1S + TP4056 + LDO |
| Ограничения | ТБ: пайка, LiPo, пики пьезо до десятков вольт; работа только с безопасным низковольтным питанием (≤ 9 В), без сетевых 220 В цепей; инструмент ученика — концертный, крепёж датчика только неразрушающий (мастика/воск/акриловый скотч) |
Образовательные цели
| № | Обучающийся … | Блум—Андерсон | Миллер | Чем проверяем (раздел «Оценивание») |
|---|---|---|---|---|
| 1 | объясняет базовые законы цепей (Ом, мощность, делитель, логические уровни) и физику пьезоэффекта (источник заряда, ёмкость, импеданс) своими словами и расчётом | понимать | знает | мини-тесты + теоретическая задача |
| 2 | собирает и измеряет цепи на макетной плате по принципиальной схеме и синтезирует цепь под заданный ток/функцию | применять | показывает как | пробный тур (5 задач, 100 баллов, на время) |
| 3 | рассчитывает и собирает высокоомный входной буфер / зарядовый усилитель с защитой входа и смещением от однополярного питания, подтверждая расчёт измерением АЧХ | применять / анализировать | показывает как | практикум: расчёт → LTspice → макет → измерение f среза (совпадение ±20%), чек-лист |
| 4 | находит и устраняет неисправности в аналоговом и цифровом тракте (гул, наводки, джиттер, «заикания» DMA) по систематической методике | анализировать | показывает как | дебаг-кейсы с намеренно внесёнными неисправностями, протокол диагностики |
| 5 | создаёт прошивку DSP-тракта (SAI+DMA double buffer → biquad-EQ → компрессор/лимитер → IR-свёртка) с измеренной сквозной латентностью < 10 мс | создавать | делает | работающий прототип; замер латентности осциллографом/loopback; код-ревью наставника по рубрике |
| 6 | проектирует и проводит слепое A/B-сравнение своего тракта с эталонной записью через конденсаторный микрофон и с пассивным пьезо, делает выводы для итерации | оценивать | делает | протокол испытания с ≥3 слушателями-музыкантами, отчёт с выводами |
| 7 | защищает инженерный проект перед жюри: паспорт проекта, демонстрация вживую, ответы на вопросы по любому узлу схемы и кода | создавать | делает | пробная защита по рубрике жюри инженерных соревнований (ниже) + подача заявки на трек |
Цели уровня «применять» и выше — 6 из 7: модуль практический.
Оценивание
Спроектировано до контента. Каждой цели — средство того же уровня: тесты только для цели 1; цели 2–7 проверяются только деланием.
Входная диагностика (занятие 1, 30 мин)
- Мини-задание руками: зажечь светодиод от 3,3 В через резистор — выбрать номинал из кучки (проверяем реальный стартовый ноль/не ноль).
- 5 вопросов: что такое ток/напряжение/сопротивление; читал ли схему; паял ли; программировал ли; на чём.
- Мотивационное интервью: какой звук хочет получить (референс-записи виолончели), сколько времени готов давать между занятиями, отношение к соревнованию (цель или средство).
- Аудио-профиль: записываем 3 референса — акустика в комнате, пассивный пьезо «как есть», студийная запись из фонотеки. Это нулевая точка для цели 6.
Контрольные точки
| Занятие | Что проверяем (цель №) | Средство | Тип |
|---|---|---|---|
| 3, 5 | 1 | квизы 5 вопросов + расчётная задача | формирующее |
| 6 | 1, 2 | 1 теор. + 4 практ. задачи, 100 баллов, тайминг соревновательного дня; порог перехода в фазу B — ≥ 60 баллов | рубежное |
| 10 | 3 | практикум «буфер»: расчёт f среза → симуляция → макет → измерение; совпадение ±20% и объяснение расхождения | формирующее |
| 14 | 3, 4 | защита аналогового фронтенда: АЧХ 30 Гц–20 кГц, шум/гул при экранировке, дебаг-кейс «наведённый гул» | рубежное |
| 18 | 4 | дебаг-кейс: «звук заикается» (сломан DMA-буфер) — диагностика по протоколу | формирующее |
| 24 | 5 | демонстрация DSP-цепочки: EQ+лимитер на H743, замер латентности | формирующее |
| 28 | 5 | рубеж фазы C: полный тракт с IR, латентность < 10 мс подтверждена измерением | рубежное |
| 32 | 6 | слепой A/B-тест с музыкантами, протокол и выводы | формирующее |
| 35 | 7 | пробная защита в условиях, приближенных к соревнованию: 7 мин доклад + 5 мин вопросы «злого жюри» | итоговое |
| 36 | все | рефлексия + таблица «цель → достигнута?» + план заявки на трек | итоговое |
Рубрика итоговой защиты (по логике жюри инженерных соревнований)
| Критерий | 0 баллов | 1 балл | 2 балла |
|---|---|---|---|
| Работоспособность | прототип не звучит вживую | звучит с оговорками (гул/заикания) | стабильная живая демонстрация на инструменте, латентность подтверждена |
| Обоснование решений | «так было в интернете» | объясняет часть номиналов и настроек | объясняет каждый номинал, каждый регистр/функцию, показывает измерения |
| Инженерная культура | навесной хаос, нет схемы | схема есть, монтаж небрежный | принципиальная схема, экранированный корпус, читаемый код с комментариями |
| Испытания и данные | нет измерений | АЧХ или латентность измерены | АЧХ + латентность + слепой A/B с музыкантами, выводы |
| Презентация | читает со слайдов | связный доклад | доклад + живая игра + уверенные ответы на вопросы |
Максимум 10; цель пробной защиты — ≥ 8.
Рубрика код-ревью прошивки (цель 5)
| Критерий | 0 | 1 | 2 |
|---|---|---|---|
| Структура | всё в main() | разнесено по модулям частично | тракт: драйверы / DSP-цепь / управление разделены |
| DMA-дисциплина | обработка в прерывании «сколько успеем» | флаги half/full есть, но копирования лишние | double buffer, обработка вне ISR, ни одного лишнего memcpy |
| Понимание | не может объяснить строки | объясняет с подсказками | объясняет каждую функцию CMSIS-DSP и выбор параметров |
Путь обучающегося
Распределение по Такману (36 занятий): формирование ~15% (1–6), шторм ~15% (7–11), активная работа ~60% (12–32, пик сложности — фаза C), завершение ~10% (33–36). Роль наставника по SSDL: тренер → мотиватор → фасилитатор → консультант.
flowchart LR
A["Занятия 1–6<br/>Фаза A: Основы<br/><br/>SSDL: тренер-инструктаж"] --> B["Занятия 7–14<br/>Фаза B: Аналоговый фронтенд<br/>ШТОРМ: первый гул, первые неудачи<br/>SSDL: мотиватор"]
B --> C["Занятия 15–28<br/>Фаза C: Цифра и DSP<br/>ПИК СЛОЖНОСТИ<br/>SSDL: фасилитатор"]
C --> D["Занятия 29–36<br/>Фаза D: Интеграция, испытания,<br/>защита, рефлексия<br/>SSDL: консультант-делегирование"]
| № | Тема | Цель занятия (одна) | Retrieval-разминка | Основная активность | Мини-проверка |
|---|---|---|---|---|---|
| 1 | Старт. Ток, напряжение, закон Ома руками | измеряет U, I, R мультиметром в собранной цепи | — (входная диагностика) | worked example: светодиод + резистор, расчёт номинала | собрал цепь на 2 светодиода, посчитал резисторы |
| 2 | Делитель напряжения. Потенциометр. Сверка перечня олимпиад | рассчитывает и собирает делитель под заданное Uвых | 3 вопроса зан. 1 | практика: делитель, потенциометр, фоторезистор | делитель 5В→1,65В с проверкой мультиметром |
| 3 | Мощность. Последовательно/параллельно | решает расчётные задачи формата турнира | квиз 5 вопросов (Ом, делитель) | эталонное решение задачи 3 регламента (28 мА из набора) → своя вариация | задача «синтез цепи под ток» на время |
| 4 | Логические уровни. И/ИЛИ/НЕ. Кнопки и подтяжки | собирает схему по таблице истинности | 3 вопроса (мощность, параллельность) | worked example: задача 4 регламента (2 кнопки, 3 светодиода) | своя таблица истинности → сборка |
| 5 | Логика на микросхемах CD4069/4071/4081 | реализует функцию на логических ИМС | квиз: таблицы истинности | эталон: F=(НЕ A)·(НЕ B) из регламента → модификация | функция с 30-балльной сложности |
| 6 | Рубеж фазы A | выполняет 5 задач в соревновательном тайминге | кумулятивный квиз занятий 1–5 | тур 100 баллов по регламенту; пост-разбор ошибок | ≥ 60 баллов; рефлексия ошибок |
| 7 | Пьезоэффект. LDT0-028K как источник заряда | объясняет, почему пьезо нельзя включить «в микрофонный вход» | 3 вопроса (делитель, импеданс из тура) | эксперимент: осциллограф/АЦП на пьезо, наблюдение пиков десятки вольт | расчёт f среза для Rвх 1/10/100 МОм |
| 8 | Операционный усилитель. Повторитель | собирает буфер-повторитель на макетке | RC-фильтр, ёмкость датчика | worked example: буфер на MCP6022, каждый номинал объяснён | буфер работает, сигнал на выходе |
| 9 | Смещение от однополярного питания. Виртуальная земля | рассчитывает bias-цепь 2×10 МОм + 1 мкФ | ОУ: входы, питание | практика: смещение, проверка рабочей точки | Uвых покоя = ½ питания ±5% |
| 10 | Частота среза. АЧХ. LTspice (рубеж: практикум «буфер») | подтверждает расчётную f среза измерением | закон Ома в комплексной форме (качественно) | симуляция → макет → снятие АЧХ по точкам | совпадение расчёт/измерение ±20% |
| 11 | Защита входа. Диоды Шоттки. Пики фортиссимо | собирает защиту 100 кОм + BAT54S и доказывает её работу | биасирование, f среза | эксперимент: пиццикато-удар, ограничение пика на осциллографе | пик ограничен, звук не искажён |
| 12 | Зарядовый усилитель — альтернатива | сравнивает буфер и charge amp по НЧ и наводкам | защита, пики | worked example: charge amp, расчёт C обратной связи | обоснованный выбор схемы для проекта |
| 13 | Экранировка и монтаж высокоомных цепей | переносит буфер в экранированный корпус | все схемы фазы B (кумулятивно) | пайка, охранное кольцо, экран-кабель; ТБ пайки | гул 50 Гц упал не менее чем на 20 дБ |
| 14 | Защита аналогового фронтенда (рубеж фазы B) | демонстрирует фронтенд и решает дебаг-кейс | кумулятивный квиз фазы B | доклад 5 мин + кейс «наведённый гул» | рубрика фронтенда закрыта |
| 15 | Архитектура цифрового тракта. Роли плат парка | распределяет платы по ролям и обосновывает | пьезо, буфер (интервальный возврат) | разбор: H743 против U585 против F411 — почему так | схема тракта нарисована и защищена |
| 16 | I2C. Подключение и регистры ES8311 | читает/пишет регистры кодека | логические уровни (возврат к зан. 4) | worked example: CubeMX + чтение ID кодека | кодек отвечает по I2C |
| 17 | I2S/SAI. Тактирование без джиттера | настраивает SAI 24 бит/48 кГц master | I2C-транзакция | CubeMX: clock tree, MCLK, проверка частот | осциллограф: BCLK/LRCK верные |
| 18 | DMA circular + double buffer (дебаг-кейс) | объясняет и чинит «заикающийся» звук | SAI-параметры | эталонный passthrough → внесённая поломка → диагностика | кейс закрыт по протоколу |
| 19 | Сквозной passthrough на F411 (учебная плата) | собирает вход→выход без обработки | DMA-флаги half/full | сборка тракта на «расходной» плате | чистый passthrough, замер задержки |
| 20 | Биквадратные IIR. Параметрический EQ | вырезает резонанс плёнки notch-фильтром | АЧХ (возврат к зан. 10 — интервальный) | worked example: arm_biquad_cascade_df1_f32, расчёт коэффициентов | резонанс найден и вырезан, до/после |
| 21 | HPF 30 Гц и «пьезо-гул». Перенос на H743 | переносит тракт на боевую плату | биквады | портирование, профилирование CPU | тракт на H743, загрузка ЦП измерена |
| 22 | Динамика: компрессор/лимитер | реализует лимитер против клиппинга фортиссимо | EQ-коэффициенты | worked example: огибающая, attack/release | фортиссимо без клиппинга |
| 23 | Снятие импульсной характеристики (IR) | записывает пару «пьезо ↔ студийный референс» | компрессор | запись через USB-интерфейс, REW; деконволюция | IR-файл получен |
| 24 | Свёртка: FIR и партиционированная FFT (рубеж) | применяет короткую IR на тракте | вся DSP-цепь (кумулятивно) | arm_fir_f32 → почему FFT-свёртка; замер латентности | EQ+лимитер+IR работают, латентность записана |
| 25 | Оптимизация под Cortex-M7/M33. Бюджет 10 мс | укладывает тракт в бюджет латентности | FFT-свёртка | размер блока 128@48к = 2,7 мс; кэш, CCM RAM | сквозная латентность < 10 мс измерена |
| 26 | Бортовой вариант на U585. LiPo-питание | собирает автономный блок на инструменте | оптимизация | перенос облегчённого тракта; ТБ LiPo | блок работает от батареи |
| 27 | BLE-управление пресетами (ESP32-C6) | переключает пресеты с телефона | U585-тракт | UART-мост ESP32↔STM32, протокол команд | пресеты переключаются, звук не рвётся |
| 28 | Рубеж фазы C: полный тракт | демонстрирует весь тракт на виолончели | кумулятивный квиз фаз B–C | живая игра через тракт, все замеры | рубрика прошивки закрыта |
| 29 | Механика крепления. Тембр от точки съёма | выбирает точку установки датчика по звуку | IR, латентность | эксперимент: подставка / дека / под ножкой — записи | сравнительные записи, выбор обоснован |
| 30 | Корпус, разъёмы, надёжность сцены | доводит комплект до «сценического» вида | точки съёма | пайка финальная, корпус, стресс-тест кабеля | комплект выдерживает «тряску» |
| 31 | Дизайн испытания. Слепой A/B-протокол | проектирует честный эксперимент | вся система | план: 3+ слушателя-музыканта, рандомизация, анкета | протокол утверждён наставником |
| 32 | Полевое испытание с музыкантами | проводит A/B-тест и собирает данные | — | испытание в классе/оркестре; запись | данные собраны, первичные выводы |
| 33 | Анализ данных. Итерация тракта | вносит изменения по результатам теста | протокол испытания | правка EQ/IR по отзывам; повторная запись | список изменений + подтверждение |
| 34 | Паспорт проекта. Заявка на трек. Презентация | собирает документацию соревнования | выводы испытаний | паспорт, схема, репозиторий, слайды | пакет заявки готов |
| 35 | Пробная защита (условия соревнования) | защищает проект перед «злым жюри» | кумулятивный квиз всего модуля | 7 мин доклад + 5 мин вопросы; видеозапись | ≥ 8/10 по рубрике |
| 36 | Рефлексия. Передача ответственности | планирует самостоятельное развитие проекта | — | разбор видеозаписи защиты; таблица целей; план: подача заявки, письмо оркестру, следующая итерация | все цели сверены; план подписан учеником |
Интервальные возвраты встроены: закон Ома → расчёт буфера (зан. 8–10) → бюджет питания (26); делитель → bias (9) → АЦП-уровни (17); логика → регистры (16); АЧХ → EQ (20) → IR (23); кумулятивные квизы на занятиях 6, 14, 24, 28, 35.
Подробное содержание занятий — в файлах фаз: Фаза A, Фаза B, Фаза C, Фаза D.
Материалы наставника: Наставнический компаньон (схемы с поэлементным разбором, симуляция frontend.cir, банк вопросов ученика, компонентная база, честное позиционирование против коммерческих систем), Лабораторный практикум DHO804, Приложения (STEMduino-мост, уличная эксплуатация, KiCad-трек собственной платы), Физика звука: 4 микроурока (+ скрипт sound_lab.py),
Теорминимум: 12 карточек с 12 отдельными разборами.
Код: каталог fw/ — построчно комментированные эталоны прошивок занятий 16–25 (карта и дисциплина): fw01 I2C+ES8311, fw02 SAI/DMA-passthrough, fw03 EQ+лимитер+пресеты, ir_tools.py, fw04 FIR-IR, fw05 партиционированная свёртка (completion problem, ключ наставника отдельно). Закупка: BOM_cello_pickup.xlsx — полный BOM с логикой замен «не хуже» и разделом F расширенного изучения.
Уровни сложности
Данные и итерация
- Входная диагностика: стартовый уровень руками, мотивационный профиль, аудио-нулевая точка (3 референс-записи);
- По фазам: баллы рубежей ( защита фронтенда, рубеж DSP, пробная защита), время решения задач на время, журнал дебаг-кейсов (сколько подсказок потребовалось — метрика роста самостоятельности по SSDL);
- После модуля: таблица «цель 1–7 → достигнута/частично/нет» с доказательством (артефакт/замер); сравнение записей «нулевая точка ↔ финальный тракт»; результаты слепого A/B;
- Для индивидуального формата вместо топ/боттом-30% группы — динамика самого ученика: время на однотипную задачу в занятиях 3 → 6 → 35, доля дебагов без подсказки;
- Выводы запуска фиксируются в этом разделе после занятия 36 → изменения в следующую итерацию модуля (или в групповую версию для кружка).