Retro-CM3: zmogljiva igralna konzola, ki jo upravlja RetroPie: 8 korakov (s slikami)
Retro-CM3: zmogljiva igralna konzola, ki jo upravlja RetroPie: 8 korakov (s slikami)
Anonim
Retro-CM3: Zmogljiva igralna konzola, ki jo upravlja RetroPie
Retro-CM3: Zmogljiva igralna konzola, ki jo upravlja RetroPie
Retro-CM3: Zmogljiva igralna konzola, ki jo upravlja RetroPie
Retro-CM3: Zmogljiva igralna konzola, ki jo upravlja RetroPie
Retro-CM3: Zmogljiva igralna konzola, ki jo upravlja RetroPie
Retro-CM3: Zmogljiva igralna konzola, ki jo upravlja RetroPie

To navodilo navdihujejo adaGRruit PiGRRL Zero, prvotna Wermyjeva zgradba Gameboy Zero in igralna konzola GreatScottLab. Te igralne konzole, ki temeljijo na RetroPieju, uporabljajo jedro maline pi zero (W) kot svoje jedro. A ko sem zgradil več konzol Pi Zero, sta bili ugotovljeni dve glavni težavi.

1) Raspberry Pi Zero (W) ima samo enojedrni Cortex-A7 in 512 MB RAM-a, kar je v redu za NES/SNES/GB stvari. Ko pa sem poskušal zagnati PS/N64 Emus, je bila izkušnja precej nesprejemljiva. Tudi nekatere igre GBA ne morejo delovati nemoteno (nekaj zamika zvoka, tudi v nekaterih igrah NEOGEO, kot je Metal Slug pri obravnavi zapletenih prizorov); 2) Večina zgradb igralnih konzol uporablja vmesnik SPI ali TV-out kot vmesnik za prikaz. Zaslon SPI bo potreboval CPE za pomoč pri gonilniku okvirnega vmesnika, kar bo poslabšalo igro, število sličic na sekundo pa je omejeno tudi s hitrostjo ure SPI. Kakovost prikaza TV-izhoda pa ni dovolj dobra.

V tem navodilu bomo za izdelavo vrhunske igralne konzole RetroPie uporabili računalniški modul RaspberryPi 3 in LCD vmesnik DPI. Moral bi nemoteno izvajati vse emulatorje in zagotavljati visoko ločljivost in visoko hitrost sličic.

Končna velikost igralne konzole je 152x64x18mm z baterijo do 2000mAh. Skupna cena izdelave je približno 65 USD, vključno s tiskanim vezjem po meri, vsemi komponentami, 16 GB kartico TF in računalniškim modulom RaspberryPi 3 Lite. Ker že imam 3D tiskalnik, me ohišje stane le 64 g PLA filamenta.

Začnimo.

Opomba: Ker angleščina ni moj prvi jezik, vas prosimo, da mi sporočite, če ugotovite napake ali kaj ni jasno.

To je moja prva objava na instructable.com in res potrebujem vse vrste predlogov od vas.

Korak: Sestavine

Sestavine
Sestavine
Sestavine
Sestavine
Sestavine
Sestavine
Sestavine
Sestavine

Tu so sestavine, ki jih potrebujete za izdelavo igralne konzole. Nekateri deli morda niso na voljo v vaši regiji, poskusite z drugimi nadomestnimi deli.

1) Računalniški modul RaspberryPi 3 Lite. Kupite ga v trgovini, kjer ste kupili RaspberryPi 3B, ali pa poskusite na ebayu.

2) 3,2 -palčni LCD z vmesnikom RGB/DPI. PREBERITE, da imate vmesnik LCD z vmesnikom RGB/DPI, ker je to konzolo MORATI zgraditi. LCD sem dobil iz lokalne e-trgovine, isti modul pa najdete na alibabi. Če kupite nadomestni modul LCD, PROSIMO, da vam ponudnik pošlje podrobne parametre in inicializacijsko kodo. Pametna izbira je tudi, da ustrezne priključke kupite v isti trgovini, saj obstaja toliko različnih vrst priključkov.

3) ALPE SKPDACD010. Taktično stikalo s premikom 1,75 mm. Poiščite ga v lokalni trgovini z elektronskimi komponentami.

4) Nekaj drugih ključev. Uporabite vse druge taktirne tipke, ki jih lahko dobite za gumbe START/SELECT/VOL+/VOL-.

5) Zvočnik. Vsak 8 ohmski, 0,5-1,5 W zvočnik.

6) Baterija. Izbral sem 34*52*5,0 mm 1S 1000mAh Li-ion baterijo x2.

7) Nekateri IC. STM32F103C8T6, IP5306, TDA2822, NC7WZ16, SY8113, PT4103 itd.

8) Nekateri priključki. USB-Micro Female, PJ-237 (telefonski priključek), TF-Card Jack, DDR2 SODIMM itd.

9) Nekatere pasivne komponente. Upori, kondenzatorji in induktorji.

10) PCB po meri. Na koncu so shematske datoteke in datoteke PCB. Ne pozabite ga spremeniti, če uporabljate katere koli nadomestne dele.

11) 3D tiskalnik. Prepričajte se, da lahko tiska dele do velikosti 152*66*10 mm.

12) Dovolj PLA niti.

Korak: Računalniški modul 3

Računalniški modul 3
Računalniški modul 3
Računalniški modul 3
Računalniški modul 3

Računalniški modul 3 Raspberry Pi je zelo zmogljiva jedrna plošča za izdelavo prototipov nekaterih zanimivih pripomočkov. Podroben uvod najdete tukaj. Nekaj koristnih informacij najdete tukaj.

Modul uporablja priključek tipa DDR2 SODIMM, ki je nekoliko težji za uporabo. Poleg tega so izvlečeni vsi zatiči GPIO jedra BCM2837 BANK1 in BANK0.

Za začetek uporabe računalniškega modula moramo zagotoviti več različnih napetosti: 1,8 V, 3,3 V, 2,5 V in 5,0 V. Med njimi se 1.8V in 3.3V uporabljata za napajanje nekaterih zunanjih naprav, ki potrebujejo približno 350 mA. 2.5V napajalni vod poganja TV-out DAC in ga lahko priključite na 3.3V, saj ne potrebujemo funkcije TV-out. 5.0V je treba priključiti na zatiče VBAT in napajati jedro. Vhod VBAT sprejema napetosti v razponu od 2,5 V do 5,0 V in se prepričajte, da lahko napajanje oddaja do 3,5 W. Zatiči VCCIO (GPIO_XX-XX_VREF) se lahko priključijo na 3,3 V, saj uporabljamo 3,3 V CMOS nivo. Zatič SDX_VREF je treba priključiti tudi na 3.3V.

Tu se ne uporabljajo vsi zatiči HDMI, DSI, CAM, pustite jih lebdeti. Ne pozabite pripenjati zatiča EMMC_DISABLE_N na 3,3 V, saj bomo kot trdi disk namesto funkcije zagona USB uporabili kartico TF.

Nato priključite zatiče SDX_XXX na ustrezne nožice na reži za kartico TF in vlečni ali spustni upori niso potrebni. Na tem koraku smo pripravljeni za zagon računalnika Raspberry Pi Compute Module 3. Vklopite napajanje po padajočem vrstnem redu: 5V, 3.3V in nato 1.8V, sistem bi se moral zagnati, vendar ni izhodov naprave, samo ne vemo, ali deluje dobro. Zato moramo dodati zaslon, da to preverimo v naslednjem koraku.

Toda preden nadaljujemo, moramo najprej povedati Pi, kakšna je funkcija vsakega GPIO. Tukaj dam nekaj datotek, v zagonsko mapo na novo utripane kartice TF vstavim "dt-blob.bin", "bcm2710-rpi-cm3.dtb" in "config.txt". Postavite "dcdpi.dtbo" v mapo /boot /overlay. Dt-blob.bin definira privzeto funkcijo vsakega GPIO. GPIO14/15 spremenim v običajen GPIO in premaknem funkcijo UART0 v GPIO32/33, saj za povezavo z modulom LCD potrebujemo GPIO14/15. Pi tudi povem, naj uporablja GPIO40/41 kot funkcijo pwm in naj bo desni in levi avdio izhod. Dcdpi.dtbo je datoteka prekrivnega drevesa naprav in Pi sporoča, da bomo GPIO0-25 uporabljali kot funkcijo DPI. Nazadnje zapišemo "dtoverly = dcdpi", da se zavedamo Pi, da naložimo datoteko prekrivanja, ki smo jo dali.

V tem trenutku Raspberry Pi popolnoma razume, katero funkcijo je treba uporabiti za vsak GPIO, in pripravljeni smo nadaljevati.

3. korak: Povezovanje LCD modula

Povezovanje modula LCD
Povezovanje modula LCD
Povezovanje modula LCD
Povezovanje modula LCD
Povezovanje modula LCD
Povezovanje modula LCD

Ker se v tej konzoli lahko uporabljajo različni LCD -vmesniki DPI/RGB, tukaj za primer vzamemo modul, uporabljen v moji lastni gradnji. In če ste izbrali drugega, preverite definicijo pin vašega modula in vzpostavite povezave v skladu z imeni pin, kot je prikazano v primeru.

Na LCD modulu sta dva vmesnika: SPI in DPI. SPI se uporablja za konfiguriranje začetnih nastavitev gonilnika LCD LCD in jih lahko povežemo s katerim koli neuporabljenim GPIO. Priključite samo nožice za ponastavitev, CS, MOSI (SDA/SDI) in SCLK (SCL), nožica MISO (SDO) se ne uporablja. Za inicializacijo gonilnika LCD tukaj uporabljamo knjižnico BCM2835 C za pogon GPIO in oddaja določeno zaporedje inicializacije, ki ga je ponudil dobavitelj modula. Izvorno datoteko najdete pozneje v tem navodilu.

Knjižnico BCM2835 C namestite na drugo Raspberry Pi 3 v skladu s temi navodili. Nato uporabite ukaz "gcc -o lcd_init lcd_init.c -lbcm2835" za sestavljanje izvorne datoteke. Nato dodajte novo vrstico v datoteko /etc/rc.local pred "exit 0": "/home/pi/lcd_init" (predpostavimo, da ste prevedeno aplikacijo dali v mapo/home/pi). Poudariti je treba, da se izvorna datoteka uporablja samo za določen modul, ki sem ga uporabil, in za drug modul LCD, samo prosite dobavitelja za inicializacijsko zaporedje in ustrezno spremenite izvorno datoteko. Ta postopek je precej zapleten, ker na tem mestu z zaslona ni mogoče videti ničesar, zato vam toplo priporočam, da to storite na plošči RPI-CMIO, saj vodi vse GPIO-je, tako da jih lahko odpravite z uart ali wlan.

Naslednji del je enostaven, samo povežite leve nožice modula LCD v skladu s tukaj. Odvisno od tega, kakšen modul LCD imate, ste modro izbrali način RGB. Zame sem tukaj izbral DPI_OUTPUT_FORMAT_18BIT_666_CFG2 (način 6). Spremenite vrstico "dpi_output_format = 0x078206" po vaši izbiri. Če vaš modul LCD uporablja drugačno ločljivost, prilagodite "hdmi_timings = 480 0 41 60 20 800 0 5 10 10 0 0 0 60 0 32000000", kot je prikazano tukaj.

Če so vse nastavitve pravilne, bi se morali ob naslednjem zagonu vašega Pi prikazati zaslon na zaslonu po 30-40 sekundah črne barve (od napajanja do sistema naloži vaš inicializacijski skript SPI).

4. korak: Tipkovnica in zvok

Tipkovnica in zvok
Tipkovnica in zvok
Tipkovnica in zvok
Tipkovnica in zvok

Z jedrom in izhodom smo naredili v zadnjih dveh korakih. Zdaj pa pojdimo na del Vnos.

Igralna konzola potrebuje tipke in gumbe. Tu potrebujemo 10 stikal ALPS SKPDACD010 kot gumba gor/dol/desno/levo, LR in A/B/X/Y. Običajne tipke za površinsko montažo 6x6 se uporabljajo za druge gumbe, kot sta zagon/izbira in povečanje/zmanjšanje glasnosti.

Gumba z Raspberry Pi lahko povežete na dva načina. Eden od načinov je, da gumbe povežete neposredno z GPIO na Pi, drugi način pa je, da gumbe povežete z MCU in povežete s Pi prek protokola USB HID. Tu sem se odločil za drugega, ker potrebujemo MCU, ki se vseeno ukvarja z zaporedjem vklopa, zato je varneje, da se Pi izogne človeškemu dotiku.

Torej, priključite ključe na STM32F103C8T6 in nato MCU priključite na Pi z USB. Primer programa MCU najdete na koncu tega koraka. Spremenite definicije pinov v hw_config.c in jih prevedite s knjižnico USB MCU, ki jo najdete tukaj. Lahko pa tudi prenesete šestnajstiško datoteko neposredno v MCU, če delite iste definicije pinov v shemi na koncu tega navodila.

Kar zadeva avdio izhode, uradna shema Raspberry Pi 3 B daje dober način filtriranja pwm vala in isto vezje bi moralo tukaj delovati odlično. Ena stvar, ki jo je treba opozoriti, je, da ne pozabite dodati vrstice "audio_pwm_mode = 2" na koncu config.txt, da zmanjšate hrup zvočnega izhoda.

Za pogon zvočnika je potreben gonilnik zvočnika. Tu sem izbral TDA2822 in vezje je uradno vezje BTL. Upoštevajte, da ima telefonski priključek PJ-327 na desnem izhodu nožico za samodejno odklop. Če slušalke niso priključene, je pin 3 priključen na desni kanal. Takoj ko so slušalke priključene, se ta pin odlepi od desnega kanala. Ta pin lahko uporabite kot vhodni pin za zvočnik, zvočnik pa se bo utišal, ko so priključene slušalke.

5. korak: Moč

Moč
Moč
Moč
Moč
Moč
Moč

Vrnimo se v razdelek za napajanje in preverimo podrobno zasnovo napajanja.

Obstajajo 3 napajalni odseki: napajanje MCU, polnilnik/ojačevalnik in enosmerni tok DC-DC.

Napajanje MCU je ločeno od vseh drugih napajalnikov, ker ga potrebujemo za izvajanje zaporedja pred vklopom. Ko je gumb za vklop pritisnjen navzdol, bo PMOS priključil EN pin LDO na baterijo, da omogoči LDO. MCU se nato vklopi (gumb je še vedno pritisnjen). Ob zagonu MCU -ja bo preveril, ali je gumb za vklop dovolj dolgo pritisnjen. Po približno 2 sekundah, če MCU ugotovi, da je gumb za vklop še vedno pritisnjen, bo potegnil pin "PWR_CTL", da ostane PMOS vklopljen. V tem trenutku MCU prevzame nadzor nad napajanjem MCU.

Ko ponovno pritisnete gumb za vklop za 2 sekundi, MCU zažene zaporedje izklopa. Ob koncu zaporedja izklopa MCU sprosti pin "PWR_CTL", da se PMOS izklopi in napajanje MCU -ja nato onemogoči.

Polnilni/ojačevalni del uporablja IC IP5306. Ta IC je 2,4 A polnjenje in 2,1A izpraznitev visoko integriran Soc za uporabo power bank in je popolnoma primeren za naše potrebe. IC lahko napolni baterijo, zagotovi 5V izhod in hkrati prikaže nivo baterije s 4 LED diodami.

Del DC-DC Buck uporablja dva SY8113 visoko učinkovita 3A dolarja. Izhodno napetost lahko programirate z 2 uporoma. Za zagotovitev zaporedja vklopa potrebujemo MCU, da najprej omogoči ojačevalnik. Signal KEY_IP bo simuliral pritisk tipke na zatič KEY IP5306 in omogočil notranji 5V ojačevalnik. Po tem bo MCU omogočil 3,3 V dolar z vlečenjem zatiča RASP_EN visoko. Ko je na voljo 3,3 V, se EN pin pin 1,8 V potegne visoko in omogoči 1,8 V izhod.

Kar zadeva baterijo, za konzolo zadostujeta dve litij-ionski bateriji 1000 mAh. Običajna velikost te vrste baterije je približno 50*34*5 mm.

6. korak: Nastavitev sistema

Nastavitev sistema
Nastavitev sistema

V tem koraku bomo združili vse nastavitve.

Najprej morate prenesti in utripati sliko RetroPie v novo kartico TF. Vadnico in prenos najdete tukaj. Prenesite različico Raspberrypi 2/3. Po utripanju slike boste videli 2 particiji: "zagonsko" particijo v formatu FAT16 in "Retropie" particijo v formatu EXT4.

Ko končate, ga ne vstavite v Raspberry Pi takoj, ker moramo za rom dodati particijo FAT32. Z orodji za particije, kot je DiskGenius, prilagodite particijo EXT4 na približno 5-6 GB in naredite novo particijo FAT32 z vsem preostalim prostorom na kartici TF. Oglejte si sliko, ki sem jo naložil.

Prepričajte se, da vaš sistem prepozna bralnik kartic TF kot napravo s trdim diskom USB in v svojem raziskovalcu boste videli 3 particije. Dva od njih sta dostopna in Windows vas bo prosil, da formatirate levega. NE formatirajte ga !!

Najprej odprite »zagonsko« particijo in sledite 2. koraku, da nastavite konfiguracije zatičev. Ali pa preprosto razpakirajte boot.zip v tem koraku in kopirajte vse datoteke in mape na zagonsko particijo. Ne pozabite tudi kopirati prevedenega skripta lcd_init v zagonsko particijo.

Tukaj smo pripravljeni za prvi zagon, a ker ni zaslona, toplo priporočam, da uporabite ploščo RPI-CMIO z napravo USB wlan. Nato lahko konfigurirate datoteko wpa_supplicant in na tem koraku omogočite ssh. Če pa ga ne nameravate dobiti, lahko GPIO32/33 uporabite kot terminal UART. Priključite pin TX (GPIO32) in RX (GPIO33) na ploščo usb-to-uart in dostopajte do terminala s hitrostjo prenosa 115200. V vsakem primeru morate dobiti terminalski dostop do svojega Pi-ja.

Pri prvem zagonu se bo sistem ob zagonu datotečnega sistema zataknil. Prezrite ga, pritisnite start (tipka za vnos tipkovnice USB HID) in znova zaženite. Na terminalu kopirajte skript lcd_init v domačo mapo uporabnika "pi" in sledite 3. koraku, da nastavite samodejni zagon. Po ponovnem zagonu bi morali videti zaslon, da zasveti in pokaže nekaj.

V tem trenutku je vaša igralna konzola pripravljena za igranje. Če pa želite v svojo kartico TF naložiti rom in BIOS, morate vsakič dostopati do terminala. Za poenostavitev predlagam, da nastavite particijo FAT32.

Najprej varnostno kopirajte mapo RetroPie pod /home /pi v RetroPie-bck: "cp -r RetroPie RetroPie-bck". Nato dodajte novo vrstico v/etc/fstab: "/dev/mmcblk0p3/home/pi/RetroPie privzete nastavitve, uid = 1000, gid = 1000 0 2" za samodejno namestitev particije FAT32 v mapo RetroPie z nastavitvijo lastnika za uporabnika "pi". Po ponovnem zagonu boste ugotovili, da vsebina mape RetroPie ni več (če ni, znova zaženite) in na zaslonu se prikažejo nekatere napake. Kopirajte vse datoteke v RetroPie-bck nazaj v RetroPie in znova zaženite. Napake bi morale izginiti in vhodno napravo lahko konfigurirate po navodilih na zaslonu.

Če želite dodati ROM -e ali BIOS -e, izklopite kartico TF, ko je izklopljena, in jo povežite z računalnikom. Odprite tretjo particijo (Spomnite se, da ne upoštevate nasveta glede oblike !!!) in kopirajte datoteke v ustrezne mape.

7. korak: 3D natisnjena torbica in gumbi

3D ohišje in gumbi
3D ohišje in gumbi
3D ohišje in gumbi
3D ohišje in gumbi
3D ohišje in gumbi
3D ohišje in gumbi

Za igralno konzolo sem oblikoval ohišje v slogu GameBoy Micro.

Samo natisnite

4x ABXY. STL

2x LR. STL (potrebno je dodati podporo)

1x CROSS. STL

1x TOP. STL

1x BOTTOM. STL

Natisnem jih s PLA z 20% polnjenjem, plastjo 0,2 mm in je dovolj močna.

Ker je ohišje tesno, pred tiskanjem preverite natančnost tiskalnika z nekaj preskusne kocke.

Tri tri vijake φ3 mm dolžine 5 mm in štiri vijake φ3 mm dolžine 10 mm morate sestaviti skupaj.

8. korak: Vse skupaj in odpravljanje težav

Vse skupaj in odpravljanje težav
Vse skupaj in odpravljanje težav
Vse skupaj in odpravljanje težav
Vse skupaj in odpravljanje težav
Vse skupaj in odpravljanje težav
Vse skupaj in odpravljanje težav
Vse skupaj in odpravljanje težav
Vse skupaj in odpravljanje težav

Ker je vezje nekoliko zapleteno, je dobra izbira, da opravite nekaj dela s tiskanim vezjem. Celotna shematična in moja lastna različica tiskanega vezja se naloži na koncu tega koraka. Če nameravate uporabljati mojo različico tiskanega vezja, prosim, ne odstranite mojega logotipa na plasti Top_Solder. Bolje je, da sami naredite prilagoditev in predate svojo datoteko tiskanega vezja lokalnemu proizvajalcu, da to izvede, ker je res težko kupiti vse iste dele, ki jih uporabljam na svojem tiskanem vezju.

Ko spajate vse komponente na tiskanem vezju in preizkusite, morate najprej prenesti šestnajstiško datoteko na MCU. Po tem prilepite modul LCD na tiskano vezje. Modul LCD mora biti 3 mm nad tiskanim vezjem, da se prilega ohišju. Za lepljenje uporabite debel dvostranski trak. Nato priključite FPC na priključek in vstavite kartico CM3L in TF. NE spajkajte baterije zdaj, priključite USB napajalnik in ga zaženite!

Preverite vse gumbe in zaslon. Izmerite napetost med BAT+ in GND, preverite, ali je napetost okoli 4,2 V. Če je napetost v redu, odklopite USB kabel in spajkajte baterijo. Poskusite gumb za vklop.

Gumb CROSS in ABXY vstavite v zgornji del ohišja, tiskalno vezje pa v ohišje. Za pritrditev tiskanega vezja v ohišju uporabite 3 vijake. Na zadnjo stran vseh gumbov SKPDACD010 dodajte nekaj debelega dvostranskega traku in nanj nalepite baterijo. NE uporabljajte debelega traku, da preprečite, da bi zatiči SKPDACD010 poškodovali baterijo. Nato zvočnik prilepite na ohišje BOTTOM. Preden ga zaprete, boste morda morali preizkusiti vse gumbe, preveriti, ali delujejo, in pravilno odskočiti. Nato ohišje zaprite s 4 vijaki.

Uživajte.

Nekaj nasvetov za odpravljanje težav:

1) Trikrat preverite povezavo nožic modula LCD na shemi in tiskanem vezju.

2) Položite signalne žice LCD z omejitvijo dolžine.

3) Če niste prepričani o odsekih za napajanje, spajkajte in preizkusite vsak odsek po zaporedju napajanja. Najprej 5V, nato 3.3V in 1.8V. Ko so preizkušeni vsi deli moči, spajkajte ostale komponente.

4) Če se zaslon pogosto zamegli, poskusite spremeniti polarnost signala PCLK tako, da nastavite format dpi_output_format.

5) Če je zaslon veliko izven središča, poskusite spremeniti polarnost signala HSYNC ali VSYNC.

6) Če je zaslon rahlo izven središča, poskusite prilagoditi nastavitve preslikave.

7) Če je zaslon črn, počakajte, da se sistem zažene do skripta rc.local. Če potrebujete zaslon od začetka, poskusite priključiti vmesnik SPI na MCU in uporabite MCU za inicializacijo modula LCD.

8) Če je zaslon ves čas črn, znova preverite zaporedje inicializacije.

9) Vsa vprašanja lahko postavite tukaj ali po e -pošti: [email protected]

Priporočena: