Game Boy com Pi Zero - Parte 2
Nesta segunda parte do projeto fiz os testes de usar os botões com micro switch pela GPIO, saída de áudio também pela GPIO e imprimi o case.
O case ficou perfeito para a tela que tenho, encaixou com precisão milimetrica, imprimi também (em laranja) um apoio para a tela que servirá de apoio para a placa de controle da tela e será onde parte do case traseiro será parafusado.
Abaixo segue algumas fotos da impressão:
Botões do controle pela GPIO:
O teste para fazer o controle com botões ligados na GPIO funcionou perfeitamente. O programa da Adafruit é bem simples, depois de instalado ele simula teclas de um teclado em cada pino da GPIO. Os detalhes estão aqui:
https://learn.adafruit.com/pigrrl-2/software#installing-keypress-retrogame-support-4-9
Para instalar basta usar os comandos:
O primeiro comando baixa o script, o segundo da permissão de execução no script e o terceiro executa. Após a execução basta escolher "1. PiGRRL 2 controls" e rebootar. Será criado um arquivo /boot/retrogame.cfg então basta edita-lo de acordo com algum teclado que já esteja configurado, ou configurar o teclado de acordo com o arquivo. O teclado é configurado no menu do Retropie em configure input. O arquivo retrogame.cfg segue o padrão:
Onde a primeira coluna é a tecla do teclado, a segunda é a referencia da GPIO(não é o pino) e a terceira é o comentário de qual botão será acionado no jogo/menu seguindo o padrão SNES. Abaixo segue a numeração da GPIO onde seguindo o arquivo acima por exemplo, a tecla Z do teclado aciona a GPIO 20 e o botão "X". A GPIO 20 é o pino 38. A primeira coluna pode ser alterada livremente de acordo com a configuração que foi feita no teclado.
Áudio pela GPIO:
Para a saída de áudio, novamente segui a dica da Adafruit:
https://learn.adafruit.com/adding-basic-audio-ouput-to-raspberry-pi-zero/pi-zero-pwm-audio
Eu fiz por DTO, que era o mais simples e funcionou de primeira, bastando adicionar a linha:
No arquivo de configuração:
Os pinos de saída de áudio serão:
GPIO #13 (pin #33) como PWM1
GPIO #18 (pin #12) como PWM0
Lembrando que se for usar a GPIO para o controle como eu estou fazendo, estes pinos não podem ser os mesmos de algum do controle. Acima eu mostrei como alterar o do controle. A eletrônica usada é bem simples, é apenas um filtro e seus componentes não são críticos, podendo usar valores próximos. Os diodos de proteção do circuito não são necessários, a não ser que você pretenda ligar tensões na saída :) Este circuito não é amplificado, ele até alimenta um fone de ouvido bem por sua impedância ser alta, mas um auto falante por menor que seja ele não consegue. Minha ideia é usar um amplificador PAM8403 ou algo parecido para amplificar o auto falante que fica no canto inferior direito, além de deixar uma saída P2 para o fone de ouvido.
O case ficou perfeito para a tela que tenho, encaixou com precisão milimetrica, imprimi também (em laranja) um apoio para a tela que servirá de apoio para a placa de controle da tela e será onde parte do case traseiro será parafusado.
Abaixo segue algumas fotos da impressão:
Botões do controle pela GPIO:
O teste para fazer o controle com botões ligados na GPIO funcionou perfeitamente. O programa da Adafruit é bem simples, depois de instalado ele simula teclas de um teclado em cada pino da GPIO. Os detalhes estão aqui:
https://learn.adafruit.com/pigrrl-2/software#installing-keypress-retrogame-support-4-9
Para instalar basta usar os comandos:
cd
curl https://raw.githubusercontent.com/adafruit/Raspberry-Pi-Installer-Scripts/master/retrogame.sh >retrogame.sh
sudo chmod +x retrogame.sh
sudo bash retrogame.sh
O primeiro comando baixa o script, o segundo da permissão de execução no script e o terceiro executa. Após a execução basta escolher "1. PiGRRL 2 controls" e rebootar. Será criado um arquivo /boot/retrogame.cfg então basta edita-lo de acordo com algum teclado que já esteja configurado, ou configurar o teclado de acordo com o arquivo. O teclado é configurado no menu do Retropie em configure input. O arquivo retrogame.cfg segue o padrão:
LEFT 4 # Joypad left
RIGHT 19 # Joypad right
UP 16 # Joypad up
DOWN 26 # Joypad down
LEFTCTRL 14 # 'A' button
LEFTALT 15 # 'B' button
Z 20 # 'X' button
X 18 # 'Y' button
SPACE 5 # 'Select' button
ENTER 6 # 'Start' button
A 12 # Left shoulder button
S 13 # Right shoulder button
Onde a primeira coluna é a tecla do teclado, a segunda é a referencia da GPIO(não é o pino) e a terceira é o comentário de qual botão será acionado no jogo/menu seguindo o padrão SNES. Abaixo segue a numeração da GPIO onde seguindo o arquivo acima por exemplo, a tecla Z do teclado aciona a GPIO 20 e o botão "X". A GPIO 20 é o pino 38. A primeira coluna pode ser alterada livremente de acordo com a configuração que foi feita no teclado.
Áudio pela GPIO:
Para a saída de áudio, novamente segui a dica da Adafruit:
https://learn.adafruit.com/adding-basic-audio-ouput-to-raspberry-pi-zero/pi-zero-pwm-audio
Eu fiz por DTO, que era o mais simples e funcionou de primeira, bastando adicionar a linha:
dtoverlay=pwm-2chan,pin=18,func=2,pin2=13,func2=4
No arquivo de configuração:
/boot/config.txt
Os pinos de saída de áudio serão:
GPIO #13 (pin #33) como PWM1
GPIO #18 (pin #12) como PWM0
Lembrando que se for usar a GPIO para o controle como eu estou fazendo, estes pinos não podem ser os mesmos de algum do controle. Acima eu mostrei como alterar o do controle. A eletrônica usada é bem simples, é apenas um filtro e seus componentes não são críticos, podendo usar valores próximos. Os diodos de proteção do circuito não são necessários, a não ser que você pretenda ligar tensões na saída :) Este circuito não é amplificado, ele até alimenta um fone de ouvido bem por sua impedância ser alta, mas um auto falante por menor que seja ele não consegue. Minha ideia é usar um amplificador PAM8403 ou algo parecido para amplificar o auto falante que fica no canto inferior direito, além de deixar uma saída P2 para o fone de ouvido.
*Estou postando todo o processo de montagem no forum Retro Games Brasil também, qualquer duvida que surgir não deixe de postar lá:
https://retrogamesbrasil.net/showthread.php?tid=310
Comentários
Postar um comentário