Índice:

ESP32 VGA Arcade Games e Joystick: 6 etapas (com imagens)
ESP32 VGA Arcade Games e Joystick: 6 etapas (com imagens)
Anonim
Image
Image
ESP32 VGA Arcade Games e Joystick
ESP32 VGA Arcade Games e Joystick
ESP32 VGA Arcade Games e Joystick
ESP32 VGA Arcade Games e Joystick

Neste instrutivo vou mostrar como reproduzir quatro jogos tipo arcade - Tetris - Snake - Breakout - Bomber - usando um ESP32, com saída para um monitor VGA.

A resolução é de 320 x 200 pixels, em 8 cores. Eu já fiz uma versão com um Arduino Uno (veja aqui), mas a resolução era de apenas 120 x 60 pixels, 4 cores, e a memória do Arduino estava quase cheia. Graças ao maior desempenho do ESP32, tanto a resolução quanto a jogabilidade são maiores. Além disso, ainda há muita memória disponível, portanto, adicionar novos jogos no futuro será simples.

Também mostrarei como conectar um joystick simples através de um cabo RS232. Estou usando a mesma pinagem do Commodore 64.

Este projeto é possível graças à incrível biblioteca VGA ESP32 escrita por Fabrizio Di Vittorio. Veja aqui para mais detalhes.

Etapa 1: Placas ESP32, instalação do Arduino IDE e configuração da biblioteca VGA

Placas ESP32, instalação do Arduino IDE e configuração da biblioteca VGA
Placas ESP32, instalação do Arduino IDE e configuração da biblioteca VGA
Placas ESP32, instalação do Arduino IDE e configuração da biblioteca VGA
Placas ESP32, instalação do Arduino IDE e configuração da biblioteca VGA
Placas ESP32, instalação do Arduino IDE e configuração da biblioteca VGA
Placas ESP32, instalação do Arduino IDE e configuração da biblioteca VGA

Em primeiro lugar, você precisa comprar um ESP32 revisão 1 ou superior. Existem muitas versões disponíveis, mas recomendo escolher uma com muitos pinos, de preferência um modelo como o desta foto, com 38 pinos. Estou usando esta versão, mas acho que muitas outras também funcionam. No ebay você pode encontrar este modelo por menos de 7 euros, incluindo a entrega.

Depois de obter o quadro, você precisa prosseguir com as três subetapas a seguir:

  1. Instale o último IDE Arduino
  2. Configure o ESP32 no IDE e
  3. Baixe e instale a biblioteca VGA

Subetapa 1. Existem diferentes métodos para programar o ESP32, mas aqui você precisa usar o IDE do Arduino (estou usando a versão 1.8.9, a propósito). Para instalá-lo, você pode ir para a página IDE do Arduino e seguir as instruções.

Subetapa 2. Assim que a operação anterior for concluída, você precisa configurar seu ESP32 dentro do IDE do Arduino. Isso não é trivial, já que o ESP32 não é (ainda?) Nativo nele. Você pode seguir este tutorial ou as etapas a seguir.

1) abra o IDE do Arduino

2) abra a janela de preferências, Arquivo / Preferências, alternativamente pressione "Ctrl + vírgula"

3) vá para "URLs adicionais do gerente da placa", copie e cole o seguinte texto:

https://dl.espressif.com/dl/package_esp32_index.js…

e clique no botão OK.

4) Abra o gerenciador de placas. Vá para Ferramentas / Placa / Gerenciador de placas …

5) Procure ESP32 e pressione o botão de instalação para o “ESP32 da Espressif Systems“:

6) Neste ponto, quando você conectar seu ESP32 pela primeira vez, você deve escolher o modelo certo na longa lista de placas ESP32 disponíveis (veja a imagem nesta etapa). Em caso de dúvidas sobre o modelo, basta escolher o genérico, ou seja, o primeiro. Funciona para mim.

7) o sistema também deve escolher a porta USB (COM) correta e a velocidade de upload (normalmente 921600). Neste ponto, a conexão entre o seu PC e a placa ESP32 deve ser estabelecida.

Subetapa 3. Finalmente, você deve instalar a biblioteca FabGL VGA. Clique aqui para baixar o arquivo compactado completo. Descompacte-o e copie a pasta resultante (FabGL-master) na pasta de bibliotecas do Arduino IDE, que se parece com:

"… / Arduino-1.8.12 / libraries".

Etapa 2: Carregando "ESP32_VGA_Tetris_Snake_Breakout_Bomber_V1.0"

Baixe ESP32_VGA_Tetris_Snake_Breakout_Bomber_V1.0.zip na parte inferior desta etapa. Descompacte-o e abra-o com o IDE do Arduino e, em seguida, carregue-o no ESP32. Se não houver mensagens de erro, o código já deve estar em execução e você só precisa conectar a porta VGA e os botões (ou joystick).

Etapa 3: Conectando a porta VGA

Conectando a porta VGA
Conectando a porta VGA

Você precisa das seguintes peças:

  • um Conector DSUB15, ou seja, um conector VGA fêmea ou um cabo VGA a ser cortado.
  • três resistores de 270 Ohm.

Conecte os pinos 2, 15 e 21 do GPIO ESP32 ao VGA Vermelho, Verde e Azul, respectivamente, por meio dos resistores de 270 Ohm.

Conecte o VGA Hsync e Vsync aos pinos ESP32 GPIO 17 e 4, respectivamente.

Conecte os pinos 5, 6, 7, 8 e 10 dos conectores DSUB15 ao ESP32 GND.

Para a definição do pino do conector VGA DSUB15, consulte a imagem nesta etapa. NB, este é o lado da solda do conector fêmea.

Etapa 4: conectar os quatro botões

Conecte os quatro botões
Conecte os quatro botões
Conecte os quatro botões
Conecte os quatro botões
Conecte os quatro botões
Conecte os quatro botões

Se você não tiver um joystick C64, poderá conectar quatro botões seguindo esta etapa. Se você tiver o joystick, poderá pular esta etapa e pular para a próxima, mas poderá conectar os botões e o joystick (eles estão de qualquer forma "em paralelo").

O esquema nesta etapa mostra como conectar um único botão (normalmente aberto) de + 5V ao pino especificado do ESP32.

Observe que você também precisa conectar o pino dado ESP ao GND através de um resistor de 1 a 5 kOhm. Desta forma, quando o botão é liberado (aberto), o pino ESP está exatamente em zero Volts. Mais especificamente, você precisa conectar quatro botões com a seguinte ordem:

  • Pino 12 para o botão direito
  • Pin 25 no botão Up
  • Pino 14 para o botão esquerdo
  • Pino 35 para o botão para baixo

Etapa 5: conectar o joystick

Conecte o joystick
Conecte o joystick
Conecte o joystick
Conecte o joystick
Conecte o joystick
Conecte o joystick

Um joystick C64 tem a pinagem mostrada na primeira foto desta etapa. Para conectá-lo ao ESP32, você precisa de um conector macho DSUB de 9 pinos (ou seja, um soquete), conforme mostrado na segunda imagem. Tirei um com os pinos expostos de uma velha placa eletrônica. Você pode usar uma pistola de ar quente para removê-lo (mas faça-o ao ar livre!).

Você precisa conectar os pinos seguindo a ordem numérica nessas imagens. Observe que o esquema se refere ao lado do joystick, portanto, representa a conexão de seu plugue fêmea. O soquete (macho) para conectar ao ESP32 possui os pinos com disposição em "espelho". Em caso de dúvida, lembre-se que o número do pino sempre é informado nos conectores macho e fêmea, conforme mostra a terceira foto.

Se você quiser controlar os jogos apenas com o joystick, conecte seu pino comum (9) ao ESP32 + 5V, e os pinos 1, 2, 3, 4 e 6 do joystick aos pinos fornecidos pelo ESP seguindo a lista a seguir.

  • ESP pino 12 para botão direito (RS232 pino 4)
  • ESP pino 14 para botão esquerdo (RS232 pino 3)
  • ESP pino 35 para botão para baixo (RS232 pino 2)
  • ESP pino 25 para botão Up (RS232 pino 1 e 6, ou seja, joystick de disparo)

Nota: os pinos 12, 14, 25 e 35 do ESP também devem ser conectados ao GND através de um resistor de 1 a 5 kOhm. Desta forma, quando o botão é liberado (aberto), o pino ESP está exatamente em zero Volts.

A posição UP do joystick NB2 e o botão de disparo estão conectados ao pino 25- do ESP

Conectei quatro botões na placa do PC, desta forma não preciso do joystick para jogar (embora com o joystick seja muito mais engraçado). Novamente, o pino 9 do RS232 deve ser conectado a +5 V e os pinos do joystick devem estar paralelos aos botões.

Etapa 6: Conclusão e Reconhecimento

Conclusão e Reconhecimento
Conclusão e Reconhecimento

Se tudo funcionar corretamente, basta conectar o monitor VGA e você poderá desfrutar de um jogo no estilo antigo!

Você também pode desenhar um conjunto de Mandelbrot com uma resolução de 640 x 350 pixels, apenas para testar os recursos da biblioteca VGA.

Observe que o código foi escrito de forma que outros jogos possam ser facilmente adicionados no futuro (o ESP32 tem muito espaço!). Se este projeto obtiver interesse suficiente, posso fazer isso …

Finalmente, gostaria de expressar minhas reservas a Fabrizio Di Vittorio por sua incrível biblioteca VGA ESP32. Para mais detalhes, exemplos e… Space Invaders, visite seu site.

Recomendado: