Agora que estou de férias, posso dedicar mais tempo aos projetos. Porém também é preciso se estressar com outra coisa, como video-games, por exemplo. Aqui tenho um Mega Drive e um SNES para jogatinas old-school. A prpósito, eu fiz um projeto em que reprogramo cartuchos de SNES, vale a pena conferir. Ambos os consoles são do período 16 bits, porém infelizmente eu nunca tive um NES, que é 8 bit.
No entanto, tinha um raspberry pi zero parado aqui e que é perfeito pra emular consoles antigos desde o NES até alguns mais recentes como o PSX. Pesquisei um pouco sobre o assunto, depois decidi que as minhas intenções eram:
- Vídeo e áudio analógicos. Eu nem tenho TV com HDMI, tá bom, eu sei que já é 2017 e tal, mas tipo, eu sou pobre. Poderia usar meu monitor LCD, porém CRTs são perfeitos para jogos antigos de qualquer forma.
- USB fêmea do tipo A. Para conectar controles sem necessidade de cabos adaptadores adicionais.
- Terminar o projeto o mais rápido possível, pra não perder o interesse haha. Consegui em uma tarde + parte da noite.
Montagem
Nada difícil. O seguinte esquema mostra a conexão dos componentes. Claro que se fosse usar a saída HDMI, nada disso seria necessário. Bom, a USB talvez, né? A porta USB e os conetores de video e áudio foram tirados da sucata mesmo.
Minha ideia inicial era fazer uma especie de “shield” que pudesse ser removido completamente do raspberry. Para isso eu utilizei um pedaço de placa perfurada (como sempre). Uma CNC faz muita falta nessa vida.
Comecei soldando a saída de vídeo. Basta conectar o centro do conector ao pino TV no rapberry pi. Esse fio provavelmente deveria ser blindado, pois depois tipo um pouco de interferência(60Hz) no som que acho que é causado pelo sinal de vídeo.
Depois soldei um header pra conectar um conversor USB-Serial. Acessar o raspberry pela serial nesse caso se mostrou muito trabalhoso. Preferi depois utilizar um HUB USB e acessar o terminal pelo teclado mesmo.
Aqui que começa a decepção. Queria utilizar um cabo USB para conectar o “shield” a USB do raspberry, assim poderia retirar facilmente o raspbery da placa. Infelizmente não achei nenhum cabo quebrado aqui e também não ia cortar um de propósito. Então acabei soldando a USB fêmea diretamente a placa, através dos test pads.
Como o raspberry Pi não tem saída analógica de áudio, é preciso adicionar um filtro passa baixa ao circuito. Esse filtro retira a parte de alta frequência(50kHz) do sinal PWM, deixando as componentes do espectro audível (<20kHz). Esse circuito é do post da Adafruit sobre áudio no pi zero.
O circuito do filtro é o seguinte:
No meu projeto só usei uma saída de áudio, porque a tv daqui só tem uma entrada(mono) de qualquer forma. Conectei a saída de áudio na minha placa ao pino 18.
Para que a saída de áudio funcione, é preciso ainda fazer uma pequena mudança na configuração do retropie. Isso é explicado mais abaixo em detalhe.
Download do Retropie
Baixei a versão para rapberry pi 0 ou 1. O processo de transferência para o cartão SD é o mesmo usado para o Raspbian ou outros SOs para o raspi. Há uma guia de instalação na página. Resumindo, basta extrair o arquivo que vem compactado e gravar no cartão SD com Win32 Disk Imager.
Configuração de uma saída de áudio analógica
O raspberry-pi não tem saída de áudio analógico por default. É preciso redirecionar o áudio para algumas GPIOS com PWM.
O processo é extremamente simples. Primeiro conecte um teclado ao raspberry e abra o terminal do retropie pressionando F4.
Navegue até a pasta boot (cd /boot/). No meu teclado o “/” não estava funcionando, então usei:
cd .. cd .. cd boot
Abra o arquivo config.txt com privilégios de admin.
sudo nano config.txt
Adicione a seguinte linha ao fim do arquivo:
dtoverlay=pwm-2chan,pin=18,func=2,pin2=13,func2=4
Salve o arquivo pressionado Ctrl-X e Y para confirmar a atualização do arquivo.
Volte para a interface gráfica digitando
emulationstation
Reinicie o raspberry, agora o som já deve estar disponível nos pinos 13 e 18 .
Adicionando ROMs
O processo é explicado nessa página. Resumindo, é preciso criar uma pasta chamada retropie em um pendrive formato em FAT32, depois colocar esse pendrive no raspberry e esperar a luz parar de piscar. Se seu pen drive não tem um LED, boa sorte.
O retrpie cria várias pastas dentro da pasta retropie no pendrive. Feito isso basta colar suas ROMs na pasta do respectivo sistema, por exemplo, ROMs de NES na pasta ‘nes’. Conectar o pendrive ao retropie e esperar as ROMs serem copiadas.
Conclusão
Para algo que foi feito as pressas, até que fiquei surpreso. A coisa funciona quase que perfeitamente, há uma interferência quase imperceptível a 60Hz no som, porém é o que se ganha quando se faz um circuito com tanta preguiça como fiz esse. Tenho quase certeza que essa interferência é do sinal de vídeo, quando soldar um fio blindado faço um update aqui.
Por enquanto é isso. Obrigado pela leitura.
Até um próximo post o/.
Antes de qualquer coisa parabéns pela postagem. Encontrei sua página procurando uma solução pra áudio analógico com o rpi0. Estava quebrando a cabeça. Me salvou. E pelo visto há muito mais conteúdo de qualidade. Favoritado. Mais uma vez parabéns pela clareza no artigo.
Obrigado, Rafael.
Fico feliz de ter ajudado.
Abraço
Robson
Boa tarde amigo, parabéns pela matéria! Vou comprar os componentes e fazer esse experimento em meu rpi zero.
Eu tenho uma dúvida em relação ao RPI e talvez você saiba me responder!
Gostaria de colocar mais uma entrada USB para dados (No caso gostaria de colocar mais um joystick).
Você sabe se existe a possibilidade de colocar mais um USB na placa? Pois pesquisei em tudo que me foi possível e não encontrei nada em relação a isso sem utilizar um HUB
Desde já agradeço
eu uso 2 controles de ps2 com aquele adaptador AZUL conversor de controle ps2 para PC que tem 2 saida de controle com cabo OTG para usb comum