Zum Inhalt springen

Arduino Pinball Controller


Black Knight

Empfohlene Beiträge

Habe mich in den letzten Jahren zwar etwas rar gemacht, war aber nicht total untätig.

Bei meinem letzten Anfall von Bastelwut ist eine Steuerung für Williams Geräte von System6 bis System11c (also alles aus den 80ern) herausgekommen. Das Teil ersetzt CPU, Power Driver sowie  Sound Boards und läuft auf Arduino Basis. Auch Hardware Erweiterungen sind möglich.

Ich habe auch ein Flipper-Betriebssystem geschrieben, das die Steuerung der Hardware übernimmt und eine API für den Spieleprogrammierer zu Verfügung stellt.

Für weitere Infos schaut bitte auf meine

Projektseite bei GitHub

Ich will damit kein Geld verdienen und werde daher auch niemandem irgendwas verkaufen. Stattdessen habe ich alle Daten zur Herstellung der Boards online gestellt.

Meine Hoffnung wäre, dass sich vielleicht ein paar Leute finden, die Spaß daran haben ihren eigenen Flipper zu programmieren und wilde Hardware-Erweiterungen zu bauen, damit ich nicht alles alleine machen muss. Dafür bin ich natürlich auch bereit, sie beim Einstieg zu unterstützen.

Die Kosten für das Board sind sehr überschaubar (Einzelheiten im Wiki der Projektseite), aber man muss sich natürlich etwas mit Hardware auskennen und hinterher auch Spaß am programmieren haben.

Daher meine Frage: wer könnte sich denn vorstellen, sowas zu bauen? Eventuell könnte man eine Sammelbestellung bei einem Platinenhersteller organisieren.

Meldet euch einfach mal wenn euch das Board interessieren könnte.

Gruß

Frank

P.S. Hier noch ein Bild vom APC in meinem Pinbot:

APC_Pinbot.JPG.320602a31421020843f0e1ebe811fc6e.JPG

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • Antworten 1,6Tsd
  • Erstellt
  • Letzte Antwort

Top-Benutzer in diesem Thema

  • Black Knight

    642

  • bontango

    438

  • Volley

    100

  • jabdoa

    97

Top-Benutzer in diesem Thema

Veröffentlichte Bilder

Das ist der große Arduino, der DUE. In dem Atmel Controller, der da drauf ist werkelt ein ARM Cortex-M3 Prozessor, der mit 84MHz läuft - der zieht schon ein bisschen was weg.

Ich habe mir allerdings trotzdem Mühe gegeben, ihn möglichst zu entlasten, deshalb spielt er auch keine MP3s ab, sondern nur 'vorbehandelte' WAVs. Das ist bei den riesigen SD Karten, die man heute für ein paar Cent kriegt allerdings auch wirklich keine Einschränkung.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich muss gestehen ich hab mir das auf GitHub noch nicht angesehen. Wie funktioniert das denn mit den alten Williams Flippern, z.B.Flash oder Disco Fever? Einfach alle Platinen durch das Board ersetzen und irgendwo die Original Eproms hinlegen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Am 22.3.2019 um 17:50 schrieb Volley:

Ich muss gestehen ich hab mir das auf GitHub noch nicht angesehen. Wie funktioniert das denn mit den alten Williams Flippern, z.B.Flash oder Disco Fever? Einfach alle Platinen durch das Board ersetzen und irgendwo die Original Eproms hinlegen?

So einfach ist es nicht, Zitat aus GitHub:

However, at the moment the APC cannot run the original Williams EPROM software. For this, someone has to write an interface to PinMame and this someone is definitely not me. Instead this board is meant to be a platform for people who want to program their own rules and features. Therefore the APC software offers an API providing the necessary commands to make this a lot easier, but you still have to programm the game specific part by yourself.

 

 

@Black Knight Sehr interessant, ich könnte eventuell dieser 'someone' sein .. Hast Du eine HW-Schnittstelle oder noch Platz auf dem Board für einen PI-Zero .. ? Dann könnte man es ähnlich aufbauen wie meine LISY .. -> www.lisy80.com

Die hat auch schon ne API zum 'Missionpinball Framework' (MPF), was auch ne Alternative wäre, die Jungs von MPF sind immer an HW interesiert die sie mit MPF steuern können.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Moin,

