Оглавление:

Блок расширения джойстика для клавиатуры Arduino и устройство звукового контроллера с использованием Deej: 8 шагов
Блок расширения джойстика для клавиатуры Arduino и устройство звукового контроллера с использованием Deej: 8 шагов

Видео: Блок расширения джойстика для клавиатуры Arduino и устройство звукового контроллера с использованием Deej: 8 шагов

Видео: Блок расширения джойстика для клавиатуры Arduino и устройство звукового контроллера с использованием Deej: 8 шагов
Видео: 7 ПОЛЕЗНЫХ устройств на АРДУИНО, которые можно собрать за 15 минут. 2024, Ноябрь
Anonim
Блок расширения джойстика для клавиатуры Arduino и устройство звукового контроллера с использованием Deej
Блок расширения джойстика для клавиатуры Arduino и устройство звукового контроллера с использованием Deej

Проекты Tinkercad »

Почему

Какое-то время мне хотелось добавить к клавиатуре небольшой джойстик для управления элементами интерфейса или другими более мелкими задачами в играх и симуляторах (MS Flight Sim, Elite: Dangerous, Star Wars: Squadrons и т. Д.).

Кроме того, для Elite: Dangerous я боролся с микшированием уровней громкости из внешнего звука (встроенная музыка, хотя и хороша, становится повторяющейся после многих часов в черном), внутриигрового звука и поддержки внешнего голосового пакета.

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

Как

Недавно я узнал об Arduino и наткнулся на проект ди-джея на Reddit. Похоже, это решит обе эти проблемы в одном удобном пакете. И это позволило бы мне спроектировать и напечатать изящный 3d футляр.

Что такое ди-джей?

(с сайта) deej - это ** аппаратный микшер громкости с открытым исходным кодом ** для ПК с Windows и Linux. Он позволяет вам использовать реальные ползунки (например, ди-джея!), Чтобы ** плавно управлять громкостью различных приложений ** (например, вашего музыкального плеера, игры, в которую вы играете, и сеанса голосового чата), не останавливая то, что ты поживаешь.

Моя версия

Чтобы коробка была маленькой, я выбрал ручки (поворотный линейный потенциометр (потенциометры = резисторы)), а не ползунки. Функционально они работают одинаково. Текущие и популярные дизайны диджей не включают джойстик, так что это будет своего рода гибрид дизайна. В остальном это довольно простая сборка.

Deej будет работать с Arduino Nano, Pro Micro или Uno, но Nano и Pro Micro «официально рекомендованы» разработчиком. Я выбрал Arduino Pro Micro, потому что мне нужен джойстик, и библиотека джойстиков Arduino поддерживает его. Я также могу использовать библиотеку клавиатуры Arduino, когда хочу использовать функцию отключения звука мультимедийной клавиатуры (а не «мягкое отключение звука») с помощью кнопки джойстика, но это будет дальше.

Шаг 1. Расходные материалы

Запасы
Запасы
Запасы
Запасы
Запасы
Запасы

Коробка

Загрузите файлы STL (разработанные в Tinkercad):

  • Файлы вложения в Prusa (https://www.prusaprinters.org/)
  • Thingiverse (скоро)

Аппаратные средства (производственная единица)

  • 1x Arduino Pro Micro
  • 4x 10k поворотных потенциометра (не поворотных контроллеров, используйте потенциометры)
  • 1x джойстик Arduino KY-023
  • Сетевой кабель категории 5 футов лома
  • 1x микрокабель USB A - USB B (USB A - это большой квадратный разъем, USB B micro - это то, что есть на Arduino Pro Micro)
  • 1x 5 мм красный светодиод
  • 1x резистор 220 Ом

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

  • 1x Arduino Pro Micro
  • 4x 10k поворотных потенциометра (не поворотных контроллеров, используйте потенциометры)
  • 1x кнопочный переключатель мгновенного действия (переключатель жесткого сброса)
  • 1x микрокабель USB A - USB B (USB A - это большой квадратный разъем, USB B micro - это то, что есть на Arduino Pro Micro)
  • разные перемычки
  • макет
  • 1x 5 мм красный светодиод
  • 1x резистор 220 Ом

Шаг 2: корпус

Вложение
Вложение
Вложение
Вложение
Вложение
Вложение
Вложение
Вложение

Дизайн

Мне понравились некоторые из других дизайнов, представленных в галерее сообщества ди-джеев, поэтому я взял за основу те особенности, которые мне понравились:

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

Я спроектировал и напечатал два прототипа, прежде чем остановился на окончательном дизайне. Мне нравится иметь физическую версию, с которой можно поиграть в пространстве, в котором я ее использую, поскольку это дает мне лучшее представление о том, как будет работать конечный объект.

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

Поскольку мне нужна была конструкция без винтов, я создал скворечник. Первый прототип имел тонкую крышку и глубокий ящик для всего. Во втором дизайне это поменялось с глубокой крышкой и коробкой с неглубоким дном. Он должен был удерживать только Arduino Pro Mini, поэтому на самом деле не нужно было быть большим. Также включены рельефные значки.

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

Печать

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

Проблема

Все это время было проблемой крепление джойстика. Даже в третьем исполнении палка упирается в крепления в одном месте. В следующей итерации зазоры будут лучше. Я мог бы больше поработать над дизайном, но хотел перейти к следующему этапу - установке.

Шаг 3: Схема

Схема
Схема
Схема
Схема
Схема
Схема

Худшая электромонтажная работа

Хорошо, это мой первый полноценный проект Arduino. Да, я делал что-то на макетных платах раньше и использую один для создания версии для разработчиков, но что касается фактического изготовления и сборки, это мой первый. Так что моя проводка выглядит как дерьмо. Ну вот и не подходи:)

Обновление: с тех пор я построил еще один, и там проводка намного лучше. Смотрите изображения:)

Производственная единица - Что где происходит

Arduino Pro Micro - это крошечная плата, которая поместится в литой части основания. Ручки и джойстик входят в соответствующие отверстия в крышке. Но не устанавливайте ничего, пока не получите конкуренцию пайке.

Проводка

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

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

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

Индивидуальный горшок. аналоговые линии (желтые) идут к контактам A0 - A3. Линии джойстика (оранжевые), также аналоговые, идут к контактам ввода / вывода 8 и 9. Они должны быть обозначены как аналоговые в коде Arduino как A8 и A9.

Контакт переключателя джойстика (синий) переместился на контакт 7. Это будет цифровой контакт в коде.

Изоляция

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

Вторая версия

Последние два изображения выше показывают следующий блок, который я создаю. У этого будет 5 ручек и одна кнопка мгновенного действия для отключения звука. Джойстика нет. Коробка того же размера.

Шаг 4: Завершение работы с оборудованием

Отделка оборудования
Отделка оборудования

К тому времени, как я установил джойстик, я понял, что между его платой и штыревыми разъемами, оставшимися на Pro Micro, не так много зазора.

После небольшого осторожного сгибания штыревых головок и повторного нанесения термоклея (для изоляции) корпус закрылся должным образом.

Установка кастрюль прошла без сучка и задоринки.

Снова с проводами

Провода с твердым сердечником немного жесткие и могут быть хрупкими, если их слишком много сгибать, поэтому аккуратно сложите их (без острых углов) в доступное пространство. Некоторые из моих были слишком длинными и требовали дополнительного складывания.

Как только все будет установлено на свои места, просто установите основание наверх, и вы должны закончить с оборудованием….

Но подождите, это еще не все

Конечно, после нескольких недель использования я решил, что мне нужен индикатор, чтобы узнать, в каком состоянии находится функция MUTE с программным кодированием.

После редактирования кода для добавления функциональности светодиода (см. Следующий раздел) я быстро припаял светодиод / провода / резистор и подключил их к плате.

Я потратил больше времени на просверливание отверстия в верхней части корпуса, так как не хотел испортить верхнюю отделку. Я отметил центральную точку, помял ее, затем вручную повернул сверло, чтобы проделать отверстие.

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

Шаг 5: Программное обеспечение

Программное обеспечение
Программное обеспечение
Программное обеспечение
Программное обеспечение
Программное обеспечение
Программное обеспечение

Обзор

Итак, это процесс, состоящий из двух частей.

  1. Узнайте, как работает Deej, и отредактируйте файл Config.yaml.
  2. Отредактируйте код Arduino, чтобы он соответствовал желаемому оборудованию и функциям.
  3. Получите библиотеку джойстика Arduino

В моем случае мне нужны были следующие функции:

  • Ручки, управляющие уровнями (микрофон и выход)
  • Выключатель звука
  • 2-осевой джойстик, распознаваемый Windows для использования в приложениях

Уровни

Дидж в значительной степени заботится о первом пункте. Я не настраивал эту функцию

Выключатель звука

Я заранее решил, что буду использовать нажатие / переключатель на джойстике в качестве функциональной кнопки отключения звука.

Когда вы изучите код, вы увидите, что я выбрал (изначально) использование «мягкого» отключения звука - при нажатии кнопки громкость микрофона уменьшается до нуля (и горит светодиод). При повторном нажатии громкость микрофона возвращается к предыдущему значению, а светодиод гаснет.

В конце концов, я буду рассматривать реализацию библиотеки клавиатуры Arduino для переключения состояния отключения звука с помощью расширенного набора кода мультимедийной клавиатуры.

Реализация джойстика

Это требует использования библиотеки джойстика Arduino, чтобы гарантировать, что джойстик распознается как HID-устройство Windows и, следовательно, любой игрой / приложением.

Я немного новичок, когда дело доходит до кодирования, и обнаружил, что документация библиотеки Joystick немного скудна с точки зрения фактической реализации, но немного сфокусированного поиска в Google привел меня к другим примерам, которые помогли мне понять, что происходит. Подробности смотрите в разделе ресурсов в конце.

Все, что мне нужно было сделать, это определить контакты X / Y, прочитать их состояние и отправить его в библиотеку джойстика. Arduino появился в Windows как Леонардо и был правильно настроен как джойстик.

Я смог настроить его в Elite Dangerous вместе с моей существующей настройкой HOTAS и заставить джойстик правильно управлять вещами и не конфликтовать с HOTAS. Он также хорошо работает в Star Wars: Squadrons - я установил его как быстрый переключатель для установки щитов во время боя.

Файлы, которые работают с моей настройкой джойстика

Я загрузил свои текущие (октябрь 2020 г.) файлы в Codepile.

  • Код Arduino (файл.ino)
  • Deej config.yaml

Шаг 6: Конец

Конец
Конец

Что ж, это сделано. Это работает, и я довольно доволен тем, как все сложилось. И я узнал немного больше о дизайне оборудования, интеграции и программировании Arduino.

Шаг 7: Дополнение..дум..дум

Приложение..дум..дум
Приложение..дум..дум

VLC - этот потрясающий аудио- и видеоплеер имеет небольшую странность, когда уровень громкости при внешнем управлении прыгает с 0% до 27%. Этого не происходит при настройке уровня с помощью регулятора громкости в интерфейсе приложения, только с внешними элементами управления, такими как Deej.

Разработчик Deej быстро нашел обходной путь в VLC, который выполняет свою работу, см. Изображение выше:

«… Если вы хотите отключить это поведение« Отслеживание », вы можете сделать это, изменив модуль вывода звука VLC. Я использовал DirectX в своих попытках здесь. Вам нужно будет перезапустить VLC, чтобы изменения вступили в силу. (Вы все равно иметь аудиосеанс Windows и управлять им через deej, это просто предотвратит перемещение шкалы громкости VLC вместе с ним)"

Шаг 8: Дополнительные ресурсы

Дополнительные ресурсы
Дополнительные ресурсы

Найдено с помощью могучего Goog, перечислены без определенного порядка…

  • Библиотека джойстиков Arduino (v2) - необходима для интеграции джойстика.
  • Руководство по подключению Sparkfun Pro Micro - хороший ресурс об этом Arduino
  • deej - программа, которая управляет ручками
  • Типы USB-разъемов - кто знал, что существует столько вариантов?
  • Распиновка аналоговых выводов Arduino Pro Micro
  • Игровой джойстик Arduino Leonardo - Леонардо похож на Pro Micro, только больше
  • Порт Arduino Pro Micro (Clone) не обнаружен (решение) - когда вы блокируете свой Pro Micro (я так и делал)
  • Arduino Leonardo / Micro как игровой контроллер / джойстик
  • Пример использования мультимедийной клавиши для отключения звука - использование библиотеки HID Project
  • Пример кода библиотеки HID Project для приостановки / воспроизведения мультимедиа
  • Другой пример кода, показывающий контроллер геймпада.
  • ArduinoGamingController_updated - хорошее описание кода использования библиотеки джойстиков
  • Штучка для калькулятора светодиодного резистора - чтобы узнать, какого размера резистор вам понадобится в вашем проекте
  • Библиотека иконок - flaticon.com - источник изображений, используемых над ручками
  • Другой цветовой декодер резистора - нажмите на цвет и альт!

Рекомендуемые: