Índice:

ESP32 Handheld Game Console: 21 etapas (com imagens)
ESP32 Handheld Game Console: 21 etapas (com imagens)

Vídeo: ESP32 Handheld Game Console: 21 etapas (com imagens)

Vídeo: ESP32 Handheld Game Console: 21 etapas (com imagens)
Vídeo: Handheld Game Console 2024, Julho
Anonim
Image
Image
Preparação de Hardware
Preparação de Hardware

Estes instructables mostram como usar um ESP32 e ATtiny861 para construir um console de jogo emulador NES.

Etapa 1: Preparação de Hardware

Preparação de Hardware
Preparação de Hardware
Preparação de Hardware
Preparação de Hardware

ESP32 Dev Board

Desta vez, estou usando uma placa de desenvolvimento TTGO T8 ESP32. Esta placa tem carregamento Lipo embutido e circuito regulador, pode ajudar a reduzir os componentes extras.

Exibição

Desta vez, estou usando um LCD IPS de 2,4 . O controlador do driver é ST7789V e a resolução é 320 x 240. Esta resolução é mais adequada para a resolução 252 x 224 do emulador NES.

Bateria

Desta vez, estou usando uma bateria Lipo 454261. 4,5 mm é a espessura da placa de desenvolvimento ESP32 e 61 mm é a largura da placa.

Pin Header

Um cabeçalho de pino redondo macho de 4 pinos e um cabeçalho de pino redondo fêmea de 4 pinos para conectar o gamepad I2C.

Placa PETG

Uma pequena placa PET / PETG para suportar a placa de desenvolvimento e a bateria Lipo, você pode encontrá-la facilmente na embalagem do produto.

PCB de uso múltiplo

Requer 2 PCB, 1 de 0,4 mm de espessura para suportar a tela, 1 de 1,2 mm de espessura para um gamepad I2C.

Botões

Um botão de 5 direções, 2 botões pequenos para Selecionar e Iniciar e 2 para o botão A e B.

I2C Gamepad Controller

Desta vez, eu uso um microcontrolador ATtiny861 como controlador de gamepad I2C.

Outros

1 resistor SMD de 12 Ohms, um programador ISP (por exemplo, TinyISP)

Etapa 2: Preparação do software

Preparação de Software
Preparação de Software
Preparação de Software
Preparação de Software
Preparação de Software
Preparação de Software

IDE Arduino

Baixe e instale o Arduino IDE, se ainda não:

Suporte ATTinyCore

Siga as etapas de instalação para adicionar suporte ATTinyCore, se ainda não:

ESP-IDF

Siga o guia de introdução do ESP-IDF para configurar o ambiente de desenvolvimento, se ainda não:

Etapa 3: Impressão 3D

impressao 3D
impressao 3D

Baixe e imprima o caso:

Etapa 4: Suporte para LCD

Suporte LCD
Suporte LCD
Suporte LCD
Suporte LCD

Corte um PCB de 24 x 27 orifícios de 0,4 mm para suporte de LCD. Lembre-se de reservar algum espaço para dobrar o LCD FPC. Em seguida, use um pouco de fita adesiva dupla-face para fixar o LCD no PCB.

Etapa 5: preparar a placa PETG

Prepare Placa PETG
Prepare Placa PETG
Prepare Placa PETG
Prepare Placa PETG

Corte uma placa PETG de 62 mm x 69 mm para placa de desenvolvimento e suporte de bateria Lipo.

Etapa 6: consertar placa de desenvolvimento ESP32

Consertar ESP32 Dev Board
Consertar ESP32 Dev Board

Use fita adesiva dupla-face para fixar a placa de desenvolvimento na placa PETG.

Etapa 7: consertar a bateria Lipo

Consertar bateria lipo
Consertar bateria lipo

Use fita adesiva dupla-face para fixar a bateria Lipo ao lado da placa de desenvolvimento.

Etapa 8: conectar a bateria e a placa de desenvolvimento

Conecte a bateria e a placa de desenvolvimento
Conecte a bateria e a placa de desenvolvimento

Etapa 9: Prepare os pinos de exibição

Prepare os pinos de exibição
Prepare os pinos de exibição

O display LCD tem muitas variações de diferentes fornecedores. Obtenha a folha de dados correta e leia-a antes de qualquer patch e conexão.

Alguns pinos são reservados para painel de toque. Uma vez que este LCD não tem painel de toque, simplesmente corte esses pinos para reduzir a perturbação.

Etapa 10: conectar os pinos GND

Conecte os pinos GND
Conecte os pinos GND
Conecte os pinos GND
Conecte os pinos GND

Na maioria dos casos, há poucos pinos que precisam ser conectados ao GND. Para reduzir o esforço de soldagem, cortei um formato de fita de cobre para alcançar todos os pinos GND e, em seguida, soldei completamente.

Etapa 11: conectar os pinos Vcc

Conecte os pinos Vcc
Conecte os pinos Vcc

Existem 2 pinos necessários para conectar ao Vcc, alimentação do LCD e alimentação do LED. De acordo com a folha de dados, a energia do LCD pode se conectar diretamente ao pino de 3,3 V da placa de desenvolvimento, mas a energia do LED opera um pouco abaixo de 3,3 V. Portanto, é melhor adicionar um resistor SMD no meio, por exemplo, Resistor de 12 ohms.

Etapa 12: Conecte o LCD e o suporte da placa de desenvolvimento

Conecte o suporte do LCD e da placa de desenvolvimento
Conecte o suporte do LCD e da placa de desenvolvimento

use fita conecte o suporte do LCD e o suporte da placa de desenvolvimento juntos. Ambos os suportes devem reservar cerca de 5 mm de folga para dobrar.

Etapa 13: Conecte os pinos SPI

Conecte os pinos SPI
Conecte os pinos SPI

Aqui está o resumo da conexão:

LCD ESP32

GND -> GND RST -> GPIO 33 SCL -> GPIO 18 DC -> GPIO 27 CS -> GPIO 5 SDI -> GPIO 23 SDO -> não conectado Vcc -> 3,3 V LED + -> 12 Ohm resistor -> 3,3 V LED - -> GND

Etapa 14: Programa Flash

Programa Flash
Programa Flash
Programa Flash
Programa Flash
Programa Flash
Programa Flash
Programa Flash
Programa Flash
  1. Baixe o código-fonte no GitHub:
  2. Na pasta do código-fonte, execute "make menuconfig"
  3. Selecione "Nofrendo ESP32-specific configuration"
  4. Selecione "Hardware para executar" -> "Hardware personalizado"
  5. Selecione "Tipo de LCD" -> "ST7789V LCD"
  6. Configurações de pino de preenchimento: MISO -> -1, MOSI -> 23, CLK -> 18, CS -> 5, DC -> 27, RST -> 33, Luz de fundo -> -1, IPS -> Y
  7. Sair e salvar
  8. Execute "make -j5 flash"
  9. Execute "sh flashrom.sh PATH_TO_YOUR_ROM_FILE"

Etapa 15: Conector I2C

Conector I2C
Conector I2C
Conector I2C
Conector I2C
Conector I2C
Conector I2C

Separe os pinos I2C, os pinos I2C padrão do ESP32 são:

Pino 1 (SCL) -> GPIO 22

Pino 2 (SDA) -> GPIO 21 Pino 3 (Vcc) -> 3,3 V (sem alimentação de 5 V enquanto alimentado por bateria Lipo) Pino 4 (GND) -> GND

Etapa 16: Montagem Parte 1

Image
Image

Siga as etapas do vídeo para dobrar e apertar todas as peças no estojo.

Etapa 17: Gamepad protótipo I2C

Prototype I2C Gamepad
Prototype I2C Gamepad
Protótipo I2C Gamepad
Protótipo I2C Gamepad

O programa para o Gamepad I2C é muito simples, apenas 15 linhas de código. Mas é um pouco difícil reprogramar o ATtiny861 após a soldagem, então é melhor testá-lo primeiro na placa de ensaio.

Baixe, compile e atualize o programa no GitHub:

Etapa 18: Construir Gamepad I2C

Build I2C Gamepad
Build I2C Gamepad
Build I2C Gamepad
Build I2C Gamepad
Build I2C Gamepad
Build I2C Gamepad

Aqui está o resumo da conexão:

Botão ATtiny861

GND -> Todos os botões um pino Pino 20 (PA0) -> botão Acima Pino 19 (PA1) -> Botão Abaixo Pino 18 (PA2) -> Botão Esquerdo Pino 17 (PA3) -> Botão Direito Pino 14 (PA4) -> Botão de seleção Pino 13 (PA5) -> botão Iniciar Pino 12 (PA6) -> botão A Pino 11 (PA7) -> botão B Pino 6 (GND) -> I2C pino macho cabeçalho pino 4 Pino 5 (Vcc) -> I2C pino macho do conector pino 3 Pino 3 (SCL) -> I2C pino macho cabeçalho pino 1 Pino 1 (SDA) -> I2C pino macho conector pino 2

Etapa 19: Montagem Parte 2

Image
Image
Opcional: pinos de quebra de áudio
Opcional: pinos de quebra de áudio

Siga as etapas do vídeo para instalar a tampa e o gamepad I2C no corpo principal.

Etapa 20: Opcional: Pinos de quebra de áudio

Image
Image
Opcional: pinos de quebra de áudio
Opcional: pinos de quebra de áudio

Os pinos 25 e 26 da placa de dev ESP32 estão emitindo o sinal de áudio analógico, é muito fácil separar esses 2 pinos e também os pinos de alimentação (3,3 V e GND) na parte superior. Em seguida, você pode patchear um fone de ouvido para conectá-lo. Ou até mesmo você pode adicionar um módulo de amplificador de áudio com alto-falante para reproduzi-lo alto.

Etapa 21: o que vem a seguir?

Qual é o próximo?
Qual é o próximo?

O emulador NES não é a única coisa interessante que você pode fazer com o ESP32. Por exemplo. você pode construir um console micro Python com ele. O único componente que você precisa alterar é do gamepad I2C para o teclado I2C. Acho que não é tão difícil fazer isso com um controlador ATtiny88. Você pode seguir meu twitter para ver o status.

Recomendado: