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, Novembar
Anonim
Retro-CM3: Moćna igraća konzola sa RetroPie funkcijom
Retro-CM3: Moćna igraća konzola sa RetroPie funkcijom
Retro-CM3: Moćna igraća konzola sa RetroPie funkcijom
Retro-CM3: Moćna igraća konzola sa RetroPie funkcijom
Retro-CM3: Moćna igraća konzola sa RetroPie funkcijom
Retro-CM3: Moćna igraća konzola sa RetroPie funkcijom

Ovo uputstvo je inspirisano adaGRruit PiGRRL Zero, Wermyjevom originalnom Gameboy Zero verzijom i GreatScottLabovom Handled Game Consoleom. Te igraće konzole zasnovane na RetroPie -u koriste jezgru maline pi zero (W) kao 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, kada sam pokušao pokrenuti PS/N64 Emus, iskustvo je bilo prilično neprihvatljivo. Čak i neke od GBA igara ne mogu raditi glatko (Određeno audio zaostajanje, 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 displeju će trebati CPU za pomoć 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 rezoluciju i visoku brzinu kadrova.

Konačna veličina konzole za igre je 152x64x18mm sa baterijom do 2000mAh. Ukupna izgradnja košta oko 65 USD, uključujući prilagođenu PCB, sve komponente, 16 GB TF karticu i RaspberryPi računarski modul 3 Lite. Pošto već imam 3D štampač, kućište me košta samo 64 g PLA filamenta.

Počnimo.

Napomena: Budući da mi engleski nije prvi jezik, ako primijetite 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 dobili RaspberryPi 3B ili ga isprobajte na ebayu.

2) 3,2 inčni LCD sa RGB/DPI interfejsom. PROVJERITE da imate RGB/DPI interfejs LCD modul jer MORATE izgraditi ovu konzolu. LCD ekran sam nabavio u lokalnoj e-trgovini, a isti modul se može pronaći u alibabi. Ako kupujete alternativni LCD modul, ZAMOLITE dobavljača 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č sa 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) Neke IC -ove. STM32F103C8T6, IP5306, TDA2822, NC7WZ16, SY8113, PT4103 itd.

8) Neki konektori. USB-mikro ženski, PJ-237 (telefonski priključak), 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 štampač. Uvjerite se da može štampati dijelove do veličine 152*66*10 mm.

12) Dovoljno PLA niti.

Korak 2: Računarski modul 3

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

Raspberry Pi Compute Module 3 je vrlo moćna jezgra za prototipiranje nekih interesantnih gadžeta. Detaljan uvod možete pronaći ovdje. I neke korisne informacije možete pronaći ovdje.

Modul koristi konektor tipa DDR2 SODIMM, koji je malo teži za upotrebu. Osim toga, svi GPIO pinovi BCM2837 jezgre BANK1 i BANK0 su izvedeni.

Da bismo počeli koristiti računarski 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. 2.5V naponski vod pokreće TV izlaz DAC-a i može se povezati na 3.3V jer nam nije potrebna funkcija TV izlaza. 5.0V bi trebalo biti spojeno na VBAT pinove i napajati jezgru. VBAT ulaz prihvata 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 nivo od 3.3V. SDX_VREF pin također treba spojiti na 3.3V.

Svi HDMI, DSI, CAM pinovi se ovdje ne koriste, 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 USB funkcije pokretanja.

Zatim spojite pinove SDX_XXX na odgovarajuće pinove na utoru za TF karticu 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, sistem 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.

Ali prije nego nastavimo, prvo moramo 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 fasciklu za podizanje sistema novo fleširane TF kartice. Stavite "dcdpi.dtbo" u /boot /overlay folder. 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 povezivanje s LCD modulom. Takođe kažem Pi -u da koristi GPIO40/41 kao pwm funkciju i učini ih desnim i lijevim audio izlazom. Dcdpi.dtbo je datoteka sa slojem stabla uređaja i govori Pi-ju 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

Kako se u ovoj konzoli mogu koristiti različiti LCD moduli DPI/RGB sučelja, ovdje ćemo za primjer uzeti modul koji se koristi u mojoj vlastitoj verziji. A ako ste odabrali neki drugi, provjerite definiciju pina vašeg modula i samo 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 nekorišteni GPIO. Povežite samo pinove Reset, CS, MOSI (SDA/SDI) i SCLK (SCL), MISO (SDO) pin se ne koristi. Za inicijalizaciju LCD upravljačkog programa, ovdje koristimo BCM2835 C biblioteku za pogon GPIO -a i emitira određenu inicijalizacijsku sekvencu koju daje dobavljač modula. Izvorna datoteka se može pronaći kasnije 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 red u /etc/rc.local datoteku prije "exit 0": "/home/pi/lcd_init" (pretpostavimo da ste kompajliranu aplikaciju stavili u folder/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 niz i prema tome izmijenite izvornu datoteku. Ovaj proces je prilično škakljiv jer se u ovom trenutku ništa ne može vidjeti s ekrana, zato vam toplo preporučujem da to radite na RPI-CMIO ploči jer vodi sve GPIO-e 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 red "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 ispravne, pri sljedećem pokretanju vašeg Pi-a trebali biste vidjeti ekran na ekranu nakon 30-40 sekundi crne boje (od napajanja do sistema učitava vašu SPI inicijalizacijsku skriptu).

Korak 4: Keypad i audio

Keypad i audio
Keypad i audio
Keypad i audio
Keypad i audio

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

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

Postoje dva načina povezivanja tipki s Raspberry Pi. Jedan način je povezivanje gumba izravno na GPIO -ove na Pi -u, a drugi način povezivanje gumba na MCU 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 sa 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, a isto kolo bi ovdje trebalo savršeno funkcionirati. Jedna stvar koju treba istaknuti je da ne zaboravite dodati redak "audio_pwm_mode = 2" na kraju config.txt kako biste smanjili šum audio izlaza.

Za pokretanje zvučnika potreban je upravljački program zvučnika. Ovdje sam odabrao TDA2822 i kolo je službeno BTL kolo. 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 kada su priključene slušalice.

Korak 5: Snaga

Moć
Moć
Moć
Moć
Moć
Moć

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 (dugme je još uvijek pritisnuto). Prilikom pokretanja MCU -a provjerit će se 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.

Kada 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 je 2.4A punjenje i 2.1A 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 nivo baterije sa 4 LED diode istovremeno.

Dio DC-DC Buck koristi dva SY8113 visokoučinkovita 3A para. Izlazni napon se može programirati pomoću 2 otpornika. Da bismo osigurali redoslijed napajanja, potreban nam je MCU da prvo omogući pojačivač. KEY_IP signal će simulirati pritisak ključa na pin KEY IP5306 i omogućiti interni pojačivač od 5V. Nakon toga, MCU će omogućiti 3.3V napon povlačenjem RASP_EN pina visoko. Nakon što je isporučeno 3,3 V, EN pin pin od 1,8 V se visoko povlači i omogućuje izlaz od 1,8 V.

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

Korak 6: Postavljanje sistema

Postavljanje sistema
Postavljanje sistema

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 formata FAT16 i "Retropie" particiju EXT4 formata.

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

Uvjerite se da vaš sistem može identificirati čitač TF kartica kao USB-HDD uređaj i vidjet ćete 3 particije u svom istraživaču. Dvije od njih su dostupne i Windows će od vas tražiti da formatirate lijevu. NE formatirajte ga !!

Prvo otvorite "boot" particiju i slijedite korak 2 za postavljanje pin konfiguracija. Ili možete jednostavno raspakirati boot.zip pod ovim korakom i kopirati sve datoteke i mape na particiju za pokretanje. Ne zaboravite kopirati i kompajliranu skriptu lcd_init na boot particiju.

Ovdje smo spremni za izvođenje prvog pokretanja, 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 sa brzinom prijenosa 115200. U svakom slučaju, morate dobiti terminal pristup svom Pi-u.

Prilikom prvog pokretanja sistem će se zaglaviti kada pokušate proširiti sistem datoteka. Zanemarite, pritisnite start (unesite tipku USB HID tastature) i ponovo pokrenite sistem. 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 ekran da se osvijetli i pokaže nešto.

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

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 vrijednosti, 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 sistem) i neke greške se pojavljuju na ekranu. Kopirajte sve datoteke u RetroPie-bck natrag u RetroPie i ponovo pokrenite sistem. Greš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 kada je isključena i povežite je s računarom. Otvorite treću particiju (ZAPAMTITE da zanemarite savjet o formatu !!!) i kopirajte datoteke u odgovarajuće mape.

Korak 7: 3D štampana futrola i dugmad

3D štampana futrola i dugmad
3D štampana futrola i dugmad
3D štampana futrola i dugmad
3D štampana futrola i dugmad
3D štampana futrola i dugmad
3D štampana futrola i dugmad

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

Samo odštampajte

4x ABXY. STL

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

1x CROSS. STL

1x TOP. STL

1x BOTTOM. STL

Štampam ih pomoću PLA sa ispunom od 20%, slojem od 0,2 mm i dovoljno je jak.

Pošto je kućište čvrsto, pre štampanja proverite tačnost štampača pomoću neke kocke za testiranje.

A tri vijka φ3 mm duljine 5 mm i četiri vijka φ3 mm duljine 10 mm potrebno je za njihovo sastavljanje.

Korak 8: Svi zajedno i rješavanje problema

Sve zajedno i rješavanje problema
Sve zajedno i rješavanje problema
Sve zajedno i rješavanje problema
Sve zajedno i rješavanje problema
Sve zajedno i rješavanje problema
Sve zajedno i rješavanje problema
Sve zajedno i rješavanje problema
Sve 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 Top_Solder sloju. Bolje je da sami napravite prilagođavanje i predate vlastitu datoteku PCB -a lokalnom proizvođaču da to učini jer je zaista teško kupiti sve iste dijelove koje ja 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 bi trebao biti 3 mm iznad PCB -a kako bi stao u kućište. Zalijepite debelu dvostruku bočnu traku. Zatim spojite FPC na konektor i umetnite CM3L i TF karticu. NEMOJTE lemiti bateriju sada, priključite USB izvor napajanja i pokrenite ga!

Proverite sve tastere i ekran. 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 dugme za uključivanje.

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

Uživajte.

Neki savjeti za rješavanje problema:

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

2) Provucite LCD signalne žice s ograničenjem dužine.

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 testiranja 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 dosta izvan središta, pokušajte obrnuti polaritet signala HSYNC ili VSYNC.

6) Ako je ekran malo udaljen od centra, pokušajte prilagoditi postavke preskakanja.

7) Ako je ekran crn, pokušajte sačekati da se sistem pokrene do rc.local skripte. Ako vam je potreban ekran od početka, pokušajte spojiti SPI sučelje na MCU i pomoću MCU -a pokrenite LCD modul.

8) Ako je ekran sve vreme crn, ponovo proverite redosled inicijalizacije.

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

Preporučuje se: