Устройство уменьшения звука на время ТВ-рекламы

Одна из довольно частых жалоб о том, как раздражает нас, когда рекламные ролики значительно громче, чем громкость программы в которой показывается реклама.

Т.к. недовольных становится всё больше мы решили создать небольшой гаджет, который позволит решить проблему. Устройство автоматически уменьшает громкость телевизора, когда звук становится слишком громким. Оно может быть запрограммирован для работы на любом устройстве, которое использует ИК-пульт дистанционного управления.

Шаг 1: Компоненты и инструменты

Инструменты и материалы:

  • паяльник
  • припой
  • макетная плата
  • провода-перемычки

Компоненты и инструменты

Компоненты:

  • 1x 16x2 ЖК-экран
  • 1x Arduino Nano (или аналог)
  • 3x 12-ти миллиметровые кнопки
  • 1x Электретный микрофон. Например, Adafruit или Sparkfun:
  • 1x Потенциометр
  • 1x PN2222 транзистор
  • 1x TSOP38238 ИК-ресивер (приемник)
  • 1x ИК-светодиод
  • 1x резистор 100 Ом
  • 1x 220 Ом резистор

Шаг 2: Собираем схему

Т.к. мы всегда хотим, чтобы всё выглядело красиво, мы решили изготовить печатную плату профессионально. Использовали Eagle для создания схемы и платы. Ниже приводим краткий обзор распиновки:

  • A0 поступает на выход микрофона
  • Контакт 2 переходит к кнопке «Программа»
  • Контакт 3 идет к затвору транзистора
  • Контакт 4 поступает на выход ИК-приемника
  • Контакт 5 к кнопке «Вниз»
  • Контакт 6 к кнопке «Вверх»
  • Контакты 7, 8, 9, 10, 11 и 12 идут к на ЖК-дисплей
  • 3,3 вольта к микрофону
  • 5 вольт на транзистор / ИК-светодиод, потенциометр и ЖК-дисплей

Файлы проекта (схематическое изображение электронной схемы и т.п.) в нескольких стандартных форматах можно скачать ниже. Например, файлы BRD можно просматривать в программе Cadence Allegro Free Physical Viewer, предоставленной бесплатно на веб-сайте Cadence.

Скачать файлы проекта

Шаг 3: Код для Arduino

Действие устройства мы опишем на следующем шаге. Код для загрузки в нашу Arduino и архив с дополнительными файлами вы найдете ниже.

Скачать дополнительный архив

Шаг 4: Как использовать устройство

Идеи для тяжелой части кода были фактически заимствованы из других проектов, которые мы нашли в Интернете. Мы использовали ИК-библиотеку для декодирования сигналов ТВ-пульта и для повторения сигнала на телевизоре. Также заимствовали другие фрагменты кода для точного измерения опорного напряжения АЦП Arduino, т.к. даже небольшие ошибки создали бы большую разницу в показаниях громкости микрофона. Если у вас есть идеи по улучшению кода - оставляйте комментарии в нашей группе ВКонтакте, т.к. наш код прошел череду проб и ошибок.

В принципе, Arduino постоянно проверяет состояние трех кнопок и громкости. Если нажата кнопка «Вверх» или «Вниз», уровень громкости, или максимальная громкость до того, как система будет запущена для уменьшения громкости телевизора, будет увеличен или уменьшен. Чтобы установить ИК-код, который отправляется при превышении порогового значения, нажмите кнопку «Программа» (Program), а затем кнопку «Вверх». Когда на экране появится запрос на нажатие кнопки -Volume (Уменьшения громкости), наведите пульт телевизора на ИК-приемник и нажмите кнопку -Volume ("Уменьшить"), пока на экране не появится шестнадцатеричное значение, соответствующее команде TV -Volume (добавлено для проверки).

Если громкость будет превышать порог, Arduino отправит команду -Volume. Вы можете изменить «длину сигнала/пакета» или сколько команд отправляются при превышении порогового значения, нажав кнопку «Программа», затем кнопку «Вниз». На экране отобразится текущая длина пакета, которую можно изменить с помощью кнопок «Вверх» и «Вниз», а затем сохранить, нажав кнопку «Программа» еще раз.

Вся эта информация хранится в EEPROM, так что система запоминает ваши пресеты (предварительные установки), даже когда вы отключите ее от сети. В качестве другого теста на чувствительность, Arduino будет посылать команду -Volume каждый раз, когда она запускается. Таким образом, вы можете просто нажать кнопку сброса Arduino, чтобы проверить, работает ли устройство.

Шаг 5: Собираем всё вместе

Как только мы убедились, что всё работает, мы заказали печатную плату, а затем припаял все к ней. Мы также использовал лазерные резаки, чтобы сделать небольшую коробку из ДСП для нашего устройства, но это дополнительные шаги, в которых нет прямой необходимости.

Шаг 6: Итоговое видео

Пример уменьшения громкости можно увидеть на данном видео фрагменте:

Шаг 7: Ошибки

Мы добавили этот дополнительный шаг в качестве приложения. Поскольку это был наш первый опыт в использовании Eagle и создания платы - в итоге сделали пару ошибок.

Во-первых: поскольку мы использовали клон Arduino Nano, у печатной платы на самом деле есть четыре дополнительных контакта для контроллера. Тем не менее, плата будет работать, если вы припаиваете контроллер к правильным контактам. Второе: потенциометр, поставляемый с жидкокристаллическим дисплеем, не соответствует тому, который мы использовали для проектирования платы.

Есть также несколько вещей, которые мы будем делать по-другому в будущем. Во-первых, если бы мы использовали ЖК-дисплей с подсветкой, мы бы добавили способ отключить питание ЖК-дисплея после того, как экран не был обновлен некоторое время, чтобы сэкономить электроэнергию. Во-вторых, вы можете реально удалить или уменьшить резистор 100 Ом перед ИК-светодиодом, чтобы сделать его ярче, поскольку светодиод работает только короткие промежутки времени. Однако еще предстоит проверить это. Также рекомендуем использовать микрофон с регулируемым усилением. Мы использовали микрофон Sparkfun, а он не так чувствителен, как хотелось бы.