projekte:virtualpinballcabinet

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
projekte:virtualpinballcabinet [02.03.2024 23:03] – [Virtual Pinball Cabinet Projekt] chaosprojekte:virtualpinballcabinet [24.11.2024 17:18] (aktuell) – [4. Programmierung] + ZeDMD + PinballController chaos
Zeile 13: Zeile 13:
 | Vierkantholz        | Querstreben             | ca 1x 2m x 25mm x 25mm               | vorhandene Reste ([[https://www.obi.de/p/8635351/rahmenholz-aus-fichte-tanne-gehobelt-34-mm-x-34-mm-x-2-000-mm|Obi]])    | - (ca. 5,38EUR)  | | Vierkantholz        | Querstreben             | ca 1x 2m x 25mm x 25mm               | vorhandene Reste ([[https://www.obi.de/p/8635351/rahmenholz-aus-fichte-tanne-gehobelt-34-mm-x-34-mm-x-2-000-mm|Obi]])    | - (ca. 5,38EUR)  |
 | Tischlerplatte      | Lockbar Handauflage     | ca 100mm x 600mm x 20mm              | vorhandene Reste ([[https://www.obi.de/p/7451073/siebdruckplatte-birke-einseitig-hexa-praegung-120-cm-x-60-cm-x-1-5-cm-braun|Obi]])          | - (ca 10,00EUR    )    | | Tischlerplatte      | Lockbar Handauflage     | ca 100mm x 600mm x 20mm              | vorhandene Reste ([[https://www.obi.de/p/7451073/siebdruckplatte-birke-einseitig-hexa-praegung-120-cm-x-60-cm-x-1-5-cm-braun|Obi]])          | - (ca 10,00EUR    )    |
 +| Pappelsperrholz     | Monitor-/Lautsprecherrahmen | ca. 400mm x 500mm x4mm           | vorhandene Reste ([[https://www.obi.de/p/9013988/bastelsperrholz-pappel-5-stueck-din-a2-staerke-4-mm|Obi]]) | - (ca. 12 EUR) |
 | Lattenrost-Latten   | Zierholz und Halterungen| ca 4x 90cm x 40mm x 10mm             | vorhandene Reste ([[https://www.ikea.com/de/de/p/luroey-federholzrahmen-90160211/|Iea]])                           | - (   25,00EUR)  | Lattenrost-Latten   | Zierholz und Halterungen| ca 4x 90cm x 40mm x 10mm             | vorhandene Reste ([[https://www.ikea.com/de/de/p/luroey-federholzrahmen-90160211/|Iea]])                           | - (   25,00EUR) 
 | Glasplatte          | Spielfeldabdeckung      | 56cm x 90cm x 12mm                   | Kleinanzeigen (Glasregal)         | 15EUR       | | Glasplatte          | Spielfeldabdeckung      | 56cm x 90cm x 12mm                   | Kleinanzeigen (Glasregal)         | 15EUR       |
Zeile 20: Zeile 21:
 | div. Schrauben, Muttern     | Befestigungen                  |                       | [[https://schraubenking-shop.de|Schraubenking]]   | ca 30 EUR | | div. Schrauben, Muttern     | Befestigungen                  |                       | [[https://schraubenking-shop.de|Schraubenking]]   | ca 30 EUR |
 | Arcade-Buttons              | Spieler-Interface              | 10x rund & eckig      | [[https://www.aliexpress.com/item/1005004976994548.html|AliExpress]]  | ca 20 EUR | | Arcade-Buttons              | Spieler-Interface              | 10x rund & eckig      | [[https://www.aliexpress.com/item/1005004976994548.html|AliExpress]]  | ca 20 EUR |
-Arduino Leonardo + I2C IO-Extender | Button-Controller       |                       | vorhandene Reste ([[https://exp-tech.de/products/arduino-leonardo-with-headers|EXP-Tech]])  | - (ca 30EUR) |+Raspiberry Pi Pico          | Button-Controller              |                       | vorhandene Reste ([[https://www.amazon.de/Raspberry-Pi-Pico/dp/B09KVB8LVR|Amazon]])  | - (ca 8 EUR) | 
 +I2C IO-Extender             | Button-Controller Anschlüsse   |                       | vorhandene Reste ([[https://www.amazon.de/IO-Erweiterungsmodulplatine-I2C-Schnittstelle-paralleler-GPIO-Expander-vorgel%C3%B6tetem-CAT9555-IO-Erweiterungsmodul/dp/B0BBVBNNRB|Amazon (ähnlich)]])  | - (ca 10 EUR) |
 | ESP32                       | Dot_Matrix-Controller          |                       | [[https://www.aliexpress.com/item/1005001636295529.html|AliExpress]]       | 3,30EUR | | ESP32                       | Dot_Matrix-Controller          |                       | [[https://www.aliexpress.com/item/1005001636295529.html|AliExpress]]       | 3,30EUR |
 | Dot-Matrix-Display          | Punkteanzeige                  | 2x 64px x 32px        | [[https://www.aliexpress.com/item/1005004933061424.html|AliExpress]] | 26,96EUR |  | Dot-Matrix-Display          | Punkteanzeige                  | 2x 64px x 32px        | [[https://www.aliexpress.com/item/1005004933061424.html|AliExpress]] | 26,96EUR | 
 +| Beschleunigungssensor       | Nudge-Detektor                                       | [[https://www.amazon.de/dp/B07N2ZL34Z?ref=ppx_yo2ov_dt_b_fed_asin_title|Amazon]] | 7,45 EUR |
 | PC Gehäuse + Netzteil + HDD |                                | 550Watt PSU /  120GB HDD  | vorhandene Reste                                                | - | | PC Gehäuse + Netzteil + HDD |                                | 550Watt PSU /  120GB HDD  | vorhandene Reste                                                | - |
 | CPU + Mainboard + RAM                                      | Intel i5 3570 / 16GB DDR3  | Kleinanzeigen                                                        | 45EUR | | CPU + Mainboard + RAM                                      | Intel i5 3570 / 16GB DDR3  | Kleinanzeigen                                                        | 45EUR |
Zeile 29: Zeile 32:
 | LCT 22Zoll 16:10            | Backpanel Monitor              | Phillips              | Kleinanzeigen                                                        | 5 EUR | | LCT 22Zoll 16:10            | Backpanel Monitor              | Phillips              | Kleinanzeigen                                                        | 5 EUR |
 | Lautsprecher                | Spielfeldgeräusche             | 4x 8Ohm 3Watt 103mm   | [[https://www.pollin.de/p/lautsprecher-regal-8-ohm-3w-2-stueck-641551|Pollin]] | 3,60 EUR |   | Lautsprecher                | Spielfeldgeräusche             | 4x 8Ohm 3Watt 103mm   | [[https://www.pollin.de/p/lautsprecher-regal-8-ohm-3w-2-stueck-641551|Pollin]] | 3,60 EUR |  
-| Stereo-Verstärker                                          | 3x 20Watt 12V         | [[https://www.aliexpress.com/item/1005005334808973.html|AliExpress]] | 7,93EUR|+| Stereo-Verstärker                                          | 3x 20Watt 12V         | [[https://www.aliexpress.com/item/1005005334808973.html|AliExpress]] | 7,93EUR |
 | diverse Kabel                                              |                       | vorhandene Reste | - | | diverse Kabel                                              |                       | vorhandene Reste | - |
 | Stahl-Vierkantrohr          | Beine                          | 25mmx25mm x 100cm     | [[https://www.obi.de/p/7804263/vierkantrohr-stahl-25-mm-x-25-mm-x-1000-mm|Obi]] | 23,16EUR | | Stahl-Vierkantrohr          | Beine                          | 25mmx25mm x 100cm     | [[https://www.obi.de/p/7804263/vierkantrohr-stahl-25-mm-x-25-mm-x-1000-mm|Obi]] | 23,16EUR |
 +| Arcade-Joystick                                            |                       | Schrott-Rettung ([[https://www.amazon.de/Klassischer-Wettbewerb-Controller-Arcade-Spiele-PC-Kampfspiele/dp/B0776QRXSF|Amazon (ähnlich)]]) | -  (ca 15 EUR) |
 +| Transportgriffe (federnd)                                  | 4x                    | [[https://www.amazon.de/dp/B0B57HMG4R?ref=ppx_yo2ov_dt_b_fed_asin_title|Amazon]] | 11 EUR |
 |---------------------|-------------------------|--------------------------------------|---------------------------------|------------------| |---------------------|-------------------------|--------------------------------------|---------------------------------|------------------|
-| **Gesamt** | | | | 339,95EUR (428EUR)|+| **Gesamt** | | | | 358,39EUR (462EUR)|
    
  
Zeile 44: Zeile 49:
  
 {{ :projekte:vpinball:virtual_pinball_cad.png?direct&800 |}} {{ :projekte:vpinball:virtual_pinball_cad.png?direct&800 |}}
 +(Bild zeigt erste Design-Revision. Inzwischen Backbox klappbar mit diagonalen Rotationsarmen außen statt starrem Pfosten innen; 1 Display statt 2.)
 +
   * 12mm OSB Platten nach Maßen einer Standard-Cabinets zugeschnitten (auf glatte, metrische Werte gerundet)   * 12mm OSB Platten nach Maßen einer Standard-Cabinets zugeschnitten (auf glatte, metrische Werte gerundet)
   * Eckstücke und vordere Auflagen für den Playfield-Monitor aus Dachlattenabschnitten 24 × 48 mm    * Eckstücke und vordere Auflagen für den Playfield-Monitor aus Dachlattenabschnitten 24 × 48 mm 
Zeile 50: Zeile 57:
   * Zusätzliche Abdeckungen bei Lockbar und oberhalb Playfield aus Lattenrost-Latten (Biegung nach oben)   * Zusätzliche Abdeckungen bei Lockbar und oberhalb Playfield aus Lattenrost-Latten (Biegung nach oben)
   * Monitorhalter Backboard aus Lattenrost-Latten   * Monitorhalter Backboard aus Lattenrost-Latten
-  * Ratationsarm-Strebe aus Restholz+  * Rotationsarm-Strebe aus Restholz
  
  
Zeile 63: Zeile 70:
 Diverse kleine Holzelemente wurden passend zugeschnitten, um als Führung und Anschlag der Beine zu fungieren. Sie sind mit den Rahmenwinkeln und den Seitenteilen verschraubt. Diverse kleine Holzelemente wurden passend zugeschnitten, um als Führung und Anschlag der Beine zu fungieren. Sie sind mit den Rahmenwinkeln und den Seitenteilen verschraubt.
  
 +Der Monitor wurde mit 4mm Sperrholz eingerahmt. Ebenso die sichtbaren Lautsprecher neben dem DOT-Matrix Display. Dazu wurden Startlöcher gebohrt und dann mit Hand-Bügelsäge Innenflächen ausgesägt. 
 +Eine zusäzliche 6mm Sperrholzplatte ist als Boden eingelegt.
 ===== 2. Metallarbeiten ===== ===== 2. Metallarbeiten =====
  
Zeile 79: Zeile 87:
 (leitet das Gewicht der Handauflage in die vordere OSB Platte) verwendet. Dabei sind beide Elemente nur mit der Handauflage verschraubt, so dass diese abnehmbar bleibt. Die Metallplatte wurde mittels schwarzem Gaffa-Tape für die Auflage der Glasplatte gepolstert und versteckt. (leitet das Gewicht der Handauflage in die vordere OSB Platte) verwendet. Dabei sind beide Elemente nur mit der Handauflage verschraubt, so dass diese abnehmbar bleibt. Die Metallplatte wurde mittels schwarzem Gaffa-Tape für die Auflage der Glasplatte gepolstert und versteckt.
  
-Metallwinkel wurden ebenfalls zur Befestigung der Querstrebe der hinteren Playfield-Monitor-Halterung verwendet sowie zur Verstärkung der hinteren R"cukwand/Seitenwand-Verbindung.+Metallwinkel wurden ebenfalls zur Befestigung der Querstrebe der hinteren Playfield-Monitor-Halterung verwendet sowie zur Verstärkung der hinteren Rückwand/Seitenwand-Verbindung.
  
 Die C-förmigen Rahmenteile des Glasregals wurden per Hand in Winkelstücke zersägt, mit zusätzlichen Löchern versehen und als Versteifung/tragender Rahmen innen an die OSB Platten verschraubt. Auf ihnen liegt die Bodenplatte auf.  Die C-förmigen Rahmenteile des Glasregals wurden per Hand in Winkelstücke zersägt, mit zusätzlichen Löchern versehen und als Versteifung/tragender Rahmen innen an die OSB Platten verschraubt. Auf ihnen liegt die Bodenplatte auf. 
Zeile 95: Zeile 103:
    * PC with i5 3570 3.48GHz, Gigabyte Mainboard, 16GB DDR3 RAM, AMD Radeon RX570    * PC with i5 3570 3.48GHz, Gigabyte Mainboard, 16GB DDR3 RAM, AMD Radeon RX570
    * 42Zoll Sony Bravia KDL-42W655A (1920x1080) + 22Zoll 16:10 DVI/HDMI (1920x1080)    * 42Zoll Sony Bravia KDL-42W655A (1920x1080) + 22Zoll 16:10 DVI/HDMI (1920x1080)
-   Arduino Leonardo + MCP23017 IO-Extender+   Raspberry Pi Pico + MCP23017 IO-Extender
    * verschiedenen Taster     * verschiedenen Taster 
    * Lautsprecher-Set des TV    * Lautsprecher-Set des TV
Zeile 102: Zeile 110:
    * 2x 64x32 Pixel Dot-Matrix-Display    * 2x 64x32 Pixel Dot-Matrix-Display
    * ESP32 Controller für DMD    * ESP32 Controller für DMD
 +   * Schiebepotentiometer für Plunger (vorbereitet)
 +   * 6-Achsen IMU (Accellerometer + Gyroskop) 
  
 Ein alter Gaming PC mit aktualisierter CPU/Mainboard Kombi + eine halbwegs neue Grafikkarte bilden die Rechenbasis. Die Systemeistung ist ausreichend. Ein alter Gaming PC mit aktualisierter CPU/Mainboard Kombi + eine halbwegs neue Grafikkarte bilden die Rechenbasis. Die Systemeistung ist ausreichend.
 Ein Linux Mint XFCE wurde als OS aufgespielt, was die Einrichtung der Software erschwert, dessen Windows-Variante erst vor knapp einem Jahr auf Linux portiert wurde. Ein Linux Mint XFCE wurde als OS aufgespielt, was die Einrichtung der Software erschwert, dessen Windows-Variante erst vor knapp einem Jahr auf Linux portiert wurde.
  
-Ein Arduino Leonardo fragt mittels eine I2C IO-Extenders mehrere Drucktaster ab, wandelt sie in reguläre Tastatureingaben und schickt diese via USB an den Rechner.+Ein Raspi Pico fragt mittels eine I2C IO-Extenders mehrere Drucktaster ab, wandelt sie in reguläre Tastatureingaben und schickt diese via USB an den Rechner
 +Zusätzlich spricht er mittels I2C mit dem Beschleunigungssensor und liest mittels ADC Kanal die Position des Schiebepotis aus. 
 +Auf dem Pico läuft dazu ein [[https://github.com/earlephilhower/arduino-pico|Arduino-Kern]] um ihn mit den Arduino-Bibliotheken der Erweiterungen kompatibel zu machen. 
 +Zum PC hin emuliert der Pico ein USB Gamepad/Joystick. Ein RTOS-scheduler wird benutzt, um Latenzen gering zu halten.
  
 Der ESP32 wurde mit der [[https://github.com/PPUC/ZeDMD|ZeDMD]] Software bespielt und nimmt Befehle mittels USB/Serial vom PC entgegen. Der ESP32 wurde mit der [[https://github.com/PPUC/ZeDMD|ZeDMD]] Software bespielt und nimmt Befehle mittels USB/Serial vom PC entgegen.
Zeile 112: Zeile 125:
 === Links === === Links ===
 [[http://mjrnet.org/pinscape/|Pinscape Controller and various guides]] [[http://mjrnet.org/pinscape/|Pinscape Controller and various guides]]
- 
-{{:projekte:pinball.png?direct&400|}} 
-CC-BY4.0 Copyright ©2016-2023 [[http://mjrnet.org/pinscape/BuildGuideV2/BuildGuide.php?sid=architecture|Michael J. Roberts]]. 
  
 ===== 4. Programmierung ===== ===== 4. Programmierung =====
Zeile 120: Zeile 130:
 Dieser Abschnitt befasst sich mit der Softwareintegration für das Virtual Pinball Erlebnis. Dieser Abschnitt befasst sich mit der Softwareintegration für das Virtual Pinball Erlebnis.
  
-=== Installation Visual Pinball ===+=== Installation Virtual Pinball ===
 <code> <code>
 git clone https://github.com/vpinball/vpinball.git git clone https://github.com/vpinball/vpinball.git
Zeile 126: Zeile 136:
 git checkout standalone git checkout standalone
 sudo apt install cmake bison zlib1g-dev libdrm-dev libgbm-dev libglu1-mesa-dev libegl-dev libudev-dev libx11-dev libxrandr-dev g++ curl unzip sudo apt install cmake bison zlib1g-dev libdrm-dev libgbm-dev libglu1-mesa-dev libegl-dev libudev-dev libx11-dev libxrandr-dev g++ curl unzip
-perl -i -pe"s/0/1887/g" git_version.h 
-perl -i -pe"s/unknown/f3263bf/g" git_version.h 
 cd standalone/linux/ cd standalone/linux/
 ./external.sh ./external.sh
 cd ../.. cd ../..
 cp standalone/cmake/CMakeLists_gl-linux-x64.txt CMakeLists.txt cp standalone/cmake/CMakeLists_gl-linux-x64.txt CMakeLists.txt
-sed -i s/3.26/3.22/g CMakeList.txt +mkdir -p build/Release
-mkdir -p build/Debug+
 cmake -DCMAKE_BUILD_TYPE=Release -B build/Release cmake -DCMAKE_BUILD_TYPE=Release -B build/Release
 cmake --build build/Release -- -j2 cmake --build build/Release -- -j2
-mkdir tmp 
-cp build/Release/setup.sh tmp 
-cp build/Release/VPinballX_GL tmp 
-cp build/Release/*.so tmp 
-cp build/Release/*.so.* tmp 
-cp -r build/Release/flexdmd tmp 
-cp -r build/Release/shader tmp 
-cp -r build/Release/assets tmp 
-cp -r build/Release/scripts tmp 
-cp -r build/Release/tables tmp 
-cp -r build/Release/docs tmp 
-cd tmp 
 </code> </code>
  
 +
 +=== Installation ES-DE ===
 +ES-DE oder Emulator-Station Desktop-Edition ist ein Fork des auf Raspberry-Pi beliebten Retrogaming-Frontends.
 +Die [[https://gitlab.com/es-de/emulationstation-de/-/blob/master/INSTALL-DEV.md?ref_type=heads|Development README]] hilft bei zusätzlichen Optionen.
 +<code>
 +sudo apt-get install build-essential clang-format git cmake gettext libharfbuzz-dev libicu-dev libsdl2-dev libavcodec-dev libavfilter-dev libavformat-dev libavutil-dev libfreeimage-dev libfreetype6-dev libgit2-dev libcurl4-openssl-dev libpugixml-dev libasound2-dev libgl1-mesa-dev libpoppler-cpp-dev
 +
 +git clone https://gitlab.com/es-de/emulationstation-de.git
 +cd emulationstation-de
 +
 +cmake -DAPPLICATION_UPDATER=off -DVIDEO_HW_DECODING=on -DCMAKE_INSTALL_PREFIX=/opt .
 +make -j8
 +sudo make install
 +</code>
 +Nach der Installation muss ein passendes Theme gewählt und Links zu den eigentlichen Emulatoren eingerichtet werden.
 +
 +
 +=== Installation ZeDMD ===
 +
 +[[https://github.com/PPUC/ZeDMD|ZeDMD]] muss auf das ESP32 board geflasht werden, das die DOT-Matrix Displays ansteuert.
 +
 +Die momentan genutze Version wurde mit dem [[https://github.com/zesinger/ZeDMD_Updater|ZeDMD Updater Windows Tool]] geflasht, nachdem andere Versuche fehlgeschlagen sind. Um ein Update ohne zusätzlichen Windows-Rechner zu ermöglichen, sollte irgendwann auch das Flashen mit dem Linux Host ermöglicht werden.
 +
 +Laut Readme aus einer PlatformIO Umgebung mit:
 +<code>
 +pio run -t uploadfs -e 128x32
 +pio run -t upload -e 128x32
 +</code>
 +
 +Nach dem Einschalten wird das Logo angezeigt. Dabei sollte links oben rot, rechts oben blau und links unten grün zu sehen sein. Durch kurzes Antippen von GPIO21 mit GND kann man die Farben durchrotieren.
 +Durch Antippen von GPIO33 mit GND kann die Helligkeit eingestellt werden.
 +
 +
 +=== Installation PinballController ===
 +
 +Der selbstgeschriebene Code für den [[https://codeberg.org/technikkultur-erfurt/VPin_HID_controller|Pinball-Controller]] muss übersetzt und auf den raspberry Pi Pico geflasht werden.
 +Bisher wurde dies aus einer Windows Arduino Umgebung heraus getan. 
 +
 +Als Board muss *Raspberry Pi Pico/RP2040* gewählt werden, was erst nach Eintrag von https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json unter "Additional Boards Manager URL" in den Settings verfügbar ist.
 +
 +Folgende Libraries sind zudem nötig und über die Arduino Oberfläche installierbar:
 +  *  Adafruit MCP23017 
 +  *  Adafruit MPU6050    
 +  *  Joystick
 +  *  FreeRTOS
 +
 +Insbesondere die Joystick Bibliothek ist unter gleichem Namen auch für andere Boards verfügbar aber nicht kompatibel.
 +Bei Compilerwarnungen über mehrfach vorhandene .h Header müssen andere Bibliotheken gleichen namens deinstalliert werden.
 ====Links==== ====Links====
   * VPX build-CIs for linux: https://github.com/vpinball/vpinball/actions/runs/7151948501   * VPX build-CIs for linux: https://github.com/vpinball/vpinball/actions/runs/7151948501
Zeile 174: Zeile 217:
   * 24/12/2023 Probespielen durch die Familie   * 24/12/2023 Probespielen durch die Familie
   * 30/12/2023 Ursache für fehlende Punktanzeige gefunden, neue Einstellung nötig -> Folgeprobleme mit Darstellung   * 30/12/2023 Ursache für fehlende Punktanzeige gefunden, neue Einstellung nötig -> Folgeprobleme mit Darstellung
-  * ??/01/2023 Dot-Matrix-Display ergänzt +  * ??/01/2024 Dot-Matrix-Display ergänzt 
-  * ??/02/2023 Rückbau auf einen Backbox-Monitor; Metallrahmen und -beine; Klappmodus der Backbox zum Transport +  * ??/02/2024 Rückbau auf einen Backbox-Monitor; Metallrahmen und -beine; Klappmodus der Backbox zum Transport 
-  * 28/02/2023 Erstmals Transport zum ByteSpeicher und Test durch Vereinsmitglieder +  * 28/02/2024 Erstmals Transport zum ByteSpeicher und Test durch Vereinsmitglieder 
-  * 02/03/2023 Update Wikiseite mit aktuellem Stand +  * 02/03/2024 Update Wikiseite mit aktuellem Stand  
 +  * ??/??/2024 Schwarze Lackierung der Außenseite 
 +  * ??/??/2024 Wechsel von Arduino Leonard auf Raspberry Pi Pico + Hinzufügen eines Beschleunigungssensors 
 +  * ??/??/2024 PC-Gehäuse entfernt und PC-HW direkt ins Gehäuse montiert zur Gewichtsreduktion 
 +  * ??/09/2024 Monitorverkleidung und Rückseiten hinzugefügt; Griffe montiert; Schiebepoti als Prototype zum analogen Plunger installiert 
 +  * ??/10/2024 Transport zum und Verbleib im Bytespeicher
  
 ===== Galerie === ===== Galerie ===
  • projekte/virtualpinballcabinet.1709420598.txt.gz
  • Zuletzt geändert: 02.03.2024 23:03
  • von chaos