Inhoudsopgave:

ESP32 VGA Arcade Games en Joystick - Ajarnpa
ESP32 VGA Arcade Games en Joystick - Ajarnpa

Video: ESP32 VGA Arcade Games en Joystick - Ajarnpa

Video: ESP32 VGA Arcade Games en Joystick - Ajarnpa
Video: ESP32 VGA four games & joystick 2024, Juli-
Anonim
Image
Image
ESP32 VGA Arcade Games en Joystick
ESP32 VGA Arcade Games en Joystick
ESP32 VGA Arcade Games en Joystick
ESP32 VGA Arcade Games en Joystick

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

ESP32-kaarten, Arduino IDE-installatie en VGA-bibliotheekconfiguratie
ESP32-kaarten, Arduino IDE-installatie en VGA-bibliotheekconfiguratie
ESP32-kaarten, Arduino IDE-installatie en VGA-bibliotheekconfiguratie
ESP32-kaarten, Arduino IDE-installatie en VGA-bibliotheekconfiguratie
ESP32-kaarten, Arduino IDE-installatie en VGA-bibliotheekconfiguratie
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:

  1. Installeer de laatste Arduino IDE
  2. Configureer de ESP32 in de IDE en
  3. 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

De VGA-poort aansluiten
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

Verbind de vier knoppen
Verbind de vier knoppen
Verbind de vier knoppen
Verbind de vier knoppen
Verbind de vier knoppen
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

Sluit de joystick aan
Sluit de joystick aan
Sluit de joystick aan
Sluit de joystick aan
Sluit de joystick aan
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

Conclusie en erkenning
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: