Hacking Genius (Simon) I - Hardware

Nível 3 - 20

Dia desses ganhei um Genius, aquele game lá dos anos setenta que foi lançado no Brasil pela Estrela. Foi o primeiro game eletrônico que aportou por essas plagas. Custava uma grana, então só meus amigos riquinhos é que tinham, e eu jogava na casa deles.

Naquela época eu pensava: o que será que acontece quando chega-se ao fim do game? Aliás, quando será que se chega ao final?

Quando comecei a brincar de Arduino uma das primeiras coisas que fiz foi  um brinquedo que funcionava da mesma forma, como vcs podem ver aqui. Mas o mistério continuou, até que...

Tempos atrás um destes caiu nas minhas mãos. Resolvi então chegar ao fim do túnel, quer dizer, do game. Como não tenho competência para ganhar nem no modo mais fácil, resolvi hackeá-lo com a ajuda do Arduino.

A ideia foi arrumar uma maneira de "ler" as cores indicadas pelo game e "apertar" os botões correspondentes.

Para descobrir isso, primeiro foi necessário desmontar o bicho:


Essa é a placa do jogo. Simples, com dois CIs, um deles (MB4850) é o processador do game e o outro (SN7594N), comandado por esse, faz o acendimento das lâmpadas e também comanda o alto-falante.

O MB4850, é uma variação do processador TMS1100 da Texas Instruments, que foi programado pelo fabricante especificamente para o game. É que na época não tinha esse negócio de usuário programar chip, o chip era fabricado contendo a programação. Bons tempos esses dos Arduinos da vida, não?

É um processador de 4 bits(!), com 8 k bits de ROM e 256 bits de RAM. Aqui nesse link tem uma boa discussão sobre o Simon, os processadores etc. Pena que só achei isso depois do meu projeto terminado, teria apanhado menos... mas me divertido menos tb, não é verdade?


Observe que, como não haviam LEDs na quena época, o bicho usava lâmpadas incandescentes, parecidas com as que encontramos em carros mais antigos dentro do porta-luvas.

Vem até uma sobressalente lá dentro, just in case, como vc pode ver na foto abaixo (que não ficou lá essas coisas, reconheço).


A primeira providência foi bolar uma fonte de alimentação alternativa pro bicho, já que ele usa nada menos que 6 (seis!) pilhas, sendo duas delas daquelas grandonas que nem sei se são fabricadas ainda. Já me disseram que fabricam-se adaptadores na China, mas eu resolvi por aqui mesmo.

Analisando o circuito (infelizmente não tenho uma imagem da placa antes do hackeamento, sorry), vi que ele usava as pilhas grandes para acender as lâmpadas, enquanto que as grandes + as pequenas (AA) eram usadas para manter o circuito fuincionando.

Isso dava um total de 9 V para o circuito e 3 V para as lâmpadas. Pensei então: "mole: ligo uma fonte de 9V, alimento o circuito com ela e em seguida passo por um regulador 3,3 V e boa".

Ainda bem que tenho amigos mais experientes com eletrônica analógica. Ao discutir o projeto com o Euclides, ele já disse:

- Nananinanão! Vc vai é queimar o regulador, porque ele não vai suportar reduzir de 9 para 3,3 V, é muito pequenininho e nem tem jeito de por um dissipador de calor... vai rolar não.

Assim sendo, resolvi ligar um regulador de 5 V em série com um de 3,3V. Ficou assim então o circuito:


Primeiro na proto. A entrada do circuito é esse fio que parte da fita isolante. O regulador grande é o de 5 V. O fio laranja conecta a saída de um na entrada do outro, e o outro fio vermelho que sai por cima conecta o regulador de 3V3 ao Genius. Os fios azuis? "Terras", né bicho? Os verdes? Restos de outra montagem... :)


Depois, montou-se a plaquinha, soldada bymyself, com muito orguuuuulhooo, com muito...


E aqui já instalado dentro do Genius. Coloquei um plug tipo "fêmea do Arduino" para conexão externa da fonte.

Em seguida, passei a estudar como conectar o bicho.

Para as lâmpadas bastaria um fio, do lado em que o sinal mudasse. Normalmente o sinal "aterraria" quando a lãmpada é acesa, mas não foi o que aconteceu. Na verdade a tensão varia de uns 3V para pouco menos de 1. De toda forma, soldamos fios em cada lâmpada, do lado em que a tensão baixa quando a lâmpada acende.

Da mesma forma bastaria ligar um fio em cada interruptor, do lado que se altera mais. Acontece que não rolou, porque passa uma corrente grande demais pelo botão, o Arduino não dá conta de aterrá-lo. Então parti para soldar dois fios, um de cada lado dos interruptores, e conectá-los a alguma outra coisa que pudesse substituí-los.

Vale dizer que a ideia sempre foi hackear o Genius sem comprometer o seu funcionamento normal nem alterar o circuito de nenhuma forma. Uma alteração que facilitaria a vida por exemplo seria trocar as lâmpadas por LEDs, que consomem muito menos energia, mas nem isso foi feito.

Abaixo a placa com as conexões soldadas. Usamos uma fita dessas antigas de ligar HD. Ela tinha vinte fios e fizemos exatamente vinte conexões, então deu certim:

- 2 conexões por botão de jogo x 4 botões: 8 fios
- 2 conexões por botão de controle x 3 botões: 6 fios
- 1 conexão por lâmpada x 4 lâmpadas: 4 fios
- Terra e Vcc: 2 fios, total 20 fios.

A conexão de alimentação serve tanto para se alimentar o Genius quanto para, caso haja a fonte conectada ao Genius, alimentar o Arduino.



As conexões 17 e 18 acima, por exemplo, acionam um dos botões, enquanto que a 16 monitora o acendimento da lâmpada correspodente (mesma cor).

As conexões 6,8,9,10,11,12 são dos botões de controle. Por enquanto não as usaremos.

Soldados os fios, conectado o regulador, partimos para fazer os testes. De cara deu prá ver que o regulador de 5V não estava aguentando, queimei o dedo nele após poucos minutos de funcionamento.

Pensei em ligar dois em paralelo para dividir a corrente, mas antes de testar resolvi conectar uma fonte de 6V e... funcionou!

Abaixo mais 2 imagens do bicho aberto. Observem o cone de papel em torno do altofalante... bem tosco, né... e funciona!



Aqui o equipamento pronto, conectado a um Arduino Nano.


Aqui o detalhe, mostrando as conexões. Eu tive que ligar esses dois resistores aí porque a minha fonte é de 6V e pouco. De início liguei a fonte direto no Vin, para que o regulador do Arduino fizesse o serviço de rebaixá-la a 5V. Acontece que não rolou, o Vin não alimenta a placa, não sei se tem problema na minha placa...



Aí tive que ligar direto no 5V do Arduino. Para isso coloquei dois resistores em paralelo para provocar uma queda de tensão de 1V e pouco, de maneira a não estressar o Arduino.

Como chave para substituir os botões pensei em usar relés, a escolha óbvia. Resolvi testar com optoacopladores e... não é que funcionou? Usei quatro 4N25, um prá cada chave. Um pino digital do Arduino aciona o fotodiodo que conecta os dois fios do outro lado.

E, por fim, a bagaça a funcionar:



É isso. No próximo post, os softwares de teste e o programa final.

Comentários

  1. Olá, sei que esse post é antigo, mas eu tenho um genius antigão e quero muito somente adaptar ele pra colocar uma fonte "essas pilhas grandes são caras" vc pode me ajudar??? seria incrível, agradeço de coração.

    ResponderExcluir
    Respostas
    1. Eduardo, só vi sua mensagem hoje.

      Sim, claro, e é bem simples. Não sei sua experiência em eletrônica, mas veja na última figura acima em que ele aparece aberto.

      Do lado esquerdo está o que fiz para poder ligá-lo numa fonte, e tem a descrição no texto, tb. Usei dois reguladores em série, um de 5V que recebe a tensão da fonte (que deve ser no máximo de 6V) e a saída desse de 5V liguei num regulador de 3,3 V, que usei para alimentar o circuito.

      Troquei tb as lampadinhas por LED, pra diminuir o consumo. Não sei se os reguladores aguentariam alimentar o Gênius com as lâmpadas originais, pode ser que sim.

      Excluir
  2. Sabe me dizer a voltagem das lâmpadas originais do Genius? As minhas queimaram e não tenho mais reservas. Obrigado.

    ResponderExcluir

Postar um comentário

Postagens mais visitadas deste blog

Controle PID de Potência em Corrente Alternada - Arduino e TRIAC - Parte III

Dividindo um programa (sketch) do Arduino em mais de um arquivo

Controle PID de Potência em Corrente Alternada - Arduino e TRIAC - Parte I