Оглавление:

Lapcade Arcade Controller: 6 шагов (с изображениями)
Lapcade Arcade Controller: 6 шагов (с изображениями)

Видео: Lapcade Arcade Controller: 6 шагов (с изображениями)

Видео: Lapcade Arcade Controller: 6 шагов (с изображениями)
Видео: 07 29 81 2024, Июнь
Anonim
Lapcade Arcade Controller
Lapcade Arcade Controller

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

Прошли времена аркад, но вы все еще можете почувствовать классическую аркадную игру прямо у себя в гостиной. Итак, я представляю вам Lapcade. Если вы похожи на меня и любите строить больше, чем играть, возможно, вам понравится эта сборка. Если у вас есть какие-либо вопросы или предложения, не включенные в раздел «идеи для версии 2» ниже, оставьте комментарий.

Шаг 1. Обзор

Обзор
Обзор
Обзор
Обзор

Что это за вещь?

Во-первых, обратите внимание, чем не является Lapcade:

  • Это не игровая консоль.
  • У него нет игр, и у него нет возможности загружать и играть в игры.
  • Он не подключается к телевизору или монитору.

Lapcade - это клавиатура Bluetooth. Ни больше ни меньше.

Я поднимаю этот вопрос, потому что по этому поводу возникла некоторая путаница. У меня было много вопросов о том, какие игры можно загружать на него и какой видеоинтерфейс он использует - он не может и не может! Это полностью зависит от ПК, к которому вы его подключаете, и в этом отношении нет предела. Если ваше устройство поддерживает Bluetooth-клавиатуру, Lapcade должен работать с ней. Я не пробовал, но видел другие проекты, в которых использовался EZ-Key (описанный ниже), подключенный к портативным устройствам. Итак, теоретически вы можете подключить это устройство к любому компьютеру под управлением Windows, Linux, ChromeOS, MAC и т. Д., А также Raspberry Pi, Android, iOS и другим, поддерживающим Bluetooth v2.1. Однако может потребоваться изменение кодов клавиш.

Предварительная версия 1

Первоначально я нашел продукт под названием Adafruit Bluefruit EZ-Key bluetooth HID (устройство с человеческим интерфейсом - думаю, клавиатура), который позволил бы мне подключать знакомые щелкающие кнопки и отправлять нажатия клавиш, как клавиатура. Когда я впервые построил контроллер на основе EZ-Key, я следовал набору инструкций по созданию простого и понятного контроллера, и он отлично работал. Я без проблем использовал контроллер в тяжелой деревянной раме в течение нескольких месяцев. Однако вы ограничены 12 входами, и нет возможности изменить код ключа, передаваемый устройством, без перепрограммирования входных контактов EZ-Key.

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

Я также использовал 4 батарейки АА для питания устройства, и из коробки он, похоже, не имел режима пониженного энергопотребления. Батареи будут полностью высосаны через день или два, даже если они не используются.

Итак, по настоянию моего друга, я решил создать программируемую версию того же контроллера, который имел быструю смену режима, позволял бы мне использовать одно и то же устройство для управления несколькими приложениями, а также мог бы быть «перевернут» для левой руки. использовать и находился в кейсе для ноутбука, который был намного меньше моего нынешнего 10-фунтового раствора.

Пришло время для обновления.

Версия 1 Цели Дизайн-проекта:

  • Гибкий
  • Перезаряжаемый
  • Для левшей и правшей
  • Без шнуров
  • Легкий

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

EZ-Key нельзя было напрямую программировать в реальном времени, поэтому следующим решением будет использование контроллера, такого как Arduino, для управления функциональностью. EZ-Key будет использоваться исключительно для передачи кодов клавиш на ПК через Bluetooth. Я выбрал Arduino Pro Mini из-за его прямой совместимости с UNO (с которой у меня уже был опыт) и из-за его компактных размеров.

Я не хотел иметь дело с батареями в этой новой коробке, как с предшественником Lapcade, поэтому я решил использовать литий-полимерный аккумулятор и плату зарядного устройства / питания. Это означало, что я мог просто использовать стандартное зарядное устройство USB. Это также означало, что мне не пришлось бы открывать корпус каждый раз, когда разрядились батареи. EZ-Key и PowerBoost 500C имеют индикаторы, которые необходимо перенести в верхнюю часть контроллера для определения состояния сопряжения и индикации низкого заряда батареи. Я добавил несколько светодиодов в дизайн, чтобы я мог отображать эти удобные индикаторы состояния пользователю во время работы.

По мере созревания тестирования моего дизайна я обнаружил, что некоторые из моих первоначальных идей оказались не такими, как я ожидал. Например, индикатор LBO на PowerBoost не работает должным образом при подключении к микроконтроллеру. Это позволит току проходить через общую землю от батареи, когда устройство выключено или отключено, индикатор LBO будет гореть и останется гореть. Другие участники форума Adafruit также столкнулись с этой проблемой и предложили лучшее решение - измерение напряжения батареи непосредственно на аналоговом входе. Как только напряжение упадет до определенного уровня, пора сообщить пользователю, что батарея вот-вот отключится.

Шаг 2: что вам нужно

Список электронных деталей

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

1 Arduino Pro Mini 5V - мне нравится Pro, потому что он компактен. Вы можете использовать любую совместимую плату Uno pin / interrupt с предоставленным кодом

1 Adafruit Bluefruit EZ-Key bluetooth HID - как описано выше, это bluetooth HID, который позволяет передавать коды клавиш на главный компьютер.

1 MCP23017 - расширитель порта ввода / вывода i2c на 16-этот чип используется для добавления еще 16 входов к Arduino через протокол связи I2C

1 зарядное устройство Adafruit PowerBoost 500 + - это плата управления питанием для питания Lapcade и зарядки LiPo.

1 литий-полимерный аккумулятор (я использовал 2500 мАч, но вы можете использовать большую / меньшую емкость)

1 8-позиционный аркадный джойстик - пожалуйста, прочтите раздел «Мысли о версии 2» ниже, касающийся джойстиков.

9 аркадных кнопок - разные цвета и отпечатки экрана

2 кнопки мгновенного действия с подсветкой - я использовал эти 2 кнопки для кнопок Center 4 и 5 от Adafruit: красный (центр 4), синий (центр 5)

1 фиксирующаяся кнопка с подсветкой Я использовал ее для кнопки питания от Adafruit: зеленый

2 светодиода. Используются для индикации сигнала сопряжения и низкого заряда батареи. Я использовал две части RadioShack 2760270 и 2760271

1 ЖК-экран 16 x 2

1 рюкзак с ЖК-дисплеем I2C / SPI - используется для связи I2C с дисплеем 16x2.

1 Удлинительный USB-кабель для монтажа на панель - используется для удлинения USB-разъема micro-b PowerBoost до стены шкафа.

1 Полноразмерная макетная плата Adafruit Perma-Proto - не обязательна, но значительно упрощает постоянный монтаж.

5 резисторов 220 Ом

7 резисторов по 1 кОм

2 резистора 2,2 кОм

1 резистор 4,7 кОм

18 # 10 гнездовые лопаточные разъемы - для подключения к контактам кнопки аркады. Рекомендуется перед пайкой, так как кнопки со временем изнашиваются.

Соединительный провод 22-го калибра - я использовал сплошной соединительный провод, а не многожильный, чтобы обеспечить автономное управление проводом. Это было чисто для демонстрационных целей и не рекомендуется, так как сплошная проволока хрупкая и склонна к поломке.

Следующие элементы не требуются, но упростят монтаж и, в случае поджаривания компонента, упростят замену:

  • Гнездо IC - для 28-контактных микросхем 0,3 дюйма
  • Гнездо IC - для 28-контактных микросхем 0,6 дюйма
  • 0,1-дюймовый разъем с внутренней резьбой (минимум 1 36-контактный разъем)

Части шкафа:

  • 3 панели из березы 12 x 24 1/8 дюйма
  • 1 прозрачная акриловая панель размером 12 x 24 1/8 дюйма

Файлы:

  • Lapcade V1.xlsx - электронная таблица, упомянутая ниже, которая имеет соединения цепи.
  • LapcadeV1-code.zip - Zip-файл, содержащий код Arduino, написанный для этого проекта.
  • Lapcade_v1.zip - Zip-файл, содержащий чертежи svg для шкафа.
  • LapcadeV1-Circuit_Diagram_Large.zip - Zip-файл, содержащий версию схемы фритзинга с высоким разрешением, показанную ниже.

Ссылки на дополнительные ресурсы:

  • Документация Adafruit Bluefruit EZ-Key
  • Adafruit PowerBoost 500 + Документация
  • Документация на рюкзак с ЖК-дисплеем I2C / SPI
  • Документация по расширителю портов MCP23017 I2C
  • Библиотека Arduino Adafruit MCP23017

Шаг 3: Сборка - Шкаф

Сборка - Кабинет
Сборка - Кабинет
Сборка - Кабинет
Сборка - Кабинет
Сборка - Кабинет
Сборка - Кабинет
Сборка - Кабинет
Сборка - Кабинет

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

Чтобы решить эту проблему, и поскольку Lapcade имеет ширину 20 дюймов, в мою конструкцию были добавлены два вертикальных ребра, которые фиксируют верхнюю, левую и правую стороны. Во время сухой сборки конструкция была способна выдержать 70 фунтов размещенных на ней книг. Коробка стала еще прочнее. Получив вырезанные материалы, я сначала свободно соединил все панели, чтобы убедиться, что они работают. Затем я слегка отшлифовал их и обработал воздухом. Я использовал столярный клей, чтобы скрепить части вместе.

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

После очистки поверхностей я нанес несколько слоев полиуретана, позволяя отвердеть между слоями. Получился легкий деревянный ящик с акриловой нижней крышкой. Изначально я хотел полностью прозрачную коробку, но когда он прислал мне «тестовые» детали из березы, я сразу передумал. Он был не только легче, но и возвращал идею компьютерных игр. Файлы svg находятся ниже.

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

Еще одно замечание: когда я рисовал область для ЖК-дисплея, я использовал дисплей, который у меня был под рукой для измерений. Между тем, как я составлял чертеж и позже вставлял детали в корпус, я использовал оригинальный ЖК-дисплей в другом проекте и заказал замену. Как оказалось, крепежные отверстия для второго немного отличались от оригинала и не совпадали. Поэтому перед резкой материала внимательно проверьте, соответствуют ли детали отверстиям на чертеже.

Третье примечание: я не включил вырез для USB-кабеля для зарядки в исходный чертеж просто потому, что не был уверен, где я хочу его разместить, чтобы он не мешал использованию. Позже я вырезал для него отверстия на левой стороне, очень близко от того места, где вы видите слово «Lapcade» на изображениях ниже. Версия 2 будет иметь порт зарядки в другом положении.:)

Шаг 4: Сборка - Электроника

Сборка - Электроника
Сборка - Электроника
Сборка - Электроника
Сборка - Электроника
Сборка - Электроника
Сборка - Электроника
Сборка - Электроника
Сборка - Электроника

Сначала давайте взглянем на схему подключения, показанную выше.

Первое, что здесь следует отметить, это шины питания и заземления на макетной плате. Рельсы с синей линией - это земля (-), а шины с красной линией - это питание (+). Это стандартно, но я отмечаю это, потому что общая линия джойстика (черный провод) подключена к питанию, а не к земле. Во Fritzing я использовал цвет провода джойстика, а не условный цвет, и подумал, что это может вызвать некоторую путаницу - так что лучше просто убрать это с дороги.

Компонентные соединения

Вместо того, чтобы пытаться описать здесь каждое соединение в длинной форме (аналоговый вывод 0 Arduino проходит через резистор 220 Ом на вывод PowerBoost Bat), я создал электронную таблицу, которая содержит все соединения с точки зрения компонента. Итак, на вкладке Arduino в электронной таблице вы увидите APM A0 -> 2,2 кОм -> PB Bat, а на вкладке PowerBoost вы увидите PB BAT -> 2,2 кОм -> APM A0. Пожалуйста, просмотрите раздел ресурсов ниже для всех файлов, связанных с этим проектом.

Еще одно замечание относительно электронной таблицы: на некоторых устройствах отображаются два столбца подключения. Это нужно для того, чтобы показать более одного подключения к контакту. Например, каждое из соединений джойстика, кроме общего провода, использует понижающий резистор, чтобы гарантировать, что расширитель портов получает устойчивый высокий или низкий сигнал. Чтобы показать это для джойстика 2, вы увидите два столбца для подключения: один для провода джойстика к контакту MCP 21, а другой - для подключения контакта 21 через резистор к земле. Я уверен, что есть лучшие способы задокументировать это, но я боюсь, что вы застряли с моими способами делать что-то с этим.:)

Каждая из кнопок аркады имеет общий (com), нормально разомкнутый (no) и нормально замкнутый (NC) контакт. Для каждой из этих кнопок я использую соединения com и nc.

Шаг 5: Код

Код
Код

Прежде всего, мне нужно отдать должное, где это необходимо. При написании кода для Lapcade я сильно полагался на следующую статью:

learn.adafruit.com/convert-your-model-m-keyboard-to-bluetooth-with-bluefruit-ez-key-hid Особая благодарность Бенджамину Гулду за хорошо написанный и задокументированный проект!

Итак, в основе этого проекта - клавиатура. С точки зрения ПК Lapcade - это просто клавиатура, подключенная через Bluetooth, в чем так хорош EZ-Key. Он берет сложные протоколы Bluetooth, тайминги и коды и инкапсулирует их, так что все, что мне нужно делать с arduino, - это отправлять ему коды клавиш. Для этого я использовал карты кода в проекте выше и свои собственные массивы для создания рабочих режимов. Каждый режим изменяет то, что нажатие одной и той же кнопки делает на Lapcade и что отправляется на ПК. Существует три «встроенных» режима работы, и все следующие за ними режимы являются режимами приложения.

Рабочие режимы

Ниже приводится краткое описание рабочих режимов Lapcade:

  1. Запуск - в этом режиме проверяется связь с ПК и устанавливаются переменные запуска. Если EZ-Key не сопряжен с ПК, он переходит в режим сопряжения.
  2. Сопряжение - в этом режиме EZ-Key ожидает сопряжения с ПК.
  3. Выбор режима - этот режим позволяет пользователю выбрать, какой режим приложения использовать. В этом режиме коды клавиш не отправляются на ПК. Также есть возможность выбора быстрого режима на основе предыдущего режима приложения. Например, нажатие кнопки mode, а затем кнопки player two в режиме Mame player 1 просто переключает режим без необходимости поиска и выбора Mame Player 2 на дисплее.

Режимы применения

Режимы приложения используются для отправки соответствующих кодов клавиш на компьютер в зависимости от того, в каком приложении находится пользователь. Например, в режиме Kodi клавиша действия 2 отправляет «P», что означает паузу. В Mame эта же кнопка отправляет левую клавишу Alt. Если кто-то хочет использовать контроллер для игры в Minecraft для ПК, все, что нужно сделать, это добавить соответствующие карты массива.

Каждое приложение необходимо определить в 4 массивах данных.

  • mode - этот массив содержит текст, который будет отображаться на экране для каждого режима. Чтобы использовать вторую строку дисплея, просто поместите ~ в массив в качестве разрыва строки.
  • keyModes [14] - Этот матричный массив содержит коды клавиш, отправленные на ПК. Каждая строка из 14 элементов представляет отдельные кнопки для сопоставления кодов клавиш.
  • keyModifiers [14] - этот матричный массив содержит модификаторы кода клавиши для каждого нажатия клавиши, например, удерживания клавиши Shift.
  • quickMode [3] - Этот матричный массив содержит шаблон выбора быстрого режима для текущего режима.

Основная операция

Когда система включается, она переходит в режим запуска, в котором состояние Bluetooth-соединения проверяется и отображается пользователю. Arduino получает статус EZ-Key, подсчитывая и синхронизируя импульсы с вывода L1 EZ-Key. Есть четыре под-статуса для режима запуска:

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

Если система сопряжена с ПК, но не может подключиться к нему, система останется в состоянии подключения в режиме запуска. Если пользователь удерживает кнопку выхода при включении устройства, он пропустит проверку соединения Bluetooth и перейдет к выбору режима.

Если система не была ранее сопряжена, режим запуска сменится режимом сопряжения. В этом состоянии система сообщит, что она доступна для сопряжения. Как только он будет обнаружен и подключен хостом, он перейдет к выбору режима. Устройство можно отключить в режиме выбора режима, нажав кнопку «Действие 1».

В режиме выбора режима движения джойстика вверх и вниз будут перемещать вас по доступным режимам приложения на ЖК-дисплее. Чтобы выбрать один из режимов, нажмите кнопку ввода (центральная 5).

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

Быстрые режимы

После выбора режима приложения устанавливается его определение быстрого режима. Проще говоря, быстрые режимы - это режимы приложения, которые можно выбрать с помощью первых трех центральных кнопок (Центр 1-3). Эти три кнопки соответствуют элементу массива в матрице.

Например, в текущей конфигурации при использовании Mame в режиме игрока 1 (определен режим 4 или пятый режим), затем нажатие кнопки режима, а затем кнопка второго игрока загружает элемент массива quickmode [4] [1] (Arduino использует 0), который равен 5. Затем система переключается в режим приложения 5, то есть в Mame, player 2.

Шаг 6: Идеи для версии 2

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

4-позиционный джойстик против 8-позиционного. Еще одна вещь, которая стала очевидной, когда я начал использовать джойстик, заключалась в том, что старые игры не предназначались для использования 8-позиционных джойстиков. Речь идет о пакмане. С момента создания этого контроллера я обнаружил, что существуют джойстики, которые можно механически переключать с четырехпозиционного на восьмипозиционный. Да, он есть в списке, и если вы планируете играть в классические аркадные игры, просто перейдите к той, которую можно изменить. Конечно, убедитесь, что вы учитываете изменения в проводке и программировании в зависимости от джойстика, которым вы пользуетесь. Вот некоторые поставщики классического аркадного управления:

  • https://www.ultimarc.com/controls.html
  • https://groovygamegear.com/webstore/index.php?main…

Правая и левая кнопки «Flipper» - Версия 2 определенно добавит по одной кнопке к левой и правой стороне корпуса. Одно из возможных применений - ласты для пинбола.

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

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

Беспроводной конкурс
Беспроводной конкурс
Беспроводной конкурс
Беспроводной конкурс

Второй приз в конкурсе беспроводных технологий

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