Sadržaj:

Retro-CM3: Snažna igraća konzola s RetroPie funkcijom: 8 koraka (sa slikama)
Retro-CM3: Snažna igraća konzola s RetroPie funkcijom: 8 koraka (sa slikama)

Video: Retro-CM3: Snažna igraća konzola s RetroPie funkcijom: 8 koraka (sa slikama)

Video: Retro-CM3: Snažna igraća konzola s RetroPie funkcijom: 8 koraka (sa slikama)
Video: Обзор Retro CM3 — лучший портативный компьютер RetroPie 2024, Studeni
Anonim
Retro-CM3: Snažna igraća konzola s RetroPie funkcijom
Retro-CM3: Snažna igraća konzola s RetroPie funkcijom
Retro-CM3: Snažna igraća konzola s RetroPie funkcijom
Retro-CM3: Snažna igraća konzola s RetroPie funkcijom
Retro-CM3: Snažna igraća konzola s RetroPie funkcijom
Retro-CM3: Snažna igraća konzola s RetroPie funkcijom

Ovaj instruktor inspiriran je adafrutovom PiGRRL Zero, Wermyjevom originalnom Gameboy Zero verzijom i GreatScottLabovom Handled igraćom konzolom. Te igraće konzole zasnovane na RetroPie -u koriste jezgru maline pi zero (W) kao svoju jezgru. ALI, nakon što sam izgradio nekoliko Pi Zero konzola, pronađena su dva glavna problema.

1) Raspberry Pi Zero (W) ima samo jednojezgreni Cortex-A7 i 512 MB RAM-a, što je u redu za NES/SNES/GB stvari. Međutim, kad sam pokušao pokrenuti PS/N64 Emus, iskustvo je bilo prilično neprihvatljivo. Čak i neke od GBA igara ne mogu raditi glatko (Neki zaostaci u zvuku, također u nekim NEOGEO igrama poput Metal Sluga kada se bave kompliciranim scenama); 2) Većina konstrukcija igraćih konzola koristi SPI ili TV izlaz kao sučelje za prikaz. SPI zaslonu će trebati CPU kako bi pomogao u upravljačkom programu međuspremnika okvira što će pogoršati iskustvo igre, a fps je također ograničen brzinom SPI sata. Kvaliteta prikaza TV-izlaza jednostavno nije dovoljna.

U ovom uputstvu koristit ćemo RaspberryPi Compute Module 3 i LCD sa sučeljem DPI za izradu vrhunske igraće konzole RetroPie. Trebao bi moći nesmetano pokrenuti sve emulatore i omogućiti visoku razlučivost i visoku brzinu kadrova.

Konačna veličina igraće konzole je 152x64x18mm s baterijom do 2000mAh. Ukupna cijena izrade iznosi oko 65 USD, uključujući prilagođenu PCB, sve komponente, TF karticu od 16 GB i računalni modul RaspberryPi 3 Lite. Kako već imam 3D pisač, kućište me košta samo 64 g PLA filamenta.

Započnimo.

Napomena: Budući da mi engleski nije prvi jezik, ako pronađete greške ili nešto nije jasno, molimo vas da me obavijestite.

Ovo je moj prvi post na instructable.com i stvarno mi trebaju sve vrste prijedloga od vas.

Korak 1: Sastojci

Sastojci
Sastojci
Sastojci
Sastojci
Sastojci
Sastojci
Sastojci
Sastojci

Evo sastojaka koji su vam potrebni za izradu igraće konzole. Neki dijelovi možda nisu dostupni u vašoj regiji, isprobajte neke alternativne dijelove.

1) RaspberryPi Compute Module 3 Lite. Kupite ga u trgovini gdje ste nabavili RaspberryPi 3B ili ga isprobajte na ebayu.

2) 3,2 inčni LCD s RGB/DPI sučeljem. PROVJERITE da imate RGB/DPI sučelje LCD modul jer MORATE izgraditi ovu konzolu. LCD monitor sam nabavio u lokalnoj e-trgovini, a isti modul se može pronaći u alibabi. Ako kupujete alternativni LCD modul, ZAMOLITE davatelja usluga da vam pošalje detaljne parametre i inicijalizacijski kod. Također je mudar izbor kupiti odgovarajuće konektore u istoj trgovini jer postoji toliko različitih vrsta konektora.

