USB регулятор громкости для ПК и не только

Опубликовал | 18.09.2018
Здравствуйте, уважаемые читатели. Сегодня я расскажу, как я делал внешний регулятор громкости для компьютера. Устройство подключается к USB-порту компьютера, определяется как стандартное HID-устройство, драйвера устанавливать не нужно. При вращении ручки регулируется громкость, при нажатии происходит приглушение звука. За подробностями прошу под кат…

Предисловие

Девас был сделан чисто из спортивного интереса, просто захотелось сделать такую поделку. В основе устройства энкодер и Digispark — небольшая Arduino-совместимая платка от Digistump на базе микроконтроллера Attiny85. Есть платы c разъемом микро-USB, я использовал вариант с обычным разъемом USB типа А, ссылка:

Ну и выше названный инкрементальный энкодер с кнопкой, ссылка:

Схема устройства

Красный и зеленый провод это кнопка энкодера, замыкается при нажатии на ручку. Синий, черный и коричневый это выход энкодера для отслеживания вращения ручки.

Программная часть

Для работы устройства необходимо прошить микроконтроллер, я использовал готовое решение от Adafruit.

1. Первым делом нужно скачать драйвера для нашей платы Digispark — прямая ссылка

2. Устанавливаем Arduino IDE (я использовал версию 1.6.7) и добавляем ссылку для менеджера плат, в менеджере плат скачиваем «Digistump AVR Boards» и выбираем плату «Digispark (Default — 16.5mhz)». Подробная инструкция как это сделать в Digistump Wiki


3. Скачиваем библиотеку Adafruit-Trinket-USB. Из скачанного архива нам нужна папка «TrinketHidCombo», добавляем её в Arduino IDE — копируем в «C:Program Files (x86)Arduinolibraries».

Все готово для прошивки нашей платы, Digispark прошивается немного не так как остальные Arduino платы.
Открываем TrinketVolumeKnobPlus.ino, путь размещения — C:Program Files (x86)ArduinolibrariesTrinketHidComboexamplesTrinketVolumeKnobPlus
Нажимаем «Загрузка», скетч скомпилируется и появится приглашение для подключения Digispark:

Вставляем Digispark в USB порт и ожидаем завершения загрузки. По окончании через несколько секунд Digispark переподлючится уже как HID-устройство ввода.

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

В данном устройстве программное обеспечение эмулирует нажатие мультимедийных клавиш клавиатуры:
• уменьшить громкость, код:

TrinketHidCombo.pressMultimediaKey(MMKEY_VOL_DOWN)

• увеличить громкость, код:

TrinketHidCombo.pressMultimediaKey(MMKEY_VOL_UP)

• приглушение звука, код:

TrinketHidCombo.pressMultimediaKey(MMKEY_MUTE)

Теоретически можно эмулировать любые клавиши клавиатуры, список клавиш можно посмотреть в библиотеке TrinketHidCombo.h

К сожалению я не сделал фото собранного устройства на макетной плате.
Убедившись что всё работает как задумано, нужно делать самое сложное — корпус.

Печатная плата и корпус

Решил сделать устройство в цилиндрическом корпусе с большой «крутилкой». Из массива бука выточил заготовку под корпус.

Такого же диаметра из алюминия выточил ручку для энкодера.

По размерам внутреннего диаметра деревяной заготовки нарисовал плату в Sprint-Layout
Ссылка для скачивания — тут

С помощью ЛУТ изготовил плату

Установил энкодер и разъём USB (выбрал USB типа B для надежности), у платки Digispark немного обрезал «разъем» и припаял ее к основной плате. К энкодеру подключил Digispark проводками.

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

В деревяном корпусе вырезал прямоугольное отверстие для разъёма USB типа B. Это оказалось самым трудоёмким процессом, корпус относительно мал, пришлось максимально аккуратно работать. После этого дерево обработал льняным маслом

Саморезами закрепил внутренности в корпусе

Энкодер немного «гулял» внутри корпуса, чтобы его зафиксировать изготовил из текстолита такую пластину

Пластина надевается на ось энкодера, фиксируется двумя гайками, её размеры точно по внутреннему диаметру корпуса. Теперь энкодер сидит как влитой

Осталось одеть большую алюминиевую «крутилку»

Демонстрация работы устройства

Вместо эпилога

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

Всем спасибо за внимание.

Добавить в избранное +4 +5

(c) 2017 Источник материала

Рекламные ссылки