Arcade Bartop im Selbstbau

spicer

Forum-Chef
Teammitglied
Administrator
Moderator
Landesflagge
Baue mir einen Bartop Arcade Kasten mit Retropie und MAME.
Hier mal ein paar Fotos vom Bau.
Nebst Raspi 3B+ kommt noch ein HDMI Scanline Generator, E-Limitator und 5V/12V Power Netzteil (siehe Screenshot) rein.
Monitor benutze ich ein Philips 243V7QDSB.
Audioverstärker hab ich so einen: %product-title% - Conrad Electronic Schweiz . Zu sehen im Bild Nr. 7. ...toller Bausatz. Aber den 3.5mm Jack haben sie nach vorne raus angebracht. Das ist unglücklich. Muss noch ein 90° Stück einbauen :(
Das vorgefertigte Holz habe ich bei arcadeforge.net bestellt. Dieses selber machen kommt nicht so sauber, wenn man nicht für Holzarbeiten ausgerüstet ist.
Die SSD ist angeklettet. Nutze keine SD Card, sondern eine SSD am RPI.... ja, das geht.
 

Anhänge

  • im.bau1.jpg
    im.bau1.jpg
    107,3 KB · Aufrufe: 8
  • im.bau2.jpg
    im.bau2.jpg
    89,8 KB · Aufrufe: 9
  • im.bau3.jpg
    im.bau3.jpg
    100,4 KB · Aufrufe: 9
  • im.bau4.jpg
    im.bau4.jpg
    81,3 KB · Aufrufe: 9
  • im.bau5.jpg
    im.bau5.jpg
    75,1 KB · Aufrufe: 7
  • im.bau6.jpg
    im.bau6.jpg
    86,2 KB · Aufrufe: 9
  • Auswahl_002.png
    Auswahl_002.png
    281,1 KB · Aufrufe: 8
  • im.bau7.jpg
    im.bau7.jpg
    89,2 KB · Aufrufe: 11
  • im.bau8.jpg
    im.bau8.jpg
    128,9 KB · Aufrufe: 11
  • im.bau9.jpg
    im.bau9.jpg
    52,4 KB · Aufrufe: 12
  • im.bau10.jpg
    im.bau10.jpg
    57,2 KB · Aufrufe: 8
Zuletzt bearbeitet:
Mit dem E-Limitator kann ich je nach Game den Joystick auf 2-Wege-Horizontal, 2-Wege-Vertikal, 4-Wege oder 8-Wege einstellen.
ZBsp für Pac-Man das 1. , für Galaxian das 2. , Xevious das 4.
Die RGB LED dazu find ich aber etwas gewöhnungsbedürftig.
Darum Mache ich mit einem SN74LS42N (4-LINE BCD TO 10-LINE DECIMAL DECODER ) 4 einzelne LEDs, welche den eingestellten Modus anzeigen.
Dazu habe ich die unten angehängte Folie entworfen.
Platzieren tue ich das Ganze wahrscheinlich über dem Monitor hinter der Plexiglasscheibe. Da hat es noch ca 2cm Platz.
Das PCB dazu werd ich selbstverständlich selbst designen (Target3001) und fräsen.
 

Anhänge

  • joystick-mode-symbole.jpg
    joystick-mode-symbole.jpg
    14,6 KB · Aufrufe: 1
Zuletzt bearbeitet:
Oben genannte Joystick-Mode Anzeige.
 

Anhänge

  • Auswahl_003.png
    Auswahl_003.png
    56,4 KB · Aufrufe: 10
  • joystick-status-pcb.jpg
    joystick-status-pcb.jpg
    319,3 KB · Aufrufe: 10
  • e-limitator.jpg
    e-limitator.jpg
    188 KB · Aufrufe: 6
  • Auswahl_003.png
    Auswahl_003.png
    71,1 KB · Aufrufe: 7
Nun ist alles drin :)
Musste das Raspi übertakten, weil manche Spiele ab den 90er Jahren ruckelten. Darum hab ich noch ein Lüfter eingebaut.

DIP-Schalter:
In den original Kästen waren DIP Schalter, mit denen man Bartop oder Cocktail einstellen konnte.
Diese DIP Schalter kann man im MAME Menu auch "betätigen".
Bei Cocktail wird der 2te Joystick genommen bei Spieler 2. Nur steht da dann natürlich das Bild Kopf.
Je nach ROM hat es da auch Einstellmöglichkeiten für Anzahl Leben pro Credit, ab wieviel Punkten ein Leben zugeschrieben wird, Schwierigkeitsgrad usw.

Scanline Generator:
Manchmal kommt der Scanline Generator nicht nach dem Boot (Haubtschalter ein).
Habe dann eine externe 5V Speisung drauf gemacht. Kein Erfolg.
Nun habe ich in der Raspi config.txt den HDMI auf Mode 16 ( 1024x768 60 Hz ) gestellt.
Hab mir überlegt, ob das Raspi manchmal 1920x1200 60 Hz macht und das der Scanline Generator das nicht packt.
Die letzten 4 Boots war es jedenfalls gut. Hoffentlich bleibt das so.
Edit:
Scanline Generator Problem leider noch nicht gelöst.
Raspi config.txt den HDMI auf Mode 16 hat nichts gebracht :(
 

Anhänge

  • im.bau11.jpg
    im.bau11.jpg
    98,3 KB · Aufrufe: 9
Zuletzt bearbeitet:
Benötigte Folien sind nun auch geboren.
Drucke das auf transparente selbstklebende Folie mit dem Laserdrucker.
Heute angekommen und gleich gedruckt (2tes Foto).
 

Anhänge

  • Auswahl_002.png
    Auswahl_002.png
    50 KB · Aufrufe: 3
  • folie.jpg
    folie.jpg
    205,6 KB · Aufrufe: 3
Zuletzt bearbeitet:
Enttäuschend. Die Farben sind viel zu schwach. Wenn das geklebt ist, verschwindet das völlig.
Werde nun auf weisse Folie drucken und die Ränder langsam ins Schwarze übergehen lassen. So sieht das ganz vernünftig aus.
 

Anhänge

  • kleber.jpg
    kleber.jpg
    108,5 KB · Aufrufe: 10
  • folie_weiss.jpg
    folie_weiss.jpg
    133,8 KB · Aufrufe: 8
Zuletzt bearbeitet:
Konnte es nicht sein lassen, Need for speed SE und Monstertrucks auch noch zu installieren ^^
Beides DOS Games und laufen gut in der Dosbox.
 
Heute die weisse Folie erhalten.
Nun sieht's so aus.
 

Anhänge

  • folie1.jpg
    folie1.jpg
    113 KB · Aufrufe: 5
  • folie2.jpg
    folie2.jpg
    116,1 KB · Aufrufe: 5
Endlich die zusätzlichen Joystick-Kabel erhalten und eingebaut.
Nun läuft das Ganze über den E-Limitator.
Da die Chinesischen Joystick-PCBs +5V auf dem Joystick schalten und nicht Ground wie alle anderen, musste ich das Flachkabel noch etwas modifizieren (statt Joystick auf Vdd des PCBs, auf GND verbinden).
Zudem musste ich die Richtungen umkehren.
Code:
Bitte, Anmelden oder Registrieren to view codes content!

Die IN Anschlüsse auf dem E-Limitator kommen auf den Joystick. Die OUT Anschlüsse auf das PCB.

Nun ist die Kiste fertig ^^

Als nächstes baue ich einen Unterbau, damit ich den Bartop alleine als "Upright" aufstellen kann.
Zudem konstruiere ich einen Dreh-Controller für Arkanoid. Ich versuche mal so:
Die fertigen Teile sind viel zu teuer.

Angehängt ein paar Fotos des fertigen Gerätes.
 

Anhänge

  • fertig.jpg
    fertig.jpg
    130 KB · Aufrufe: 11
  • fertig2.jpg
    fertig2.jpg
    122,9 KB · Aufrufe: 10
  • mortalcombat.jpg
    mortalcombat.jpg
    133,5 KB · Aufrufe: 10
  • mortalcombat.mp4
    5,9 MB · Aufrufe: 4
Zuletzt bearbeitet:
Habe oben ja beschrieben, das bei manchen USB Interfaces die +5V mit dem Joystick geschaltet werden und nicht der Ground. Darum musste ich L/R und U/D vertauschen.
Habe nun bei Popeye und Pengo festgestellt, dass die Spielfigur manchmal stehen bleibt, wenn man schnell steuert.
Meine Vermutung: Das USB Interface hat ein Problem, wenn alle Eingänge ausser dem betätigten auf 5V sind; da dieses ja nur maximal 2 Eingänge mit 5V erwartet.
Werde mir nun ein PCB erstellen, welches die E-Limitator Signale invertiert.
Kann das etwas bringen?
Hab mal mein Entwurf angehängt.
 

Anhänge

  • Auswahl_007.png
    Auswahl_007.png
    28,5 KB · Aufrufe: 7
  • Auswahl_008.png
    Auswahl_008.png
    41 KB · Aufrufe: 7
Zum Dreh-Controller:

Habe mit Laserdrucker einen schwarzen Punkt auf dickes Papier gedruckt und unten auf die Achse geklebt.

spinner.jpg

Habe hier 2 Drähte angelötet für den Knopf

spinner_maus.jpg

Sobald ich die Achse gekürzt habe, klebe ich das Lager unten an die Maus.
Funktionieren tut es jedenfalls.
 
Habe mir eine Lösung zusammen gepflastert, welche mir künftig erlaubt, die Joystick-Servos beim Start eines Games automatisch anzusteuern.
So werden die Joystick Restriktoren automatisch auf 4 oder 8-Wege eingestellt. Eigenbau Servostiks ab Post #19

Habe in /opt/retropie/configs/all/runcommand-onstart.sh
Code:
Bitte, Anmelden oder Registrieren to view codes content!

eingetragen und folgendes Script in /home/pi/4or8way.sh gespeichert:

Code:
Bitte, Anmelden oder Registrieren to view codes content!

Die Namen der 4-Wege Games habe ich in der Datei /home/pi/4way.games gespeichert.
Immer 1 Name pro Zeile. Der reale (Systemrelevante) Game-Name wird beim Aufruf von diesem in /home/pi/game.name.txt gespeichert (am Schluss der Zeile mit Endung .zip), wobei wir den Namen ohne Endung .zip übernehmen.
Eigentlich bauen wir uns hier eine eigene kleine Datenbank.

Bei mir sieht die 4way.games Datei so aus:

Code:
Bitte, Anmelden oder Registrieren to view codes content!

Alle Games, welche nicht in der Datei 4way.games stehen, werden mit 8-Wege Joystick ausgeführt.

Die einzelnen Scripts sind in Post #20 zu finden.

Servoansteuerung siehe: Raspberry Pi Servo Motor Steuerung
 
Zuletzt bearbeitet:
Weiteres Detail, Controller Bild in Hauptmenu ändern

Das Bild (svg Format) ist unter /etc/emulationstation/themes/carbon/mame/art zu finden. Hier für MAME. Den Pfad natürlich entsprechend dem Emu anpassen.
Habe die Datei mit Inkscape geöffnet (da eine Vektorgrafik) und meinem Controllerboard angepasst.
Im Anhang ein paar Bilder > Original, angepasst, Bildschirmfoto
 

Anhänge

  • Auswahl_001.png
    Auswahl_001.png
    7,3 KB · Aufrufe: 9
  • bild.jpg
    bild.jpg
    9,4 KB · Aufrufe: 11
  • Auswahl_002.png
    Auswahl_002.png
    10,9 KB · Aufrufe: 11
Habe nun die eigenbau Servostiks fertig.

Mechanischer Zusammenbau:

ss7.jpg

Die 2 schwarz markierten Stellen am Restriktor (ss7.jpg) mit dem Dremel flach fräsen (siehe ss8.jpg). NICHT durch fräsen !!! ....Ebene dazwischen auf gleicher Höhe flach durch machen ^^
Wenn der Restriktor flüssig gedreht werden kann, nochmal rausnehmen und etwas Staburags NBU8EP Fett (oder ein anderes Fett) auftragen.
Siehe dazu auch ss9.mp4

Den gefrästen Hebel (Acryl mit meiner billigen China-PCB-CNC-Fräse gemacht) habe ich mit Neoprenkleber auf den Restriktor geklebt. Da wird sicher Multi Bond oä auch halten.

Auf den Bildern sieht man unter Anderem die SG90 micro Servos, deren Befestigung und die Stahlstäbe (D 0.9x80mm). Beides von Aliexpress.
Zum Verständnis siehe auch die mp4 Videos.
 

Anhänge

  • funktion.mp4
    4,3 MB · Aufrufe: 7
  • funktion2.mp4
    5,2 MB · Aufrufe: 7
  • ss1.jpg
    ss1.jpg
    47,4 KB · Aufrufe: 15
  • ss2.jpg
    ss2.jpg
    161,9 KB · Aufrufe: 12
  • ss3.jpg
    ss3.jpg
    153,3 KB · Aufrufe: 14
  • ss5.jpg
    ss5.jpg
    60,1 KB · Aufrufe: 16
  • ss4.jpg
    ss4.jpg
    48,3 KB · Aufrufe: 15
  • ss6.jpg
    ss6.jpg
    117,6 KB · Aufrufe: 17
  • ss7.jpg
    ss7.jpg
    64,6 KB · Aufrufe: 19
  • ss8.jpg
    ss8.jpg
    69,9 KB · Aufrufe: 15
  • ss9.mp4
    3,6 MB · Aufrufe: 4
Zuletzt bearbeitet:
Hier noch die Python Scripts.
Mit dem kalib.py kann man die Servos kalibrieren. Mit + / - erhöht/verkleinert man die % des PWM Tastverhältnisses um 0.5-Schritte.
Die Werte für 8-Weg bzw 4-Weg Positionen notieren und dann in den 4 Scripts 4wayP1.py .... 8wayP2.py eintragen.
Bsp:
pos = 6.0 # Position in %

Die Scripts für die status LED sind auch hier angefügt.
Das Video (funktion3.mp4) zeigt, wie das ganze schlussendlich aussieht (und hört, wie die Servos umschalten) ^^

Die LED Ansteuerung ist Optionell und nicht unbedingt notwendig. Diese habe ich hier so kompliziert gemacht, weil die LED Anzeige mit dem 74HCT42 bereits vorhanden war (siehe #4).
Man kann sonst die 2 LEDs natürlich auch direkt mit 2 GPIOs ansteuern.

Das 4or8way.sh ist das wichtigste Script!
 

Anhänge

  • 4or8way.sh
    783 Bytes · Aufrufe: 3
  • 4wayLED.py
    250 Bytes · Aufrufe: 1
  • 4wayP1.py
    290 Bytes · Aufrufe: 0
  • 4wayP2.py
    290 Bytes · Aufrufe: 0
  • 8wayLED.py
    251 Bytes · Aufrufe: 0
  • 8wayP1.py
    291 Bytes · Aufrufe: 0
  • 8wayP2.py
    290 Bytes · Aufrufe: 0
  • kalib.py
    1 KB · Aufrufe: 0
  • servomotor.py
    635 Bytes · Aufrufe: 1
  • funktion3.mp4
    9,6 MB · Aufrufe: 4
Zuletzt bearbeitet:

Benutzer welche diesen Thread betrachten (Mitglieder: 0, Gäste: 1)

Zurück
Oben