audiohobby.ru audiohobby.ru

Эмулятор нажатия кнопок на энкодерах для плеера RuneAudio

В развитие темы плеера RuneAudio предлагаю конструкцию эмулятора нажатия 8-ми кнопок на двух энкодерахС помощью каждого энкодера эмулируется нажатие 4-х кнопок в зависимости от одного из действий: вращение ручки влево, вращение ручки вправо, короткое нажатие на ручку, длительное нажатие (1 сек и более) на ручку. Этим действиям соответствуют: уменьшение, увеличение громкости, воспроизведение/пауза, стоп (левый энкодер), предыдущая, следующая композиция, смена информационного экрана, включение/отключение подсветки индикатора (правый энкодер). Кроме ручного управления в эмуляторе предусмотрено также выполнение указанных функций с помощью ИК пульта: можно запрограммировать эмулятор под пульт, работающий по одному из протоколов: RC5, RC6, NEC, Apple, JVC, Samsung, Sony. В качестве базового варианта рассматривается использование пультов Apple TV (и их клонов) типа MC377LL/A или MC377ZM/A, имеющих 7 клавиш (клавиша включения и выключения подсветки индикатора при этом не реализуется).

Использование эмулятора нажатия кнопок для ИК управления модулем индикации для Amanero AH-I6 уже подтвердило свою эффективность на практике. Так как в рассматриваемой конструкции плеера ИК управление также реализовано через эмулятор, ИК модуль на Питоне для управления программным обеспечением RuneAudio не используется: задействованы лишь соответствующие модули для ЖКИ, кнопок и управления питанием. Поэтому для перенастройки на другой ИК пульт нет необходимости использования утилиты Linux irrecord — программирование пульта осуществляется в самом эмуляторе.

Примечание: функции регулировки громкости работают, если в настройках MPD плеера RuneAudio разрешена программная регулировка громкости Software. В случае выбора настройки Disable громкость не регулируется, но качество звучания при этом становится лучше.

Рассмотрим схему эмулятора:

Схема эмулятораОсновой эмулятора является микроконтроллер (МК) IC1. Программа для реализации всех функций эмулятора с поддержкой основных ИК протоколов полностью поместилась в МК типа ATmega88, так что применение МК ATmega168 не имеет особого смысла. Конденсаторы C1..C6 выполняют функции «антидребезга», что вкупе с оригинальной программой обработки вращения ручек и нажатия кнопок энкодеров обеспечивает надёжное и комфортное управление. Эмуляция нажатия кнопок осуществляется импульсами длительностью 50 мс, формируемыми на выходах сдвоенных оптронов VO1..VO4. Факт формирования импульса подтверждается вспыхиванием соответствующего светодиода на плате HL1..HL8. Выходы оптронов с открытым коллектором могут подключаться вместо кнопок или параллельно существующим кнопкам через разъём J2. Кроме гальванической развязки от управляемого узла, коим в данном случае является микрокомпьютер Raspberry Pi 3B, использование оптронов на выходе эмулятора позволило легко (через диод VD1) реализовать блокировку прохождения выходных импульсов в режиме программирования клавиш ИК пульта при низком уровне сигнала /IRPgmMode (когда горит светодиод HL9), так как мигание светодиодов HL1..HL8 в этом режиме используются для индикации текущей программируемой клавиши. Соответствие номеров светодиодов и функций эмулятора:

СветодиодНазвание клавишиКонтакт J2Функция
HL1K12Уменьшение громкости (Vol-)
HL2K23Увеличение громкости (Vol+)
HL3K34Воспроизведение/пауза (Play/Pause)
HL4K45Остановка воспроизведения (Stop)
HL5K56Переход к предыдущей композиции (Prev)
HL6K67Переход к следующей композиции (Next)
HL7K78Смена режима отображения на ЖКИ (Mode)
HL8K89Включение/отключение подсветки ЖКИ (BL)

 

Установкой перемычки J4 можно заблокировать ручной вход в режим программирования клавиш ИК пульта. Для программирования клавиш ИК пульта необходимо:

  • обесточить устройство, открыть его корпус;
  • временно снять перемычку на плате эмулятора нажатия кнопок;
  • подключить устройство к питающей сети (кнопку включения питания можно не нажимать);
  • одновременно зажать кнопки обоих энкодеров в течение не менее 5 секунд, при этом на плате эмулятора загорится красный светодиод «Pgm», а зелёный светодиод «K1», соответствующий первой кнопке, будет мигать (дальнейшие действия необходимо контролировать по мигающим светодиодам на плате эмулятора);
  • для программирования нажать на ИК пульте требуемую клавишу, при этом, если код клавиши принят, текущий мигающий светодиод погаснет, и начнёт мигать следующий;
  • когда 8 клавиш запрограммированы, все светодиоды погаснут (коды всех клавиш должны отличаться);
  • процесс программирования клавиш можно прервать в любой момент нажатием кнопки любого из энкодеров, при этом в памяти EEPROM микроконтроллера сохранятся прежние коды клавиш;
  • проверить работу всех клавиш ИК пульта по миганию соответствующих зелёных светодиодов на плате эмулятора; при необходимости процесс программирования можно повторить;
  • вернуть перемычку на плату эмулятора нажатия кнопок.

Готовые прошивки EEPROM для работы с пультами Apple TV MC377LL/A и MC377ZM/A (на вид эти пульты одинаковые, но коды клавиш различны), содержатся в архиве с прошивкой МК эмулятора (там же — и исходный текст программы) — для этих пультов процесс ручного программирования можно не делать. Центральная круглая клавиша указанных пультов обрабатывается как Stop, а клавиша Menu — как Mode; управление подсветкой индикатора отсутствует. Назначение остальных кнопок понятно из их названий или расположения.

Вид собранной платы эмулятора сверху:

Вид собранной платы эмулятора снизу:

Плата эмулятора была совмещена с платой светодиода и кнопки включения питания блока включения и выключения плеера, на которой также размещён ИК приёмник. В прилагаемом архиве приведён рисунок печатной платы и гербер-файл также отдельной платы эмулятора.

Для управления питанием плеера использован усовершенствованный блок включения и выключения:

Его особенностью является использование гальванической развязки на оптронах для сигналов Rdy и /ShtDn, поступающих на микрокомпьютер Raspberry Pi 3 B. При питании эмулятора нажатия кнопок от дежурного блока питания блока включения и выключения обеспечивается полная гальваническая развязка микрокомпьютера от узлов управления. Непосредственно к микрокомпьютеру подключается только ЖКИ, в качестве которого использован индикатор Surenoo SLC2004 с большими символами (которые видно даже с 3-х метров):

 

Прошивка микроконтроллера блока включения и выключения (вместе с исходным текстом программы) приведена в отдельном архивном файле.

Внешний вид собранной платы блока включения и выключения:

Блок питания +5V для микрокомпьютера Raspberry особенностей не имеет, за исключением увеличения ёмкости конденсаторов фильтра выпрямителя до 20000 мкФ, что при использовании накального трансформатора позволяет получить выходной ток до 3..3,5А — это может быть очень полезным при работе плеера с жёстким диском:

Разъёмы USB вынесены на заднюю панель плеера, при этом контакт +5В каждого разъёма соединён через самовосстанавливающийся предохранитель 1,1А с выходом блока питания (лучше поставить предохранители на больший ток, например, 2А или даже 3.5А, так как из-за большого пускового тока HDD они со временем могут деградировать):

Задняя панель плеера:

Использован готовый железный корпус размерами 280x210x80. Для крепления элементов управления и индикации в пластиковой передней панели (её толщина около 2 мм) были проделаны соответствующие монтажные отверстия, которые закрыты накладкой из алюминиевого сплава толщиной 0,8..1 мм (эта накладка крепится на ручках энкодеров). В окно для индикатора вклеено затемнённое оргстекло толщиной 2 мм (вероятно, для ЖКИ лучше всё-таки использовать прозрачное оргстекло). 

Надписи на панель можно нанести методом ЛУТ. Впоследствии алюминиевая накладка было обтянута матовой плёнкой ORACAL, которая используется обычно в рекламных целях (такой вариант решения для передней панели я «подсмотрел» у Л.И.Ридико в его конструкции УМЗЧ ВВ):

Белые значки с чёрной окантовкой распечатаны на самоклеящейся бумаге для печати. После прорезания по контуру значков острым ножом их края прокрашиваются чёрным фломастером, после чего значки переносятся пинцетом на панель и прижимаются.

Так как корпус плеера металлический, Wi-Fi антенна микрокомпьютера выведена наружу (для этого на плате микрокомпьютера придётся сначала аккуратно выпаять две очень маленькие перемычки для отключения штатной антенны, а затем впаять одну из них вместе с установкой разъёма для внешней антенны). Необходимо обеспечить изолирование подключаемого разъёма Wi-Fi антенны от находящегося рядом контакта +3,3V:

Вид на монтаж плеера:

В качестве основания был использован кусок фольгированного стеклотекстолита размером 250x150 мм и толщиной 2 мм. Блок питания микрокомпьютера Raspberry Pi 3B собран непосредственно на основании, а дорожки прорезаны резаком:

 

Основание прикручивается к днищу корпуса на 7 латунных стойках высотой 5 мм для печатных плат. Такую же толщину имеет корпус микросхемы стабилизатора LT1083CP, которая прижимается к днищу через слюдяную прокладку. Термопаста наносится сверху и снизу корпуса микросхемы, так что фольга стеклотекстолитового основания используется как дополнительный теплоотвод. Сверху над микросхемой для жёсткости впаян пластинчатый алюминиевый радиатор от неисправного компьютерного блока питания. В результате в процессе работы плеера с жёстким диском микросхема остаётся чуть тёплой.

Добавил в архив вариант прошивки эмулятора нажатия кнопок, в котором при вращении ручек энкодеров регулировка громкости и смена музыкальных композиций меняются местами, т.е. функции Prev и Next относятся к первому энкодеру, а функции Vol- и Vol+ — ко второму. В своём плеере я решил использовать именно этот вариант, так как программная регулировка громкости у меня отключена в настройках RuneAudio, и второй энкодер реально используется только для смены информационного экрана.

P.S. На некоторых (особенно китайских) ЖКИ могут наблюдаться сбои (отображение «кракозябров» вместо символов, полное отсутствие изображения и т.п.) при касании корпуса плеера металлическим предметом, например, пинцетом (и даже при подсоединении внешнего USB HDD или Wi-Fi антенны), причём с OLED индикаторами такого замечено не было. Для устранения этого неприятного явления я использовал небольшую переходную плату гальванической развязки ЖКИ (см. в приватных вложениях архивный файл, содержащий схему и рисунок печатной платы с гербер-файлом).

Вложение:
pechatnye-platy-i-razmetka.zip 264 Кбскачан 101 раз
Вложение:
proshivka-emuljatora.zip 142 Кбскачан 84 раза
Вложение:
+35
0
Nikolay27 Nikolay27 3 года назад #

Я дико извиняюсь, а оптический привод DVD через переходник SATA -USB, с дополнительным блоком питания, кто нибудь подключал к такому плееру?

Он (плеер) будет читать DVD audio диски?

Еще раз извиняюсь за оффтоп.

0
Pushok62 Pushok62 3 года назад #

Я не подключал, так как смысла нет — CD и DVD диски он читать не будет, такой программной поддержки в плеере не существует. А так было бы, конечно, шоколадно :)

0
Pushok62 Pushok62 3 года назад #

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

+1
ROMANCHER ROMANCHER 3 года назад #

Здравствуйте ! 

Большое спасибо за статью !

У меня вопрос, как выставить Fuse-биты МК ATmega88 (ATmega168)  в PonyProg 2000, при работе с внешним кварцевым резонатором 8 MHz?

Если можно скриншот .

Извиняюсь, не силен в прошивках мк.

 

+1
Pushok62 Pushok62 3 года назад #

Здравствуйте!

Удобно пользоваться специальным калькулятором. Там в самом верху посередине нужно выбрать нужный тип МК (ATmega88), слева вверху ввести требуемые значения Fuse-битов (FD для LOW, D5 для HIGH, F9 для EXTENDED), и справа можно увидеть, какая при этом будет конфигурация у МК, а ниже — какие Fuse-биты выставлять в программаторе. В выпадающем списке — Показать установки битов для: — нужно выбрать режим PonyProg (инверсные биты). У вас должно получиться так:

Чтобы не ошибиться при установке, я обычно делаю так: считываю программатором текущие Fuse-биты из МК, а потом корректирую только то, что отличается, и после этого перезаписываю. Если программа программатора позволяет сразу ввести требуемые шестнадцатеричные значения Fuse-битов, ещё лучше.

Рассмотренный выше калькулятор работает и в «другую сторону»: можно выбрать требуемую конфигурацию МК, и получить соответствующие ей шестнадцатеричные значения Fuse-битов.

+1
ROMANCHER ROMANCHER 3 года назад #

Большое спасибо!

0
ROMANCHER ROMANCHER 3 года назад #

А резистор на reset мк нужно устанавливать ?

0
Pushok62 Pushok62 3 года назад #

Можно не устанавливать, здесь я его не ставил, хотя обычно ставлю.

0
ROMANCHER ROMANCHER 3 года назад #

Понял, спасибо за технические ответы!