falls ihr MPF Support (https://missionpinball.org/; ich bin einer der Maintainer) einbaut nehme ich ein Board zum testen/spielen. Ich denke das würde auch die Einstiegshürde für andere etwas senken. Wir haben vor ca einem Jahr Support für LISY1/80 (http://www.lisy80.com/deutsch/; Gottlieb System 1/80) eingebaut und da gibt es mittlerweile schon die ersten Maschinen zu bestaunen. Man könnte die Platform per Serial anbinden (wie wir es bei Stern Spike machen). Den MPF/Python Teil kann ich gerne machen. Ich müsstet mir ggf etwas mit dem Arduino Teil helfen.

 

Jan

Bearbeitet von jabdoa
Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Jan, Du auch hier? Na, das war ja wohl Gedankenübertragung 😁

Bearbeitet von bontango
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 9 Minuten schrieb bontango:

Hallo Jan, Du auch hier? Na, das war ja wohl Gedankenübertragung 😁

Seit ca 20 Minuten angemeldet ;-). Aber wenn es um Custom Pinball Hardware geht bin immer dabei! 😍

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Leute,

das ist ja schon mehr (und vor allem qualifiziertere) Resonanz als ich zu hoffen gewagt habe.

10 hours ago, bontango said:

Sehr interessant, ich könnte eventuell dieser 'someone' sein .. Hast Du eine HW-Schnittstelle oder noch Platz auf dem Board für einen PI-Zero .. ?

Ich dachte da an den zweiten USB Anschluss des DUE, wobei ich mich mit dessen programmierung noch nicht wirklich beschäftigt habe. Ansonsten ginge das vermutlich auch über SPI - die SD Karte braucht man dann ja eigentlich nicht mehr.

10 hours ago, jabdoa said:

falls ihr MPF Support (https://missionpinball.org/; ich bin einer der Maintainer) einbaut nehme ich ein Board zum testen/spielen.

Prinzipiell bin ich immer dafür, das Rad nicht ständig neu zu erfinden. Wenn ihr also was funktionierendes habt, warum nicht?

Das Hauptproblem dürfte sein, dass ich mich dann bei euch einarbeiten muss 😯

Link zu diesem Kommentar
Auf anderen Seiten teilen

Seriell per USB geht auch. Zur Not direkt per libusb. Vermutlich wäre es am einfachsten das LISY Protokoll wieder zu verwenden weil es einfach ist und sehr ähnliche Maschinen unterstützt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 1 Stunde schrieb Black Knight:

Ich dachte da an den zweiten USB Anschluss des DUE, wobei ich mich mit dessen programmierung noch nicht wirklich beschäftigt habe. Ansonsten ginge das vermutlich auch über SPI - die SD Karte braucht man dann ja eigentlich nicht mehr.

SPI kann der Raspberry müsste mich da aber auch einlesen, LISY macht I2C kann der das auch? Hast Du 3V oder 5Volt Level? Der Raspberry hat 3Volt, wenn Du 5V hast müssten wir Umsetzer verwenden.

Ich denke mal Seriell per USB ist erst einmal am einfachsten, das würde dann sowohl für den Raspberry (LISY) und auch für einen MPF Steurrechner passen und Du musst das auf deiner Seite nur einmal implementieren. Ich habe zur Anschauung mal die derzeitige LISY-API angehängt.

LISY_API_008.pdf

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 2 Stunden schrieb Black Knight:

Das Hauptproblem dürfte sein, dass ich mich dann bei euch einarbeiten muss 😯

Wenn wir uns auf die API verständigen für LISY 'eigentlich' nicht, MPF schon ein wenig, aber da findet sich evtl. auch schon einer fertige config die man nur etwas umschreiben muss.

Link zu diesem Kommentar
Auf anderen Seiten teilen

6 hours ago, bontango said:

Ich denke mal Seriell per USB ist erst einmal am einfachsten, das würde dann sowohl für den Raspberry (LISY) und auch für einen MPF Steurrechner passen und Du musst das auf deiner Seite nur einmal implementieren. Ich habe zur Anschauung mal die derzeitige LISY-API angehängt.

Ich denke auch, dass wir es mit USB versuchen sollten.

Die LISY-API wäre für mich OK, man kann sie ja bei Bedarf noch etwas erweitern.

Ich müsste dann mal klären, wie man den zweiten USB Port des DUE am Besten nutzen kann, bin aber noch nicht sicher wann ich dazu komme.

Wer Interesse hat, kann sich ja auch mal die APC API anschauen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Die API bietet auf den ersten Blick alles was man braucht. Wir brauchen aber zusätzlich ein (serielles) Protokoll wenn wir es remote steuern wollen. Ich gehe mal davon aus dass es im System 6-11 auch keine software definierten Regeln für Flipper und Popbumper gibt sondern nur ein/zwei enable relays, oder?
 

Jan

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich würde dieses serielle Protokoll (also im Grunde die LISY API), bei mir als Game Code implementieren.

Zur Erklärung: im APC besteht die Software ja aus dem Betriebssystem APC.ino und den verschiedenen Game-Programmen (Pinbot.ino, usw.), zwischen denen man in den System Settings umschalten kann.

Ich würde jetzt ein USBcontrol.ino schreiben, das man wie ein Spiel auswählen kann. Dieses würde aber kein Spielprogramm enthalten, sondern die LISY API benutzen, um sich von einem angeschlossenen PC über USB steuern zu lassen. Wenn ich das richtig verstehe könnte man sowas sowohl für den MPF als auch für PinMame nehmen oder liege ich da falsch?

19 hours ago, jabdoa said:

Ich gehe mal davon aus dass es im System 6-11 auch keine software definierten Regeln für Flipper und Popbumper gibt sondern nur ein/zwei enable relays, oder?

Bei System 3 bis 11a ist die Software normalerweise nicht beteiligt, die Special Solenoids wurden erst irgendwann ab System11b abgeschafft - danach musste die Software ran. Beim APC werden Bumper u.s.w. immer über die Software gesteuert. Das sollte aber kein Problem sein, da man diese Funktionen ja einfach zusätzlich in die USBcontrol.ino einbauen könnte, dann würde der APC nachdem der Schalter eines Bumpers betätigt wurde einfach die Spule aktivieren und dem angeschlossenen PC nur den Schalter zum Punkte zählen melden. Auf diese Weise müssten wir uns auch keine Gedanken über die Reaktionszeit machen.

Beim PinMame fällt mir noch ein Punkt bezüglich Sound ein: momentan ist meine Hardware dafür gebaut, dass der Arduino den Sound von der SD Karte liest, mit seinem DAC erzeugt und über den Audioverstärker ausgibt. Das wäre nach meinem Verständnis ja auch beim MPF der Fall aber nicht beim PinMame, bei dem der Sound ja vom angeschlossenen PC erzeugt würde. Die Frage ist nun, ob ich da noch einen Stecker vorsehe über den man den Sound vom PC analog in den Audioverstärker des APC einspielen kann - dann könnte der PC über den Verstärker die Flipperlautsprecher treiben.

Was meint ihr?

Frank

 

Bearbeitet von Black Knight
Link zu diesem Kommentar
Auf anderen Seiten teilen

vor einer Stunde schrieb Black Knight:

Ich würde dieses serielle Protokoll (also im Grunde die LISY API), bei mir als Game Code implementieren.

Zur Erklärung: im APC besteht die Software ja aus dem Betriebssystem APC.ino und den verschiedenen Game-Programmen (Pinbot.ino, usw.), zwischen denen man in den System Settings umschalten kann.

Ich würde jetzt ein USBcontrol.ino schreiben, das man wie ein Spiel auswählen kann. Dieses würde aber kein Spielprogramm enthalten, sondern die LISY API benutzen, um sich von einem angeschlossenen PC über USB steuern zu lassen. Wenn ich das richtig verstehe könnte man sowas sowohl für den MPF als auch für PinMame nehmen oder liege ich da falsch?

Das klingt gut und sollte für MPF so funktionieren.

vor einer Stunde schrieb Black Knight:

Bei System 3 bis 11a ist die Software normalerweise nicht beteiligt, die Special Solenoids wurden erst irgendwann ab System11b abgeschafft - danach musste die Software ran. Beim APC werden Bumper u.s.w. immer über die Software gesteuert. Das sollte aber kein Problem sein, da man diese Funktionen ja einfach zusätzlich in die USBcontrol.ino einbauen könnte, dann würde der APC nachdem der Schalter eines Bumpers betätigt wurde einfach die Spule aktivieren und dem angeschlossenen PC nur den Schalter zum Punkte zählen melden. Auf diese Weise müssten wir uns auch keine Gedanken über die Reaktionszeit machen.

Ok das sollten wir als Hardware Rules einbauen. Die neueren Controller Boards die wir unterstützen erlauben es uns Hardware Rules zu definieren. Normalerweise ist das Switch + Coil + Pulse ms. Für Flipper gibt es dann zusätzlich noch ein hold_pattern (bei single wound coils) oder eine zweite Spule wenn es dual wound sind (ggf noch EOS switch wenn man den nutzt). Die Ausführung der Rule übernimmt dann das Board (hier APC). Switch changes bekommt MPF trotzdem noch fürs Scoring/Sound/etc.

Das ist im LISY Protocol so nicht drin also bräuchten wir hier ein zwei neue Commands. Einmal zum Rules erstellen und zum clearen. Das macht Sinn weil man die Parameter dann in MPF tunen kann oder auch Modes mit starken/schwachen/deaktivierten Flippern/Pops bauen kann. Können wir aber auch in Step 2 machen.

vor einer Stunde schrieb Black Knight:

Beim PinMame fällt mir noch ein Punkt bezüglich Sound ein: momentan ist meine Hardware dafür gebaut, dass der Arduino den Sound von der SD Karte liest, mit seinem DAC erzeugt und über den Audioverstärker ausgibt. Das wäre nach meinem Verständnis ja auch beim MPF der Fall aber nicht beim PinMame, bei dem der Sound ja vom angeschlossenen PC erzeugt würde. Die Frage ist nun, ob ich da noch einen Stecker vorsehe über den man den Sound vom PC analog in den Audioverstärker des APC einspielen kann - dann könnte der PC über den Verstärker die Flipperlautsprecher treiben. 

MPF supportet beides. Hardware Sound triggert einen Sound über eine Soundkarte. Das ist dann sehr nah an einem EM. MPF hat auch ein modernes Sound System (mit Ducking/fading etc). Kann man sich dann aussuchen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Am 25.3.2019 um 12:38 schrieb Black Knight:

Beim PinMame fällt mir noch ein Punkt bezüglich Sound ein: momentan ist meine Hardware dafür gebaut, dass der Arduino den Sound von der SD Karte liest, mit seinem DAC erzeugt und über den Audioverstärker ausgibt. Das wäre nach meinem Verständnis ja auch beim MPF der Fall aber nicht beim PinMame, bei dem der Sound ja vom angeschlossenen PC erzeugt würde. Die Frage ist nun, ob ich da noch einen Stecker vorsehe über den man den Sound vom PC analog in den Audioverstärker des APC einspielen kann - dann könnte der PC über den Verstärker die Flipperlautsprecher treiben.

LISY läuft ja auf einem Raspberry unter LInux, da ist es mit der Soundunterstützung in pinmame schlecht bestellt. Ich hab da schon Probleme mit den Gottliebflippern, der Sound ist da einfach schlecht, daher unterstützt LISY auch MP3/Wav Files. Wenn es kein allzu grosser Aufwand ist, kannst Du den Stecker ja noch einbauen, ich denke aber dass man normalerweise dass eingebaute Soundboard ansteuert ( geht doch mit deiner Platine?!) oder halt eigene WAVs abspielt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

8 hours ago, bontango said:

Wenn es kein allzu grosser Aufwand ist, kannst Du den Stecker ja noch einbauen

Ich habe leider keine richtig schöne Lösung gefunden. Das folgende Teil kommt meinen Vorstellungen noch am nächsten

https://www.reichelt.de/klinkeneinbaubuchse-3-5-mm-stereo-3-pol-lum-1503-09-p116187.html?&trstct=pol_11

aber das ist ein ziemlicher Klotz mit dicken Ösen anstatt Pins u.s.w.

Es wird daher wohl jetzt einfach auf einen Pinheader hinauslaufen. Dann kann man über Jumper die APC Sounderzeugung oder ein externes Soundsignal anschließen. Damit wäre man immerhin flexibel, d.h. man könnte auch einfach einen Kanal vom APC und einen extern erzeugen lassen.

8 hours ago, bontango said:

ich denke aber dass man normalerweise dass eingebaute Soundboard ansteuert ( geht doch mit deiner Platine?!)

Über den Hardware Erweiterungsanschluss geht das schon, allerdings sitzt bei frühen System11 Maschinen ein Teil der Sounderzeugung auf dem CPU Board und ist damit weg, wenn man das Board ersetzt. Zumindest diesen Teil müsste man dann den PinMame oder den APC selbst erzeugen lassen.

Ich habe übrigens auch noch ein paar Fragen zur Lisy APi. Soll ich die hier posten oder sollen wir mal eine Telekonferenz oder sowas machen? 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Was mir spontan fehlt, ist die Möglichkeit Segmentmuster für die Displays zu übertragen. So wie ich das sehe übertragt ihr nur den Text, der im Display dargestellt werden soll. Zumindest für den PinMame wird das meiner Meinung nach nicht reichen, da es Spiele wie Space Station oder Fire! u.s.w. gibt, die auch Grafikeffekte benutzen und das sind dann keine ASCII Zeichen.

Frank

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 7 Stunden schrieb Black Knight:

Was mir spontan fehlt, ist die Möglichkeit Segmentmuster für die Displays zu übertragen. So wie ich das sehe übertragt ihr nur den Text, der im Display dargestellt werden soll. Zumindest für den PinMame wird das meiner Meinung nach nicht reichen, da es Spiele wie Space Station oder Fire! u.s.w. gibt, die auch Grafikeffekte benutzen und das sind dann keine ASCII Zeichen.

Frank

 

Guter Punkt. Das sollten wir noch hinzufügen. Gibt es dafür ein Format? Oder senden wir einfach eine Bitmaske für alle Segmente? MPF mappt an anderen Stellen auch schon auf Segmente.

Link zu diesem Kommentar
Auf anderen Seiten teilen

4 hours ago, jabdoa said:

Oder senden wir einfach eine Bitmaske für alle Segmente?

Ist vermutlich das einfachste. Da wir es maximal mit 16 Zeichen breiten Displays zu tun haben, müsste man dann zwei Byte pro Zeichen senden. Das wären bei 2x16 Stellen also 64 Byte. Oder gibt's bei Gottlieb Geräte mit mehr Displays?

Stellt sich die Frage, ob man auch eine Möglichkeit schaffen sollte einen eigenen Zeichensatz zu erstellen. Es gibt ja Zeichen, die teilweise unterschiedlich dagestellt werden z.B. 6 und 9 kann man mit und ohne oberen bzw. unteren Strich darstellen. Meiner Meinung nach ist das den Aufwand nicht wert, aber da kann man auch anders drüber denken. Wenn man z.B. einen klingonischen Zeichensatz haben möchte ...

Bearbeitet von Black Knight
Link zu diesem Kommentar
Auf anderen Seiten teilen

Update:

Es gibt jetzt einen Base Code, der mit minimalen Anpassungen hoffentlich auf jedem Gerät laufen und als Grundlage für eigene Projekte dienen sollte.

Als nächstes werde ich jetzt die Lisy API in die Software implementieren.

Außerdem werde ich keine Audiobuchse zum Anschluss eines PCs vorsehen. Ich hab's ausprobiert und die Signalstärke am Kopfhörerausgang des PCs ist zu gering um eine vernünftige Tonqualität zu erreichen, d.h. man müsste dazu die Verstärkung des Vorverstärkers erhöhen, der momentan nur als aktives Filter benutzt wird. Wenn man also sowieso löten muss, dann kann man die Buchse auch gleich selbst anbringen oder einen billigen Verstärkerbausatz für 5€ aus China bestellen.

Die Platine bleibt also wie sie ist und ich habe eine Anfrage bei einem Hersteller laufen, um 5 bzw. 10 davon fertigen zu lassen. Wenn ich die Preise habe könnt ihr euch ja überlegen, wer eine haben möchte.

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

On ‎4‎/‎1‎/‎2019 at 8:41 PM, Medusa said:

HH, BH und DD zB

Stimmt, aber das scheinen ja keine alphanumerischen zu sein, von daher müssten wir mit unseren 64Byte ja trotzdem auskommen.

Ich habe mir übrigens nochmal die System 3 und 4 Geräte angeschaut. Der Stecker 1J4 ist da anders belegt als bei den späteren Systemen, der Memory Protect Switch fehlt offensichtlich. Bei System 3 gibt es stattdessen einen 1ms Takt auf Pin 2, aber aus meinem Disco Fever Schaltplan ist nicht ersichtlich, an welche Platine diese Leitung dann letztendlich geht und ob sie überhaupt benutzt wird. Beim APC läge dieser Pin einfach auf GND, was ja vermutlich auch OK ist, da ich momentan keine Anwendung dafür sehe.

Weiß jemand von euch, ob diese Leitung tatsächlich benutzt wird?

Bearbeitet von Black Knight
Link zu diesem Kommentar
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

×
×
  • Neu erstellen...

Wichtige Information

Datenschutzerklärung und Registrierungsbedingungen