Inhoudsopgave:

ESP32 handheld gameconsole - Ajarnpa
ESP32 handheld gameconsole - Ajarnpa

Video: ESP32 handheld gameconsole - Ajarnpa

Video: ESP32 handheld gameconsole - Ajarnpa
Video: ESP32 handheld play demo 2024, Juli-
Anonim
Image
Image
Hardwarevoorbereiding
Hardwarevoorbereiding

Deze instructables laten zien hoe je een ESP32 en ATtiny861 gebruikt om een NES-emulatorspelconsole te bouwen.

Stap 1: Hardwarevoorbereiding

Hardwarevoorbereiding
Hardwarevoorbereiding
Hardwarevoorbereiding
Hardwarevoorbereiding

ESP32-ontwikkelbord

Deze keer gebruik ik een TTGO T8 ESP32 ontwikkelbord. Dit bord heeft een ingebouwd Lipo-laad- en regelcircuit, het kan helpen de extra componenten te verminderen.

Weergave

Deze keer gebruik ik een 2,4 IPS LCD. De drivercontroller is ST7789V en de resolutie is 320 x 240. Deze resolutie is het best geschikt voor de NES-emulator 252 x 224 resolutie.

Accu

Deze keer gebruik ik een 454261 Lipo-batterij. 4,5 mm is de dikte van het ESP32-ontwikkelbord en 61 mm is de breedte van het bord.

Pinkoptekst

Een 4-pins mannelijke ronde pin-header en een 4-pins vrouwelijke ronde pin-header voor het aansluiten van I2C-gamepad.

PETG-plaat

Een klein PET/PETG-plaatje voor het ondersteunen van het ontwikkelbord en de Lipo-batterij, je kunt het gemakkelijk vinden in de productverpakking.

PCB voor meerdere doeleinden

2 PCB's vereist, 1 0,4 mm dik voor ondersteuning van het display, 1 1,2 mm dik voor een I2C-gamepad.

Toetsen

Een 5 richtingen knop, 2 kleine knoppen voor Select en Start en 2 voor A en B knop.

I2C Gamepad-controller

Deze keer gebruik ik een ATtiny861-microcontroller als I2C-gamepadcontroller.

anderen

1 SMD 12 Ohm weerstand, een ISP programmer (bijv. TinyISP)

Stap 2: Softwarevoorbereiding

Softwarevoorbereiding
Softwarevoorbereiding
Softwarevoorbereiding
Softwarevoorbereiding
Softwarevoorbereiding
Softwarevoorbereiding

Arduino IDE

Download en installeer Arduino IDE indien nog niet:

ATTinyCore-ondersteuning

Volg de installatiestappen om ATTinyCore-ondersteuning toe te voegen als dat nog niet het geval is:

ESP-IDF

Volg de ESP-IDF aan de slag-gids om de ontwikkelomgeving in te stellen als dit nog niet het geval is:

Stap 3: 3D printen

3d printen
3d printen

Download en print de case:

Stap 4: LCD-ondersteuning

LCD-ondersteuning
LCD-ondersteuning
LCD-ondersteuning
LCD-ondersteuning

Snijd een printplaat van 24 x 27 gaten van 0,4 mm voor LCD-ondersteuning. Vergeet niet wat ruimte te reserveren voor het opvouwen van LCD FPC. Gebruik vervolgens wat dubbelzijdig plakband om het LCD-scherm op de PCB te bevestigen.

Stap 5: PETG-plaat voorbereiden

PETG-plaat voorbereiden
PETG-plaat voorbereiden
PETG-plaat voorbereiden
PETG-plaat voorbereiden

Knip een PETG-plaat van 62 mm x 69 mm uit voor ontwikkelbord en Lipo-batterijsteun.

Stap 6: ESP32-ontwikkelbord repareren

ESP32-ontwikkelbord repareren
ESP32-ontwikkelbord repareren

Gebruik dubbelzijdig plakband om het ontwikkelbord op de PETG-plaat te bevestigen.

Stap 7: Lipo-batterij repareren

Lipo-batterij repareren
Lipo-batterij repareren

Gebruik dubbelzijdig plakband om de Lipo-batterij naast het ontwikkelbord te bevestigen.

Stap 8: Sluit de batterij en het ontwikkelbord aan

Verbind batterij en ontwikkelbord
Verbind batterij en ontwikkelbord

Stap 9: Displaypinnen voorbereiden

Displaypinnen voorbereiden
Displaypinnen voorbereiden

LCD-schermen hebben veel variaties van verschillende leveranciers. Verkrijg de juiste datasheet en lees deze voordat u een patch en verbinding maakt.

Sommige pinnen zijn gereserveerd voor het aanraakscherm. Aangezien dit LCD-scherm geen aanraakscherm heeft, kunt u eenvoudig die pinnen verwijderen om de storing te verminderen.

Stap 10: GND-pinnen aansluiten

GND-pinnen aansluiten
GND-pinnen aansluiten
GND-pinnen aansluiten
GND-pinnen aansluiten

In de meeste gevallen zijn er maar weinig pinnen die op GND moeten worden aangesloten. Om de soldeerinspanning te verminderen, heb ik een koperen bandvorm gesneden om alle GND-pinnen te bereiken en vervolgens helemaal te solderen.

Stap 11: Sluit Vcc-pinnen aan

Sluit Vcc-pinnen aan
Sluit Vcc-pinnen aan

Er zijn 2 pinnen nodig om verbinding te maken met Vcc, LCD-voeding en LED-voeding. Volgens het gegevensblad kan de LCD-voeding rechtstreeks worden aangesloten op de 3,3 V-pin van het ontwikkelbord, maar de LED-voeding werkt iets lager dan 3,3 V. Het is dus beter om een SMD-weerstand in het midden toe te voegen, b.v. 12 Ohm weerstand.

Stap 12: Verbind LCD & Dev Board-ondersteuning

Connect LCD & Dev Board Ondersteuning
Connect LCD & Dev Board Ondersteuning

gebruik tape connect LCD-ondersteuning en dev board-ondersteuning samen. Beide steunen moeten ongeveer 5 mm ruimte reserveren voor het vouwen.

Stap 13: Sluit SPI-pinnen aan

Sluit SPI-pinnen aan
Sluit SPI-pinnen aan

Hier is het verbindingsoverzicht:

LCD ESP32

GND -> GND RST -> GPIO 33 SCL -> GPIO 18 DC -> GPIO 27 CS -> GPIO 5 SDI -> GPIO 23 SDO -> niet aangesloten Vcc -> 3,3 V LED+ -> 12 Ohm weerstand -> 3,3 V LED - -> GND

Stap 14: Flash-programma

Flash-programma
Flash-programma
Flash-programma
Flash-programma
Flash-programma
Flash-programma
Flash-programma
Flash-programma
  1. Download de broncode op GitHub:
  2. Voer in de broncodemap "make menuconfig" uit
  3. Selecteer "Nofredo ESP32-specifieke configuratie"
  4. Selecteer "Hardware om op te draaien" -> "Aangepaste hardware"
  5. Selecteer "LCD-type" -> "ST7789V LCD"
  6. Instellingen vulpen: MISO -> -1, MOSI -> 23, CLK -> 18, CS -> 5, DC -> 27, RST -> 33, Achtergrondverlichting -> -1, IPS -> Y
  7. Afsluiten en opslaan
  8. Voer "make -j5 flash" uit
  9. Voer "sh flashrom.sh PATH_TO_YOUR_ROM_FILE" uit

Stap 15: I2C-connector

I2C-connector
I2C-connector
I2C-connector
I2C-connector
I2C-connector
I2C-connector

Breakout de I2C-pinnen, ESP32 standaard I2C-pinnen zijn:

Pin 1 (SCL) -> GPIO 22

Pin 2 (SDA) -> GPIO 21 Pin 3 (Vcc) -> 3,3 V (geen 5 V stroom terwijl gevoed door Lipo-batterij) Pin 4 (GND) -> GND

Stap 16: Montage deel 1

Image
Image

Volg de videostappen om alle onderdelen in de koffer te vouwen en samen te drukken.

Stap 17: Prototype I2C-gamepad

Prototype I2C-gamepad
Prototype I2C-gamepad
Prototype I2C-gamepad
Prototype I2C-gamepad

Het programma voor de I2C Gamepad is heel eenvoudig, slechts 15 regels code. Maar het is een beetje moeilijk om de ATtiny861 te herprogrammeren na het solderen, dus het is beter om hem eerst op het breadboard te testen.

Download, compileer en flash het programma van GitHub:

Stap 18: I2C-gamepad bouwen

I2C-gamepad bouwen
I2C-gamepad bouwen
I2C-gamepad bouwen
I2C-gamepad bouwen
I2C-gamepad bouwen
I2C-gamepad bouwen

Hier zijn de verbinding Samenvatting:

ATtiny861 knop

GND -> Alle knoppen één pin Pin 20 (PA0) -> Up-knop Pin 19 (PA1) -> Down-knop Pin 18 (PA2) -> Linkerknop Pin 17 (PA3) -> Rechterknop Pin 14 (PA4) -> Select-knop Pin 13 (PA5) -> Start-knop Pin 12 (PA6) -> A-knop Pin 11 (PA7) -> B-knop Pin 6 (GND) -> I2C mannelijke pin header pin 4 Pin 5 (Vcc) -> I2C mannelijke pin header pin 3 Pin 3 (SCL) -> I2C mannelijke pin header pin 1 Pin 1 (SDA) -> I2C mannelijke pin header pin 2

Stap 19: Montage deel 2

Image
Image
Optioneel: Audio Breakout-pinnen
Optioneel: Audio Breakout-pinnen

Volg de videostappen om de hoes en de I2C-gamepad op het hoofdgedeelte te installeren.

Stap 20: Optioneel: Audio Breakout-pinnen

Image
Image
Optioneel: Audio Breakout-pinnen
Optioneel: Audio Breakout-pinnen

ESP32-ontwikkelbord Pin 25 en 26 voeren het analoge audiosignaal uit, het is heel gemakkelijk om deze 2 pinnen te doorbreken en ook de voedingspinnen (3,3 V en GND) aan de bovenkant. Dan kun je een oortelefoon patchen om erop aan te sluiten. Of u kunt zelfs een audioversterkermodule met luidspreker toevoegen om deze luid af te spelen.

Stap 21: Wat nu?

Wat is het volgende?
Wat is het volgende?

NES-emulator is niet het enige interessante dat u met ESP32 kunt maken. bijv. je kunt er een micropython-console mee bouwen. Het enige onderdeel dat u hoeft te wijzigen, is van I2C-gamepad naar I2C-toetsenbord. Ik denk dat het niet zo moeilijk is om het te maken met een ATtiny88 controller. U kunt mijn twitter volgen om de status te zien.

Aanbevolen: