Innholdsfortegnelse:
- Trinn 1: Ingredienser
- Trinn 2: Beregningsmodulen 3
- Trinn 3: Grensesnitt for LCD -modulen
- Trinn 4: Tastaturet og lyd
- Trinn 5: Kraften
- Trinn 6: Konfigurere systemet
- Trinn 7: 3D -trykt etui og knapper
- Trinn 8: Alt sammen og feilsøking
Video: Retro-CM3: en kraftig RetroPie-håndtert GAME-konsoll: 8 trinn (med bilder)
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:24
Denne instruksen er inspirert av adafruit's PiGRRL Zero, Wermys originale Gameboy Zero -konstruksjon og GreatScottLabs håndterte spillkonsoll. De RetroPie -baserte spillkonsollene bruker bringebær pi zero (W) som kjerne. MEN, etter at jeg har bygget flere Pi Zero -konsoller, ble det funnet to hovedproblemer.
1) Raspberry Pi Zero (W) har bare en enkelt kjerne Cortex-A7 og 512 MB RAM, noe som er OK for NES/SNES/GB slags ting. Men da jeg prøvde å kjøre PS/N64 Emus, var opplevelsen ganske uakseptabel. Selv noen av GBA-spillene kan ikke kjøre jevnt (noe lydforsinkelse, også i noen NEOGEO-spill som Metal Slug når det dreier seg om kompliserte scener); 2) De fleste spillkonsollene bruker SPI eller TV-out som skjermgrensesnitt. SPI -skjermen trenger CPU for å hjelpe med rammebufferdriveren, noe som vil gjøre spillopplevelsen verre og fps er også begrenset av hastigheten på SPI -klokken. Og visningskvaliteten på TV-out er bare ikke god nok.
I Denne instruksen vil vi bruke RaspberryPi Compute Module 3 og et DPI -grensesnitt LCD for å bygge en ultimate RetroPie -spillkonsoll. Den skal kunne kjøre alle emulatorene jevnt og gi høy oppløsning og høy bildefrekvens.
Den endelige størrelsen på spillkonsollen er 152x64x18mm med opptil 2000mAh batteri. Den totale bygningen koster omtrent $ 65, inkludert en tilpasset PCB, alle komponentene, et 16 GB TF -kort og en RaspberryPi -beregningsmodul 3 Lite. Siden jeg allerede har en 3D -skriver, koster saken meg bare 64g PLA -filament.
La oss begynne.
Merk: Siden engelsk ikke er mitt førstespråk, vennligst gi meg beskjed hvis du finner feil eller noe er uklart.
Dette er mitt første innlegg på instructable.com, og jeg trenger virkelig alle slags forslag fra dere.
Trinn 1: Ingredienser
Her er ingrediensene du trenger for å bygge spillkonsollen. Noen av delene er kanskje ikke tilgjengelige i ditt område. Prøv noen alternative deler.
1) RaspberryPi Compute Module 3 Lite. Kjøp den fra butikken der du kjøpte din RaspberryPi 3B eller prøv den på ebay.
2) 3,2 tommers LCD med RGB/DPI -grensesnitt. Sørg for at du har en RGB/DPI grensesnitt LCD -modul fordi det er et MÅSTE å bygge denne konsollen. Jeg fikk LCD-skjermen min fra en lokal e-butikk, og samme modul finnes i alibaba. Hvis du kjøper en alternativ LCD -modul, må du be leverandøren om å sende deg den detaljerte parameteren og initialiseringskoden. Det er også et klokt valg å kjøpe de tilsvarende kontaktene fra samme butikk, da det er så mange forskjellige typer kontakter.
3) ALPS SKPDACD010. Taktbryter med 1,75 mm vandring. Søk i den lokale elektroniske komponentbutikken.
4) Noen andre nøkler. Bruk andre takttaster du kan få for START/SELECT/VOL+/VOL- knappene.
5) Høyttaler. Enhver 8 ohm, 0,5-1,5 W høyttaler.
6) Batteri. Jeg valgte 34*52*5,0 mm 1S 1000mAh Li-ion batteri x2.
7) Noen IC -er. STM32F103C8T6, IP5306, TDA2822, NC7WZ16, SY8113, PT4103 og etc.
8) Noen kontakter. USB-Micro Female, PJ-237 (telefonkontakt), TF-Card Jack, DDR2 SODIMM og etc.
9) Noen passive komponenter. Motstander, kondensatorer og induktorer.
10) En tilpasset PCB. De skjematiske og PCB -filene er gitt på slutten. Husk å gjøre endringer i den hvis du bruker alternative deler.
11) En 3D -skriver. Sørg for at den kan skrive ut deler opp til størrelsen 152*66*10 mm.
12) Nok PLA -filament.
Trinn 2: Beregningsmodulen 3
Raspberry Pi Compute Module 3 er et veldig kraftig kjernekort for prototyping av noen interessegadgets. Detaljert introduksjon finner du her. Og litt nyttig informasjon finner du her.
Modulen bruker en DDR2 SODIMM -type kontakt, noe som er litt vanskeligere å bruke. I tillegg blir alle GPIO -pinnene i BCM2837 -kjernen BANK1 og BANK0 ledet ut.
For å begynne å bruke beregningsmodulen må vi gi flere forskjellige spenninger: 1.8V, 3.3V, 2.5V og 5.0V. Blant dem brukes 1.8V og 3.3V til å drive noen eksterne enheter som trenger omtrent 350mA hver. 2,5V-strømledningen driver TV-ut DAC, og den kan knyttes til 3,3V da vi ikke trenger TV-out-funksjon. 5.0V bør kobles til VBAT -pinnene, og den driver kjernen. VBAT -inngangen godtar spenninger fra 2,5V til 5,0V, og bare sørg for at strømforsyningen kan levere opptil 3,5W. VCCIO-pinner (GPIO_XX-XX_VREF) kan kobles til 3.3V ettersom vi bruker et 3.3V CMOS-nivå. SDX_VREF -pinnen bør også kobles til 3,3V.
Alle HDMI-, DSI-, CAM -pinnene brukes ikke her, bare la dem flyte. Husk å knytte EMMC_DISABLE_N -pinnen til 3,3V, da vi vil bruke et TF -kort som harddisk i stedet for USB -oppstartsfunksjonen.
Koble deretter SDX_XXX-pinnene til de tilsvarende pinnene på TF-kortsporet, og det er ikke nødvendig med opptrekk eller nedtrekksmotstand. På dette trinnet er vi klare til å starte opp Raspberry Pi Compute Module 3. Slå på strømforsyningen i en redusert rekkefølge: 5V, 3.3V og deretter 1.8V, systemet skal kunne starte opp, men siden det ikke er noen utgang enheten, vet vi bare ikke om det fungerer bra. Så vi må legge til en skjerm for å sjekke den i neste trinn.
Men før vi fortsetter, må vi først fortelle Pi hva som er funksjonen til hver GPIO. Her gir jeg noen filer, legg "dt-blob.bin", "bcm2710-rpi-cm3.dtb" og "config.txt" i oppstartsmappen til et nylig blinket TF-kort. Sett "dcdpi.dtbo" i mappen /boot /overlay. Dt-blob.bin definerer standardfunksjonen for hver GPIO. Jeg endrer GPIO14/15 til vanlig GPIO og flytter UART0 -funksjonen til GPIO32/33 ettersom vi trenger GPIO14/15 for å koble til LCD -modulen. Jeg ber også Pi om å bruke GPIO40/41 som pwm -funksjon og få dem til å være høyre og venstre lydutgang. Dcdpi.dtbo er en overleggsfil for enhets-tre, og den forteller Pi at vi vil bruke GPIO0-25 som DPI-funksjon. Til slutt skriver vi "dtoverly = dcdpi" for å vite at Pi skal laste overleggsfilen vi ga.
For øyeblikket forstår Raspberry Pi fullt ut hvilken funksjon som skal brukes for hver GPIO, og vi er klare til å gå videre.
Trinn 3: Grensesnitt for LCD -modulen
Siden forskjellige DPI/RGB -grensesnitt LCD -moduler kan brukes i denne konsollen, tar vi modulen som ble brukt i min egen konstruksjon som eksempel. Og hvis du valgte en annen, sjekk pin -definisjonen til modulen din, og bare gjør tilkoblingene i henhold til pin -navnene som vist i eksemplet.
Det er to grensesnitt på LCD -modulen: en SPI og en DPI. SPI -en brukes til å konfigurere de første innstillingene til LCD -driverens IC, og vi kan koble dem til en hvilken som helst ubrukt GPIO. Koble bare til Reset, CS, MOSI (SDA/SDI) og SCLK (SCL) pins, MISO (SDO) pin brukes ikke. For å initialisere LCD -driveren bruker vi her BCM2835 C -biblioteket til å drive GPIO -ene og sender ut en viss initialiseringssekvens levert av modulleverandøren. Kildefilen kan bli funnet senere i denne instruksjonsboken.
Installer BCM2835 C -biblioteket på en annen Raspberry Pi 3 i henhold til instruksjonene her. Bruk deretter kommandoen "gcc -o lcd_init lcd_init.c -lbcm2835" for å kompilere kildefilen. Legg deretter til en ny linje i filen /etc/rc.local før "exit 0": "/home/pi/lcd_init" (anta at du har lagt den kompilerte applikasjonen under/home/pi -mappen). Det bør understrekes at kildefilen bare brukes for den bestemte modulen jeg brukte og for en annen LCD -modul. Bare be leverandøren om en initialiseringssekvens og endre kildefilen deretter. Denne prosessen er ganske vanskelig fordi på dette tidspunktet kan ingenting sees fra skjermen, derfor foreslår jeg på det sterkeste at du gjør dette på et RPI-CMIO-kort, da det leder ut alle GPIO-ene slik at du kan feilsøke det med uart eller wlan.
Den følgende delen er enkel, bare koble de venstre pinnene på LCD -modulen i henhold til her. Avhenger av hva slags LCD -modul du har, velg RGB -modus med omhu. For meg, her valgte jeg DPI_OUTPUT_FORMAT_18BIT_666_CFG2 (modus 6). Endre linjen "dpi_output_format = 0x078206" i henhold til ditt valg. Og hvis LCD -modulen bruker en annen oppløsning, juster "hdmi_timings = 480 0 41 60 20 800 0 5 10 10 0 0 0 60 0 32000000", se filen her.
Hvis alle innstillingene er riktige, ved neste oppstart av din Pi, bør du se skjermen på skjermen etter en 30-40s svart (fra strøm til system laster SPI-initialiseringsskriptet).
Trinn 4: Tastaturet og lyd
Vi har gjort med Core og Output i de to siste trinnene. La oss nå gå til Input -delen.
En spillkonsoll trenger nøkler og knapper. Her trenger vi 10 ALPS SKPDACD010 brytere som opp/ned/høyre/venstre, LR og A/B/X/Y knappene. Og vanlige 6x6 overflatemonteringsnøkler brukes til andre knapper som start/velg og volum opp/ned.
Det er to måter å koble knappene til Raspberry Pi. En måte er å koble knappene direkte til GPIO -ene på Pi, og en annen måte er å koble knappene til en MCU og grensesnitt med Pi gjennom USB HID -protokollen. Her valgte jeg den andre, fordi vi trenger en MCU for å håndtere strømmen på sekvensen uansett, og det er tryggere å holde Pi borte fra menneskelig berøring.
Så koble nøklene til STM32F103C8T6 og koble deretter MCU til Pi med USB. Et eksempel på MCU -programmet finner du på slutten av dette trinnet. Endre pin -definisjonene i hw_config.c og kompiler den med MCUs USB -bibliotek som finnes her. Eller du kan bare laste ned hex -filen direkte til MCU så lenge du deler de samme pin -definisjonene i skjematikken på slutten av denne instruksjonsboken.
Når det gjelder lydutgangene, gir den offisielle skjematikken til Raspberry Pi 3 B en god måte å filtrere pwm -bølgen på, og den samme kretsen skal fungere perfekt her. En ting som bør påpekes er at husk å legge til "audio_pwm_mode = 2" -linjen på slutten av config.txt for å redusere støyen fra lydutgangen.
En høyttalerdriver er nødvendig for å kjøre høyttaleren. Her valgte jeg TDA2822 og kretsen er den offisielle BTL -kretsen. Vær oppmerksom på at telefonstikket PJ-327 har en automatisk frakoplingspinne på høyre utgang. Når det ikke er koblet til noen hodetelefoner, er pinnen 3 koblet til den riktige kanalen. Og så snart hodetelefonen er plugget inn, løsnes denne pinnen fra den riktige kanalen. Denne pinnen kan brukes som høyttalerinngangspinnen, og høyttaleren dempes når hodetelefonen er plugget inn.
Trinn 5: Kraften
La oss gå tilbake til strømdelen og sjekke den detaljerte strømdesignen.
Det er 3 strømdeler: MCU-forsyningen, laderen/boosteren og DC-DC-pengene.
MCU-forsyningen er delt fra alle andre strømforsyninger fordi vi trenger den for å utføre sekvensen før oppstart. Når strømknappen trykkes ned, vil PMOS koble EN -pinnen til LDO til batteriet for å aktivere LDO. MCU -en slås deretter på (knappen er fortsatt trykket). Ved oppstart av MCU, vil den kontrollere om strømknappen er trykket lenge nok. Etter omtrent 2 sekunder, hvis MCU fant at strømknappen fremdeles er trykket, trekker den opp "PWR_CTL" -pinnen for å holde PMOS på. For øyeblikket overtar MCU kontrollen over MCU -strømforsyningen.
Når du trykker på strømknappen i 2 sekunder igjen, kjører MCU strømmen ned. På slutten av nedstengningssekvensen vil MCU slippe "PWR_CTL" -nål for å la PMOS slå seg av og MCU -forsyningen blir deretter deaktivert.
Laderen/boosterdelen bruker IC IP5306. Denne IC er 2,4A ladning og 2,1A utladning, svært integrert Soc for bruk av strømbank, og den passer perfekt til våre behov. IC kan lade batteriet, levere en 5V utgang og vise batterinivået med 4 lysdioder samtidig.
DC-DC Buck-delen bruker to SY8113 høyeffektive 3A buck. Utgangsspenningen kan programmeres med 2 motstander. For å sikre strømforløpet trenger vi MCU for å aktivere Booster først. KEY_IP -signalet vil simulere et tastetrykk til KEY -pinnen på IP5306 og muliggjør den interne 5V booster. Etter det vil MCU muliggjøre 3,3V dollar ved å trekke RASP_EN pin høyt. Og etter at 3,3V er levert, trekkes 1,8V -bukkens EN -pinne høyt og muliggjør 1,8V -utgang.
Når det gjelder batteriet, er to 1000mAh Li-ion-batter nok til konsollen. Den normale størrelsen på denne typen batterier er rundt 50*34*5 mm.
Trinn 6: Konfigurere systemet
I dette trinnet vil vi sette alle oppsettene sammen.
Først må du laste ned og blinke RetroPie -bildet til et nytt TF -kort. Opplæring og nedlasting finner du her. Last ned Raspberrypi 2/3 -versjonen. Du vil se to partisjoner etter at bildet er blinket: en "oppstart" -partisjon i FAT16 -format og en "Retropie" -partisjon i EXT4 -format.
Når du har gjort det, må du ikke sette det inn i Raspberry Pi umiddelbart fordi vi må legge til en FAT32 -partisjon for romene. Bruk partisjoneringsverktøy som DiskGenius for å justere EXT4-partisjonen til omtrent 5-6 GB og lage en ny FAT32-partisjon med all ledig plass igjen på TF-kortet. Se bildet jeg har lastet opp.
Sørg for at systemet ditt er i stand til å identifisere TF-kortleseren som en USB-HDD-enhet, og du vil se tre partisjoner i utforskeren din. To av dem er tilgjengelige, og Windows vil be deg om å formatere den venstre. IKKE formater det !!
Åpne først "boot" -partisjonen og følg trinn 2 for å konfigurere pin -konfigurasjonene. Eller du kan bare pakke ut boot.zip under dette trinnet, og kopiere alle filene og mappene til oppstartspartisjonen. Husk å kopiere det kompilerte lcd_init -skriptet til oppstartspartisjonen også.
Her er vi klare til å utføre den første oppstarten, men ettersom det ikke er noe display, anbefaler jeg på det sterkeste at du bruker et RPI-CMIO-kort med en usb wlan-enhet. Deretter kan du konfigurere filen wpa_supplicant og aktivere ssh på dette trinnet. Men hvis du ikke har tenkt å få en, kan GPIO32/33 brukes som en UART -terminal. Koble TX (GPIO32) og RX (GPIO33) -pinnen til et usb-til-uart-kort og få tilgang til terminalen med overføringshastigheten 115200. Uansett må du få en terminaltilgang til din Pi.
Ved første oppstart vil systemet sette seg fast når du prøver å utvide filsystemet. Ignorer det, trykk på start (enter -tasten på USB HID -tastaturet) og start på nytt. På terminalen, kopier lcd_init -skriptet til brukerens "pi" -mappe og følg trinn 3 for å angi automatisk start. Etter en ny omstart, bør du se skjermen for å lyse opp og vise noe.
For øyeblikket er spillkonsollen klar til å spille. For å laste rom og BIOS til TF -kortet ditt, trenger du imidlertid tilgang til en terminal hver gang. For å gjøre det enkelt, foreslår jeg at du konfigurerer FAT32 -partisjonen.
Sikkerhetskopier først RetroPie-mappen under /home /pi til RetroPie-bck: "cp -r RetroPie RetroPie-bck". Legg deretter til en ny linje i/etc/fstab: "/dev/mmcblk0p3/home/pi/RetroPie standard, uid = 1000, gid = 1000 0 2" for å automatisk montere FAT32 -partisjonen i RetroPie -mappen med å sette eieren til bruker "pi". Etter omstart finner du at innholdet i RetroPie -mappen er borte (hvis det ikke er det, starter du på nytt) og noen feil vises på skjermen. Kopier alle filene i RetroPie-bck tilbake til RetroPie og start på nytt. Feilene bør forsvinne, og du kan konfigurere inndataenheten ved å følge instruksjonene på skjermen.
Hvis du vil legge til rom eller BIOS, kobler du fra TF -kortet når det er slått av og kobler det til datamaskinen. Åpne den tredje partisjonen (HUSK å IGNORERE formattipset !!!) og kopier filene til de tilsvarende mappene.
Trinn 7: 3D -trykt etui og knapper
Jeg designet GameBoy Micro -stiletui for spillkonsollen.
Bare skriv ut
4x ABXY. STL
2x LR. STL (Trenger å legge til støtte)
1x CROSS. STL
1x TOP. STL
1x BUNN. STL
Jeg skriver dem ut med PLA med 20% fyll, 0,2 mm lag, og det er sterkt nok.
Siden saken er stram, må du kontrollere skriverens nøyaktighet med en testkube før du skriver den ut.
Og tre 5 mm lange φ3 mm skruer og fire 10 mm lange φ3 mm skruer må settes sammen.
Trinn 8: Alt sammen og feilsøking
Siden kretsen er litt komplisert, er det et godt valg å gjøre litt PCB -arbeid. Hele skjematisk og min egen PCB -versjon lastes opp på slutten av dette trinnet. Hvis du har tenkt å bruke PCB -versjonen, må du ikke fjerne logoen min på Top_Solder -laget. Det er bedre å lage din egen tilpasning og levere din egen PCB -fil til den lokale produsenten for å få det ut, fordi det er veldig vanskelig å kjøpe alle de samme delene som jeg bruker på min PCB.
Etter å ha loddet alle komponentene på PCB og testet, er det første du må gjøre å laste ned hex -fil til MCU. Fest deretter LCD -modulen på kretskortet. LCD -modulen skal være 3 mm over kretskortet for å passe i etuiet. Bruk litt tykk dobbeltsidig tape for å lime den på. Koble deretter FPC til kontakten og sett inn CM3L- og TF -kortet. IKKE lodde batteriet nå, koble til en USB -strømkilde og start den opp!
Kontroller alle knappene og displayet. Mål spenningen mellom BAT+ og GND, sjekk om spenningen er rundt 4,2V. Hvis spenningen er OK, trekk ut USB -kabelen og lodd batteriet. Prøv strømknappen.
Sett CROSS og ABXY -knappen i TOPP -etuiet, og sett PCB -en i saken. Bruk 3 skruer for å fikse kretskortet i etuiet. Legg til litt tykt dobbeltsidig tape på baksiden av alle SKPDACD010 -knappene, og fest batteriet på den. Bruk tykk tape for å unngå at pinnene på SKPDACD010 skader batteriet. Fest deretter høyttaleren til BOTTOM -saken. Før du lukker det, må du kanskje prøve alle knappene, sjekke om de fungerer og sprette skikkelig. Lukk deretter saken med 4 skruer.
Nyt.
Noen tips til feilsøking:
1) Tredobbelt sjekk pin -tilkoblingen til LCD -modulen på skjematisk og PCB.
2) Før LCD -signaltrådene med lengdebegrensning.
3) Når du ikke er sikker på strømdelene, lodder du og tester hver seksjon ved å følge effektsekvensen. 5V først og deretter 3,3V og 1,8V. Etter at alle kraftdelene er testet, loddes de andre komponentene.
4) Hvis displayet blir uskarpt, prøv å snu polariteten til PCLK -signalet ved å angi dpi_output_format.
5) Hvis displayet er mye utenfor sentrum, prøv å snu polariteten til HSYNC- eller VSYNC -signalet.
6) Hvis skjermen er litt utenfor midten, kan du prøve å justere innstillingene for overskanning.
7) Hvis skjermen er svart, kan du prøve å vente på at systemet starter opp til rc.local -skriptet. Hvis du trenger visning fra starten, kan du prøve å koble SPI -grensesnittet til MCU og bruke MCU til å initialisere LCD -modulen.
8) Hvis displayet er svart hele tiden, sjekk initialiseringssekvensen igjen.
9) Still gjerne spørsmål her eller via e -post: [email protected]
Anbefalt:
Kraftig digital vekselstrømdimmer med STM32: 15 trinn (med bilder)
Kraftig digital vekselstrømdimmer ved bruk av STM32: Av Hesam Moshiri, [email protected] -belastninger bor hos oss! Fordi de er overalt rundt oss og i det minste husholdningsapparater får strøm. Mange typer industrielt utstyr drives også med enfaset 220V-AC
MutantC V3 - modulær og kraftig håndholdt PC: 9 trinn (med bilder)
MutantC V3 - modulær og kraftig håndholdt PC: En bringebær -pi håndholdt plattform med et fysisk tastatur, display- og ekspansjonsoverskrift for tilpassede brett (som Arduino Shield) .mutantC_V3 er etterfølgeren til mutantC_V1 og V2. Sjekk ut mutantC_V1 og mutantC_V2.https: //mutantc.gitlab.io/https: // gitla
Kraftig røykekstraktor på leddarm: 8 trinn (med bilder)
Kraftig røykekstraktor på leddarm: Jeg har hatt et par loddeavtrekk før. Den første hadde ikke nok strøm, og den andre var bare en fast boks uten artikulerende alternativer, i mange tilfeller kunne jeg ikke finne god posisjon for den, den var for lav eller langt bak
Kraftig 3 watt mini lydforsterker !: 9 trinn (med bilder)
Kraftig 3 watt mini lydforsterker!: Hei alle sammen! Velkommen til min instruksjonsfelt, hvor jeg i denne opplæringen vil vise deg hvordan jeg lagde denne lille, men kraftige 1 watt lydforsterkeren som er veldig enkel å lage, krever svært få eksterne komponenter og pakker i en mye kraft for størrelsen
Hvordan bygge en kraftig metall -rc -robottank: 6 trinn (med bilder)
Hvordan bygge en kraftig metall -rc -robottank: Gode venner! Så jeg tenkte på et slags prosjekt som ville være interessant, og jeg bestemte meg for å bygge en tank (plasscrawl) på et skilt som selvfølgelig er bygget helt av metall. 100% Min konstruksjon er av høy kvalitet og nøyaktighet, de fleste deler av ta