3) ALPE SKPDACD010. Taktni prekidač s hodom od 1,75 mm. Pretražite ga u lokalnoj trgovini elektroničkih komponenti.

4) Neki drugi ključevi. Upotrijebite bilo koje druge taktičke tipke koje možete dobiti za tipke START/SELECT/VOL+/VOL-.

5) Zvučnik. Bilo koji zvučnik od 8 ohma, 0,5-1,5 W.

6) Baterija. Odabrao sam 34*52*5,0 mm 1S 1000mAh Li-ion bateriju x2.

7) Neki IC -ovi. STM32F103C8T6, IP5306, TDA2822, NC7WZ16, SY8113, PT4103 itd.

8) Neki priključci. USB-mikro ženski, PJ-237 (telefonska utičnica), priključak za TF-karticu, DDR2 SODIMM itd.

9) Neke pasivne komponente. Otpornici, kondenzatori i induktori.

10) Prilagođena PCB. Shematske i PCB datoteke nalaze se na kraju. Ne zaboravite ga promijeniti ako koristite neke alternativne dijelove.

11) 3D pisač. Provjerite može li ispisivati dijelove do veličine 152*66*10 mm.

12) Dosta PLA niti.

Korak 2: Računski modul 3

Računski modul 3
Računski modul 3
Računski modul 3
Računski modul 3

Raspberry Pi Compute Module 3 vrlo je moćna jezgrena ploča za izradu prototipova nekih interesantnih gadgeta. Detaljan uvod možete pronaći ovdje. A neke korisne informacije možete pronaći ovdje.

Modul koristi priključak tipa DDR2 SODIMM, koji je malo teži za korištenje. Osim toga, svi GPIO pinovi jezgre BCM2837 jezgre BANK1 i BANK0 su izvedeni.

Da bismo počeli koristiti računalni modul, moramo osigurati nekoliko različitih napona: 1,8 V, 3,3 V, 2,5 V i 5,0 V. Među njima, 1.8V i 3.3V se koriste za napajanje nekih perifernih uređaja kojima je potrebno oko 350mA. Naponski vod od 2,5 V pokreće TV izlaz DAC-a i može se povezati s 3,3 V jer nam ne treba značajka TV izlaza. 5.0V bi trebalo biti spojeno na VBAT pinove i napajati jezgru. VBAT ulaz prihvaća napone u rasponu od 2.5V do 5.0V i samo pazite da napajanje može dati do 3.5W. VCCIO pinovi (GPIO_XX-XX_VREF) mogu se spojiti na 3.3V jer koristimo CMOS razinu od 3.3V. SDX_VREF pin također treba spojiti na 3.3V.

Ovdje se ne koriste svi HDMI, DSI, CAM pinovi, samo ih ostavite da plutaju. Ne zaboravite vezati pin EMMC_DISABLE_N na 3,3 V jer ćemo koristiti TF karticu kao tvrdi disk umjesto značajke pokretanja s USB -a.

Zatim spojite pinove SDX_XXX na odgovarajuće pinove na utoru za karticu TF i nisu potrebni pull-up niti pull-down otpornici. U ovom koraku spremni smo za pokretanje Raspberry Pi Compute Modula 3. Uključite napajanje prema reduciranju: 5V, 3.3V, a zatim 1.8V, sustav bi se trebao moći pokrenuti, ali nema izlaza uređaj, samo ne znamo radi li dobro. Dakle, moramo dodati zaslon kako bismo to provjerili u sljedećem koraku.

No prije nego nastavimo, moramo prvo reći Pi koja je funkcija svakog GPIO -a. Ovdje nudim neke datoteke, stavljam "dt-blob.bin", "bcm2710-rpi-cm3.dtb" i "config.txt" u mapu za podizanje sustava na novoj flash kartici TF. Stavite "dcdpi.dtbo" u mapu /boot /overlay. Dt-blob.bin definira zadanu funkciju svakog GPIO-a. Mijenjam GPIO14/15 u normalni GPIO i premještam funkciju UART0 u GPIO32/33 jer nam je GPIO14/15 potreban za sučelje s LCD modulom. Također govorim Pi -u da koristi GPIO40/41 kao pwm funkciju i neka bude desni i lijevi audio izlaz. Dcdpi.dtbo je datoteka s preklapanjem stabla uređaja i govori Pi da ćemo GPIO0-25 koristiti kao DPI funkciju. Na kraju, pišemo "dtoverly = dcdpi" kako bismo osvijestili Pi da učita datoteku prekrivanja koju smo dali.

U ovom trenutku, Raspberry Pi potpuno razumiju koju funkciju treba koristiti za svaki GPIO i spremni smo za nastavak.

Korak 3: Povezivanje LCD modula

Povezivanje LCD modula
Povezivanje LCD modula
Povezivanje LCD modula
Povezivanje LCD modula
Povezivanje LCD modula
Povezivanje LCD modula

Budući da se u ovoj konzoli mogu koristiti različiti LCD moduli DPI/RGB sučelja, ovdje kao primjer uzimamo modul koji se koristi u mojoj vlastitoj gradnji. A ako ste odabrali neki drugi, provjerite definiciju pina vašeg modula i jednostavno uspostavite veze prema nazivima pinova kako je prikazano u primjeru.

Na LCD modulu postoje dva sučelja: SPI i DPI. SPI se koristi za konfiguriranje početnih postavki IC upravljačkog programa LCD -a i možemo ih spojiti na bilo koji neiskorišteni GPIO. Priključite samo pinove Reset, CS, MOSI (SDA/SDI) i SCLK (SCL), pin MISO (SDO) se ne koristi. Za inicijalizaciju LCD upravljačkog programa, ovdje koristimo BCM2835 C knjižnicu za pogon GPIO -a i emitira određeni niz inicijalizacija koji je dao dobavljač modula. Izvorna datoteka može se kasnije pronaći u ovom uputstvu.

Instalirajte biblioteku BCM2835 C na drugu Raspberry Pi 3 prema uputama ovdje. Zatim upotrijebite naredbu "gcc -o lcd_init lcd_init.c -lbcm2835" za sastavljanje izvorne datoteke. Zatim dodajte novi redak u /etc/rc.local datoteku prije "exit 0": "/home/pi/lcd_init" (pretpostavimo da ste sastavljenu aplikaciju stavili u mapu/home/pi). Treba naglasiti da se izvorna datoteka koristi samo za određeni modul koji sam koristio i za drugi LCD modul, samo zatražite od dobavljača inicijalizacijski slijed i prema tome izmijenite izvornu datoteku. Ovaj je postupak prilično škakljiv jer se u ovom trenutku ništa ne može vidjeti s zaslona, zato vam toplo preporučujem da to učinite na RPI-CMIO ploči jer izlazi iz svih GPIO-ova tako da ga možete otkloniti pomoću uart ili wlan.

Sljedeći dio je jednostavan, samo spojite lijeve pinove LCD modula prema ovdje. Ovisno o vrsti LCD modula, pametno ste odabrali RGB način rada. Za mene sam ovdje odabrao DPI_OUTPUT_FORMAT_18BIT_666_CFG2 (način 6). Promijenite redak "dpi_output_format = 0x078206" prema vašem izboru. A ako vaš LCD modul koristi drugačiju rezoluciju, podesite "hdmi_timings = 480 0 41 60 20 800 0 5 10 10 0 0 0 60 0 32000000", pogledajte datoteku ovdje.

Ako su sve postavke točne, pri sljedećem pokretanju vašeg Pi-a trebali biste vidjeti zaslon na ekranu nakon 30-40 s crne boje (od napajanja do sustava učitava vašu SPI inicijalizacijsku skriptu).

Korak 4: Tipkovnica i zvuk

Tipkovnica i audio
Tipkovnica i audio
Tipkovnica i audio
Tipkovnica i audio

U posljednja smo dva koraka završili s jezgrom i izlazom. Prijeđimo sada na dio Unos.

Konzoli za igre su potrebni ključevi i gumbi. Ovdje nam je potrebno 10 prekidača ALPS SKPDACD010 kao tipke gore/dolje/desno/lijevo, LR i A/B/X/Y. Normalne tipke za površinsko montiranje 6x6 koriste se za druge gumbe poput starta/odabira i pojačavanja/smanjivanja glasnoće.

Postoje dva načina povezivanja gumba s Raspberry Pi. Jedan je način povezivanje gumba izravno s GPIO -ima na Pi -u, a drugi način povezivanje gumba s MCU -om i sučelje s Pi -om putem USB HID protokola. Ovdje sam odabrao drugi, jer nam je potreban MCU za rješavanje sekvence uključivanja i sigurnije je držati Pi podalje od ljudskog dodira.

Dakle, spojite ključeve na STM32F103C8T6, a zatim spojite MCU na Pi putem USB -a. Primjer MCU programa može se pronaći na kraju ovog koraka. Promijenite definicije pinova u hw_config.c i kompajlirajte ih s USB bibliotekom MCU -a koja se nalazi ovdje. Ili možete jednostavno preuzeti heksadecimalnu datoteku izravno na MCU sve dok dijelite iste definicije pinova u shemi na kraju ovog uputstva.

Što se tiče audio izlaza, službena shema Raspberry Pi 3 B daje dobar način filtriranja pwm vala i isti bi krug ovdje trebao savršeno funkcionirati. Jedna stvar koju valja istaknuti je da ne zaboravite dodati redak "audio_pwm_mode = 2" na kraju config.txt kako biste smanjili šum audio izlaza.

Za pogon zvučnika potreban je upravljački program zvučnika. Ovdje sam odabrao TDA2822 i sklop je službeni BTL sklop. Imajte na umu da telefonska utičnica PJ-327 ima pin za automatsko odvajanje na desnom izlazu. Kad nema priključenih slušalica, pin 3 je spojen na desni kanal. Čim su slušalice priključene, ovaj pin se odvaja od desnog kanala. Ovaj pin se može koristiti kao ulazni pin za zvučnik, a zvučnik će se isključiti kad su priključene slušalice.

Korak 5: Snaga

Snaga
Snaga
Snaga
Snaga
Snaga
Snaga

Vratimo se na odjeljak napajanja i provjerimo detaljan dizajn napajanja.

Postoje 3 odjeljka za napajanje: napajanje MCU-a, punjač/pojačivač i istosmjerni napon.

Napajanje MCU-a je podijeljeno od svih ostalih izvora napajanja jer nam je potrebno za izvođenje sekvence prije uključivanja. Kako se gumb za napajanje pritisne prema dolje, PMOS će spojiti EN pin LDO -a s baterijom kako bi omogućio LDO. MCU se zatim uključuje (gumb je još uvijek pritisnut). Prilikom pokretanja MCU -a provjerit će je li gumb za napajanje pritisnut dovoljno dugo. Nakon otprilike 2 sekunde, ako MCU otkrije da je gumb za napajanje još uvijek pritisnut, povući će pin "PWR_CTL" da zadrži PMOS uključen. U ovom trenutku MCU preuzima kontrolu nad napajanjem MCU -a.

Kad se gumb za napajanje ponovno pritisne na 2 sekunde, MCU će pokrenuti niz isključivanja. Na kraju slijeda isključivanja, MCU će otpustiti pin "PWR_CTL" kako bi se PMOS isključio, a napajanje MCU -a je tada onemogućeno.

Dio za punjenje/pojačivač koristi IC IP5306. Ovaj IC ima 2,4 A punjenje i 2,1 A pražnjenje, visoko integrirani Soc za napajanje i savršeno odgovara našim potrebama. IC može napuniti bateriju, osigurati izlaz od 5V i prikazati razinu baterije s 4 LED diode u isto vrijeme.

Dio DC-DC Buck koristi dva SY8113 visokoučinkovita 3A dolara. Izlazni napon mogu se programirati pomoću 2 otpornika. Da bismo osigurali redoslijed napajanja, potreban nam je MCU kako bi prvo omogućio pojačivač. KEY_IP signal simulirat će pritiskanje tipke na pin KEY IP5306 i omogućiti unutarnji pojačivač od 5V. Nakon toga, MCU će omogućiti 3.3V napon povlačenjem RASP_EN pina uvis. Nakon što je isporučeno 3,3 V, EN pin pin od 1,8 V se visoko izvlači i omogućuje izlaz od 1,8 V.

Što se tiče baterije, za konzolu su dovoljna dva Li-ion baterije od 1000mAh. Normalna veličina ove vrste baterija je oko 50*34*5 mm.

Korak 6: Postavljanje sustava

Postavljanje sustava
Postavljanje sustava

U ovom koraku sastavit ćemo sve postavke.

Prvo morate preuzeti i utisnuti RetroPie sliku na novu TF karticu. Vodič i preuzimanje možete pronaći ovdje. Preuzmite verziju Raspberrypi 2/3. Nakon flash slike vidjet ćete 2 particije: "boot" particiju FAT16 formata i "Retropie" particiju EXT4 formata.

Kada to učinite, nemojte ga odmah umetnuti u Raspberry Pi jer moramo dodati FAT32 particiju za ROM -ove. Pomoću alata za particije poput DiskGeniusa prilagodite particiju EXT4 na otprilike 5-6 GB i napravite novu particiju FAT32 sa svim slobodnim prostorom na vašoj TF kartici. Pogledajte sliku koju sam postavio.

Provjerite može li vaš sustav identificirati čitač TF kartica kao USB-HDD uređaj i vidjet ćete 3 particije u svom istraživaču. Dvije su dostupne, a Windows će od vas tražiti da formatirate lijevu. NEMOJTE ga formatirati !!

Prvo otvorite "boot" particiju i slijedite korak 2 za postavljanje konfiguracija pinova. Ili možete jednostavno raspakirati boot.zip u ovom koraku i kopirati sve datoteke i mape na particiju za pokretanje. Ne zaboravite kopirati i sastavljenu skriptu lcd_init na boot particiju.

Ovdje smo spremni za prvo pokretanje, ali kako nema zaslona, toplo preporučujem da koristite RPI-CMIO ploču s USB wlan uređajem. Tada možete konfigurirati datoteku wpa_supplicant i omogućiti ssh u ovom koraku. Međutim, ako ga ne namjeravate nabaviti, GPIO32/33 se može koristiti kao UART terminal. Spojite TX (GPIO32) i RX (GPIO33) pin na ploču usb-to-uart i pristupite terminalu s brzinom prijenosa 115200. U svakom slučaju, morate dobiti terminal s pristupom svom Pi-u.

Prilikom prvog pokretanja sustav će se zaglaviti kada pokušate proširiti datotečni sustav. Zanemarite, pritisnite start (tipka za unos USB HID tipkovnice) i ponovno pokrenite sustav. Na terminalu kopirajte skriptu lcd_init u početnu mapu korisnika "pi" i slijedite korak 3 za postavljanje automatskog pokretanja. Nakon ponovnog pokretanja, trebali biste vidjeti zaslon kako bi se osvijetlio i pokazao nešto.

U ovom trenutku vaša igraća konzola je spremna za igru. Međutim, kako biste učitali roms i BIOS -ove na svoju TF karticu, svaki put trebate pristup terminalu. Radi pojednostavljenja, predlažem da postavite particiju FAT32.

Prvo sigurnosno kopirajte mapu RetroPie pod /home /pi na RetroPie-bck: "cp -r RetroPie RetroPie-bck". Zatim dodajte novi redak u/etc/fstab: "/dev/mmcblk0p3/home/pi/RetroPie zadane postavke, uid = 1000, gid = 1000 0 2" za automatsko postavljanje FAT32 particije u mapu RetroPie s postavljanjem vlasnika za korisnika "pi". Nakon ponovnog pokretanja, ustanovit ćete da je sadržaj mape RetroPie nestao (ako nije, ponovo pokrenite sustav) i da se na zaslonu pojavljuju neke pogreške. Kopirajte sve datoteke u RetroPie-bck natrag u RetroPie i ponovno pokrenite sustav. Pogreške bi trebale nestati i možete konfigurirati ulazni uređaj prema uputama na ekranu.

Ako želite dodati ROM -ove ili BIOS -ove, isključite TF karticu kad je isključena i povežite je s računalom. Otvorite treću particiju (ZAPAMTITE da ignorirate savjet o formatu !!!) i kopirajte datoteke u odgovarajuće mape.

Korak 7: 3D ispisana futrola i gumbi

3D tiskana futrola i gumbi
3D tiskana futrola i gumbi
3D tiskana futrola i gumbi
3D tiskana futrola i gumbi
3D tiskana futrola i gumbi
3D tiskana futrola i gumbi

Dizajnirao sam kućište u stilu GameBoy Micro za konzolu za igre.

Samo isprintajte

4x ABXY. STL

2x LR. STL (potrebno je dodati podršku)

1x CROSS. STL

1x TOP. STL

1x DNO. STL

Tiskam ih pomoću PLA s 20% ispunom, slojem od 0,2 mm i dovoljno je jak.

Kako je kućište čvrsto, prije ispisa provjerite točnost pisača pomoću neke kocke.

Tri tri vijka φ3 mm duljine 5 mm i četiri vijka φ3 mm duljine 10 mm trebaju ih sastaviti.

Korak 8: Svi zajedno i rješavanje problema

Svi zajedno i rješavanje problema
Svi zajedno i rješavanje problema
Svi zajedno i rješavanje problema
Svi zajedno i rješavanje problema
Svi zajedno i rješavanje problema
Svi zajedno i rješavanje problema
Svi zajedno i rješavanje problema
Svi zajedno i rješavanje problema

Budući da je sklop nekako kompliciran, dobar je izbor za rad na PCB -u. Cijela shematska i vlastita verzija PCB -a učitava se na kraju ovog koraka. Ako namjeravate koristiti moju verziju PCB -a, molimo vas da ne uklanjate moj logo na sloju Top_Solder. Bolje je da sami napravite prilagodbu i predate vlastitu datoteku s PCB -om lokalnom proizvođaču da to učini jer je doista teško kupiti sve iste dijelove koje koristim na PCB -u.

Nakon lemljenja svih komponenti na PCB -u i testiranja, prvo što trebate učiniti je preuzeti hex datoteku na MCU. Nakon toga, zalijepite LCD modul na PCB. LCD modul trebao bi biti 3 mm iznad PCB -a kako bi stao u kućište. Zalijepite je debelom dvostrukom bočnom trakom. Zatim spojite FPC na konektor i umetnite CM3L i TF karticu. NEMOJTE lemiti bateriju sada, priključite USB izvor napajanja i pokrenite ga!

Provjerite sve gumbe i zaslon. Izmjerite napon između BAT+ i GND, provjerite je li napon oko 4,2 V. Ako je napon u redu, isključite USB kabel i lemite bateriju. Isprobajte gumb za uključivanje.

Gumb CROSS i ABXY stavite u TOP kućište, a PCB u kućište. Pomoću 3 vijka pričvrstite PCB u kućištu. Dodajte debelu dvostruku bočnu traku na stražnju stranu svih tipki SKPDACD010 i zalijepite bateriju na nju. NEMOJTE koristiti debelu traku kako biste izbjegli da iglice SKPDACD010 oštete bateriju. Zatim zalijepite zvučnik na kućište BOTTOM. Prije nego što ga zatvorite, možda ćete morati isprobati sve gumbe, provjeriti rade li i pravilno odskakati. Zatim zatvorite kućište s 4 vijka.

Uživati.

Neki savjeti za rješavanje problema:

1) Trostruko provjerite pin vezu LCD modula na shemi i PCB -u.

2) Provucite signalne žice LCD -a s ograničenjem duljine.

3) Ako niste sigurni u dijelove napajanja, lemite i testirajte svaki odjeljak slijedom redoslijeda napajanja. Prvo 5V, a zatim 3.3V i 1.8V. Nakon ispitivanja svih dijelova napajanja, lemite ostale komponente.

4) Ako se zaslon često zamagljuje, pokušajte obrnuti polaritet PCLK signala postavljanjem formata dpi_output_format.

5) Ako je zaslon mnogo izvan središta, pokušajte obrnuti polaritet signala HSYNC ili VSYNC.

6) Ako je zaslon malo izvan središta, pokušajte prilagoditi postavke preskakanja.

7) Ako je zaslon crn, pokušajte pričekati da se sustav podigne do skripte rc.local. Ako vam je potreban zaslon od početka, pokušajte spojiti SPI sučelje na MCU i upotrijebite MCU za inicijalizaciju LCD modula.

8) Ako je zaslon cijelo vrijeme crn, ponovno provjerite niz inicijalizacije.

9) Sva pitanja možete postaviti ovdje ili putem e -pošte: [email protected]

Preporučeni: