Índice:

Controlador Lapcade Arcade: 6 etapas (com imagens)
Controlador Lapcade Arcade: 6 etapas (com imagens)

Vídeo: Controlador Lapcade Arcade: 6 etapas (com imagens)

Vídeo: Controlador Lapcade Arcade: 6 etapas (com imagens)
Vídeo: Qual o Melhor Sistema Arcade ? Controle ou Arcade Fliperama Comercial Dicas de Sistemas Iniciantes 2024, Junho
Anonim
Lapcade Arcade Controller
Lapcade Arcade Controller

Não sou muito jogador. Quando eu era criança, eu estava mais interessado em ver como eles funcionavam do que em interpretá-los. Posso contar com uma mão quantos jogos de arcade joguei regularmente. Dito isso, seria fácil para alguém achar estranho que eu dedicasse um tempo para construir um controlador de arcade. No entanto, é um dos meus projetos favoritos até agora. Além de ser desafiador para projetar, codificar e construir, também é um lembrete de uma era passada de botões e joysticks mecânicos resistentes.

Já se foram os dias do Arcade, mas você ainda pode ter a sensação de um jogo de arcade clássico na sua própria sala de estar. Então, aqui eu apresento a vocês o Lapcade. Se você é como eu e gosta de construir coisas mais do que jogar, você pode gostar desta construção. Se você tiver dúvidas ou sugestões não incluídas na seção "ideias para a versão 2" abaixo, deixe um comentário.

Etapa 1: Visão geral

Visão geral
Visão geral
Visão geral
Visão geral

O que é esta coisa?

Primeiro, observe o que o Lapcade não é:

  • Não é um console de jogos.
  • Não tem jogos nem tem a capacidade de carregar e jogar.
  • Ele não se conecta a uma TV ou monitor.

O Lapcade é um teclado Bluetooth. Nada mais nada menos.

Eu trago isso porque tem havido alguma confusão em torno desse ponto. Tive muitas dúvidas sobre quais jogos podem ser carregados nele e que tipo de interface de vídeo ele usa - não pode e não usa! É totalmente dependente do PC ao qual você o conecta e, nesse aspecto, o céu é o limite. Se o seu dispositivo aceita um teclado Bluetooth, o Lapcade deve funcionar com ele. Eu não tentei, mas vi outros projetos que usaram o EZ-Key (descrito abaixo) conectado a dispositivos portáteis. Então, teoricamente, você pode conectar este dispositivo a qualquer computador com Windows, Linux, ChromeOS, MAC, etc., bem como Raspberry Pi, Android, iOS e outros que suportem Bluetooth v2.1. A modificação dos códigos-chave pode ser necessária, no entanto.

Pré-versão 1

Originalmente, eu encontrei um produto chamado Adafruit Bluefruit EZ-Key bluetooth HID (dispositivo de interface humana - pense em teclado) que me permitiria conectar botões clicáveis familiares e enviar pressionamentos de tecla como um teclado. Quando desenvolvi um controlador baseado no EZ-Key pela primeira vez, segui um conjunto de instruções para construir um controlador simples e direto e funcionou muito bem. Usei o controlador em uma moldura de madeira pesada sem problemas por alguns meses. No entanto, você está limitado a 12 entradas e não há como alterar o código-chave transmitido pelo dispositivo sem reprogramar os pinos de entrada EZ-Key.

Como estava usando minha central de mídia Kodi para exibir os jogos instalados, queria alternar entre o controle da central de mídia e o jogo sem ter que usar vários controladores / remotos. Eu também queria que o dispositivo se ajustasse para que meu filho canhoto pudesse usá-lo como quisesse.

Eu também estava usando 4 pilhas AA para alimentar o dispositivo e, fora da caixa, ele não parecia ter um modo de baixo consumo de energia. As baterias secariam em um ou dois dias, mesmo que não estivessem sendo usadas.

