2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-13 06:58
Jedná sa o bezdrôtový ovládač v arkádovom štýle, na ktorom môžu hrať 4 ľudia naraz. Je to bezdrôtové, takže nemusíte pripájať počítač k ovládaču, ktorý používajú 5 -ročné deti. Padajú stále a nechcem, aby zničili všetky moje hračky, keď sa nevyhnutne potknú po drôte. Nedávno sme si kúpili nový počítačový monitor a bol dodaný v super robustnej krabici so skutočne hustým polystyrénom vo vnútri. Ako zo sitcomu, nepretržite som sa hádal so svojou ženou o ponechaní škatule. Mne sa zdalo, že je to žobranie, aby sa z nej stalo niečo, zatiaľ čo pre ňu to bolo škaredé haraburdu. Potom z ničoho nič spustili Instructables rýchlostnú súťaž založenú na kartóne. A tak popoludní bola hádka urovnaná a tento projekt bol na svete.
Na uvedenie projektu do života sme použili šance, že ho budeme mať okolo domu. Cieľom bolo iba použiť to, čo sme už sedeli, na niečo úžasné - našťastie sme mali sadu arkádových gombíkov a malinový pi, ktorý sme kúpili pred mnohými rokmi, na výrobu arkádovej skrine. Na rezanie sme použili pílu a môj verný starý vreckový nôž.
Zásoby
1. Kartónová škatuľa2. Polystyrén alebo iná hustá výplň 3. Arkádové tlačidlá od Ali Express alebo Amazon 4. Raspberry Pi 3B + 5. Nejaký iný počítač + obrazovka. 6. Nôž alebo niečo na vyrezanie otvorov v kartóne 7. Maskovacia páska8. Farba v spreji
Krok 1: Stavba
Rýchlo sme nakreslili náčrt toho, ako chceme, aby vec vyzerala, potom sme nožom a pílou na drevo narezali kartón a polystyrén na správnu veľkosť. Kartón sme označili dobrým rozložením tlačidiel/joystickov a otvory opatrne vyrezali nožom. Pre deti to bolo skvelé cvičenie v základnej matematike. Hneď ako bol kartón rozrezaný, namaľovali sme ho a potom nasadili všetky tlačidlá. Hlavnou zaujímavou vecou, ktorú sme urobili, bolo lepenie troch vrstiev lepenky na vrchnú časť ovládača, aby mala väčšiu tuhosť. Vďaka tomu bolo trochu ťažké prerezať, ale perfektne fungovalo na to, aby bol vrch takmer pevný ako drevo.
Raspberry Pi 3B+ má štyri porty USB. Máme rodinu štyroch a 4 sád arkádových tlačidiel! To bolo predurčenie.
Krok 2: Programovanie
Kód pre tento projekt je jednoduchý a chybný. To všetko nájdete tu:
github.com/melvyniandrag/SuperTuxJunkKartŠtyri ovládače sú pripojené cez USB k malinovému pi. Na Raspberry pi je spustený malý pythonový skript. Na získanie signálov z tlačidiel a joystickov som použil knižnicu vstupov Python. Program potom transformuje signál na krátky kód ASCII a odošle ho cez zásuvku TCP cez wifi do počítača, na ktorom je spustená hra (ďalej to budem označovať ako herný server). Keď napríklad hráč 0 pohne joystickom doľava, znaky '0XL' sa odošlú cez soket TCP na herný server. Na testovanie som spustil SuperTuxKart na svojom thinkpade. Na serveri Thinkpad beží malá serverová aplikácia a počúva sa na sokete TCP. Kódy, ktoré pochádzajú z malinového pi cez wifi, sú preložené do stlačení tlačidiel na klávesnici prostredníctvom knižnice pyautogui. Keď teda hráč 0 na kartónovom ovládači pohne joystickom doľava a ovládač vydá „OXL“, server, na ktorom je hra spustená, si myslí, že hráč stlačil tlačidlo „1“na klávesnici. Hra musí byť nakonfigurovaná tak, aby rozpoznala tieto stlačenia klávesnice, ako je možné vidieť na obrazovke s možnosťami tu. Táto hra funguje dobre s jedným alebo dvoma hráčmi, ale keď agresívne hrajú 4 ľudia SuperTuxKart, serveru začnú chýbať niektoré údaje z ovládača. Nie som si istý, či je to chyba: 1. Na strane klienta (ovládača) 2. Na strane servera (thinkpadu) 3. Vstavaná funkcia Linuxu. Možno môj prenosný počítač Ubuntu nedokáže rozpoznať veľký počet súčasných stlačení klávesov. Ak teda hráči 0, 1 a 2 riadia hore a doľava, znamená to, že sa stlačí naraz 2 * 3 = 6 tlačidiel. Nie som si istý, či je môj počítač (alebo akýkoľvek počítač) navrhnutý tak, aby to zvládol. Klávesové skratky sú zvyčajne 3 alebo menej tlačidiel, napr. CTRL + ALT + DEL. V budúcnosti sa pokúsim spustiť 4 zásuvky TCP, jednu pre každý ovládač a potom na serverovej strane vytvoriť virtuálnu hernú podložku. Medzi rodičovstvom, prácou a rezaním kartónových škatúľ som ešte nemal čas vidieť, ako to urobiť.
Krok 3: Budúcnosť
Toto bol jednoduchý dôkaz koncepcie. V budúcnosti musí byť kód lepší. Chcel by som kódovať pripojenie ako zariadenie bluetooth HID, ale bluez5 v systéme Linux je trochu časové oneskorenie, na ktorom sa pracuje - preto som išiel so zásuvkou TCP + Python. Tiež - priznajme si to - ovládač vyzerá sakra. S väčším časom by som investoval o niečo viac energie do opatrnejšieho rezania. Potom by som dal viac podper -strany krabice sa začínajú trochu zdeformovať. Na to, čo to je a koľko to stojí, táto vec vyzerá dosť dobre. Pokracujem v tom pokracovat, kym vecer pozerame filmy.