Inhoudsopgave:
- Stap 1: Hardwarevoorbereiding
- Stap 2: Softwarevoorbereiding
- Stap 3: 3D printen
- Stap 4: LCD-ondersteuning
- Stap 5: PETG-plaat voorbereiden
- Stap 6: ESP32-ontwikkelbord repareren
- Stap 7: Lipo-batterij repareren
- Stap 8: Sluit de batterij en het ontwikkelbord aan
- Stap 9: Displaypinnen voorbereiden
- Stap 10: GND-pinnen aansluiten
- Stap 11: Sluit Vcc-pinnen aan
- Stap 12: Verbind LCD & Dev Board-ondersteuning
- Stap 13: Sluit SPI-pinnen aan
- Stap 14: Flash-programma
- Stap 15: I2C-connector
- Stap 16: Montage deel 1
- Stap 17: Prototype I2C-gamepad
- Stap 18: I2C-gamepad bouwen
- Stap 19: Montage deel 2
- Stap 20: Optioneel: Audio Breakout-pinnen
- Stap 21: Wat nu?
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-13 06:57
Deze instructables laten zien hoe je een ESP32 en ATtiny861 gebruikt om een NES-emulatorspelconsole te bouwen.
Stap 1: 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
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
Download en print de case:
Stap 4: 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
Knip een PETG-plaat van 62 mm x 69 mm uit voor ontwikkelbord en Lipo-batterijsteun.
Stap 6: ESP32-ontwikkelbord repareren
Gebruik dubbelzijdig plakband om het ontwikkelbord op de PETG-plaat te bevestigen.
Stap 7: Lipo-batterij repareren
Gebruik dubbelzijdig plakband om de Lipo-batterij naast het ontwikkelbord te bevestigen.
Stap 8: Sluit de batterij en het ontwikkelbord aan
Stap 9: 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
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
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
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
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
- Download de broncode op GitHub:
- Voer in de broncodemap "make menuconfig" uit
- Selecteer "Nofredo ESP32-specifieke configuratie"
- Selecteer "Hardware om op te draaien" -> "Aangepaste hardware"
- Selecteer "LCD-type" -> "ST7789V LCD"
- Instellingen vulpen: MISO -> -1, MOSI -> 23, CLK -> 18, CS -> 5, DC -> 27, RST -> 33, Achtergrondverlichting -> -1, IPS -> Y
- Afsluiten en opslaan
- Voer "make -j5 flash" uit
- Voer "sh flashrom.sh PATH_TO_YOUR_ROM_FILE" uit
Stap 15: 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
Volg de videostappen om alle onderdelen in de koffer te vouwen en samen te drukken.
Stap 17: 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
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
Volg de videostappen om de hoes en de I2C-gamepad op het hoofdgedeelte te installeren.
Stap 20: 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?
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.