Então, a pedido de um amigo meu, decidi construir uma versão programável do mesmo controlador que tinha mudanças de modo rápido, me permitiria usar o mesmo dispositivo para controlar vários aplicativos, também poderia ser "invertido" para a mão esquerda usei e estava em um estojo de laptop que era muito menor do que minha solução atual de 4,5 kg.

Era hora de um upgrade.

Metas do DesignProject da versão 1:

  • Flexível
  • Recarregável
  • Para canhotos e destros
  • Sem cabos
  • Leve

Eu queria que esse novo design fosse flexível. Os controles precisam ser alterados em tempo real, sem a necessidade de reprogramar os componentes toda vez que um teste ou alteração precisa ser feito. Isso significava que era necessário haver uma interface no controlador para escolher os "modos" de operação. Cada botão e posição do joystick precisariam ter diferentes códigos de tecla associados a ele. Esses mesmos controles também precisam ser usados para selecionar os diferentes modos.

O EZ-Key não era diretamente programável em tempo real, então a próxima solução seria usar um controlador como um Arduino para gerenciar a funcionalidade. A EZ-Key seria usada exclusivamente para transmitir os códigos-chave para o PC por Bluetooth. Escolhi o Arduino Pro Mini pela compatibilidade direta com o UNO (com o qual já tinha experiência) e pelo tamanho compacto.

Eu não queria lidar com baterias com esta nova caixa como fiz com o antecessor do Lapcade, então, optei por usar uma bateria recarregável de polímero de lítio e uma placa de carregador / alimentação. Isso significava que eu poderia usar apenas um carregador USB padrão. Isso também significava que eu não teria que abrir a caixa cada vez que as baterias acabassem. O EZ-Key e o PowerBoost 500C têm indicadores que precisam ser transferidos para a parte superior do controlador para o status de emparelhamento e indicação de bateria fraca. Eu adicionei alguns LEDs ao design para que pudesse refletir esses indicadores de status úteis para o usuário durante a operação.

À medida que os testes de meu design amadureciam, descobri que várias de minhas idéias originais não eram como eu esperava. Por exemplo, o indicador LBO no PowerBoost não funciona como esperado quando conectado a um microcontrolador. Isso permitirá que a corrente passe pelo aterramento comum da bateria enquanto o dispositivo estiver "desligado" ou desabilitado, a luz LBO acenderá e permanecerá acesa. Outros no fórum Adafruit também encontraram esse problema e ofereceram uma solução melhor para amostrar a tensão da bateria diretamente em uma entrada analógica. Assim que a tensão cair para um determinado nível, é hora de informar ao usuário que a bateria está prestes a desligar.

Etapa 2: O que você precisa

Lista de peças eletrônicas

Isso acabou se tornando uma construção bastante complicada. Você não precisa usar as mesmas peças que eu usei, mas se você usar uma peça substituta, certifique-se de entender como ela irá interagir com os outros circuitos e código. Embora tenha o prazer de oferecer sugestões, não posso ajudar a solucionar problemas de código ou problemas para configurações diferentes.

1 Arduino Pro Mini 5V - Gosto do Pro porque é compacto. Você pode usar qualquer placa compatível com pino / interrupção Uno com o código fornecido

1 Adafruit Bluefruit EZ-Key bluetooth HID - Conforme descrito acima, este é o HID bluetooth que permite que os códigos de teclas sejam transmitidos para o PC host.

1 MCP23017 - Expansor de porta de entrada / saída i2c 16 -Este chip é usado para adicionar mais 16 entradas ao Arduino por meio do protocolo de comunicação I2C

1 Carregador Adafruit PowerBoost 500 + - Esta é a placa de controle de energia para alimentar o Lapcade e carregar o LiPo

1 bateria de polímero de lítio (usei 2500mAh, mas você pode usar capacidade maior / menor)

1 Joystick Arcade de 8 vias - consulte a seção "pensamentos para a versão 2" abaixo sobre joysticks

9 botões de pressão do Arcade - cores e impressões de tela variadas

2 Botões de pressão momentâneos iluminados - usei estes 2 botões para os botões Center 4 e 5 e são da Adafruit: Vermelho (Centro 4), Azul (Centro 5)

1 botão de travamento iluminado Usei para o botão liga / desliga da Adafruit: Verde

2 LEDs Usados para fazer referência ao sinal de emparelhamento e bateria fraca. Usei duas peças RadioShack 2760270 e 2760271

1 tela LCD 16 x 2

1 Mochila I2C / SPI LCD - Usada para comunicação I2C com o display 16x2.

1 Cabo de extensão USB de montagem em painel - Usado para estender o conector micro-b USB do PowerBoost à parede do gabinete.

1 Placa de ensaio de tamanho completo Adafruit Perma-Proto - Não é necessária, mas torna a montagem permanente muito mais fácil.

5 resistores de 220 ohms

7 resistores de 1K Ohm

2 Resistores de 2.2K Ohm

1 Resistor de 4,7 K Ohm

18 # 10 Conectores tipo espada - Para conectar os contatos do botão do arcade. Recomendado em vez de soldar, pois os botões acabam se desgastando.

Cabo de conexão de calibre 22 - usei cabo de conexão sólido em vez de trançado para fazer o gerenciamento de cabo independente. Isso foi puramente para fins de demonstração e não é recomendado, pois o arame sólido é quebradiço e sujeito a quebrar.

Os itens a seguir não são obrigatórios, mas tornarão o mounging mais simples e, no caso de você torrar um componente, tornará a substituição mais fácil:

  • Soquete IC - para chips de 0,3 "de 28 pinos
  • Soquete IC - para chips de 0,6 "de 28 pinos
  • 0,1 "Cabeçalho fêmea (pelo menos 1 cabeçalho de 36 pinos)

Peças do gabinete:

  • 3 painéis de bétula de 12 x 24 1/8 de polegada
  • 1 painel de acrílico transparente de 12 x 24 1/8 de polegada

Arquivos:

  • Lapcade V1.xlsx - A planilha mencionada abaixo que contém as conexões do circuito.
  • LapcadeV1-code.zip - Arquivo Zip contendo o código do Arduino escrito para este projeto.
  • Lapcade_v1.zip - Arquivo Zip contendo os desenhos SVG para o gabinete.
  • LapcadeV1-Circuit_Diagram_Large.zip - Arquivo Zip contendo uma versão de alta resolução do diagrama de circuito fritzing mostrado abaixo.

Links para mais recursos:

  • Documentação Adafruit Bluefruit EZ-Key
  • Documentação Adafruit PowerBoost 500 +
  • Documentação da mochila I2C / SPI LCD
  • Documentação do extensor de porta MCP23017 I2C
  • Biblioteca Adafruit MCP23017 Arduino

Etapa 3: Montagem - O Gabinete

Assembleia - O Gabinete
Assembleia - O Gabinete
Assembleia - O Gabinete
Assembleia - O Gabinete
Assembleia - O Gabinete
Assembleia - O Gabinete
Assembleia - O Gabinete
Assembleia - O Gabinete

Eu queria uma caixa muito leve que também aguentasse. Sem se tornar muito exótico com os materiais, leve é igual a fino e fino geralmente é igual a frágil. O usuário principal do Lapcade provavelmente seria meu filho que gosta de "apertar" os botões e "navegar" no joystick com extremo entusiasmo. Embora ele seja bom em não deixar cair coisas, ele conseguiu desgastar os micro interruptores industriais em um joystick em poucos meses.

Para superar esse problema, e como o Lapcade tem 20 de largura, meu design adicionou duas nervuras verticais que prendem os lados superior e esquerdo e direito. Durante o encaixe a seco, o design foi capaz de suportar 70 libras de livros colocados nele. Uma vez colado, a caixa ficou ainda mais durável. Depois de receber os materiais cortados, inicialmente soltei o encaixe de todos os painéis para garantir que funcionassem. Em seguida, lixei levemente e borrifei o pó. Usei cola de madeira para unir as peças.

Os livros nas fotos abaixo foram colocados para fazer pressão sobre as peças recém-coladas até que endurecessem. Assim que a cola curou, lixei as bordas. Meu projeto deslocou intencionalmente os painéis para que fiquem um pouco salientes nos cantos. Isso me permitiria arredondar os cantos durante o lixamento sem entrar muito na junta.

Depois de limpar as superfícies, apliquei várias camadas de poliuretano - permitindo a cura entre as camadas. O resultado foi uma caixa de madeira leve com uma tampa inferior de acrílico. Originalmente, eu queria uma caixa totalmente transparente, mas quando ele me enviou as peças de "teste" de bétula, mudei de ideia imediatamente. Não era apenas mais leve, era um bom retrocesso à ideia de jogos de gabinete. Os arquivos SVG estão abaixo.

Observação: este é um desenho de várias camadas e cada camada representa um conjunto de cortes em uma folha de material. Ao enviar uma impressão para o cortador, certifique-se de que todas as outras camadas estejam ocultas antes de cortar.

Outra observação: Quando desenhei a área para o display LCD, usei um display que tinha à mão para as medições. Entre o momento em que fiz o desenho e depois coloquei as peças na caixa, usei o LCD original em outro projeto e pedi uma substituição. Acontece que os orifícios de montagem do segundo eram ligeiramente diferentes do original e acabaram não se alinhando. Portanto, tome cuidado antes de cortar seu material para verificar se as peças que você colocou se encaixam nos furos do desenho.

Uma terceira nota: não incluí um recorte para o cabo de carregamento USB no desenho original simplesmente porque não tinha certeza de onde queria colocá-lo para que não interferisse com o uso. Mais tarde, cortei os furos para ele no lado esquerdo, bem perto de onde você vê a palavra "Lapcade" nas imagens abaixo. A versão 2 terá a porta de carregamento em uma posição diferente.:)

Etapa 4: Montagem - Eletrônica

Montagem - Eletrônica
Montagem - Eletrônica
Montagem - Eletrônica
Montagem - Eletrônica
Montagem - Eletrônica
Montagem - Eletrônica
Montagem - Eletrônica
Montagem - Eletrônica

Primeiro, vamos dar uma olhada no diagrama de fiação mostrado acima.

A primeira coisa a notar aqui é que os trilhos de alimentação e aterramento da placa de ensaio. Os trilhos com a linha azul são aterrados (-) e os trilhos com a linha vermelha são potentes (+). Isso é padrão, mas estou anotando isso porque a linha comum do joystick (fio preto) é conectada à alimentação e não ao aterramento. No Fritzing, usei a cor dos fios do joystick em vez da cor convencional e pensei que isso poderia causar alguma confusão - então é melhor apenas tirar isso do caminho.

Conexões de componentes

Em vez de tentar declarar todas as conexões de forma longa aqui (o pino 0 analógico do Arduino passa por um resistor de 220 ohms para o pino PowerBoost Bat), criei uma planilha que contém todas as conexões do ponto de vista do componente. Portanto, na guia Arduino da planilha, você verá APM A0 -> 2,2K OHM -> PB Bat e na guia PowerBoost você verá PB BAT -> 2,2K OHM -> APM A0. Consulte a seção de recursos abaixo para todos os arquivos associados a este projeto.

Uma outra observação sobre a planilha é que alguns dispositivos mostram duas colunas de conexão. Isso é para mostrar mais de uma conexão a um pino. Por exemplo, cada uma das conexões do joystick, exceto o fio comum, usa um resistor pull-down para garantir que o extensor de porta receba um sinal alto ou baixo sólido. Para mostrar isso para o Joystick 2, você verá duas colunas para conexão, sendo uma para o fio do joystick para o pino do MCP 21 e a outra para uma conexão do pino 21 através de um resistor para o aterramento. Tenho certeza de que existem maneiras melhores de documentar isso, mas infelizmente você está travado em minhas maneiras de fazer as coisas neste.:)

Cada um dos botões de arcade tem um contato comum (com), normalmente aberto (não) e normalmente fechado (nc). Para cada um desses botões, estou usando conexões com e nc.

Etapa 5: Código

Código
Código

Em primeiro lugar, preciso dar crédito a quem é devido. Contei muito com o seguinte artigo para codificar o Lapcade:

learn.adafruit.com/convert-your-model-m-keyboard-to-bluetooth-with-bluefruit-ez-key-hid Agradecimentos especiais a Benjamin Gould por um projeto bem escrito e documentado!

Portanto, no centro deste projeto está um teclado. Do ponto de vista do PC, o Lapcade é simplesmente um teclado conectado via bluetooth, que é o que o EZ-Key faz tão bom. Ele pega os complicados protocolos, tempos e códigos Bluetooth e os encapsula de forma que tudo que eu preciso fazer com o arduino é enviar os códigos-chave. Para fazer isso, usei os mapas de código no projeto acima e meus próprios arrays para criar modos operacionais. Cada modo altera o que os mesmos pressionamentos de botão fazem no Lapcade e o que é enviado ao PC. Existem três modos operacionais "embutidos" e todos os modos depois desses são modos de aplicação.

Modos Operacionais

O seguinte resume os modos operacionais do Lapcade:

  1. Inicialização - este modo verifica a conectividade com o PC e define as variáveis de inicialização. Se o EZ-Key não estiver emparelhado com um PC, ele muda para o modo de emparelhamento
  2. Emparelhamento - neste modo, a EZ-Key está esperando para ser emparelhada com um PC.
  3. Seleção de modo - Este modo permite que o usuário selecione o modo de aplicação a ser usado. Nenhum código de tecla é enviado ao PC neste modo. Existem também seleções de modo rápido com base no modo de aplicativo anterior. Por exemplo, pressionando mode e, em seguida, o botão player dois quando no modo Mame player 1 simplesmente muda o modo sem ter que pesquisar e selecionar Mame Player 2 na tela.

Modos de Aplicação

Os modos de aplicativo são usados para enviar códigos de tecla apropriados para o PC com base no aplicativo em que o usuário está. Por exemplo, no modo Kodi, a tecla de ação 2 envia "P" que é uma pausa. No Mame, esse mesmo botão envia a tecla Alt esquerda. Se alguém quiser usar o controlador para jogar Minecraft para PC, tudo o que precisa ser feito é adicionar os mapas de matriz apropriados.

Cada aplicativo precisa ser definido em 4 matrizes de dados.

  • modo - Este array contém o texto que será apresentado na tela para cada modo. Para usar a segunda linha do display, simplesmente coloque um ~ no array como uma quebra de linha.
  • keyModes [14] - Esta matriz contém os códigos-chave enviados ao PC. Cada linha de 14 elementos representa botões individuais para mapeamentos de códigos de teclas.
  • keyModifiers [14] - Esta matriz de matriz contém os modificadores de código de tecla para cada pressionamento de tecla, como manter pressionada a tecla shift.
  • quickMode [3] - Esta matriz de matriz contém o padrão de seleção de modo rápido para o modo atual.

Operação basica

Quando o sistema é ligado, ele entra no modo de inicialização, onde o status da conexão Bluetooth é verificado e exibido para o usuário. O Arduino obtém o status da EZ-Key contando e cronometrando os pulsos do pino L1 da EZ-Key. Existem quatro sub-status para o modo de inicialização:

  • Emparelhamento - A EZ-Key está no modo de emparelhamento ativo esperando para se conectar a um dispositivo.
  • Emparelhado, mas não conectado - O EZ-Key foi emparelhado anteriormente, mas não está conectado no momento ao dispositivo host.
  • Emparelhado e conectado - O EZ-Key está emparelhado e a conexão foi estabelecida com o host. Nesse ponto, o sistema passará para a seleção de modo.
  • Status desconhecido - A chave EZ está retornando um código desconhecido ou há interferência de sinal que está produzindo um padrão de sinal desconhecido. O sistema irá reter e notificar o usuário. Deve reiniciar se isso ocorrer.

Se o sistema estiver emparelhado, mas não puder se conectar ao PC, o sistema permanecerá no estado de conexão no modo de inicialização. Se o usuário mantiver pressionado o botão Escape enquanto liga o dispositivo, ele irá ignorar a verificação da conexão Bluetooth e prosseguir para a seleção de modo.

Se o sistema não tiver sido emparelhado anteriormente, o Modo de inicialização será sucedido pelo Modo de emparelhamento. Nesse estado, o sistema irá transmitir que está disponível para emparelhamento. Assim que for descoberto e anexado por um host, ele passará para a Seleção de Modo. O dispositivo pode ser desemparelhado em Seleção de Modo pressionando o botão Ação 1.

Na Seleção de Modo, as ações do joystick para cima e para baixo o moverão através dos modos de aplicativo disponíveis no visor LCD. Para selecionar um dos modos, pressione o botão Enter (centro 5).

Uma vez em um modo de aplicativo, cada um dos botões e o joystick enviará códigos de tecla de acordo com os mapas de teclado especificados nas quatro matrizes conforme descrito acima.

Modos rápidos

Uma vez que um Modo de aplicativo foi selecionado, sua definição de modo rápido é definida. Simplificando, os modos rápidos são os modos de aplicativo selecionáveis pelos três primeiros botões centrais (Centro 1-3). Esses três botões correspondem ao elemento da matriz na matriz.

Por exemplo, na configuração atual, ao usar o Mame no modo do jogador 1 (Modo 4 ou o quinto modo definido), pressione o botão de modo e o botão do jogador dois carrega o elemento de array quickmode [4] [1] (o Arduino usa 0 base array indexing) que é 5. O sistema então muda para o Modo de Aplicação 5 que é Mame, jogador 2.

Etapa 6: ideias para a versão 2

Visor de botão - acho que você não pode planejar tudo, mas há uma ideia de design que eu gostaria de ter no início para a versão um - painéis LCD de botão individual. Ficou claro rapidamente após a construção que apenas saber em que modo você está não significa que você se lembra do que cada botão faz - especialmente depois que você se afastou dele por alguns dias ou meses. Eu realmente gostaria de ter adicionado algum tipo de pequeno display em ou acima de cada botão que mostrasse sua ação atual. Este está no topo da minha lista para a versão 2.

Joystick de 4 vs 8 posições - Outra coisa que ficou clara quando comecei a usar o joystick foi que os jogos mais antigos não eram feitos para usar joysticks de 8 posições. O caso em questão é o pac-man. Desde a construção deste controlador, descobri que existem joysticks que podem ser alternados mecanicamente de 4 para 8 posições. Sim, esse está na lista e se você está planejando jogar jogos clássicos de arcade, pule para um que seja mutável. Claro, certifique-se de levar em conta as mudanças na fiação e na programação com base no joystick que você usará. Aqui estão alguns fornecedores de controles clássicos de arcade:

  • https://www.ultimarc.com/controls.html
  • https://groovygamegear.com/webstore/index.php?main…

Botões "Flipper" do lado direito e esquerdo - a versão 2 adicionará definitivamente um botão cada um dos lados esquerdo e direito do gabinete. Um uso possível será para flippers de pinball.

Outros controles - estou analisando a viabilidade de adicionar outros controles comuns, como um trackball e / ou um botão giratório, para a próxima versão. Como o EZ-Key é capaz de transmitir as coordenadas do mouse, isso não deve ser muito difícil.

Programação On-Board - A próxima versão deve ter a capacidade de adicionar novas configurações sem abrir a caixa. Eu queria adicionar isso à versão 1, mas exigia mais tempo e recursos do que eu tinha.

Concurso Wireless
Concurso Wireless
Concurso Wireless
Concurso Wireless

Segundo Prêmio no Concurso Wireless

Recomendado: