Идея этого устройства была предложена [Игорем Хачировым](https://vk.com/id24086338), руководителем группы [Огненное шоу INCENDIO г. Сочи](https://vk.com/club58417273). Идея заключается в том, чтобы использовать звуковую карту для управления вспомогательными устройствами. Несколько каналов многоканальной звуковой карты выделяются для управления устройствами, в том же звуковом редакторе, в котором создается музыкальное сопровождение в нужных местах в эти каналы вставляются специальные управляющие сигналы, которые распознаются управляющим контроллером.
Таким образом обеспечивается удобный интерфейс с ПК и идеальная синхронизация работы вспомогательных устройств со звуковым сопровождением.
Казалось бы, что проще? Нужно вставить в управляющий трек писки на соответствующей частоте и полосовыми фильтрами выделить их на стороне приемника. Похожий способ до сих пор используется в аппаратуре радиоуправления моделями, да и где-то кажется была припрятана схема цветомузыки на тиристорах, вырезанная из "Моделиста-конструктора". Однако на практике разработка и отладка такого набора полосовых фильтров не так проста.
Тогда я решил попробовать применить протокол [DTMF](https://ru.wikipedia.org/wiki/DTMF), используемый для сигнализации в телефонии. DTMF чуть сложней простых тональных посылок и использует одновременную генерацию двух частот из восьми возможных, чтобы закодировать одну из 16 возможных комбинаций. А самое приятное то, что для DTMF существуют готовые аппаратные декодеры.
Одним из распространенных декодеров DTMF является микросхема [MT8870](http://www.microsemi.com/document-portal/doc_view/127041-mt8870d-datasheet-oct2006). Посмотрим, что у нее есть внутри.
Вот ее функциональная схема из дадашита:
![Функциональная схема MT8870](//image.easyeda.com/pullimage/wCA2gPL0K8j5lSfnuH2qDBRjNmAzXTSJSc2szjGB.jpeg)
Как видно на схеме, внутри имеется:
* источник питания, выход VRef которого можно использовать как источник опорного напряжения для схем усиления, на него выводится VDD/2, высокий уровень на входе PWDN отключает устройство;
* тактовый генератор с внешним кварцевым резонатором;
* встроенный операционный усилитель с выводом GS для подключения внешней обратной связи;
* блок управляющей логики;
* собственно, схему распознавания тональных сигналов, высокий уровень на входе INH отключает распознавание части сигналов;
* 4-х разрядный регистр-защелку, который запоминает код распознаванного сигнала и хранит до следующего удачного распознавания, низкий уровень на входе TOE переводит выходы в состояние высокого импеданса.
Собственно, из схемы видно, что микросхема содержит вообще все, что нужно для управления устройствами. Что нужно сделать, чтобы воспользоваться всем этим великолепием?
* Подключить к выводам OSC1, OSC2 внешний кварц на 3.579545 МГц;
* Подключить к выводам St/GT, EST RC-цепочку, задающую время распознавания сигнала;
* Подключить к выводам Q1-Q4 устройства, которыми будем управлять;
* Подключить к входному усилителю обратную связь и подать на него входной сигнал.
Устройство рассчитано на подключение к стереофоническому выходу звуковой карты через разъем X9, содержит два DTMF-декодера (IC1, IC2) и соответственно может управлять восемью дискретными нагрузками. Само собой, нагрузку нельзя подключить напрямую к выходам декодера, так как их нагрузочная способность не превышает 10мА. В качестве силовой части без долгих раздумий были выбраны реле (K1-K8). Однако и реле нельзя подключить напрямую к декодеру. Для управления реле используется популярная транзисторная сборка ULN2803 (IC4). Эта сборка так же имеет встроенные диоды для борьбы с выбросом напряжения при отключении индуктивной нагрузки (которой является катушка реле).
Конструкция тактового генератора MT8870 позволяет включать несколько декодеров каскадом и использовать только один кварцевый резонатор (Q1) на всех. Генератор второго декодера подключен к первому через разделительный конденсатор (C5).
В обратную связь встроенного входного усилителя декодеров включены подстроечные резисторы (R3, R36), чтобы в случае чего можно было подстроить коэффициент усиления.
Все разъемы на плате выполнены в виде винтовых клемм, так что необходима защита от неправильной полярности питания. Для этого на входе поставлен диодный мост (B1), так что можно питать устройство переменкой. Необходимые декодеру 5 вольт формируются интегральным стабилизатором КР142ЕН5А (IC3). Катушки реле питаются непосредственно от входного напряжения.
### Генерирование сигналов и управление устройствами ###
Как следует из статьи про DTMF, одним сигналом можно закодировать один из 16 символов. Соответствие состояний устройств конкретным символам показано в таблице:
![Таблица состояний mt8870](//image.easyeda.com/pullimage/D2QiO7qUebLYvdLd6LDrMqUKDcXsyOy1pZ5vFary.jpeg)
То есть, чтобы, например, включить только первое устройство, мы должны послать сигнал, соответствующий символу "1". Чтобы включить все устройства - сигнал, соответствующий символу "D"
Популярные звуковые редакторы, например [Audacity](http://audacityteam.org/), уже содержат средства для генерации сигналов DTMF, или их можно скачать в виде звуковых файлов, например [здесь](http://www.mediacollege.com/audio/tone/dtmf.html).