collapse

* Posts Recentes

Emulador NES em ESP32 por dropes
[Ontem às 14:14]


Arame de Estendal por almamater
[18 de Abril de 2024, 16:16]


O que é isto ? por SerraCabo
[12 de Abril de 2024, 14:20]


Amplificador - Rockboard HA 1 In-Ear por almamater
[11 de Abril de 2024, 20:46]


Meu novo robô por josecarlos
[29 de Março de 2024, 18:30]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]

Autor Tópico: Emulador NES em ESP32  (Lida 5420 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline dropes

  • Mini Robot
  • *
  • Mensagens: 2.198
Re: Emulador NES em ESP32
« Responder #15 em: 13 de Março de 2024, 21:19 »
Revisão 1:
- Fonte da "bateria" idêntica ao restante texto
- Em modo DEMO, o score mantem-se sempre visível do último jogo
- Adicionada bibilioteca "Adafruit_BusIO" em falta



Este fórum tem andado meio parado... ou melhor, mais parado que o habitual :P

Offline dropes

  • Mini Robot
  • *
  • Mensagens: 2.198
Re: Emulador NES em ESP32
« Responder #16 em: 10 de Abril de 2024, 15:30 »
Com o não sou pessoa de desistir facilmente, e o C tem sido desafiante, estou a tratar de criar um clone do famoso ODROID-GO



Existe até uma página relacionada com este tipo de consola, a 1ª versão foi esta do Odroid-go:
https://www.hardkernel.com/shop/odroid-go/
Esquema (não existe layout da pcb disponível):
https://github.com/hardkernel/ODROID-GO/blob/master/Documents/ODROID-GO_REV0.1_20180518.pdf

Entretanto surgiram outras no site, para emular consolas mais avançadas, maior poder de processamento, memória, wi-fi, câmera, comandos xpto, etc...

Vamos RETRO, mantive os IOs exactamente como na consola original, facilita bastante a gravação de imagens pré-compiladas, sem ter de alterar a configuração no código e voltar a compilar.
Também tentei manter as medidas exteriores:



Display 320x240 (ILI9341) : https://pt.aliexpress.com/item/1005006470481683.html
ESP32-WROVER-E 16MB : https://pt.aliexpress.com/item/1005002186594347.html

obs:
Vou aproveitar o suporte SD, mas ainda não sei se é SD normal ou micro, isso altera o layout da pcb... vamos ver
O som sai do ESP32 via 2 DACs, parece-me familiar, porque não via I2S ?! ;D

obs2:
Encontra-se no Ali consolas emuladoras por 10 ou menos, mas não é a mesma coisa  :)

ps: estive a ver melhor o código e o som é via PWM... bolas, assim não vai funcionar, tenho de ver melhor isso


« Última modificação: 10 de Abril de 2024, 20:58 por dropes »

Offline dropes

  • Mini Robot
  • *
  • Mensagens: 2.198
Re: Emulador NES em ESP32
« Responder #17 em: 19 de Abril de 2024, 15:31 »
Depois de procurar detalhes deste LCD.
Vi alguns vídeos e detalhes da orientação, assim como do controlador.

Não iria realizar uma PCB, para depois ter de rectificar tudo, devido a um lapso parvo.



Ao inicio não dava sinal, dei conta que o RESET do ESP32 tinha um nome diferente no esquema do restante RESET (SD, LCD e Switch).
Depois de uma ponte, iniciava bem, mas dava erro ao ler o cartão SD, então coloquei 6 pull-ups para remediar.
Continuou a dar erro, depois gravei um teste de leitura, enviando o resultado via porta série. Estava a funcionar bem.
Tenho dúvidas se o micro-SD não era compatível com a bibliotaca do ODROID-GO, 1GB deveria dar.

Em desespero, soldei um suporte SD normal (como se pode ver pela foto), e aí 5 estrelas, tudo direitinho.  ;D

Vou fazer nova PCB (assim que testar o restante circuito), e rodar o display 180º... por sorte vou ter de soldar novo suporte SD ao LCD, o original removi de forma +- destrutiva, para não danificar o display.
Assim, o cartão SD já pode ser inserido por cima.

Esta PCB também não correu lá grande coisa, deveria ter usado acetatos sobrepostos. Ficou cheio de pontinhos  :P

Offline dropes

  • Mini Robot
  • *
  • Mensagens: 2.198
Re: Emulador NES em ESP32
« Responder #18 em: 20 de Abril de 2024, 14:22 »
Eis uma configuração de um amp-op que desconhecia:


fonte: https://github.com/hardkernel/ODROID-GO/blob/master/Documents/ODROID-GO_REV0.1_20180518.pdf

O sinal PWM do IO26 tem entrada em IN+ no amp. até aqui tudo bem.

Entretanto a saída IO25 também tem o seu condensador 0.1 e resistência de 100k em série para este amp.
Mas neste caso a única função deste sinal é para o /SD pino 6 (/MUTE).
Tanto no código assim como no osciloscópio, este sinal é apenas digital, nunca PWM.

Dúvidas, mas qual o objectivo de se usar um sinal, como se fosse analógico, confunde-me?!   ???



Offline jm_araujo

  • Mini Robot
  • *
  • Mensagens: 2.950
  • NERD!
Re: Emulador NES em ESP32
« Responder #19 em: 20 de Abril de 2024, 15:24 »
Se vires a datasheet desse amplificador classe D (não é um opamp), o in- é recomendado ligar com o condensador e resistência ao GND. Como tem o condensador tanto faz, desde que seja uma tensão estável. Talvez tenham ligado ao io25 porque dava mais jeito no routing?

Offline KammutierSpule

  • Mini Robot
  • *
  • Mensagens: 1.483
Re: Emulador NES em ESP32
« Responder #20 em: 20 de Abril de 2024, 16:22 »
Tanto no código assim como no osciloscópio, este sinal é apenas digital, nunca PWM.

Sinal digital no osciloscopio? queres partilhar?
Será que é um PulseDensityModulation?

O resto do circuito é normal, um amplificador de audio.

Offline dropes

  • Mini Robot
  • *
  • Mensagens: 2.198
Re: Emulador NES em ESP32
« Responder #21 em: 20 de Abril de 2024, 17:16 »
Se vires a datasheet desse amplificador classe D (não é um opamp), o in- é recomendado ligar com o condensador e resistência ao GND. Como tem o condensador tanto faz, desde que seja uma tensão estável. Talvez tenham ligado ao io25 porque dava mais jeito no routing?
Sim, parece ser classe D.
O IN- (Negative Differential Input) deveria ficar com metade da tensão da alimentação, ou ligado com um condensador ao GND, como exemplificado pela datasheet.
Não me parece que ligar a um sinal lógico ou a uma saída flutuante seja o mais correcto.

Tanto no código assim como no osciloscópio, este sinal é apenas digital, nunca PWM.

Sinal digital no osciloscopio? queres partilhar?
Será que é um PulseDensityModulation?

O resto do circuito é normal, um amplificador de audio.

Até que posso partilhar o sinal, mas é só 3V ou 0V quando em mute. Não é interessante  ;)
O único sinal PWM é apresentado em IO26.
Ao se ajustar o volume (via switch), IO25 mantém-se a 3V, mas quando o volume é mínimo, este sinal passa a 0V.

Conclusão, no seu funcionamento normal (com som), o terminal IN- está ligado a 3V (sinal lógico) através de um condensador e uma resistência.

Offline jm_araujo

  • Mini Robot
  • *
  • Mensagens: 2.950
  • NERD!
Re: Emulador NES em ESP32
« Responder #22 em: 21 de Abril de 2024, 09:05 »
Uma coisa que me estava a fazer confusão: o IO26 é DAC, e não PWM como indicado.Um sinal PWM ligado diretamente a um amplificador classe D sem um passa baixo primeiro não ia funcionar muito bem (been there, got the T-shirt).
A reproduzir som de consola antiga, com som rudimentar (bip-bop-bip) pode parecer PWM mas não é a mesma coisa, PWM para áudio tem de ter uma frequência fora da audição humana para não ser audível.

Tens uma explicação do circuito aqui: https://austinmorlan.com/posts/odroid_6/
« Última modificação: 21 de Abril de 2024, 09:10 por jm_araujo »

Offline dropes

  • Mini Robot
  • *
  • Mensagens: 2.198
Re: Emulador NES em ESP32
« Responder #23 em: 21 de Abril de 2024, 11:55 »
Concordo totalmente, PWM tem de levar um filtro à saída.
Obrigado pela informação, estava mesmo convencido que o sinal era PWM.  :)

Segundo o código exemplo, está configurado para PWM 13b, o que corresponde a 5kHz no máximo.
Então o emulador processa o som de forma diferente dos exemplos...arg

Interessante este artigo, vou averiguar mais  ;)

"That means to use the amp we must not use IO25 as a DAC but instead as an always-high GPIO output. But that also then sets IN- high which is not what the amplifier datasheet recommends (it should be ground). We must then use the DAC that is connected to IO26 as our I2S output to be fed into IN+. This does not achieve the expected noise-elimination because IN- is not connected to ground. There is a constant soft fuzz of noise coming out of the speakers at all times."

Bem me parecia que algo não estava bem  ::)

Esta versão já não está a ser comerciada, entretanto é um bom princípio de aprendizagem.

V2 e 93 vias depois  :P



Offline dropes

  • Mini Robot
  • *
  • Mensagens: 2.198
Re: Emulador NES em ESP32
« Responder #24 em: Ontem às 14:14 »
Desde já, peço desculpa pela qualidade das fotos, colocar as pontas enquanto seguro no telemóvel e tirar uma fotografia, é muito malabarismo.

Configuração osciloscópio para 200uS:


Sinal após amplificado:


Sinal com filtro passa baixo de 1ª ordem:


Circuito em causa (entrada e saída em paralelo):


Para consola, não exige som muito alto, este amplificador toma conta do recado, e o som tem uma qualidade aceitável.
Nas medições, observei uma frequência residual de 50kHZ, é incomodativo, e o filtro ajudou um pouco.

Este é composto por C30-R31-C31.

No inicio coloquei 100nF em C31, resultado na foto acima.
Entretanto abafava demasiado e acabei por trocar por um de 47nF.
Atenuação ficou em 23db para 50kHz aproximadamente.

Poderia ir para outro tipo de amplificador e desenhar um filtro de 2ªordem activo mais eficiente.

Estar tudo a funcionar, é gratificante  :)
« Última modificação: Ontem às 18:30 por dropes »