Inhoudsopgave:
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-23 15:01
In deze instructable laat ik zien hoe je vier arcade-achtige games kunt reproduceren - Tetris - Snake - Breakout - Bomber - met behulp van een ESP32, met de uitgang voor een VGA-monitor.
De resolutie is 320 x 200 pixels, in 8 kleuren. Ik heb eerder een versie gedaan met een Arduino Uno (zie hier), maar de resolutie was slechts 120 x 60 pixels, 4 kleuren, en het Arduino-geheugen was bijna vol. Dankzij de betere prestaties van de ESP32 zijn zowel de resolutie als de speelbaarheid hoger. Verder is er nog voldoende geheugen beschikbaar, waardoor het toevoegen van nieuwe games in de toekomst eenvoudig zal zijn.
Ik zal ook laten zien hoe je een eenvoudige joystick kunt aansluiten via een RS232-kabel. Ik gebruik dezelfde pinout van de Commodore 64.
Dit project wordt mogelijk gemaakt door de geweldige ESP32 VGA-bibliotheek, geschreven door Fabrizio Di Vittorio. Zie hier voor meer details.
Stap 1: ESP32-kaarten, Arduino IDE-installatie en VGA-bibliotheekconfiguratie
Allereerst dien je een ESP32 revisie 1 of hoger aan te schaffen. Er zijn veel versies beschikbaar, maar ik raad aan om er een te kiezen met veel pinnen, bij voorkeur een model zoals op deze foto, met 38 pinnen. Ik gebruik deze versie, maar ik denk dat vele andere ook goed zijn. Op ebay vind je dit model voor nog geen 7 Euro, inclusief verzendkosten.
Zodra je het bord hebt, moet je doorgaan met de volgende drie substappen:
- Installeer de laatste Arduino IDE
- Configureer de ESP32 in de IDE en
- Download en installeer de VGA-bibliotheek
Substap 1. Er zijn verschillende methoden om de ESP32 te programmeren, maar hier moet je de Arduino IDE gebruiken (ik gebruik trouwens versie 1.8.9). Om het te installeren, gaat u naar de Arduino IDE-pagina en volgt u de instructies.
Substap 2. Nadat de vorige bewerking is voltooid, moet u uw ESP32 configureren binnen de Arduino IDE. Dit is niet triviaal, aangezien de ESP32 er (nog?) niet in voorkomt. U kunt deze zelfstudie of de volgende stappen volgen.
1) open de Arduino IDE
2) open het voorkeurenvenster, Bestand/Voorkeur, of druk op "Ctrl+komma"
3) ga naar de "Extra Board Manager-URL's", kopieer en plak de volgende tekst:
https://dl.espressif.com/dl/package_esp32_index.js…
en klik op de OK-knop.
4) Bordenmanager openen. Ga naar Tools/Board/Boards Manager…
5) Zoek naar ESP32 en druk op de installatieknop voor de “ESP32 by Espressif Systems“:
6) Op dit punt, wanneer u voor de eerste keer uw ESP32 aansluit, moet u het juiste model kiezen in de lange lijst met beschikbare ESP32-kaarten (zie de afbeelding in deze stap). Kies bij twijfel over het model gewoon de generieke, d.w.z. de eerste. Het werkt voor mij.
7) het systeem moet ook de juiste USB (COM)-poort en de uploadsnelheid kiezen (normaal 921600). Op dit punt moet de verbinding tussen uw pc en het ESP32-bord tot stand worden gebracht.
Substap 3. Ten slotte moet u de FabGL VGA-bibliotheek installeren. Klik hier om het volledige gecomprimeerde bestand te downloaden. Decomprimeer het en kopieer de resulterende map (FabGL-master) in de Arduino IDE-bibliothekenmap, die er als volgt uitziet:
"…\arduino-1.8.12\bibliotheken".
Stap 2: Uploaden "ESP32_VGA_Tetris_Snake_Breakout_Bomber_V1.0"
Download ESP32_VGA_Tetris_Snake_Breakout_Bomber_V1.0.zip onderaan deze stap. Pak het uit en open het met de Arduino IDE en upload het vervolgens naar je ESP32. Als je geen foutmeldingen hebt, zou de code al moeten lopen en hoef je alleen de VGA-poort en knoppen (of joystick) aan te sluiten.
Stap 3: De VGA-poort aansluiten
Je hebt de volgende onderdelen nodig:
- een DSUB15-connector, d.w.z. een vrouwelijke VGA-connector of een VGA-kabel die moet worden doorgeknipt.
- drie weerstanden van 270 Ohm.
Verbind de ESP32 GPIO pin 2, 15 en 21 met respectievelijk VGA Rood, Groen en Blauw via de 270 Ohm weerstanden.
Sluit de VGA Hsync en Vsync aan op respectievelijk ESP32 GPIO-pinnen 17 en 4.
Sluit de DSUB15-connectoren pinnen 5, 6, 7, 8 en 10 aan op ESP32 GND.
Zie de afbeelding in deze stap voor de definitie van de VGA DSUB15-connectorpin. Let op, dit is de soldeerzijde van de vrouwelijke connector.
Stap 4: Verbind de vier knoppen
Als u geen C64-joystick hebt, kunt u na deze stap vier knoppen aansluiten. Als je de joystick hebt, kun je deze stap overslaan en naar de volgende springen, maar je kunt hoe dan ook zowel de knoppen als de joystick aansluiten (ze zijn hoe dan ook "parallel").
Het schema in deze stap laat zien hoe u een enkele knop (normaal open) van +5V aansluit op de ESP32-pin.
Merk op dat u ook de door ESP gegeven pin op GND moet aansluiten via een weerstand van 1 tot 5 kOhm. Op deze manier staat de ESP-pin op exact nul Volt als de knop wordt losgelaten (open). Meer specifiek moet u vier knoppen verbinden met de volgende volgorde:
- Pin 12 op de rechterknop
- Pin 25 op knop Omhoog
- Pin 14 op de linkerknop
- Pin 35 op de knop Omlaag
Stap 5: sluit de joystick aan
Een C64-joystick heeft de pinout die wordt weergegeven in de eerste afbeelding van deze stap. Om hem op de ESP32 aan te sluiten, hebt u een 9-pins DSUB-mannelijke connector nodig (d.w.z. een socket), zoals weergegeven in de tweede afbeelding. Ik heb er een verwijderd met zichtbare pinnen van een oud elektronisch bord. Je kunt een heteluchtpistool gebruiken om het te verwijderen (maar doe het buiten!).
U moet de pinnen aansluiten volgens de numerieke volgorde in deze afbeeldingen. Merk op dat het schema verwijst naar de joystickzijde, dus het vertegenwoordigt de aansluiting van de vrouwelijke stekker. De aansluiting (mannelijk) om op de ESP32 aan te sluiten heeft de pinnen met een "spiegel"-opstelling. Denk er bij twijfel aan dat het pinnummer altijd wordt vermeld op de mannelijke en vrouwelijke connectoren, zoals weergegeven in de derde afbeelding.
Als u de spellen alleen met de joystick wilt besturen, sluit u de gemeenschappelijke pin (9) aan op ESP32 +5V en de joystickpinnen 1, 2, 3, 4 en 6 aan de door ESP gegeven pinnen volgens de volgende lijst.
- ESP-pin 12 naar rechterknop (RS232-pin 4)
- ESP-pin 14 naar linkerknop (RS232-pin 3)
- ESP-pin 35 naar Down-knop (RS232-pin 2)
- ESP-pin 25 naar omhoog-knop (RS232-pin 1 en 6, d.w.z. joystickvuur)
NB ook de ESP-pinnen 12, 14, 25 en 35 moeten via een weerstand van 1 tot 5 kOhm op GND worden aangesloten. Op deze manier staat de ESP-pin op exact nul Volt als de knop wordt losgelaten (open).
NB2 joystick UP-positie en vuurknop zijn samen verbonden met ESP-pin 25-
Ik heb vier knoppen op het pc-bord aangesloten, op deze manier heb ik de joystick niet nodig om te spelen (hoewel met de joystick veel leuker is). Nogmaals, de RS232-pin 9 moet worden aangesloten op +5 V en de joystickpinnen staan net parallel aan de knoppen.
Stap 6: Conclusie en erkenning
Als alles naar behoren werkt, hoeft u alleen maar de VGA-monitor aan te sluiten en u kunt genieten van een ouderwets spel!
Je kunt ook een Mandelbrot-set tekenen met een resolutie van 640 x 350 pixels, gewoon om de mogelijkheden van de VGA-bibliotheek te testen.
Merk op dat de code zo is geschreven dat andere games in de toekomst gemakkelijk kunnen worden toegevoegd (de ESP32 heeft voldoende ruimte!). Als dit project genoeg interesse krijgt, mag ik dat doen…
Tot slot wil ik mijn tanks uiten aan Fabrizio Di Vittorio voor zijn geweldige ESP32 VGA-bibliotheek. Voor meer details, voorbeelden, en… Space Invaders, bezoek zijn site.
Aanbevolen:
Speel Nintendo-games op het Idevice met een gratis Wiimote!: 6 stappen
Speel Nintendo-spellen op het Idevice met een gratis Wiimote!: Ben je ooit naar de app store gegaan om een Super Nintendo-spel te kopen, maar je kunt er geen vinden om te spelen. Welnu, je kunt deze nintendo-spellen nu spelen met de snes-emulator van cydia. Met deze emulator kun je Nintendo-games spelen op je idevice, zelfs m
DIY Arcade-joystick: 3 stappen
DIY Arcade-joystick: dit is een arcade-joystick die ik heb gemaakt. De arcade-joystick zelf is helemaal opnieuw gemaakt met behulp van micro-rolschakelaars, geen vooraf gemaakte arcade-joystickmodule die vooraf is gebruikt. Ik kreeg dit idee van iemand op de Maker Faire Singapore 2016, waar ik me herinnerde s
DIY PC-stuur en pedalen van karton! (Feedback, Paddle Shifters, Display) voor racesimulators en games: 9 stappen
DIY PC-stuur en pedalen van karton! (Feedback, Paddle Shifters, Display) voor racesimulators en games: Hallo allemaal! In deze saaie tijden zijn we allemaal aan het rondhangen op zoek naar iets om te doen. Echte race-evenementen zijn geannuleerd en vervangen door simulatoren. Ik heb besloten om een goedkope simulator te bouwen die feilloos werkt, mits
Compiler Bro's (Indie Games): 3 stappen
Compiler Bro's (Indie Games): Compiler Bro's: Gamen is zo leuk……..maar het maken ??? Is een vraag die gesteld moet worden op Quora :) Bouwspel is een perfecte oefening om je codeervaardigheden en kennis in te brengen en niet iedereen bouwt een spel… Ik heb zelf unity f
Games uploaden naar Arduboy en 500 games naar Flash-cart: 8 stappen
Spellen uploaden naar Arduboy en 500 spellen naar Flash-cart: Ik heb een zelfgemaakte Arduboy gemaakt met serieel Flash-geheugen dat maximaal 500 spellen kan opslaan om onderweg te spelen. Ik hoop te delen hoe je games kunt laden, inclusief hoe je games opslaat in het seriële flash-geheugen en je eigen geconsolideerde gamepakket kunt maken