Há um tempo atrás comprei esse controle barato de GameCube no Ebay. Estava esperando adaptar pra PC porque queria jogar Wind Waker e tal. Porém, o protocolo se mostrou bem chatinho. Primeiro, os dados são transmitidos por apenas um fio, o que exige timings perfeitos. Segundo, os bits são transmitidos a alta frequência, o que exige alguns esquemas de interrupção e um pouco de assembly. Acabei deixando esse projeto de lado por um tempo.
Ok. O controle tinha estado na minha mesa por um bom tempo sem nenhuma utilidade já que eu não tenho um GameCube . Estava sem sono e pensei em montar algo bem rápido. Hora de apelar, procurei sobre na internet. De fato, esse projeto é baseado no trabalho de Raphaël Assénat, recomendo que passe lá antes. Na verdade, se você tiver interesse em reproduzir o projeto vai ter que passar lá pra baixar os executáveis pro atmega.
*O Dragão sem chama não é responsável por danos ao microcontrolador ou controle ou seu PC, é esperado que o leitor tenha conhecimento e experiência médios em eletrônica e microcontroladores em geral. Utilize as informações disponibilizadas por sua conta e risco.*
Firmware
Conforme dito anteriormente, eu não escrevi o código. Os arquivos podem ser baixados no site de Raphaël Assénat. No meu caso, como não usei uma pcb e soldei tudo fica inviável a programação do micro depois de montado o circuito. Recomendo fortemente gravar o firmware antes de começar a montar o circuito.
Pra que o atmega use o cristal externo é necessário mudar os valores dos fuse bits. Uso o avrdude e meu gravador é o usbasp.
avrdude -p atmega8 -c usbasp -U lfuse:w:0xFF:m -U hfuse:w:0xC9:m
Gravando o firmware com o avrdude:
Esquemático
O esquemático está abaixo. Fiz algumas alterações em relação ao original, já que não tinha alguns componentes.
*A imagem do conector do controle é no console, no cabo deve-se espelhar a imagem. No final, acabei cortando o cabo e usando pra USB.*
Os zeners que limitavam a tensão nas linhas USB foram removidos, pois o atmega roda a 3.3V e não 5V. O atmega teoricamente não deveria estar rodando a 3.3V, mas funciona sem reclamar. Na minha montagem ficou faltando os capacitores do cristal e da alimentação, mas tudo funciona ‘de boa’.
Fotos da montagem:
Ok. Pra um serviço rápido, soldei tudo em estilo deadbug.
Comecei errado! xD Estava um pouco com sono e nem percebi que estava soldando errado (O chip está de cabeça pra baixo).
Agora sim, consertei os erros. Tudo segundo o esquemático. Exceto pelos capacitores que estavam faltando.
Mais uma vista do circuito.
Agora onde colocar o atmega? Muito pouco espaço livre.
Exceto por esse cantinho. Constatei que o chip cabia aqui.
Como o chip ia ficar dentro do controle, cortei o cabo perto da placa. Assim dava pra aproveitar o máximo do cabo na hora de adaptar pra usb.
Esse é um controle paralelo, não é de se esperar muito da placa. Ainda sim é possível ver marcações para os sinais do controle. +5V(Motor) e GND pra alimentação, S pra linha do sinal e V pra tensão lógica do controle, nesse caso 3.3V.
Soldando o atmega no lugar. Todo cuidado possível pra não trocar nenhum fio.
Prontinho.
Depois de tudo no lugar, eu fiz os testes das tensões pra ver se estava tudo certo. Esse passo é muito importante, pois evita de queimar alguma coisa. Uma dica, antes de conectar o controle na usb é bom testar com outra fonte, nesse caso usei uma bateria com regulador pra alimentar com os 5V requeridos, daí fui testando cada pinos pra ver se as tensões estavam corretas. Se a tensão for invertida, pode ocorrer dano a porta USB do PC ou talvez ao PC em si.
Detalhe da conexão usb. O cabo do controle foi reaproveitado, o fio amarelo é a linha D+ e o fio branco é o D-. O pinout usb pode ser encontrado aqui.
Melhor ir dormir. Depois eu arrumo essa mesa.
Conclusões.
Até fiquei surpreso, o controle foi reconhecido de primeira. Mesmo sem os capacitores e com o atmega rodando a 3.3V. Testei o controle no Dolphin e funciona tudo normalmente. Não são necessários drivers, pois o controle é reconhecido como um dispositivo HID.
Bom, é isso. Dúvida? Comentário.
Até o próximo post o/
The post Adaptando controle GameCube pra USB appeared first on Dragão sem Chama.