Съдържание:

Аркаден контролер Lapcade: 6 стъпки (със снимки)
Аркаден контролер Lapcade: 6 стъпки (със снимки)

Видео: Аркаден контролер Lapcade: 6 стъпки (със снимки)

Видео: Аркаден контролер Lapcade: 6 стъпки (със снимки)
Видео: Échate порок. Собеседования и невероятные истории. шунтирование желудка. #echateunvicio 2024, Юни
Anonim
Аркаден контролер Lapcade
Аркаден контролер Lapcade

Не съм много играч. Когато бях дете, бях по -заинтересован да видя как работят те, отколкото аз да ги играя. Мога да преброя от една страна колко аркадни игри редовно съм играл. Като се има предвид това, за някой би било лесно да намери за странно, че ще отделя време за изграждане на аркаден контролер. Това обаче е един от любимите ми проекти до момента. Освен че е предизвикателство за проектиране, кодиране и изграждане, то е и напомняне за минала ера на здрави механични бутони и джойстици.

Отминаха дните на Аркадата, но все още можете да усетите класическата аркадна игра точно в собствената си всекидневна. И така, тук ви представям Lapcade. Ако сте като мен и се наслаждавате на изграждането на неща повече от играта, може да се насладите на тази конструкция. Ако имате въпроси или предложения, които не са включени в раздела „идеи за версия 2“по -долу, моля, оставете коментар.

Стъпка 1: Общ преглед

Общ преглед
Общ преглед
Общ преглед
Общ преглед

Какво е това нещо?

Първо, моля, обърнете внимание какво не е Lapcade:

  • Това не е игрална конзола.
  • Той няма игри, нито има възможност за зареждане и игра на игри.
  • Не се свързва с телевизор или монитор.

Lapcade е Bluetooth клавиатура. Нищо повече, нищо по -малко.

Представям това, защото имаше известно объркване по този въпрос. Имал съм много въпроси относно това какви игри могат да се зареждат на него и какъв видео интерфейс използва - не може и не! Той зависи изцяло от компютъра, към който го свързвате, и в това отношение небето е границата. Ако вашето устройство може да приема Bluetooth клавиатура, тогава Lapcade трябва да работи с нея. Не съм го пробвал, но съм виждал други проекти, които са използвали EZ-ключа (описан по-долу), свързан към преносими устройства. Така че теоретично можете да свържете това устройство към всеки компютър с Windows, Linux, ChromeOS, MAC и т.н., както и Raspberry Pi, Android, iOS и други, които поддържат Bluetooth v2.1. Може да се наложи обаче промяна на кодовете на ключовете.

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

Първоначално открих продукт, наречен Adafruit Bluefruit EZ -Key bluetooth HID (Human interface device - think keyboard), който би ми позволил да свързвам познати бутони с щракване и да изпращам натискания на клавиши като клавиатура. Когато за първи път изградих контролер, базиран на EZ-Key, следвах набор от инструкции за изграждане на прост и директен контролер и той работи чудесно. Използвах контролера в тежка дървена рамка без проблеми в продължение на няколко месеца. Вие обаче сте ограничени до 12 входа и няма начин да промените кода на ключа, предаван от устройството, без да препрограмирате входните щифтове на EZ-Key.

Тъй като използвах моя медиен център Kodi за показване на инсталирани игри, исках да превключвам между контролиране на медийния център и игра на игри, без да се налага да използвам множество контролери / дистанционни управления. Исках също така устройството да се регулира, така че синът ми с лявата ръка да може да го използва, както му харесва.

Използвах и 4 батерии АА за захранване на устройството и изглеждаше, че няма режим на ниска консумация. Батериите щяха да се изсмучат сухи за ден -два, дори и да не се използват.

Така че, по настояване на мой приятел, реших да създам програмируема версия на същия контролер, която има бързи промени в режима, ще ми позволи да използвам едно и също устройство за управление на множество приложения, може също да бъде „обърната“за лявата ръка използвах и беше в калъф за лаптоп, който беше далеч по -малък от сегашното ми решение от 10 lb.

Време беше за ъпгрейд.

Версия 1 Цели на DesignProject:

  • Гъвкав
  • Зарежда се
  • За левичари и десничари
  • Без шнурове
  • Лек

Исках този нов дизайн да бъде гъвкав. Контролите трябва да се променят в движение, без да се налага препрограмиране на компонентите всеки път, когато трябва да се направи тест или промяна. Това означаваше, че е необходимо да има интерфейс на контролера, за да се изберат „режими“на работа. Всеки бутон и позиция на джойстика трябва да имат различни ключови кодове, свързани с него. Същите тези контроли също ще трябва да се използват за избор на различните режими.

EZ-Key не беше директно програмируем в реално време, така че следващото решение би било да се използва контролер като Arduino за управление на функционалността. EZ-ключът ще се използва единствено за предаване на кодовете на ключове към компютъра по Bluetooth. Избрах Arduino Pro Mini поради директната му съвместимост с UNO (с която вече имах опит) и поради компактните му размери.

Не исках да се занимавам с батерии с тази нова кутия, както направих с предшественика на Lapcade, затова избрах да използвам литиево -полимерна акумулаторна батерия и зарядно/захранваща платка. Това означаваше, че мога просто да използвам стандартно USB зарядно устройство. Това също означаваше, че няма да се налага да отварям кутията всеки път, когато батериите се изтощят. EZ-Key и PowerBoost 500C имат индикатори, които трябва да бъдат прехвърлени в горната част на контролера за състоянието на сдвояване и индикация за изтощена батерия. Добавих някои светодиоди към дизайна, за да мога да отразя тези удобни индикатори за състоянието на потребителя по време на работа.

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

Стъпка 2: Какво ви трябва

Списък на електронните части

Това се превърна в доста сложна конструкция. Не е нужно да използвате същите части, които използвах аз, но ако използвате заместваща част, уверете се, че разбирате как тя ще взаимодейства с другите схеми и код. Въпреки че с удоволствие предлагам предложения, не мога да помогна за отстраняване на проблеми с код или проблеми за различни конфигурации.

1 Arduino Pro Mini 5V - харесвам Pro, защото е компактен. Можете да използвате всяка Uno щитка/прекъсване съвместима платка с предоставения код

1 Adapruit Bluefruit EZ -Key bluetooth HID - Както е описано по -горе, това е bluetooth HID, който позволява предаването на кодове на ключове към хост компютъра.

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

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

1 литиево -полимерна батерия (използвах 2500mAh, но можете да използвате по -голям / по -нисък капацитет)

1 8 -Way Arcade Joystick - Моля, вижте раздела „мисли за версия 2“по -долу относно джойстиците

9 Аркадни бутони - Разнообразни цветове и отпечатъци от екрана

2 светещи моментни бутона - използвах тези 2 бутона за централните 4 и 5 бутони и са от Adafruit: червен (център 4), син (център 5)

1 Осветен бутон за заключване Използвах това за бутона за захранване от Adafruit: Зелен

2 светодиода Използва се за препращане към сигнал за сдвояване и изтощена батерия. Използвах две части на RadioShack 2760270 и 2760271

1 16 x 2 LCD екран

1 I2C/SPI LCD раница - Използва се за I2C комуникация към 16x2 дисплея.

1 USB удължителен кабел за монтаж на панел - Използва се за удължаване на USB -конектора на PowerBoost micro -b до стената на шкафа.

1 Adafruit Perma-Proto Пълноразмерна платка за платки-Не е необходимо, но улеснява постоянния монтаж.

5 220 ома резистора

7 1K ома резистори

2 2.2K ома резистори

1 4.7K ом резистор

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 LCD раница Документация
  • MCP23017 Документация за разширител на I2C порт
  • Библиотека на Arduino от Adafruit MCP23017

Стъпка 3: Монтаж - Кабинетът

Сглобяване - Кабинетът
Сглобяване - Кабинетът
Сглобяване - Кабинетът
Сглобяване - Кабинетът
Сглобяване - Кабинетът
Сглобяване - Кабинетът
Сглобяване - Кабинетът
Сглобяване - Кабинетът

Исках да имам много лека кутия, която също би могла да издържи. Без да се прекалява с екзотиката с материалите, лекото е равно на тънко и тънкото обикновено е равно на крехко. Основният потребител на Lapcade вероятно ще бъде малкият ми син, който обича да „натиска“бутоните и да „навигира“в джойстика с изключителен ентусиазъм. Въпреки че е добър в това, че не изпуска нещата, той успя да износва промишлените микро превключватели в един джойстик в рамките на няколко месеца.

За да се преодолее този проблем и тъй като Lapcade е с ширина 20 , моят дизайн добави в две вертикални ребра, които закрепват горната и лявата и дясната страна. По време на сухо монтиране дизайнът издържа 70 фунта книги, поставени върху него. Веднъж залепен, кутията стана още по -издръжлива. След като получих нарязаните материали, първоначално хлабаво прикрепих всички панели, за да се уверя, че работят. След това леко ги шлайфах и изпуших с въздух. Използвах лепило за дърво, за да закрепя парчетата заедно.

Книгите на снимките по -долу са поставени, за да окажат натиск върху прясно залепените парчета, докато се стегнат. След като лепилото се втвърди, изгладих ръбовете. Моят дизайн умишлено компенсира панелите, така че те да стърчат малко в ъглите. Това би ми позволило да заобля ъглите по време на шлайфане, без да навлизам твърде много във фугата.

След почистване на повърхностите, след това нанесох няколко слоя полиуретан - което позволява втвърдяване между слоевете. Резултатът беше лека дървена кутия с акрилен долен капак. Първоначално исках напълно ясна кутия, но когато той ми изпрати брезовите "тестови" части, веднага промених решението си. Той беше не само по -лек, но и хубаво връщане към идеята за кабинетните игри. Svg файловете са по -долу.

Моля, обърнете внимание: Това е многослоен чертеж и всеки слой представлява един набор от разфасовки на един лист материал. Когато изпращате отпечатък на ножа си, уверете се, че всички останали слоеве са скрити, преди да изрежете.

Друга забележка: Когато нарисувах зоната за LCD дисплея, използвах дисплей, който имах под ръка за измервания. Между времето, когато съставих чертежа и по -късно монтирах частите в кутията, бях използвал оригиналния LCD в друг проект и поръчах замяна. Оказа се, че монтажните отвори за втория са малко по -различни от оригинала и не са подредени. Така че, внимавайте, преди да изрежете материала си, за да проверите отново дали частите, които имате, отговарят на отворите на чертежа.

Трета забележка: Не включих изреза за USB кабела за зареждане в оригиналния чертеж, просто защото не бях сигурен къде искам да го сложа, за да не пречи на използването. По -късно изрязах дупките за него от лявата страна, много близо до мястото, където виждате думата "Lapcade" в изображенията по -долу. Версия 2 ще има порта за зареждане на все още различна позиция.:)

Стъпка 4: Монтаж - Електроника

Монтаж - електроника
Монтаж - електроника
Монтаж - електроника
Монтаж - електроника
Монтаж - електроника
Монтаж - електроника
Монтаж - електроника
Монтаж - електроника

Първо нека да разгледаме схемата на окабеляване, показана по -горе.

Първото нещо, което трябва да се отбележи тук, е, че захранването и заземените релси на макета. Релсите със синята линия са заземени (-), а релсите с червената линия са захранващи (+). Това е стандартно, но го отбелязвам, защото общата линия на джойстика (черен проводник) е свързана към захранването, а не към земята. Във Fritzing използвах цвета на проводника на джойстика, а не конвенционалния цвят и помислих, че това може да доведе до известно объркване - затова е най -добре просто да го отстраните.

Компонентни връзки

Вместо да се опитвам да посоча всяка връзка в дълга форма тук (аналоговият щифт 0 на Arduino преминава през 220 ома резистор към щифта PowerBoost Bat), аз създадох електронна таблица, която съдържа всички връзки от гледна точка на компонента. Така че в раздела Arduino на електронната таблица ще видите APM A0 -> 2.2K OHM -> PB Bat и в раздела PowerBoost ще видите PB BAT -> 2.2K OHM -> APM A0. Моля, вижте раздела ресурси по -долу за всички файлове, свързани с този проект.

Друга забележка относно електронната таблица е, че някои устройства показват две колони за връзка. Това е за показване на повече от една връзка с пин. Например, всяка от връзките на джойстика, с изключение на общия проводник, използва издърпващ се резистор, за да гарантира, че удължителят на порта получава стабилен висок или нисък сигнал. За да покажете това за джойстика 2, ще видите две колони за свързване, едната е за проводника на джойстика към щифта MCP 21, а другата за връзка от щифт 21 през резистор към маса. Сигурен съм, че има по -добри начини за документиране на това, но се опасявам, че сте останали с начините ми да правя нещата по този въпрос.:)

Всеки от аркадните бутони има общ (com), нормално отворен (не) и нормално затворен (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 не е сдвоен с компютър, той се променя в режим на сдвояване
  2. Сдвояване - В този режим EZ -ключът чака да бъде сдвоен с компютър.
  3. Mode Select - Този режим позволява на потребителя да избере кой режим на приложение да използва. В този режим не се изпращат кодове на ключове към компютъра. Има и бърз избор на режим въз основа на предишния режим на приложение. Например натискане на режим и след това бутонът с два играча, когато сте в режим Mame player 1 просто превключва режима, без да се налага да търсите и избирате Mame Player 2 на дисплея.

Режими на приложение

Режимите на приложение се използват за изпращане на подходящи кодове на ключове към компютъра въз основа на приложението, в което се намира потребителят. Например в режим Kodi клавишът за действие 2 изпраща „P“, което е на пауза. В Mame същият бутон изпраща левия клавиш Alt. Ако някой иска да използва контролера, за да играе Minecraft за компютъра, тогава всичко, което трябва да се направи, е да добави съответните карти на масиви.

Всяко приложение трябва да бъде дефинирано в 4 масива от данни.

  • mode - Този масив съдържа текста, който ще бъде представен на екрана за всеки режим. За да използвате втория ред на дисплея, просто поставете a ~ в масива като прекъсване на ред.
  • keyModes [14] - Този матричен масив съдържа ключовите кодове, изпратени до компютъра. Всеки ред от 14 елемента представлява отделни бутони за съпоставяне на ключови кодове.
  • keyModifiers [14] - Този матричен масив съдържа модификаторите на код на ключ за всяко натискане на клавиш, като например задържане на клавиша Shift.
  • quickMode [3] - Този матричен масив съдържа шаблона за избор на бърз режим за текущия режим.

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

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

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

Ако системата е сдвоена, но не може да се свърже с компютъра, системата ще остане в състояние на свързване в режим на стартиране. Ако потребителят задържи бутона за бягство при включване на устройството, той ще пропусне проверката на Bluetooth връзката и ще премине към Избор на режим.

Ако системата не е била сдвоена по -рано, режимът на стартиране ще бъде заменен от режима на сдвояване. В това състояние системата ще излъчва, че е достъпна за сдвояване. След като бъде открит и прикрепен от хост, той ще премине към Избор на режим. Устройството може да бъде сдвоено в Избор на режим, като натиснете бутона Действие 1.

В Избор на режим действията с джойстика нагоре и надолу ще ви преведат през наличните режими на приложение на LCD дисплея. За да изберете един от режимите, натиснете бутона за въвеждане (център 5).

Веднъж в режим на приложение, всеки от бутоните и джойстика ще изпращат кодове на ключове според ключовите карти, посочени в четирите масива, както е описано по -горе.

Бързи режими

След като е избран режим на приложение, се задава дефиниция за бърз режим. Казано по-просто, бързите режими са режимите на приложение, избираеми от първите три централни бутона (център 1-3). Тези три бутона съответстват на елемента от масива в матрицата.

Например, в текущата конфигурация, когато използвате Mame в режим на играч 1 (Режим 4 или дефиниран пети режим), след това натискате бутона за режим и след това два бутона на плейъра зареждат елемента на масив от бърз режим [4] [1] (Arduino използва 0 индексиране на базовия масив), което е 5. След това системата превключва в режим на приложение 5, който е Mame, играч 2.

Стъпка 6: Идеи за версия 2

Дисплей с бутони - предполагам, че не можете да планирате всичко, но има една идея за дизайн, която бих искал да имах рано за версия първа - индивидуални LCD панели с бутони. Много бързо стана ясно след изграждането, че само да знаеш в какъв режим си, не означава, че си спомняш какво прави всеки бутон - особено след като се отдръпнеш от него за няколко дни или месеци. Наистина бих искал да съм добавил някакъв малък дисплей върху или над всеки бутон, който да показва какво е текущото му действие. Това е най -отгоре в списъка ми за версия 2.

4-Way vs 8-Way Joystick-Друго нещо, което стана ясно, след като започнах да използвам джойстика, беше, че по-старите игри не са предназначени за използване на 8-посочни джойстици. Пример за това е pac-man. След като създадох този контролер, открих, че има джойстици, които могат да бъдат превключени механично от 4-посочен към 8-пътен. Да, този е в списъка и ако планирате да играете класически аркадни игри, просто преминете към такъв, който е променлив. Разбира се, уверете се, че отчитате промените в окабеляването и програмирането въз основа на джойстика, с който се навивате. Ето някои доставчици на класически аркадни контроли:

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

Бутони "Flipper" от дясната и лявата страна - Версия 2 определено ще добави по един бутон към лявата и дясната страна на шкафа. Една възможна употреба ще бъде за ласти за пинбол.

Други контроли - разглеждам жизнеспособността на добавянето на други общи контроли като тракбол и / или спинер към следващата версия. Тъй като EZ-Key може да предава координати на мишката, това не би трябвало да е твърде трудно.

Бордово програмиране - Следващата версия трябва да има възможност да добавя нови конфигурации, без да отваря кутията. Исках да добавя това към версия 1, но това изискваше повече време и ресурси, отколкото имах.

Безжично състезание
Безжично състезание
Безжично състезание
Безжично състезание

Втора награда в конкурса за безжична връзка

Препоръчано: