Volante joystick de PS2 com Arduino Leonardo

Após meu pai me desafiar, resolvi elaborar esse projeto de volante que funciona com um controle de PS2.

Leonardo Hilgemberg Lopes

5/15/20232 min read

Falaremos sobre a atualização de um volante antigo de PC/PS2 para USB

Olá a todos! Aqui é o Leonardo Hilgemberg, o criador da AthenasArch.

Recentemente, embarcamos em um projeto empolgante - revitalizar um antigo volante de PC, tornando-o compatível com emuladores de PS2 ao conectá-lo via USB. Este projeto incrível foi desenvolvido usando a versatilidade do Arduino e, em breve, planejamos incorporar o ESP32!

Uma Nova Vida para o Antigo Volante de PC

Nosso objetivo era simples: tornar o volante de PC obsoleto novamente funcional, oferecendo uma nova vida a um dispositivo que, de outra forma, teria sido deixado de lado. Estou feliz em compartilhar que o projeto foi bem-sucedido, com nosso código fornecido funcionando perfeitamente para essa tarefa!

O Projeto ArduinoLeonardo-Joystick

O cerne deste projeto foi a utilização do Arduino Leonardo como um driver HID (Human Interface Device) para controlar joysticks de PS2. Utilizamos duas bibliotecas externas principais: a PS2X_lib.h e a Joystick.h. A primeira coleta os protocolos do PS2, permitindo que o Arduino interprete as informações, enquanto a segunda converte as informações do Arduino em um formato que o PC possa reconhecer como um dispositivo legítimo.

Quando se trata da organização do projeto, aqui está como dividimos as coisas:

  1. src/: Aqui, você encontrará os arquivos de código desenvolvidos por mim e suas respectivas implementações, incluindo arquivos como main.cpp e outros arquivos .cpp e .h.

  2. doc: Essa pasta contém arquivos e documentos importantes para o projeto.

  3. lib: Aqui estão as bibliotecas completas, externas de outros desenvolvedores e do meu próprio trabalho.

  4. test: Arquivos de teste do projeto.

  5. examples: Exemplos de uso geral do projeto.

O Hardware

No Arduino Leonardo, adicionamos um LED de status ao pino 8. Este LED serve como um indicador visual do estado atual do Arduino:

  • LED desligado: O Arduino não reconheceu um controle.

  • LED piscando a cada 500ms: O Arduino reconheceu um controle e está funcionando perfeitamente no PC.

  • LED sempre aceso: O controle foi reconhecido pelo PC, mas perdeu a comunicação com o controle.

Desmontamos mais de 5 controles diferentes de PS2, volantes e até guitarras, todos seguindo uma ordem de cores consistente. Você pode conferir o diagrama de cores aqui.

O Projeto em Ação

E, é claro, nenhuma postagem de blog estaria completa sem algumas fotos do projeto em ação! Confira abaixo algumas fotos do nosso projeto ArduinoLeonardo-Joystick!