Съдържание:

Модулна аркадна машина: 12 стъпки
Модулна аркадна машина: 12 стъпки

Видео: Модулна аркадна машина: 12 стъпки

Видео: Модулна аркадна машина: 12 стъпки
Видео: Моя мама - владелец игры в Кальмара! 2024, Ноември
Anonim
Модулна аркадна машина
Модулна аркадна машина

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

Поради простия дизайн и избор на компоненти, това също е доста евтина конструкция в сравнение с много проекти за домашни аркадни машини и би трябвало да можете да постигнете за под 200 €/$ материали. Вече разполагах с повечето дървени материали и електроника, така че досега съм похарчил по -малко от 100 €.

Стъпка 1: Дизайн

Дизайн
Дизайн
Дизайн
Дизайн
Дизайн
Дизайн

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

  • Контролният модул съдържа всички контроли и електроника за управление, включително USB контролерите. Този модул може да се използва контролер в стил стик за борба, свързан към конзола или Raspberry PI.
  • Дисплейният модул съдържа дисплея и Raspberry PI (или вашият избор на SBC) и може да се използва самостоятелно като компютър „всичко в едно“или свързан към контролния модул, за да образува баркатна аркадна единица.
  • Модулът на стойката действа като единица за съхранение в самостоятелен режим и когато се комбинира с плота, образува пълна изправена аркадна машина.

Опитахме се да запазим дизайна възможно най -прост и функционален, като вземем някои дизайнерски подсказки от ретро -настолни игри от 70 -те и 80 -те години и избягваме нефункционални елементи като светлинната рамка и Т -формоването, открити в много шкафове. Разбира се, можете да промените дизайна, за да добавите тези елементи, ако желаете.

Взех решение за доста класическо разположение на бутоните, което сякаш си спомням от аркадите на моята младост с „прави шест“бутони до всеки от джойстиците (StreetFighter2 FTW). Поставих бутоните Старт и Избор на предния панел, за да се погрижа за емулацията на конзолата, както и за въвеждане на монети и задължения за избор на играч. Поставих и бутон от всяка страна за игри с пинбол. Разбира се, вие сте свободни да променяте дизайна според собствения си вкус и желаните методи за въвеждане, напр. тракболи. претеглени преси и др.

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

Базирах размерите около 19 -инчов широкоекранен монитор, който купих втора ръка за 10 евро. Това доведе до обща ширина на шкафа от 500 мм, оставяйки около 30 мм игра в случай, че трябва да сменя монитора.

Проверете SketchUp файловете за точни измервания на всички размери. При изрязване на конкретен панел или отвор използвах инструмента за измерване на лента в SketchUp, за да измеря размерите в модела, преди да маркирам разфасовките на строителния материал.

Стъпка 2: Дървообработващи инструменти и материали

ПРЕДУПРЕЖДЕНИЕ: ИЗПОЛЗВАЙТЕ ВНИМАНИЕ И ПОДХОДЯЩИ ОБОРУДВАНЕ ЗА БЕЗОПАСНОСТ ПРИ РАБОТА С ИНСТРУМЕНТИ ЗА ЗАХРАНВАНЕ

Инструменти

  • Отвертка и винтове
  • Настолен трион или циркуляр
  • Мозайката
  • Свредла и разни битове, включително трион за отвори с диаметър 28 мм за бутоните
  • Шкурка
  • Фреза и бит за закръгляване

Материали

  • 19 мм (3/4 ") MDF ламарина
  • 6 мм (3/4 ") MDF ламарина
  • Ъглови скоби (използвах някои наистина удобни пластмасови - вижте строителните снимки)
  • Пълнител за дърво
  • Боядисване (вижте стъпките „Край“по -късно за подробности)

Стъпка 3: Конструиране на модул за управление

Конструкция на модул за управление
Конструкция на модул за управление
Конструкция на модул за управление
Конструкция на модул за управление
Конструкция на модул за управление
Конструкция на модул за управление
Конструкция на модул за управление
Конструкция на модул за управление

Стартирах модула за управление, като изрязах страните от 19 мм MDF въз основа на размерите от модела SketchUp.

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

След това изрязах предните и страничните отвори за копчета и свързах всички панели с ъгловите скоби и винтовете. Първоначално планирах да използвам лепило, но моите тестове със залепване към ръба от MDF изглежда показаха, че това няма да бъде достатъчно силно. Също така вече имах куп скоби, които рециклирах от стар проект;).

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

След това изрязах горната и долната част от 6 мм MDF. Аз скосих горния панел, както при предния и задния панел, за да осигуря плътно прилягане и безпроблемно покритие. Не скосявах долния панел, тъй като не смятам да го запълвам и боядисвам. Вместо това ще го използвам като панел за достъп за поддръжка. Пробих и вдлъбнати отвори за винтове и пробих съответстващи отвори в ъгловите скоби.

След това разглобих задния панел и изрязах голяма дупка за редовен достъп до USB кабелите и Raspberry PI.

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

Стъпка 4: Електронни инструменти и материали

Забележка: Този списък е необходим само ако искате да се влюбите в електрониката. Можете и вероятно трябва да получите всички тези неща като част от комплект за включване и пускане (като тези) и да избягвате цялото запояване и персонализирано окабеляване. След като направих това веднъж „по трудния начин“, определено ще тръгна по пътя на комплекта, ако някога направя друг шкаф.

Инструменти

  • Мултицет/тестер за свързаност
  • Поялник
  • Резачка за тел
  • Инструмент за кримпване (току -що използвах резачката за тел)

Материали

  • Arduino Leonardo/Pro Micro с USB HID джойстик профил (използвах евтини клонинги)
  • USB концентратор
  • Аркаден джойстик и бутони.
  • Съединители за кримпване, за да съответстват на избрания от вас джойстик и бутони
  • 2x мини дъски
  • Свързващи проводници (предимно използвах джъмперни кабели Dupont)
  • Електронна спойка (все още имах оригиналната си макара от колофон от колеж)
  • Термосвиваеми тръби

Стъпка 5: Окабеляване на модула за управление

Окабеляване на модула за управление
Окабеляване на модула за управление
Окабеляване на модула за управление
Окабеляване на модула за управление
Окабеляване на модула за управление
Окабеляване на модула за управление

Отново препоръчвам да помислите за plug and play комплект вместо подхода, документиран тук. Следвайте този подход само ако:

А. Искате пълен контрол върху кода за работа с бутони на ниско ниво

Б. Наистина се наслаждавайте на запояване и персонализирано окабеляване (кой не)

В. Вече разполагате с инструментите и частите и/или искате да спестите няколко долара

Г. Искате да научите повече за тези неща или просто да практикувате

Моите лични мотивации бяха смесица от горното. Добре, ето как направих окабеляването:

Първо направих адаптерни кабели за свързване на кримпващите съединители на бутоните към проводниците на съединителя Dupont. Направих един от тях за микро превключвателя във всеки от бутоните и четирите във всеки от джойстиците. Викайте да забраните на Лари да разрови производствената линия за тях.

След това използвах тези персонализирани кабели за свързване на бутоните и джойстиците за въвеждане на щифтове на всеки от микроконтролерите през макетите.

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

След това трябваше да добавя проводник за изпращане на сигнал към всеки от микропревключвателите, който след това ще връща сигнала към входния щифт на микроконтролера, когато бутонът е натиснат. Използвах 4-те усукани двойки в някакъв кабел Cat 5e, за да осигуря сигнала към джойстиците, като ги запоя всички заедно в единия край и прикрепя съединителен кабел Dupont, свързан към сигналния щифт на микроконтролера.

Направих малко кабел с маргаритка за всеки от клъстерите с 6 бутона и накрая използвах моите персонализирани адаптерни кабели на бутоните за стартиране/избор и пинбол отново всички свързани към сигналния щифт на микроконтролера.

Окабеляването на микропревключвателите към микроконтролерите беше доста просто поради използването на конекторите за мини платки и Dupont, което означаваше, че лесно мога да премествам кабелите наоколо, ако е необходимо.

Стъпка 6: Код на контролера

Код на контролера
Код на контролера
Код на контролера
Код на контролера
Код на контролера
Код на контролера

Кодът е доста основен. Модифицирах пример за геймпад от отличната библиотека на джойстика Arduino

Можете да научите повече за това как да започнете с тази библиотека от тази удобна инструкция.

В края на тази стъпка имахме функциониращ контролер за борба с 2 играчи, така че празнувахме с няколко рунда StreetFighter2 на моя лаптоп!

Първоначално планирах да свържа микроконтролерите директно към Raspberry PI чрез USB, но докато тествах на лаптопа, установих, че свързването и изключването на микро USB конекторите към микроконтролерите през панела за достъп е много неудобно и в крайна сметка прекъснах микро USB конектор от един от микроконтролерите.

Решението за това беше да се включи USB концентратор в контролния модул. Това означаваше, че само една връзка беше изложена от контролния модул и цялостното решение беше много по -стабилно. С приключването на окабеляването добавих отвори за винтове към горния панел и го завинтих на място.

gamepad.ino

// Прост пример за геймпад, който демонстрира как да се четат пет Arduino
// цифрови щифтове и ги съпоставете с библиотеката на джойстика Arduino.
//
// Цифровите щифтове се заземяват при натискане.
//
// ЗАБЕЛЕЖКА: Този скицов файл е за използване с Arduino Leonardo и
// Само за Arduino Micro.
//
// Модифицирана версия на оригиналния код от Матей Хейронимус
// 2018-08-11
//--------------------------------------------------------------------
#включва
Джойстик_ Джойстик;
voidsetup () {
// Инициализиране на щифтове на бутони
pinMode (2, INPUT_PULLUP);
pinMode (3, INPUT_PULLUP);
pinMode (4, INPUT_PULLUP);
pinMode (5, INPUT_PULLUP);
pinMode (6, INPUT_PULLUP);
pinMode (7, INPUT_PULLUP);
pinMode (8, INPUT_PULLUP);
pinMode (9, INPUT_PULLUP);
pinMode (10, INPUT_PULLUP);
pinMode (16, INPUT_PULLUP);
pinMode (20, INPUT_PULLUP);
pinMode (21, INPUT_PULLUP);
// Инициализиране на библиотека с джойстик
Joystick.begin ();
Joystick.setXAxisRange (-1, 1);
Joystick.setYAxisRange (-1, 1);
}
// Последно състояние на бутоните
int lastButtonState [12] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
int щифтове [12] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 16, 20, 21};
voidloop () {
// Прочетете стойностите на щифтовете
for (intindex = 0; индекс <12; индекс ++)
{
int currentButtonState =! digitalRead (пинове [индекс]);
if (currentButtonState! = lastButtonState [индекс])
{
превключвател (щифтове [индекс]) {
case2: // НАГОРЕ
if (currentButtonState == 1) {
Joystick.setYAxis (-1);
} else {
Joystick.setYAxis (0);
}
прекъсване;
case3: // НАДЯСНО
if (currentButtonState == 1) {
Джойстик.setXAxis (1);
} else {
Джойстик.setXAxis (0);
}
прекъсване;
case4: // НАДОЛУ
if (currentButtonState == 1) {
Joystick.setYAxis (1);
} else {
Joystick.setYAxis (0);
}
прекъсване;
case5: // НАЛЯВО
if (currentButtonState == 1) {
Джойстик.setXAxis (-1);
} else {
Джойстик.setXAxis (0);
}
прекъсване;
случай6:
Joystick.setButton (0, currentButtonState);
прекъсване;
случай7:
Joystick.setButton (1, currentButtonState);
прекъсване;
случай8:
Joystick.setButton (2, currentButtonState);
прекъсване;
случай9:
Joystick.setButton (3, currentButtonState);
прекъсване;
случай10:
Joystick.setButton (4, currentButtonState);
прекъсване;
case16:
Joystick.setButton (5, currentButtonState);
прекъсване;
case20:
Joystick.setButton (8, currentButtonState);
прекъсване;
case21: {
Joystick.setButton (9, currentButtonState);
прекъсване;
}
}
lastButtonState [индекс] = currentButtonState;
}
}
забавяне (10);
}

вижте rawgamepad.ino, хоствано с ❤ от GitHub

Стъпка 7: Настройка на Raspberry PI

Raspberry PI Setup
Raspberry PI Setup

Препоръчвам Pi 3 за максимална производителност на играта и съвместимост, но ако се интересувате само от по -стари игри, устройство с по -ниска мощност като Pi Zero също би било добре. Използвам резервен Pi 2, който вече имах.

В мрежата има много големи ресурси, описващи как да настроите избрания от вас Pi или друг SBC с различни емулатори и предни части. Аз лично използвам и препоръчвам RetroPie и намерих тези - отлични - видеоклипове от ETA Prime за чудесен начин да станете и да работите бързо.

Стъпка 8: Конструиране на модул на дисплея

Конструиране на модул на дисплея
Конструиране на модул на дисплея
Конструиране на модул на дисплея
Конструиране на модул на дисплея
Конструиране на модул на дисплея
Конструиране на модул на дисплея

Започнах конструирането на модула на дисплея със страничните панели, маркирайки и изрязвайки първия от размерите, измерени от файла SketchUp с помощта на виртуалната лента. След това използвах първия панел като шаблон за маркиране на втория.

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

След това добавих долния преден панел и изрязах дупки в него, за да съответства на контролния модул. За да ги маркирам, поставих контролния модул срещу дисплея и го изписах от вътрешната страна на съществуващия отвор в контролния модул.

На този етап успях да свържа двата модула с помощта на два болта за съединител на шкафа. Сега можех да видя окончателната форма на комбинирания модул с плот!

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

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

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

Събрах двата модула заедно, за да видя как изглежда и след това завърших залепването на заобикалящия екран на място. За да направя това, добавих няколко допълнителни парчета от 6 мм MDF зад обкръжението на екрана, за да се уверя, че е плътно и да избегна пукнатини в боята по -късно.

Стъпка 9: Завършете

завършек
завършек
завършек
завършек
завършек
завършек
завършек
завършек

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

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

Всички тези първоначални слоеве бяха нанесени с обикновена 2 -инчова четка за боядисване.

Когато основните слоеве изсъхнаха, направих леко шлайфане с фина шкурка. След това добавих още един слой бяла боя.

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

Преди да повторя процеса за контролния модул, изрязах горния заден панел на модула на дисплея. Този панел има дупка в него, за да мога да нося модула на дисплея по -лесно. Той също така позволява на звука на вградените високоговорители на монитора да излязат от кутията.

На този етап също реших да премахна винтовете от горния панел на контролния модул и вместо това да го залепя на място. За да се уверя, че е сигурен, първо залепих някои допълнителни опорни части.

Когато модулът за управление беше боядисан, използвах Dremel за почистване на отворите за бутони, като непрекъснато ги тествах за размер с един от бутоните. Накрая залепих гайката за свързване на мебелите в задната част на модулите за управление.

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

Стъпка 10: Компоненти на модула на дисплея

  • 19 "широкоекранен монитор с високоговорители
  • Едноплатен компютър Raspberry PI 2 (SBC)
  • Малина PI 2 Case
  • 2Amp USB захранващ адаптер
  • Micro-usb кабел
  • 3,5 мм аудио кабел
  • HDMI кабел
  • Гнездо за мрежово шаси (тип електрически чайник)
  • Кабел за електрическа кана
  • Двойна електрическа мрежа

Стъпка 11: Окабеляване на модула на дисплея

Окабеляване на модула на дисплея
Окабеляване на модула на дисплея
Окабеляване на модула на дисплея
Окабеляване на модула на дисплея
Окабеляване на модула на дисплея
Окабеляване на модула на дисплея
Окабеляване на модула на дисплея
Окабеляване на модула на дисплея

Първо добавих основа и заден панел към корпуса на дисплея.

След това свързах превключвател на захранването към двоен контакт за захранване на PI и монитора. Запоявах захранващите проводници към превключвателя и заковах кабелите с термосвиваеми тръби. Ако не сте напълно доволни от тази част, потърсете помощ от някой квалифициран. НЕ поемайте никакви рискове с електрическото окабеляване.

След като здраво фиксирах превключвателя към кутията, поставих монитора на място. Предвид и без това тежка битка бяха необходими само няколко допълнителни пластмасови скоби, за да закрепите екрана на място.

След това включих USB захранващ адаптер за PI и кабелна кана за монитора. Оставаше само да включите аудио и видео сигналите към монитора.

Тъй като мониторът няма HDMI вход, използвах HDMI към DVI адаптер. Аудиото се подава към вградените високоговорители на монитора чрез 3.5 мм аудио кабел от PI. При включен заден панел и максимални настройки на звука, силата на звука е добре, но не е силна. Може да добавя високоговорители и мини усилвател в бъдеща актуализация.

Накрая включих USB хъб в PI и успях да започна тестването на напълно работещия модул на дисплея.

Стъпка 12: Окончателно сглобяване и мисли

Окончателно събрание и мисли
Окончателно събрание и мисли
Окончателно събрание и мисли
Окончателно събрание и мисли
Окончателно събрание и мисли
Окончателно събрание и мисли
Окончателно събрание и мисли
Окончателно събрание и мисли

Последната работа преди окончателното сглобяване беше повторно окабеляване и сглобяване на контролния модул след боядисване. Това мина доста гладко, освен счупването на една жица, която трябваше да бъде запоена отново.

Преди да комбинирам модулите за управление и дисплея, изрязах няколко диска с прозрачно залепващо контактно фолио, за да избегна излизането на цевта на мебелния конектор от контролния модул от надраскване на боята на модула на дисплея.

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

Изкарах чудесно работата по този проект с децата си. Научихме много и сега очакваме с нетърпение да играем много стари класически аркадни и конзолни класики на новата машина. Благодарим ви за четенето и ни кажете какво мислите за проекта в коментарите!

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