Taula de continguts:

Retro-CM3: una potent consola de jocs gestionada per RetroPie: 8 passos (amb imatges)
Retro-CM3: una potent consola de jocs gestionada per RetroPie: 8 passos (amb imatges)

Vídeo: Retro-CM3: una potent consola de jocs gestionada per RetroPie: 8 passos (amb imatges)

Vídeo: Retro-CM3: una potent consola de jocs gestionada per RetroPie: 8 passos (amb imatges)
Vídeo: 🕹️ RETRO CM3 una CONSOLA PORTATIL RETRO que supera a la RG350 2024, Desembre
Anonim
Retro-CM3: una potent consola de jocs gestionada per RetroPie
Retro-CM3: una potent consola de jocs gestionada per RetroPie
Retro-CM3: una potent consola de jocs gestionada per RetroPie
Retro-CM3: una potent consola de jocs gestionada per RetroPie
Retro-CM3: una potent consola de jocs gestionada per RetroPie
Retro-CM3: una potent consola de jocs gestionada per RetroPie

Aquest instructiu s’inspira en el PiGRRL Zero d’Adafruit, la versió original de Gameboy Zero de Wermy i la Consola de jocs Handled de GreatScottLab. Aquelles consoles de jocs basades en RetroPie utilitzen el raspberry pi zero (W) com a nucli. PERUT, després d’haver construït diverses consoles Pi Zero, es van trobar dos problemes principals.

1) El Raspberry Pi Zero (W) només té un sol nucli Cortex-A7 i 512 MB de RAM, cosa que està bé per a les coses NES / SNES / GB. No obstant això, quan vaig intentar executar l'Emus PS / N64, l'experiència va ser bastant inacceptable. Fins i tot alguns dels jocs GBA no poden funcionar sense problemes (alguns retards d’àudio, també en alguns jocs de NEOGEO com Metal Slug quan es tracta d’escenes complicades); 2) La majoria de les versions de consola de jocs utilitzen SPI o sortida de TV com a interfície de visualització. La pantalla SPI necessitarà la CPU per ajudar amb el controlador de memòria intermèdia de trames, cosa que empitjorarà l’experiència del joc i els fps també estan limitats per la velocitat del rellotge SPI. I la qualitat de visualització de la sortida de TV no és prou bona.

En aquest instructiu, utilitzarem el mòdul de càlcul 3 de RaspberryPi i una interfície LCD de la interfície DPI per construir una consola de joc RetroPie. Hauria de poder executar tots els emuladors sense problemes i proporcionar una alta resolució i una alta velocitat de fotogrames.

La mida final de la consola de jocs és de 152x64x18mm amb una bateria de fins a 2000mAh. La construcció total costa uns 65 dòlars, incloent un PCB personalitzat, tots els components, una targeta TF de 16 GB i un mòdul de càlcul RaspberryPi 3 Lite. Com que ja tinc una impressora 3D, la funda només em costa un filament PLA de 64 g.

Anem a començar.

Nota: Atès que l'anglès no és el meu primer idioma, si trobeu algun error o alguna cosa no està clar, si us plau, feu-m'ho saber.

Aquesta és la meva primera publicació a instructable.com i realment necessito tot tipus de suggeriments vostès.

Pas 1: Ingredients

Ingredients
Ingredients
Ingredients
Ingredients
Ingredients
Ingredients
Ingredients
Ingredients

Aquests són els ingredients necessaris per construir la consola de jocs. És possible que algunes de les parts no estiguin disponibles a la vostra regió. Proveu-ne d'altres.

1) El mòdul de càlcul RaspberryPi 3 Lite. Compreu-lo a la botiga on vau obtenir el vostre RaspberryPi 3B o proveu-lo a eBay.

2) LCD de 3,2 polzades amb interfície RGB / DPI. ASsegureu-vos que teniu un mòdul LCD d’interfície RGB / DPI perquè és imprescindible construir aquesta consola. Vaig obtenir la meva pantalla LCD d'una botiga electrònica local i es pot trobar el mateix mòdul a Alibaba. Si compreu un mòdul LCD alternatiu, PREGUNTEU al proveïdor que us enviï el paràmetre detallat i el codi d’inicialització. També és una bona opció comprar els connectors corresponents a la mateixa botiga, ja que hi ha tants tipus de connectors diferents.

3) ALPS SKPDACD010. Interruptor tàctil amb recorregut de 1,75 mm. Cerqueu-lo a la vostra botiga local de components electrònics.

4) Algunes altres tecles. Utilitzeu qualsevol altra tecla tàctil que pugueu obtenir per als botons START / SELECT / VOL + / VOL-.

5) Altaveu. Qualsevol altaveu de 8 ohms, 0,5-1,5 W.

6) Bateria. Vaig escollir la bateria de ions de li de 34 * 52 * 5,0 mm 1S 1000mAh x2.

7) Alguns CI. STM32F103C8T6, IP5306, TDA2822, NC7WZ16, SY8113, PT4103 i etc.

8) Alguns connectors. USB-Micro femella, PJ-237 (presa de telèfon), presa de targeta TF, DDR2 SODIMM i etc.

9) Alguns components passius. Resistències, condensadors i inductors.

10) Un PCB personalitzat. Els fitxers esquemàtics i PCB es proporcionen al final. Recordeu que hi heu de fer canvis si utilitzeu parts alternatives.

11) Una impressora 3D. Assegureu-vos que pugui imprimir peces de fins a 152 * 66 * 10 mm.

12) Prou filament PLA.

Pas 2: el mòdul de càlcul 3

El mòdul de càlcul 3
El mòdul de càlcul 3
El mòdul de càlcul 3
El mòdul de càlcul 3

El mòdul de càlcul 3 de Raspberry Pi és una placa base molt potent per prototipar alguns gadgets d’interès. Es pot trobar una introducció detallada aquí. I aquí es pot trobar informació útil.

El mòdul utilitza un connector tipus DDR2 SODIMM, que és una mica més difícil d’utilitzar. A més, tots els pins GPIO del nucli BCM2837 BANK1 i BANK0 estan fora.

Per començar a utilitzar el mòdul de càlcul, hem de proporcionar diversos voltatges: 1,8V, 3,3V, 2,5V i 5,0V. Entre ells, s’utilitzen 1,8V i 3,3V per alimentar alguns perifèrics que necessiten uns 350mA cadascun. La línia elèctrica de 2,5 V condueix el DAC de sortida de TV i es pot relacionar amb 3,3 V, ja que no necessitem la funció de sortida de TV. El 5.0V hauria d’estar connectat als pins VBAT i alimenta el nucli. L’entrada VBAT accepta voltatges de 2,5V a 5,0V i assegureu-vos que la font d’alimentació pot produir fins a 3,5W. Els pins VCCIO (GPIO_XX-XX_VREF) es poden connectar a 3,3V ja que fem servir un nivell CMOS de 3,3V. El pin SDX_VREF també s'hauria de connectar a 3,3V.

Aquí no s’utilitzen tots els pins HDMI, DSI, CAM, només cal deixar-los flotants. Recordeu que heu de lligar el pin EMMC_DISABLE_N a 3,3 V, ja que utilitzarem una targeta TF com a disc dur en lloc de la funció d’arrencada USB.

A continuació, connecteu els pins SDX_XXX als pins corresponents de la ranura de la targeta TF i no calen resistències pull-up ni pull-down. En aquest pas, estem preparats per arrencar el mòdul de càlcul Raspberry Pi 3. Engegueu la font d'alimentació en un ordre de disminució: 5V, 3,3V i després 1,8V, el sistema hauria de poder arrencar però ja que no hi ha sortida dispositiu, simplement no sabem si funciona bé. Per tant, hem d’afegir una pantalla per comprovar-la al següent pas.

Però abans de continuar, primer hem de dir al Pi quina és la funció de cada GPIO. Aquí proporciono alguns fitxers, poso "dt-blob.bin", "bcm2710-rpi-cm3.dtb" i "config.txt" a la carpeta d'arrencada d'una nova targeta TF. Poseu el "dcdpi.dtbo" a la carpeta / boot / overlay. El dt-blob.bin defineix la funció per defecte de cada GPIO. Canvio el GPIO14 / 15 a GPIO normal i moc la funció UART0 a GPIO32 / 33 ja que necessitem GPIO14 / 15 per connectar-nos amb el mòdul LCD. També li dic al Pi que utilitzi GPIO40 / 41 com a funció pwm i que faci que siguin la sortida d’àudio dreta i esquerra. El dcdpi.dtbo és un fitxer de superposició d’arbre de dispositiu i indica al Pi que utilitzarem GPIO0-25 com a funció DPI. Finalment, escrivim "dtoverly = dcdpi" per conèixer el Pi per carregar el fitxer de superposició que hem proporcionat.

En aquest moment, els Raspberry Pi entenen perfectament quina funció s’ha d’utilitzar per a cada GPIO i estem preparats per seguir endavant.

Pas 3: Interfície del mòdul LCD

Interfície del mòdul LCD
Interfície del mòdul LCD
Interfície del mòdul LCD
Interfície del mòdul LCD
Interfície del mòdul LCD
Interfície del mòdul LCD

Com que es pot utilitzar un mòdul LCD d'interfície DPI / RGB diferent en aquesta consola, aquí prenem com a exemple el mòdul utilitzat en la meva pròpia versió. I si n'heu triat un de diferent, comproveu la definició de pin del vostre mòdul i feu les connexions d'acord amb els noms dels pins tal com es mostra a l'exemple.

Hi ha dues interfícies al mòdul LCD: un SPI i un DPI. L’SPI s’utilitza per configurar els paràmetres inicials de l’IC del controlador LCD i els podem connectar a qualsevol GPIO no utilitzat. Connecteu només els pins Reset, CS, MOSI (SDA / SDI) i SCLK (SCL), no s’utilitza el pin MISO (SDO). Per inicialitzar el controlador LCD, aquí fem servir la biblioteca BCM2835 C per conduir els GPIO i emet una seqüència inicialitzada determinada proporcionada pel proveïdor del mòdul. El fitxer font es pot trobar més endavant en aquesta instrucció.

Instal·leu la biblioteca BCM2835 C en un altre Raspberry Pi 3 segons les instruccions aquí. A continuació, utilitzeu l'ordre "gcc -o lcd_init lcd_init.c -lbcm2835" per compilar el fitxer font. A continuació, afegiu una nova línia al fitxer /etc/rc.local abans de "exit 0": "/ home / pi / lcd_init" (suposem que heu posat l'aplicació compilada a la carpeta / home / pi). Cal remarcar que el fitxer font només s’utilitza per al mòdul determinat que he utilitzat i per a un mòdul LCD diferent, només cal que sol·liciteu al proveïdor una seqüència d’inicialització i modifiqueu el fitxer font en conseqüència. Aquest procés és bastant complicat perquè en aquest moment no es pot veure res des de la pantalla, per això us recomano encaridament que ho feu en una placa RPI-CMIO, ja que porta tots els GPIO perquè pugueu depurar-lo amb uart o wlan.

La següent part és senzilla, només cal que connecteu els pins de l’esquerra del mòdul LCD segons aquí. Depèn del tipus de mòdul LCD que tingueu, trieu el mode RGB amb prudència. Per a mi, aquí he triat el DPI_OUTPUT_FORMAT_18BIT_666_CFG2 (mode 6). Modifiqueu la línia "dpi_output_format = 0x078206" segons la vostra elecció. I si el mòdul LCD utilitza una resolució diferent, ajusteu el paràmetre "hdmi_timings = 480 0 41 60 20 800 0 5 10 10 0 0 0 60 0 32000000" al fitxer aquí.

Si tots els paràmetres són correctes, a la pròxima arrencada del vostre Pi, hauríeu de veure la pantalla a la pantalla després d’un negre de 30 a 40 anys (des de l’alimentació fins al sistema carregarà el vostre script d’inicialització SPI).

Pas 4: teclat i àudio

El teclat i l’àudio
El teclat i l’àudio
El teclat i l’àudio
El teclat i l’àudio

Hem fet amb el nucli i la sortida en els dos darrers passos. Passem ara a la part d'entrada.

Una consola de jocs necessita tecles i botons. Aquí necessitem 10 commutadors ALPS SKPDACD010 com els botons amunt / avall / dreta / esquerra, LR i A / B / X / Y. I les tecles de muntatge superficial 6x6 normals s’utilitzen per a altres botons com ara iniciar / seleccionar i pujar / baixar de volum.

Hi ha dues maneres de connectar els botons amb el Raspberry Pi. Una manera és connectar els botons directament als GPIO del Pi i una altra forma és connectar els botons a una MCU i a la interfície amb el Pi mitjançant el protocol USB HID. Aquí vaig triar el segon, perquè de totes maneres necessitem una MCU per fer front a la seqüència d’encesa i és més segur mantenir el Pi lluny del tacte humà.

Per tant, connecteu les claus al STM32F103C8T6 i, a continuació, connecteu l’MCU al Pi amb USB. Es pot trobar un exemple del programa MCU al final d’aquest pas. Modifiqueu les definicions de pins a hw_config.c i compileu-les amb la biblioteca USB de la MCU que es troba aquí. O bé, podeu descarregar el fitxer hexadecimal directament a la MCU sempre que compartiu les mateixes definicions de pin a l’esquema al final d’aquest instructiu.

Pel que fa a les sortides d’àudio, l’esquema oficial del Raspberry Pi 3 B ofereix una bona manera de filtrar l’ona pwm i el mateix circuit hauria de funcionar perfectament aquí. Una cosa que cal assenyalar és que recordeu afegir la línia "audio_pwm_mode = 2" al final de config.txt per reduir el soroll de la sortida d'àudio.

Per conduir l’altaveu, cal un controlador d’altaveus. Aquí vaig triar el TDA2822 i el circuit és el circuit oficial BTL. Tingueu en compte que la presa de telèfon PJ-327 té un pin de separació automàtica a la sortida dreta. Quan no hi ha cap auricular endollat, el pin 3 es connecta al canal correcte. I tan bon punt es connecten els auriculars, aquest pin es desprèn del canal dret. Aquest pin es pot utilitzar com a pin d'entrada de l'altaveu i l'altaveu silenciarà quan es connectin els auriculars.

Pas 5: el poder

El poder
El poder
El poder
El poder
El poder
El poder

Tornem a la secció d'alimentació i comprovem el disseny d'energia detallat.

Hi ha 3 seccions d’alimentació: el subministrament MCU, el carregador / amplificador i els DC-DC Bucks.

El subministrament MCU es divideix de la resta de fonts d’alimentació perquè el necessitem per realitzar la seqüència de prealimentació. Quan es prem el botó d’engegada, el PMOS connectarà el pin EN del LDO a la bateria per activar-lo. A continuació, s’activa l’MCU (el botó encara es prem). En arrencar l’MCU, comprovarà si es prem el botó d’engegada prou temps. Al cap d’uns 2 segons, si la MCU troba que el botó d’engegada encara està premut, estirarà el pin "PWR_CTL" per mantenir el PMOS encès. En aquest moment, la MCU assumeix el control de la font d'alimentació de la MCU.

Quan es torna a prémer el botó d’engegada durant 2 segons, la MCU executarà la seqüència d’apagada. Al final de la seqüència d'apagada, l'MCU deixarà anar el pin "PWR_CTL" per deixar que el PMOS s'apagui i el subministrament de l'MCU es desactivarà.

La part del carregador / reforçador utilitza l’IC IP5306. Aquest CI té una càrrega de 2,4 A i una descàrrega de 2,1 A, molt integrat per a l’ús del banc de potència i s’adapta perfectament a les nostres necessitats. L'IC pot carregar la bateria, proporcionar una sortida de 5V i mostrar el nivell de la bateria amb 4 LED alhora.

La peça Buck DC-DC utilitza dos buck 3A d’alta eficiència SY8113. El voltatge de sortida es pot programar mitjançant 2 resistències. Per assegurar la seqüència de potència, necessitem primer la MCU per habilitar el Booster. El senyal KEY_IP simularà una pulsació de tecla al pin KEY de l'IP5306 i habilita el reforç intern de 5V. Després d'això, l'MCU activarà el dòlar de 3,3V tirant el pin RASP_EN cap amunt. I després que es proporcionin 3,3 V, el pin EN del dòlar 1,8 V s’eleva i permet la sortida d’1,8 V.

Pel que fa a la bateria, amb dues bateries de ions Li de 1000 mAh n’hi ha prou per a la consola. La mida normal d’aquest tipus de bateria és d’uns 50 * 34 * 5 mm.

Pas 6: Configuració del sistema

Configuració del sistema
Configuració del sistema

En aquest pas, reunirem totes les configuracions.

En primer lloc, heu de descarregar i convertir la imatge RetroPie en una nova targeta TF. Es pot trobar tutorial i descàrrega aquí. Baixeu-vos la versió de Raspberrypi 2/3. Veureu dues particions després de fer flash la imatge: una partició "d'arrencada" de format FAT16 i una partició "Retropie" de format EXT4.

Quan hàgiu acabat, no l'inseriu al Raspberry Pi a l'instant perquè hem d'afegir una partició FAT32 per a les ROMs. Utilitzeu eines de partició com DiskGenius per ajustar la partició EXT4 a uns 5-6 GB i fer una nova partició FAT32 amb tot l’espai lliure que quedi a la vostra targeta TF. Consulteu la imatge que he penjat.

Assegureu-vos que el vostre sistema sigui capaç d’identificar el lector de targetes TF com a dispositiu USB-HDD i veureu 3 particions al vostre explorador. Dos d’ells són accessibles i Windows us demanarà que formateu l’esquerra. NO el formateu !!

Primer obriu la partició "arrencada" i seguiu el pas 2 per configurar les configuracions de pins. O bé, podeu descomprimir boot.zip sota aquest pas i copiar tots els fitxers i carpetes a la partició d’arrencada. Recordeu que també heu de copiar l'script lcd_init compilat a la partició d'arrencada.

Aquí estem preparats per realitzar el primer arrencada, però com que no hi ha cap pantalla, us recomano que utilitzeu una placa RPI-CMIO amb un dispositiu USB WLAN. A continuació, podeu configurar el fitxer wpa_supplicant i habilitar ssh en aquest pas. Tot i això, si no teniu intenció d’obtenir-ne cap, GPIO32 / 33 es pot utilitzar com a terminal UART. Connecteu el pin TX (GPIO32) i RX (GPIO33) a una placa usb-a-uart i accediu al terminal amb la velocitat de transmissió de 115200. Sigui com sigui, heu d’accedir al terminal al vostre Pi.

Al primer arrencada, el sistema es bloquejarà quan intenteu ampliar el sistema de fitxers. Ignoreu-lo, premeu Start (tecla d'inici del teclat USB HID) i reinicieu. Al terminal, copieu l'script lcd_init a la carpeta inicial de l'usuari "pi" i seguiu el pas 3 per configurar l'inici automàtic. Després d'un altre reinici, hauríeu de veure la pantalla per il·luminar-se i mostrar alguna cosa.

En aquest moment, la vostra consola de jocs està preparada per jugar. Tot i això, per tal de carregar roms i BIOS a la vostra targeta TF, heu d’accedir a un terminal cada vegada. Per fer-ho més senzill, us suggerim que configureu la partició FAT32.

Primer feu una còpia de seguretat de la carpeta RetroPie a / home / pi a RetroPie-bck: "cp -r RetroPie RetroPie-bck". A continuació, afegiu una nova línia a / etc / fstab: "/ dev / mmcblk0p3 / home / pi / RetroPie defaults, uid = 1000, gid = 1000 0 2" per muntar automàticament la partició FAT32 a la carpeta RetroPie configurant el propietari a l'usuari "Pi". Després del reinici, trobareu que el contingut de la carpeta RetroPie ja no està (si no és així, reinicieu-lo de nou) i apareixen alguns errors a la pantalla. Torneu a copiar tots els fitxers de RetroPie-bck a RetroPie i reinicieu-lo de nou. Els errors haurien de desaparèixer i podeu configurar el dispositiu d’entrada seguint les instruccions que apareixen a la pantalla.

Si voleu afegir memòries ROM o BIOS, desconnecteu la targeta TF quan estigueu apagada i connecteu-la a l'ordinador. Obriu la 3a partició (RECORDEU per ignorar el consell de format !!!) i copieu els fitxers a les carpetes corresponents.

Pas 7: el cas i els botons impresos en 3D

La funda i els botons impresos en 3D
La funda i els botons impresos en 3D
La funda i els botons impresos en 3D
La funda i els botons impresos en 3D
La funda i els botons impresos en 3D
La funda i els botons impresos en 3D

Vaig dissenyar la funda d’estil GameBoy Micro per a la consola de jocs.

Simplement imprimeix

4x ABXY. STL

2x LR. STL (cal afegir suport)

1x CROSS. STL

1x TOP. STL

1x BOTTOM. STL

Els imprimeixo amb PLA amb un 20% d’ompliment, capa de 0,2 mm i és prou fort.

Com que el cas és ajustat, comproveu la precisió de la impressora amb un cub de prova abans d'imprimir.

I cal muntar tres cargols de mm3mm de 5 mm de llargada i quatre cargols de φ3mm de 10 mm de llargada per muntar-los junts.

Pas 8: tots junts i solucionar problemes

Tot junt i resolució de problemes
Tot junt i resolució de problemes
Tot junt i resolució de problemes
Tot junt i resolució de problemes
Tot junt i resolució de problemes
Tot junt i resolució de problemes
Tot junt i resolució de problemes
Tot junt i resolució de problemes

Com que el circuit és complicat, és una bona opció fer una mica de PCB. Al final d'aquest pas es penja tot l'esquema i la meva pròpia versió de PCB. Si teniu intenció d'utilitzar la meva versió de PCB, si us plau, no traieu el meu logotip de la capa Top_Solder. És millor fer la vostra pròpia personalització i lliurar el vostre propi fitxer de PCB al fabricant local perquè ho faci perquè és molt difícil comprar les mateixes parts que faig servir a la meva PCB.

Després de soldar tots els components del PCB i provar-los, el primer que cal fer és descarregar el fitxer hexadecimal a la MCU. Després, enganxeu el mòdul LCD al PCB. El mòdul LCD hauria de situar-se 3 mm per sobre del PCB perquè encaixés a la caixa. Utilitzeu una cinta de doble cara gruixuda per enganxar-la. A continuació, connecteu l'FPC al connector i inseriu la targeta CM3L i TF. NO soldeu la bateria ara, endolleu una font d’alimentació usb i engegueu-la.

Comproveu tots els botons i la pantalla. Mesureu la tensió entre BAT + i GND, comproveu si la tensió és al voltant de 4,2V. Si el voltatge està bé, desconnecteu el cable USB i soldeu la bateria. Proveu el botó d’engegada.

Col·loqueu el botó CROSS i ABXY a la caixa TOP i poseu el PCB a la caixa. Utilitzeu 3 cargols per fixar el PCB a la caixa. Afegiu una cinta de doble cara gruixuda a la part posterior de tots els botons SKPDACD010 i enganxeu-hi la bateria. Feu servir cinta gruixuda per evitar que els pins de SKPDACD010 facin malbé la bateria. A continuació, enganxeu l’altaveu a la funda BOTTOM. Abans de tancar-lo, potser haureu de provar tots els botons, comprovar si funcionen i rebotar correctament. A continuació, tanqueu la caixa amb 4 cargols.

Gaudeix.

Alguns consells per resoldre problemes:

1) Comproveu triple la connexió del pin del mòdul LCD a l’esquema i al PCB.

2) Encaminar els cables de senyal LCD amb restricció de longitud.

3) Quan no esteu segur de les seccions de potència, soldeu i proveu cada secció seguint la seqüència de potència. Primer 5V i després 3,3V i 1,8V. Després de provar totes les seccions de potència, soldeu els altres components.

4) Si la pantalla es difumina amb freqüència, intenteu invertir la polaritat del senyal PCLK configurant el format dpi_output_format.

5) Si la pantalla està molt descentrada, intenteu invertir la polaritat del senyal HSYNC o VSYNC.

6) Si la pantalla està lleugerament descentrada, intenteu ajustar els paràmetres de sobreescaneig.

7) Si la pantalla és de color negre, intenteu esperar que el sistema s'engegui a l'script rc.local. Si necessiteu visualització des del principi, proveu de connectar la interfície SPI a la MCU i utilitzeu la MCU per inicialitzar el mòdul LCD.

8) Si la pantalla està en negre tot el temps, torneu a comprovar la seqüència d'inicialització.

9) No dubteu a fer qualsevol pregunta aquí o a través del correu electrònic: [email protected]

Recomanat: