Как говорится, лучше один раз увидеть, чем сто раз услышать:
Почему этот проект и именно сейчас?
Обычно, я всегда обдумываю проект перед поиском компонентов. Для проекта the whistled (анализатор свиста), все пошло по-другому. Несколько месяцев назад, когда был приобретен микроконтроллер Cortex M4 с 32-выводами, у меня было множество идей, и проект анализатора свиста был одной из них.
Как упоминалось в видеоролике, данный небольшой микроконтроллер Kinetis K10 может выполнять около 80 [q15 2048 балов] быстрых преобразований Фурье (FFT) в секунду и ещё оставляет пользователю дополнительное процессорное время для запуска собственных алгоритмов.
Это объясняется тем, что микроконтроллер Cortex M4 имеет набор инструкций для цифровой обработки сигналов (DSP), который особенно пригоден для обработки данных, а также потому, что библиотека ARM CMSIS предоставляет нам уже оптимизированный код для выполнения более сложных функций, таких как быстрое преобразование Фурье.
Поскольку все подготовительные работы выполнены, я смог сфокусироваться на расчете фильтра и алгоритмов по распознаванию свиста.
На это ушло много времени и потребовалось множество тестовых процедур.
Спецификация и схемные решения
Итак, принципиальная схема:
Как видите, схемы состоят из довольно простых и компактных компонентов.
На них показаны:
— Несколько ферритовых катушек (L1/L2/L3) для фильтрации паразитных помех, которые могут присутствовать в системе или появляться при срабатывании транзистора Q2
— Р-канальный МОП-транзистор (Q1) для защиты соединений от обратной полярности (с каждым может случиться)
— Стандартный линейный преобразователь LDO (U1) на 3.3 В
— Основной микроконтроллер Cortex M4 (U3)
— Mosfet драйвер (U4) вместе с N-канальным МОП-транзистором (Q2) позволяют выполнить правильное диммирование (изменение уровня яркости) при больших нагрузках
— Микрофонный усилитель с автоматической регулировкой усиления (AGC) (U2), параметры которого довольно трудно установить.
Все дорожки на печатной плате, к которым можно прикоснуться, имеют защиту от электростатического разряда, а именно: источник электропитания и сток N-канального МОП-транзистора, поскольку все остальные части печатной платы покрыты прозрачной термоусадочной трубкой. Для своего проекта я хотел иметь защиту от дурака (без обид).
Наибольшее преимущество микроконтроллера Kinetis K10 заключается в том, что он имеет 16-битный таймер с ШИМ-выходами, что в результате приводит к широкому диапазону диммирования.
Платформа позволяет использовать напряжение в диапазоне от 4.5 В до 18 В, с максимальным током 5 A на входах.
Вы также можете управлять нагрузкой мощностью до 90 Ватт с помощью данного устройства размером всего лишь 55×13 мм!
И конечно, на плате размещаются контактные площадки для последовательного отладочного порта SWD, который используется для загрузки вашей программы.
Перечень компонентов
Таблица используемых компонентов и их стоимость показана ниже…
Список компонентов не слишком дешевый, поскольку существует несколько вариантов исполнения:
— Желание иметь различное входное напряжение привело к выбору более дорогостоящих компонентов
— Добавлены дополнительные фильтры (ферриты)
— Для соединений выбрана клеммная колодка
— Выбрано устройство для защиты от обратной полярности
— Выбраны транзисторы с низким сопротивлением Rds (сопротивление полностью открытого транзистора) для предотвращения перегрева печатной платы.
Я думаю, что это идеальная стоимость и платы будут работать при любых возможных ситуациях.
Печатная плата
Как видите, все компоненты умещаются на данной компактной плате.
Первые прототипы было трудно спаять, поскольку выводы MAX9814 имеют шаг 0.4 мм.
Для защиты от электростатического разряда используется термоусадочная трубка, однако она не перекрывает микрофон. На нижнем слое я установил замыкающие цепи через землю между микроконтроллером/аналоговыми компонентами и силовыми цепями схемы, чтобы при усилении звука не происходило возбуждения из-за наведенных помех при переключении.
Конечная толщина медного покрытия составляет 60 мкм, что приводит к повышению температуры на 7 градусов при токе 5 А для дорожек, по которым протекает высокий ток.
Удобство использования
Как уже упоминалось, плата имеет незакрытые аппаратные компоненты и 4 контактные площадки для подключения отладочного порта SWD (3.3 В / 0 В / clock (синхроимпульс) / data (данные)):
Так что, если у вас есть некоторые необычные идеи для данной платформы, дайте волю своей фантазии.
Мощные вычислительные возможности микроконтроллера Cortex M4 дадут возможность сделать намного больше, а не просто распознать свист. Я просто уверен, что множество таких применений могут даже «подсветить» вечеринку.
Вы также сможете использовать «последовательность секретных звуков» для открытия дверей или сейфов.
Файлы
Ниже располагается все, что необходимо для воспроизведения данного проекта.
Проект имеет открытую аппаратную платформу. Также я предоставляю исходный код, за исключением моих алгоритмов, поскольку на некоторых веб-сайтах могут появиться некачественные копии данного изделия.
Схемы довольно простые, поэтому вы легко сможете разработать печатную плату с помощью CAD программного обеспечения.
Когда вы будете работать над программным кодом, то все что вам нужно, так это запустить ваши алгоритмы с переменной working_buffer в функции run_recognition_algo в конце кода main.c
Алгоритм
Благодаря большому количеству полученных комментариев, я бы хотел немного разъяснить общую структуру текущего применяемого алгоритма.
Я создал рабочий алгоритм, но убежден, что кто-нибудь сможет сделать его намного лучше. Созданный алгоритм пригоден лишь для данной платформы, и что немало важно, для текущей реализации (два последовательных свиста для включения/выключения). Потому я не уверен, что алгоритм будет полезен для тех, кто хочет собрать платформу на скорую руку.
Если вы на самом деле хотите создать алгоритм таким же способом как и я, тогда прочтите следующие рекомендации:
— Определите два последовательных пиковых значения в быстром преобразовании Фурье при различных частотах.
— Проверьте ширину данных пиковых значений.
— В зависимости от того, как вы свистите, проконтролируйте отклонение частоты первого пикового значения.
— Проверьте выделение сигнала между высотой пикового значения и близлежащих пиковых значений.
— Выполните одно или два быстрых преобразований Фурье без учета пиковых значений, предположив, что ваш свист непрерывный, хотя фактически таким не является.
— Разрешите лишь один частотный диапазон свиста (с 8 по 46 в текущем алгоритме).
Созданный алгоритм основывается на ложном распознавании сигналов (ложное распознавание) и ложном не распознавании сигналов (без распознавания, когда вы свистите), поскольку люди свистят по-разному.
Потому для вас будет легче написать свой собственный код для свиста, чем быть таким же терпеливым, как я.
Заключение
Я полностью уверен в данном проекте. Потому я предпринял попытку и решил задачу самостоятельно.
Данное решение было одобрено со стороны многих знакомых и коллег, которые нашли проект анализатора свиста очень удобным в использовании для автоматизации их домов. Если данный проект будет успешным, я планирую создать новую линейку продуктов, которые будут использовать данный принцип работы.
Потому если вы заинтересовались данным проектом, я буду рад, если вы загляните на мою страничку tindie page.
— сноска для собранного устройства на печатной плате
— сноска для собранного устройства на печатной плате + блок питания US AC/DC
— сноска для собранного устройства на печатной плате + блок питания EU AC/DC
— сноска для собранного устройства на печатной плате + блок питания US AC/DC + светодиодная лента
— сноска для собранного устройства на печатной плате + блок питания EU AC/DC + светодиодная лента
Список радиоэлементовОбозначение
Тип
Номинал
Количество
ПримечаниеМагазинМой блокнот
U1
Линейный преобразовательMIC5235-3.31
U2
Микрофонный усилительMAX98141
U3
МикроконтроллерMK10DX128VFM51
U4
ДрайверFAN3111ESX1
Q1
MOSFET-транзисторBSZ086P03NS3E G1
Q2
MOSFET-транзисторBSZ036NE2LS1
C1, C6
Конденсатор2.2 мкФ2
C2, C3, C11
Конденсатор1 мкФ3
C4, C5
Конденсатор0.47 мкФ2
C7-C10
Конденсатор0.1 мкФ4
C12
Конденсатор22 мкФ1
R1, R2
Резистор100 Ом2
R3
Резистор2.2 кОм1
MK1
МикрофонCMC-5042PF-AC1
D1
Подавитель статического зарядаPESD0603-2401
L1
ДросельHI0805R800R-101
L2, L3
ДросельMPZ1608S221A2
J1
РазьёмPJ-002AH1
J4-J8
КлеммникиOSTTC0201625
Добавить все
Скачать список элементов (PDF)
Прикрепленные файлы:
- code_template.rar (6 Кб)
- Manual.pdf (1063 Кб)
- whiste_gerbers.rar (15 Кб)
- whistle_schematics.pdf (22 Кб)