Índice:

Esteira DIY VR - Concurso Basys3 FPGA-Digilent: 3 etapas
Esteira DIY VR - Concurso Basys3 FPGA-Digilent: 3 etapas

Vídeo: Esteira DIY VR - Concurso Basys3 FPGA-Digilent: 3 etapas

Vídeo: Esteira DIY VR - Concurso Basys3 FPGA-Digilent: 3 etapas
Vídeo: Barra fixa masculina. 2024, Julho
Anonim
Esteira DIY VR - Basys3 FPGA-Digilent Contest
Esteira DIY VR - Basys3 FPGA-Digilent Contest

Você quer construir uma esteira de realidade virtual na qual possa executar seus aplicativos e jogos de desktop? Então você veio ao lugar certo!

Nos jogos convencionais você usa o mouse e o teclado para interagir com o ambiente. Portanto, precisamos enviar o mesmo tipo de sinais que um mouse e teclado para que não haja problemas de compatibilidade entre nossa esteira e o jogo. Em vez de desmontar esses dispositivos, devemos criar nosso próprio dispositivo que pode simulá-los o mais próximo possível.

Para as entradas do mouse, usaremos um disco com fatias condutivas e não condutivas alternadas, sobre as quais deslizarão dois fios, com um pequeno deslocamento. A placa irá ler os sinais vindos dos fios, dando-nos uma das quatro combinações: 00, 11, 10, 01, que podemos traduzir diretamente no movimento da esquerda para a direita.

Para o movimento de cima para baixo, em vez de um disco, usaremos uma placa com o mesmo padrão de 0's e 1's.

Como entradas para o módulo que simula o teclado, teremos interruptores colocados na junta de uma haste que vai segurar o chicote. Quando você dá um passo em qualquer direção, a haste se curva ligeiramente, abrindo a chave.

(Lembre-se de que o projeto ainda está em andamento e pode ser melhorado, por isso estou aguardando qualquer conselho que possa torná-lo melhor)

Etapa 1: Base

Base
Base
Base
Base
Base
Base

A base deve ter um centro de gravidade baixo, portanto, um material pesado deve ser usado. No meu caso, usei gesso e disco de antena para fazer um molde côncavo, mas outros meios podem ser usados (ex. Bola de ioga). Após a secagem do molde, ele será colocado sobre dois discos de mesmo diâmetro de MDF ou similar. Um espaçador será introduzido entre os dois discos MDF. Entre esses discos, um perfil de triângulo será colocado, que tem rolamentos nas bordas. Outro conjunto de rolamentos será colocado perpendicularmente aos vértices do triângulo e tangente ao disco, na parte superior. Para melhor precisão, mais rolamentos podem ser usados. Uma haste será colocada em um dos vértices, conforme mostrado na terceira foto. Esta haste segura o arnês no qual o jogador será colocado.

Outra haste externa fixa é utilizada para apoiar os fios e também como ponto de referência para o movimento de rotação.

Etapa 2: 2 gerenciamento de entrada

2 Gerenciamento de entrada
2 Gerenciamento de entrada
2 Gerenciamento de entrada
2 Gerenciamento de entrada
2 Gerenciamento de entrada
2 Gerenciamento de entrada

Do ponto de vista da caixa preta, o dispositivo terá as seguintes entradas: 4 conexões para os contadores do mouse x, y, 2 conexões para os botões do mouse e 4 conexões para as teclas de seta. A saída é representada por 4 pinos: 2 para a conexão PS2 do mouse e outros 2 para a conexão PS2 do teclado. Para obter uma descrição mais detalhada do protocolo PS2, você pode verificar o seguinte site:

Como entradas para a placa, escolhi pinos digitais JB (1 até 0). Considerando a sequência… 11001100…, lida nas duas entradas, podemos distinguir entre três estados dos contadores:

1. Contagem;

2. Contar para baixo;

3. Salve o valor atual;

O módulo Count_Type faz exatamente isso. Se houver uma alteração na entrada, o módulo envia uma mensagem apropriada para o contador de 8 bits (implementado no arquivo 8_bit_count.vhd), que adiciona ou subtrai do valor atual, a menos que um sinal de reinicialização seja recebido.

A mesma ideia é usada para o movimento de cima para baixo da cabeça, mas em vez de um disco, um perfil linear deslizante com o mesmo padrão alternado 0 e 1 deve ser usado.

Etapa 3: Implementação VHDL

Implementação VHDL
Implementação VHDL

Anexados à apresentação estão os seguintes módulos:

1. Count_Type: este módulo trata da decodificação dos dois fios de entrada do disco ou do perfil, descrito na segunda etapa;

2. 8bit_count: este módulo interpreta a mensagem decodificada de Count_Type e aumenta ou diminui os contadores;

3. Pacote de 3 bytes: este módulo gere o estado dos botões esquerdo e direito e formata os dados para que possam ser introduzidos no pacote de dados de 3 bytes utilizado no protocolo PS2;

4.clk12khz: este módulo fornece um relógio de 12kHz específico para o protocolo PS2 no qual certos componentes e processos funcionam;

5. MessageManager: este módulo envia o pacote de dados de 3 bytes, interpreta e dá a resposta adequada, como resposta a uma mensagem do PC.

6. PS2Interface: este módulo faz a interface do protocolo de comunicação entre o dispositivo e o host (PC) (este módulo precisa de alguma depuração e uma reavaliação completa para funcionar corretamente).

Recomendado: