Indholdsfortegnelse:

Retro-CM3: en kraftfuld RetroPie-håndteret GAME-konsol: 8 trin (med billeder)
Retro-CM3: en kraftfuld RetroPie-håndteret GAME-konsol: 8 trin (med billeder)

Video: Retro-CM3: en kraftfuld RetroPie-håndteret GAME-konsol: 8 trin (med billeder)

Video: Retro-CM3: en kraftfuld RetroPie-håndteret GAME-konsol: 8 trin (med billeder)
Video: The Retro CM3 GB/GBC/GBA Test - Best Gameboy Advance Emulator handheld 2024, November
Anonim
Retro-CM3: en kraftfuld RetroPie-håndteret GAME-konsol
Retro-CM3: en kraftfuld RetroPie-håndteret GAME-konsol
Retro-CM3: en kraftfuld RetroPie-håndteret GAME-konsol
Retro-CM3: en kraftfuld RetroPie-håndteret GAME-konsol
Retro-CM3: en kraftfuld RetroPie-håndteret GAME-konsol
Retro-CM3: en kraftfuld RetroPie-håndteret GAME-konsol

Denne instruktør er inspireret af adafruitens PiGRRL Zero, Wermys originale Gameboy Zero -konstruktion og GreatScottLabs håndterede spilkonsol. De RetroPie -baserede spilkonsoller bruger hindbær pi zero (W) som deres kerne. MEN, efter at jeg har bygget flere Pi Zero -konsoller, blev der fundet to hovedproblemer.

1) Raspberry Pi Zero (W) har kun single core Cortex-A7 og 512MB ram, hvilket er OK til NES/SNES/GB slags ting. Da jeg forsøgte at køre PS/N64 Emus, var oplevelsen dog ganske uacceptabel. Selv nogle af GBA-spillene kan ikke køre gnidningsløst (Noget lydforsinkelse, også i nogle NEOGEO-spil som Metal Slug ved håndtering af komplicerede scener); 2) De fleste spilkonsoller bygger SPI eller TV-out som skærmgrænseflade. SPI -displayet skal bruge CPU'en til at hjælpe med rammebufferdriveren, hvilket vil gøre spiloplevelsen værre, og fps er også begrænset af SPI -urets hastighed. Og skærmkvaliteten på TV-out er bare ikke god nok.

I Denne instruktør vil vi bruge RaspberryPi Compute Module 3 og en DPI interface LCD til at bygge en ultimativ RetroPie -spilkonsol. Det skal være i stand til at køre alle emulatorer problemfrit og give en høj opløsning og høj billedhastighed.

Den endelige størrelse på spillekonsollen er 152x64x18mm med op til 2000mAh batteri. Den samlede build koster omkring $ 65, inklusive et brugerdefineret printkort, alle komponenterne, et 16 GB TF -kort og et RaspberryPi -beregningsmodul 3 Lite. Da jeg allerede har en 3D -printer, koster sagen mig kun 64g PLA -filament.

Lad os begynde.

Bemærk: Da engelsk ikke er mit første sprog, bedes du venligst give mig besked, hvis du finder fejl eller noget ikke er klart.

Dette er mit første indlæg på instructable.com, og jeg har virkelig brug for alle slags forslag fra jer.

Trin 1: Ingredienser

ingredienser
ingredienser
ingredienser
ingredienser
ingredienser
ingredienser
ingredienser
ingredienser

Her er de ingredienser, du har brug for til at bygge spillekonsollen. Nogle af delene er muligvis ikke tilgængelige i din region. Prøv nogle alternative dele.

1) RaspberryPi Compute Module 3 Lite. Køb det fra den butik, hvor du har din RaspberryPi 3B, eller prøv det på ebay.

2) 3,2 tommer LCD med RGB/DPI -interface. Sørg for, at du har et RGB/DPI interface LCD -modul, fordi det er et MUST at bygge denne konsol. Jeg fik min LCD fra en lokal e-butik, og det samme modul kan findes i alibaba. Hvis du køber et alternativt LCD -modul, skal du bede udbyderen om at sende dig den detaljerede parameter og initialiseringskode. Det er også et klogt valg at købe de tilsvarende stik fra den samme butik, da der er så mange forskellige typer stik.

3) ALPS SKPDACD010. Taktkontakt med 1,75 mm vandring. Søg det på din lokale elektroniske komponentbutik.

4) Nogle andre nøgler. Brug alle andre takt-taster, du kan få til START/SELECT/VOL+/VOL- knapperne.

5) Højttaler. Enhver 8 ohm, 0,5-1,5 W højttaler.

6) Batteri. Jeg valgte 34*52*5,0 mm 1S 1000mAh Li-ion batteri x2.

7) Nogle IC'er. STM32F103C8T6, IP5306, TDA2822, NC7WZ16, SY8113, PT4103 og etc.

8) Nogle stik. USB-Micro Female, PJ-237 (telefonstik), TF-Card Jack, DDR2 SODIMM og etc.

9) Nogle passive komponenter. Modstande, kondensatorer og induktorer.

10) Et brugerdefineret printkort. De skematiske og PCB -filer leveres i slutningen. Husk at foretage ændringer i den, hvis du bruger alternative dele.

11) En 3D -printer. Sørg for, at den kan udskrive dele op til størrelsen 152*66*10 mm.

12) Nok PLA -filament.

Trin 2: Computemodulet 3

Beregningsmodulet 3
Beregningsmodulet 3
Beregningsmodulet 3
Beregningsmodulet 3

Raspberry Pi Compute Module 3 er et meget kraftfuldt kernekort til prototyper af nogle gadgets. Detaljeret introduktion kan findes her. Og nogle nyttige oplysninger kan findes her.

Modulet bruger et DDR2 SODIMM -stik, som er lidt sværere at bruge. Derudover ledes alle GPIO -benene i BCM2837 -kernen BANK1 og BANK0 ud.

For at begynde at bruge beregningsmodulet skal vi levere flere forskellige spændinger: 1.8V, 3.3V, 2.5V og 5.0V. Blandt dem bruges 1.8V og 3.3V til at drive nogle eksterne enheder, der har brug for cirka 350mA hver. 2,5V-strømledningen driver TV-out DAC'en, og den kan bindes til 3,3V, da vi ikke har brug for TV-out-funktion. 5.0V skal tilsluttes VBAT -benene, og den driver kernen. VBAT -indgangen accepterer spændinger fra 2,5V til 5,0V, og bare sørg for, at strømforsyningen kan levere op til 3,5W. VCCIO-ben (GPIO_XX-XX_VREF) kan sluttes til 3.3V, da vi bruger et 3.3V CMOS-niveau. SDX_VREF -stiften skal også tilsluttes 3,3V.

Alle HDMI-, DSI-, CAM -ben bruges ikke her, lad dem bare flyde. Husk at binde EMMC_DISABLE_N -stiften til 3,3V, da vi vil bruge et TF -kort som harddisk i stedet for USB -bootfunktionen.

Tilslut derefter SDX_XXX-benene til de tilsvarende ben på TF-kortstikket, og der er ikke behov for pull-up eller pull-down modstande. På dette trin er vi klar til at starte Raspberry Pi Compute Module 3. Tænd for strømforsyningen i en faldende rækkefølge: 5V, 3.3V og derefter 1.8V, systemet burde kunne starte op, men da der ikke er nogen output enhed, ved vi bare ikke, om det fungerer fint. Så vi skal tilføje et display for at kontrollere det i det næste trin.

Men før vi fortsætter, skal vi først fortælle Pi, hvad der er funktion af hver GPIO. Her leverer jeg nogle filer, sætter "dt-blob.bin", "bcm2710-rpi-cm3.dtb" og "config.txt" i bootmappen på et nyligt flashet TF-kort. Sæt "dcdpi.dtbo" i mappen /boot /overlay. Dt-blob.bin definerer standardfunktionen for hver GPIO. Jeg ændrer GPIO14/15 til normal GPIO og flytter UART0 -funktionen til GPIO32/33, da vi har brug for GPIO14/15 for at interface med LCD -modulet. Jeg fortæller også Pi at bruge GPIO40/41 som pwm -funktion og få dem til at være den højre og venstre lydudgang. Dcdpi.dtbo er en enheds-træ-overlay-fil, og den fortæller Pi, at vi vil bruge GPIO0-25 som DPI-funktion. Endelig skriver vi "dtoverly = dcdpi" for at gøre Pi opmærksom på at indlæse den overlay -fil, vi leverede.

I øjeblikket forstår Raspberry Pi fuldt ud, hvilken funktion der skal bruges til hver GPIO, og vi er klar til at gå videre.

Trin 3: Tilslutning af LCD -modulet

Grænseflade til LCD -modulet
Grænseflade til LCD -modulet
Grænseflade til LCD -modulet
Grænseflade til LCD -modulet
Grænseflade til LCD -modulet
Grænseflade til LCD -modulet

Da forskellige DPI/RGB -interface LCD -moduler kan bruges i denne konsol, tager vi det modul, der blev brugt i min egen build, som eksempel. Og hvis du har valgt en anden, skal du kontrollere stiftdefinitionen på dit modul og bare oprette forbindelserne i henhold til stiftenavne som vist i eksemplet.

Der er to grænseflader på LCD -modulet: et SPI og et DPI. SPI'en bruges til at konfigurere de første indstillinger for LCD -driverens IC, og vi kan forbinde dem til enhver ubrugt GPIO. Tilslut kun Reset, CS, MOSI (SDA/SDI) og SCLK (SCL) benene, MISO (SDO) pin bruges ikke. For at initialisere LCD -driveren bruger vi her BCM2835 C -biblioteket til at drive GPIO'erne og udsender en bestemt initialiseringssekvens leveret af modulleverandøren. Kildefilen kan findes senere i denne instruks.

Installer BCM2835 C -biblioteket på en anden Raspberry Pi 3 i henhold til instruktionerne her. Brug derefter kommandoen "gcc -o lcd_init lcd_init.c -lbcm2835" til at kompilere kildefilen. Tilføj derefter en ny linje i filen /etc/rc.local før "exit 0": "/home/pi/lcd_init" (antag at du har lagt den kompilerede applikation under/home/pi -mappen). Det skal understreges, at kildefilen kun bruges til det bestemte modul, jeg brugte, og til et andet LCD -modul, bare spørg leverandøren om en initialiseringssekvens og modificer kildefilen i overensstemmelse hermed. Denne proces er ret vanskelig, fordi der på dette tidspunkt ikke kan ses noget fra skærmen, derfor foreslår jeg stærkt, at du gør dette på et RPI-CMIO-kort, da det leder alle GPIO'erne ud, så du kan fejlsøge det med uart eller wlan.

Den følgende del er let, bare tilslut de venstre ben på LCD -modulet i henhold til her. Afhænger af hvilken slags LCD -modul du har, vælg RGB -tilstand klogt. For mig her valgte jeg DPI_OUTPUT_FORMAT_18BIT_666_CFG2 (mode 6). Ændre linjen "dpi_output_format = 0x078206" i henhold til dit valg. Og hvis dit LCD -modul bruger en anden opløsning, skal du justere "hdmi_timings = 480 0 41 60 20 800 0 5 10 10 0 0 0 60 0 32000000" se filen her.

Hvis alle indstillingerne er korrekte, skal du ved næste opstart af din Pi se displayet på skærmen efter en 30-40s sort (fra strøm til system indlæser dit SPI-initialiserings script).

Trin 4: Tastaturet og lyd

Tastatur og lyd
Tastatur og lyd
Tastatur og lyd
Tastatur og lyd

Vi har gjort med Core og Output i de sidste to trin. Lad os nu gå til Input -delen.

En spillekonsol har brug for nøgler og knapper. Her har vi brug for 10 ALPS SKPDACD010 switches som op/ned/højre/venstre, LR og A/B/X/Y knapperne. Og normale 6x6 overflademonteringstaster bruges til andre knapper som start/vælg og volumen op/ned.

Der er to måder at grænseflade knapperne med Raspberry Pi. En måde er at forbinde knapperne direkte til GPIO'erne på Pi og en anden måde er at forbinde knapperne til en MCU og interface med Pi via USB HID -protokol. Her valgte jeg den anden, fordi vi alligevel har brug for en MCU for at håndtere strømmen til sekvens, og det er sikrere at holde Pi væk fra menneskelig berøring.

Så tilslut nøglerne til STM32F103C8T6 og tilslut derefter MCU'en til Pi'en med USB. Et eksempel på MCU -programmet findes i slutningen af dette trin. Ændre pin -definitionerne i hw_config.c og kompilér det med MCU's USB -bibliotek, der findes her. Eller du kan bare downloade hex -filen direkte til MCU, så længe du deler de samme pin -definitioner i skematikken i slutningen af denne instruktive.

Hvad angår lydudgange, giver den officielle skema for Raspberry Pi 3 B en god måde at filtrere pwm -bølgen på, og det samme kredsløb skulle fungere perfekt her. En ting, der skal påpeges, er, at husk at tilføje linjen "audio_pwm_mode = 2" i slutningen af config.txt for at reducere støj fra lydoutput.

For at køre højttaleren er en højttalerdriver nødvendig. Her valgte jeg TDA2822, og kredsløbet er det officielle BTL -kredsløb. Bemærk, at telefonstikket PJ-327 har en automatisk frakoblingsstift på den højre udgang. Når der ikke er tilsluttet en hovedtelefon, er stiften 3 forbundet til den rigtige kanal. Og så snart hovedtelefonen er tilsluttet, løsnes denne pin fra den rigtige kanal. Denne pin kan bruges som højttalerindgangsstiften, og højttaleren slås fra, når hovedtelefonen tilsluttes.

Trin 5: Strømmen

Magten
Magten
Magten
Magten
Magten
Magten

Lad os vende tilbage til strømafsnittet og kontrollere det detaljerede strømdesign.

Der er 3 strømafsnit: MCU-forsyningen, oplader/booster og DC-DC Bucks.

MCU-forsyningen er adskilt fra alle andre strømforsyninger, fordi vi har brug for den til at udføre præ-power-sekvensen. Når tænd / sluk -knappen trykkes ned, tilslutter PMOS EN -stiften på LDO'en til batteriet for at aktivere LDO'en. MCU'en tændes derefter (der trykkes stadig på knappen). Ved opstart af MCU vil den kontrollere, om tænd / sluk -knappen er trykket længe nok. Efter ca. 2 sekunder, hvis MCU'en fandt ud af, at tænd / sluk -knappen stadig er trykket, vil den trække "PWR_CTL" -nålen op for at holde PMOS'en tændt. På dette tidspunkt overtager MCU'en kontrollen med MCU -strømforsyningen.

Når der trykkes på tænd / sluk -knappen i 2 sekunder igen, kører MCU'en strømafbrydelsessekvensen. Ved afslutningen af strømafbrydelsessekvensen frigiver MCU'en "PWR_CTL" -nål for at lade PMOS slukke, og MCU -forsyningen deaktiveres derefter.

Oplader/boosterdelen bruger IC IP5306. Denne IC er 2,4A opladning og 2,1A afladning stærkt integreret Soc til powerbank -brug, og den passer perfekt til vores behov. IC'en er i stand til at oplade batteriet, levere en 5V udgang og vise batteriniveauet med 4 lysdioder på samme tid.

DC-DC Buck-delen bruger to SY8113 højeffektive 3A buck. Udgangsspændingen kan programmeres af 2 modstande. For at sikre effektsekvensen har vi brug for MCU'en for først at aktivere Booster. KEY_IP signalet simulerer et tastetryk til KEY pin på IP5306 og muliggør den interne 5V booster. Derefter aktiverer MCU'en 3.3V buck ved at trække RASP_EN pin højt. Og efter at 3.3V er leveret, trækkes 1.8V buksens EN -stift højt og muliggør 1.8V -output.

Hvad angår batteriet, er to 1000mAh Li-ion-batter nok til konsollen. Den normale størrelse på denne slags batteri er omkring 50*34*5 mm.

Trin 6: Opsætning af systemet

Opsætning af systemet
Opsætning af systemet

I dette trin sætter vi alle opsætninger sammen.

Først skal du downloade og blinke RetroPie -billedet til et nyt TF -kort. Tutorial og download kan findes her. Download Raspberrypi 2/3 versionen. Du vil se 2 partitioner efter flash -billedet: en "boot" -partition i FAT16 -format og en "Retropie" -partition i EXT4 -format.

Når du har gjort det, skal du ikke indsætte det i Raspberry Pi med det samme, fordi vi skal tilføje en FAT32 -partition til romerne. Brug partitionsværktøjer som DiskGenius til at justere EXT4-partitionen til cirka 5-6 GB og lave en ny FAT32-partition med al den ledige plads tilbage på dit TF-kort. Se billedet, jeg har uploadet.

Sørg for, at dit system er i stand til at identificere TF-kortlæseren som en USB-HDD-enhed, og du vil se 3 partitioner i din explorer. To af dem er tilgængelige, og Windows vil bede dig om at formatere den venstre. Formater det IKKE !!

Åbn først "boot" -partitionen og følg trin 2 for at konfigurere pin -konfigurationerne. Eller du kan bare pakke boot.zip ud under dette trin og kopiere alle filer og mapper til din bootpartition. Husk også at kopiere det kompilerede lcd_init -script til bootpartitionen.

Her er vi klar til at udføre den første boot, men da der ikke er noget display, anbefaler jeg stærkt, at du bruger et RPI-CMIO-kort med en usb wlan-enhed. Derefter kan du konfigurere filen wpa_supplicant og aktivere ssh på dette trin. Men hvis du ikke har til hensigt at få en, kan GPIO32/33 bruges som en UART -terminal. Tilslut TX (GPIO32) og RX (GPIO33) pin til et usb-til-uart-kort, og få adgang til terminalen med baudhastigheden 115200. Uanset hvad skal du have en terminaladgang til din Pi.

Ved den første opstart sidder systemet fast, når du prøver at udvide filsystemet. Ignorer det, tryk på start (enter -tasten på USB HID -tastaturet) og genstart. På terminalen skal du kopiere lcd_init -scriptet til brugerens "pi" -mappe og følge trin 3 for at indstille automatisk start. Efter endnu en genstart skulle du se skærmen for at lyse op og vise noget.

I øjeblikket er din spillekonsol klar til at spille. For at kunne indlæse romer og BIOS'er i dit TF -kort skal du dog hver gang have adgang til en terminal. For at gøre det enkelt, foreslår jeg, at du opsætter FAT32 -partitionen.

Sikkerhedskopier først RetroPie-mappen under /home /pi til RetroPie-bck: "cp -r RetroPie RetroPie-bck". Tilføj derefter en ny linje i/etc/fstab: "/dev/mmcblk0p3/home/pi/RetroPie -standardindstillinger, uid = 1000, gid = 1000 0 2" for automatisk at montere FAT32 -partitionen i RetroPie -mappen med indstilling af ejeren til bruger "pi". Efter genstart finder du indholdet i RetroPie -mappen alle væk (hvis det ikke er det, skal du genstarte igen), og der vises nogle fejl på skærmen. Kopier alle filer i RetroPie-bck tilbage til RetroPie og genstart igen. Fejlene skulle forsvinde, og du kan konfigurere inputenheden ved at følge instruktionerne på skærmen.

Hvis du vil tilføje ROM'er eller BIOS'er, skal du tage TF -kortet ud af stikkontakten, når det er slukket, og slutte det til din computer. Åbn den 3. partition (HUSK at IGNORER formatformatet !!!) og kopier filerne til de tilsvarende mapper.

Trin 7: 3D -trykt sag og knapper

3D -trykt sag og knapper
3D -trykt sag og knapper
3D -trykt sag og knapper
3D -trykt sag og knapper
3D -trykt sag og knapper
3D -trykt sag og knapper

Jeg har designet GameBoy Micro -stilkassen til spillekonsollen.

Bare print

4x ABXY. STL

2x LR. STL (skal tilføjes support)

1x CROSS. STL

1x TOP. STL

1x BUNDT. STL

Jeg udskriver dem ved hjælp af PLA med 20% fyld, 0,2 mm lag, og det er stærkt nok.

Da sagen er stram, skal du kontrollere printerens nøjagtighed med en testterning inden udskrivning.

Og tre 5 mm lange φ3 mm skruer og fire 10 mm lange φ3 mm skruer er nødvendige for at samle dem sammen.

Trin 8: Alle sammen og fejlfinding

Alt sammen og fejlfinding
Alt sammen og fejlfinding
Alt sammen og fejlfinding
Alt sammen og fejlfinding
Alt sammen og fejlfinding
Alt sammen og fejlfinding
Alt sammen og fejlfinding
Alt sammen og fejlfinding

Da kredsløbet er lidt kompliceret, er det et godt valg at lave noget PCB -arbejde. Hele skematisk og min egen PCB -version uploades i slutningen af dette trin. Hvis du har til hensigt at bruge min PCB -version, skal du venligst ikke fjerne mit logo på Top_Solder -laget. Det er bedre at lave din egen tilpasning og aflevere din egen PCB -fil til den lokale producent for at finde ud af det, fordi det er virkelig svært at købe alle de samme dele, som jeg bruger på mit printkort.

Efter at have loddet alle komponenterne på printkortet og testet, er den første ting at gøre at downloade hex -fil til MCU'en. Derefter sættes LCD -modulet på printkortet. LCD -modulet skal være 3 mm over printkortet for at passe i etuiet. Brug et tykt dobbelt sidebånd til at klæbe det på. Tilslut derefter FPC'en til stikket, og isæt CM3L- og TF -kortet. IKKE lodde batteriet nu, tilslut en usb -strømkilde og start det op!

Kontroller alle knapper og display. Mål spændingen mellem BAT+ og GND, kontroller om spændingen er omkring 4,2V. Hvis spændingen er OK, skal USB -kablet tages ud, og batteriet loddes. Prøv tænd / sluk -knappen.

Sæt CROSS og ABXY -knappen i TOP -kassen, og sæt PCB'en i kassen. Brug 3 skruer til at fastgøre printkortet i kabinettet. Tilføj noget tykt dobbeltbånd på bagsiden af alle SKPDACD010 -knapperne, og sæt batteriet på det. Brug ikke tykt tape for at undgå, at stifterne på SKPDACD010 beskadiger batteriet. Sæt derefter højttaleren til bunden. Inden du lukker det op, skal du muligvis prøve alle knapperne, kontrollere om de fungerer og hoppe korrekt. Luk derefter kabinettet med 4 skruer.

God fornøjelse.

Nogle tips til fejlfinding:

1) Kontroller stiftforbindelsen til LCD -modulet tre gange på skematikken og printkortet.

2) Før LCD -signaltråde med længdebegrænsning.

3) Når du ikke er sikker på strømafsnittene, skal lodning og testning af hver sektion følges af effektforløbet. 5V først og derefter 3,3V og 1,8V. Når alle strømafsnittene er testet, loddes de andre komponenter.

4) Hvis displayet slør ofte, kan du prøve at vende PCLK -signalets polaritet ved at indstille dpi_output_format.

5) Hvis displayet er meget ude af midten, skal du prøve at vende HSYNC- eller VSYNC -signalets polaritet.

6) Hvis displayet er lidt ude af midten, kan du prøve at justere indstillingerne for overscanning.

7) Hvis displayet er sort, skal du prøve at vente på, at systemet starter op til rc.local -scriptet. Hvis du har brug for visning fra starten, kan du prøve at koble SPI -interfacet til MCU'en og bruge MCU'en til at initialisere LCD -modulet.

8) Hvis displayet hele tiden er sort, skal du kontrollere initialiseringssekvensen igen.

9) Stil gerne spørgsmål her eller via e -mail: [email protected]

Anbefalede: