Skip to content

carlos8v/gamepi-advance

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Projeto

Montar um videogame portátil com o formato de um gameboy advance utilizando um Raspberry Pi Zero 2W.

Componentes

  • Raspberry Pi Zero 2W
  • Gameboy Advance Case
  • Bateria de lítio (1000mAh 3.7v)
  • Botão de ligar/desligar (power switch)
  • Módulo de carregamento de bateria (5v)
  • Entrada USB tipo C
  • Tela LCD TFT 2.8'' (240x320)
  • Alto falante
  • Amplificador de alto falante I²S
  • Conector de fone de ouvido

Circuito

Circuito


Configurações

Sistema operacional

O sistema operacional usado será o retropie. Siga a instalação normalmente com base no tutorial disponibilizado pelo site.

Configuração de tela LCD

Adicione a configuração de tela no arquivo /boot/config.txt:

-hdmi_group=2
+hdmi_group=2
+hdmi_mode=87
+hdmi_cvt=320 240 60 1 0 0 0 # Configuração para tela 320x240
+hdmi_force_hotplug=1

-dtparam=i2c_arm=on
+#dtparam=i2c_arm=on
-dtparam=i2s_arm=on
+#dtparam=i2s_arm=on
-dtparam=spi=on
+#dtparam=spi=on

Instalação do driver:

Warning

Nesse exemplo GPIO5 e GPIO6 serão usados para comunicação com a tela LCD. Mude o número dos gpio se a sua configuração for diferente.

# Instalação
sudo apt install cmake
cd ~
git clone https://github.com/juj/fbcp-ili9341.git
cd fbcp-ili9341
mkdir build
cd build
cmake -DILI9341=ON -DGPIO_TFT_DATA_CONTROL=5 -DGPIO_TFT_RESET_PIN=6 -DSPI_BUS_CLOCK_DIVISOR=6 -DSTATISTICS=0 -USE_DMA_TRANSFERS=ON ..
make -j

# Teste a tela
sudo ./fbcp-ili9341

Para deixar a tela sempre ligada, adicione a seguinte linha no /etc/rc.local:

# Inicializar driver de tela
sudo /home/pi/fbcp-ili9341/build/fbcp-ili9341 &

Configuração de áudio

Adicione a configuração de inicialização de áudio no arquivo /boot/config.txt:

-dtparam=audio=on
+#dtparam=audio=on
+dtoverlay=hifiberry-dac
+dtoverlay=i2s-mmap

Crie o arquivo /etc/asound.conf com a configuração do driver de áudio:

pcm.hifiberry {
	type hw card 0
}

pcm.dmixer {
	type dmix
	ipc_key 1024
	ipc_perm 0666
	slave {
		pcm "hifiberry"
		period_time 0
		period_size 1024
		buffer_size 8192
		rate 44100
		channels 2
	}
}

ctl.dmixer {
	type hw card 0
}

pcm.softvol {
	type softvol
	slave.pcm "dmixer"
	control.name "PCM"
	control.card 0
}

ctl.softvol {
	type hw card 0
}

pcm.!default {
	type plug
	slave.pcm "softvol"
}

Teste o áudio com o comando:

speaker-test -c2 --test=wav -w /usr/share/sounds/alsa/Front_Center.wav

Configurações de áudio no sistema RetroPie:

  • Audio card: DEFAULT
  • Audio device: PCM
  • OMX player audio device: BOTH

Configuração de controle

Usando o comando gpio config é possível configurar os botões do controle. Segue lista de botões disponíveis de acordo com o circuito:

  • Dpad UP (pin 5)
  • Dpad DOWN (pin 8)
  • Dpad LEFT (pin 3)
  • Dpad RIGHT (pin 10)
  • Start (pin 13)
  • Select (pin 15)
  • A (pin 36)
  • B (pin 37)
  • Left Trigger 1 (pin 11)
  • Right Trigger 1 (pin 33)

Configurações avançadas

Controle de áudio

Para configuração de áudio, devemos criar dois comandos no GPIOnext com gpionext config:

Aumentar vôlume:

/usr/bin/amixer -q -c 0 sset PCM 5%+

Diminuir vôlume:

/usr/bin/amixer -q -c 0 sset PCM 5%-

Nesse exemplo, os botões para as ações serão:

  • Select (pin 15) + RIGHT (pin 10): Aumentar volume
  • Select (pin 15) + LEFT (pin 3): Diminuir volume

Controle de brilho de tela

Se a tela tem a opção de controle de brilho (backlight) é possível configurar um GPIO para:

  • Durante iniciação de sistema ligar brilho
  • Durante desligamento de sistema desligar o brilho
  • Diminuir brilho em caso de inatividade

Warning

Nesse exemplo serão usados para ajuste de brilho da tela LCD o GPIO12. Mude o número do gpio se a sua configuração for diferente.

  1. Instale a biblioteca WiringPi:
# Instalação da biblioteca
cd ~
git clone https://github.com/WiringPi/WiringPi.git
cd WiringPi
sudo ./build

# Teste da biblioteca
gpio -v
  1. Crie o script de ajuste de brilho:

O caminho será home/pi/scripts/screen.py e o conteúdo deve ser o mesmo do arquivo extras/screen.py

  1. Adicione o arquivo que salvará o valor de brilho no sistema:
echo "1024" > /home/pi/scripts/screen.log
  1. Ajuste o arquivo de /etc/rc.local para inicializar as configurações de brilho:
# Inicializar driver de tela
sudo /home/pi/fbcp-ili9341/build/fbcp-ili9341 &

+#Inicializar brilho de tela
+python3 /home/pi/scripts/screen.py -q init
  1. Adicione os comandos de ajuste de brilho no GPIOnext:
gpionext config

Aumentar brilho:

python3 /home/pi/scripts/screen.py -q increment

Diminuir brilho:

python3 /home/pi/scripts/screen.py -q decrement

Nesse exemplo, os botões para as ações serão:

  • Select (pin 15) + UP (pin 5): Aumentar brilho
  • Select (pin 15) + DOWN (pin 8): Diminuir brilho
  1. (OPCIONAL) Adicione as seguintes linhas no arquivo /boot/config.txt desligar o brilho de tela ao desligar o console:
# Setup backlight control pin to output mode with LOW value
dtoverlay=gpio-poweroff,active_low,gpiopin=12,timeout_ms=100
gpio=12=op,dl,pn

É possível que os comandos já estejam mapeados para outra ação no retroach, se for o caso, edite o comando conflitante no arquivo /opt/retropie/configs/all/retroarch-joypads/GPIOnext Joypad 1.cfg


Metas

Etapas para finalização do projeto:

  • Configuração de tela LCD
  • Configuração de energia
    • Conectar entrada USB para carregamento de bateria
    • Conectar botão de ligar/desligar
    • Conectar bateria de lítio ao circuito
  • Configuração de som
    • Habilitar som do alto falante
    • Habilitar som do conector de fone
    • Configurar troca de fonte de som de acordo com fone conectado
    • Configurar controle de volume
  • Configuração dos controles
    • Criar circuito dos botões e Dpad
    • Configurar controle de som
    • Configurar controle de brilho

Referências

About

Videogame portátil utilizando Raspberry Pi Zero 2W

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages