Flippi: Unterschied zwischen den Versionen

Aus HRW FabLab MediaWiki
Wechseln zu: Navigation, Suche
Zeile 275: Zeile 275:
 
==Ausblick==
 
==Ausblick==
 
Folgende Features sind für die Zukunft angedacht:
 
Folgende Features sind für die Zukunft angedacht:
 +
===Mehr Module===
 +
 +
===Platzierung der Controller Module===
 +
 +
===Automatisierter Neustart===
 +
 
=== Bestenliste===
 
=== Bestenliste===
  

Version vom 29. April 2018, 19:42 Uhr

Bei Flippi handelt es sich um einen Modularen Flipper, welcher in Form, Größe und Schwierigkeit skalierbar ist. Hierzu lassen sich verschiedene Bauteile Erstellen und über einen zentralen Mikrocontroller steuern.


Ideenentwicklung

Zu Beginn stand die Überlegung, was man cooles mit einem Mikrocontroller machen könnte. Einerseits sollte es nicht nur um des Projektes willen entwickelt werden, andererseits sollte es auch nicht nur für die Gruppe selbst interessant sein. Aus diesem Grund wurde eine alte Kindheitserinnerung zum Leben erweckt, der Pinball Table (dt. Flippertisch). Früher einmal weit verbreitet, findet man diese tische heute nur noch selten und zumeist nur in Antiquariaten, meist mit entsprechend alter Hardware. Neu entwickelte Modelle sind Einzelanfertigungen und haben hohe Preise für Hard- und Software.

Flippi setzt genau hier an. Die Idee ist es, günstige Hardware mit Teilen aus der Industrie 4.0 zu verbinden und so Flippertische günstig selber zu bauen. Hierbei ist zu beachten, dass nicht jeder genug Platz für einen kompletten Tisch hat, weswegen die Dimensionen Variabel sind. Selbiges gilt für die Verwendung weiterer Technik.


Konzeptionierung

Um dieses Ziel zu erreichen, ist es einerseits notwendig einen zentralen Controller zu haben, welcher alle wichtigen Eigenschaften koordiniert. Andererseits ist es Sinnvoll die Hardware auch Menschen ohne Programmiererfahrung zugänglich zu machen, weswegen bestimmte Teile aus der Zentralen Einheit herausgelöst werden müssen. Als Grundlage hierfür wurde das EVA-Prinzip herangezogen, nach welchem Eingabe, Verarbeitung und Ausgabe getrennt zu betrachten sind.

Eingabe: Die Eingabe besteht im minimalen System aus den beiden Schlägern, der Startrampe für die Kugel, sowie allen elektrischen Elementen zum Punkte zählen. Verarbeitung: Mindestens das errechnen der Punkte, sowie das Auswerten der Spielelogik. Ausgabe: Minimal das Anzeigen der Punkte

Um der Modulbeschreibung zu entsprechen, wird die Anzeige der Punkte auf einem Smartphone möglich sein.

Des weiteren soll das Projekt die Möglichkeit der späteren Erweiterung besitzen. Hierzu wird die Möglichkeit offen gehalten neben weiteren Modulen auch Beleuchtung, Bestenliste und weiterer Features einzubauen. Auch diese sollten Menschen ohne Programmiererfahrung offen stehen, siehe Ausblick.


Erste Schritte

Um die minimalen Anforderungen umzusetzen und sowohl Modularität als auch Einfachheit zu gewährleisten, sind mindestens 3 Mikrocontroller notwendig.

Punkteeingabe

Die Eingabe wird durch einen einfachen Arduino Uno Mikrocontroller geregelt. Dieser muss einerseits einfache Signale mit festen Punktewerten lesen können, andererseits sollen diese Punkte auch an die Zentrale Steuereinheit weiter gegeben werden. Optional sind Module mit eigenem Controller, welche ebenfalls mit eingebunden werden müssen.

Hierzu wird eine serielle Verbindung zwischen der Zentralen Steuereinheit und dem Eingabe Arduino Uno mit einer Baudrate von 115200 hergestellt, über welche Punkte Werte und eventuelle Multiplikatoren ausgetauscht werden können.

Feste Punktewerte werden über einen Interrupt in Verbindung mit gesetzten Jumpern Binär errechnet. Hierbei können bis zu 1023 über die Pins 4 bis 13 eingelesen werden.

über I2C können zudem weitere Controller angeschlossen werden, welche eigene Punktewerte errechnen. Hiebei ist der Arduino Uno als Master festgelegt und fragt die I2C Module ab, wenn ein Interrupt an Pin 3 ausgelöst wird.

Alle Interrupts reagieren auf eine Rising Edge.

Zentrale Steuereinheit

Um Genug Leistung und Verbindungen für einen weiteren Ausbau zu Gewährleisten ist ein Arduino Mega die Wahl als Zentrale Steuereinheit. Mit seinen 4 Seriellen Anschlüssen, bleibt der USB Anschluss zum einstellen und für spätere Computer gebundene Features offen.

Anschluss Verwendung Status
Serial0 USB Kommunikation / Debug Debug implementiert
Serial1 Kommunikation mit Punkteeingabe implementiert
Serial2 Kommunikation mit Schlägern / Startrampe Zukünftiges Feature
Seial3 Verwendung für addOns Zukünftiges Feature
Software Serial0 Punkteausgabe Implementiert(nur senden)
Software Serial1 Ausgabe an Lichtsteuerung Zukünftiges Feature (nur senden)
Software Serial2 Verwendung für weitere addOns Zukünftiges Feature
SPI Verwendung für weitere addOns Zukünftiges Feature
I2C Verwendung für weitere addOns Zukünftiges Feature
Sonstige Pins Verwendung für weitere Software Serials Zukünftige Features

Punkteanzeige

Um ein Mindestmaß an App Einsatz zu gewährleisten ist eine NodeMCU der Controller für das Anzeigen der Punkte. Dieser erhält die berechneten Punkte über Software Serial0 von der zentralen Steuereinheit. Da die NodeMCU lediglich über einen einzelnen Seriellen Anschluss verfügt, wird diese hierfür verwendet.

Zur Kommunikation mit einem Endgerät wird ein eigenes Netzwerk mit SSID und Passwort angelegt. Diese können später via App festgelegt werden.

Entwicklung des Prototypen

Elektronik

Der Großteil der verwendeten Elektronik ist bereits in den ersten Schritten erklärt. Weswegen an dieser Stelle eine genauere Erläuterung folgt.

Eingabe

Ein Arduino Uno welcher die Punkte berechnet und weiter gibt.

Pin Verwendung
0/1 Serielle Kommunikation
2 Interrupt zum Punkteberechnen
3 Interrupt zum I2C Aufruf
4-13 Binäres Punkte Berechnen (4=1, 13=512)
A4,A5 I2C Bus

Bei Kontakt mit einem einfachen Punkte Modul wird ein Stromkreis geschlossen, welcher 5V an die Pins anlegt, welche die Punkte ergeben. Weiterhin wird der Stromkreis zu Pin 2 geschlossen, um den Interrupt auszulösen. Hierbei entsprechen einfache Module einem Taster, welche den Stromkreis Manuell schließen. Desweiteren werden Dioden verwendet um ein Fehlauslösen zu vermeiden, sowie ein 10k Ohm Widerstand zum entprellen des Tasters.

ToDo: Bild

Desweiteren ist ein Attiny85 als I2C slave an den Arduino verbunden, welche Punkte anhand einer Drehtür vergibt. Hierzu wird ein Zahnrad an dieser Tür verwendet, welches eine Lichtschranke unterbricht. Bei jeder Unterbrechung wird ein Counter im Attiny85 erhöht.

Verarbeitung

Der Arduino Mega im verarbeitenden Teil hat keine weitere Hardware angeschlossen und dient lediglich zur zentralen Kommunikation. Diese ist in 3.2 zentrale Steuereinheit gelistet.


Ausgabe

Bei der Ausgabe Elektronik wird neben der Übertragung auf ein mobiles Endgerät per WLAN (NodeMCU) dieses auch auf einem ST7735 TFT-Display dargestellt. Dieses hat alle benötigten Bauteile auf einer fertigen Platine.

Module

Eingabe

Die meisten Module sind Eingabe Module. Diese haben eine Basisgröße von 5x5 CM. Dabei können einzelne Module auch 1x2 (5x10 CM) oder sonstige vielfache Größen haben. einfachen Punkte Module sind direkt an die Pins des Arduinos angeschlossen (z.B.Bumper). Bei diesen Modulen muss dafür gesorgt werden, dass es keine Fehlauslösungen gibt (Siehe Elektronik Eingabe).

I2C Punkte Module berechnen ihren Punktewert selbstständig in einem eigenen Controller. Sobald der Wert angerechnet werden soll, wird ein Signal an den Pin 3 des Eingabe Arduino Unos gegeben, welcher darauf hin alle I2C Module abfragt. I2C Module benötigen einen internen Mechanismus um nicht immer ihren letzten Punktewert weiter zu geben.

Leere Module sind einfache freie Flächen welche keine Punkte geben.

Reaktive Module (in Planung) sind Module mit einem eigenen Controller, welche eine direkte Reaktion am eigenen Modul bewirken. Diese stehen außerhalb des Eva Prinzips da die Ausgabe vor der eigentliche Verarbeitung stattfindet. Hierzu zählen zum Beispiel Bumper, welche die Kugel aktiv abstoßen. Zu diesem Modulen werden auch Module gezählt, welche einen Controller verwenden, der nicht zur Punkteberechnung dient.

Verarbeitung

Bei der Verarbeitung gibt es ein primäres Modul, welches die zentrale Steuereinheit und die anderen Controller beherbergt. Dieses Modul hat keinen direkten Einfluss auf das Spiel und kann auch Außerhalb gelagert werden.

Sowohl I2C Punkte Module als auch Reaktive Module können hier zudem gelistet werden, da in beiden eine eigene Verarbeitung stattfindet.

Ausgabe

Ausgabemodule sollten generell keinen Einfluss auf das Spielgeschehen haben. Neben der Ausgabe von Punkten (Controller im zentralen Modul) können z.B. alle Module optional mit Beleuchtung versehen werden. Dieses Feature ist derzeit lediglich in Planung.

Software

ToDo: Software

Eingabe

Verarbeitung

Ausgabe

APP

Eingabe

Durch die Modularität des Systems soll es in Zukunft Möglich sein, bestimmte Eingaben über eine App zu regeln. Weitere Infos finden sich im Ausblick.

Verarbeitung

Die Verarbeitung wird zentral geregelt. Der Austausch des Controllers ist nicht vorgesehen, dennoch kann in Zukunft über Zusatzmodule auf die Verarbeitung zugegriffen werden. Weitere Infos im Ausblick.

Ausgabe

ToDo: Ausgabe App

Gewährleistung der Erweiterbarkeit

Zum Erstellen eigener Module siehe Abschnitt Module Erstellen.

Eingabe

Durch die Verwendung von Modulen einer festen Größe können Module beliebig erweitert oder ausgetauscht werden.

Hierzu sollten alle Module eine dicke von 3 MM haben, wodurch Sie Formstabil bleiben, unabhängig des Fertigungsverfahrens. Alle Eingabemodule entsprechen zudem einen 5x5 Raster. Der Aufbau auf dem Modul, sowie dessen Oberflächenbeschaffenheit kann durch Herstellungsprozess und Hersteller Variieren. Durch die festen Größen sind dennoch alle Module untereinander Kompatibel.

Verarbeitung

Die Erweiterung der Verarbeitung ist durch das einfügen von addOns gewährleistet. Zum entwickeln von addOns werden Programmierkenntnisse vorausgesetzt, da Schnittstellen zwar vorhanden sind, aber keine vorgefertigten Funktionen beinhalten. Entsprechend können über addOns allerdings auch komplexere Verarbeitungen, zum Beispiel für Mehrspieler ermöglichen.

Das einfügen neuer addOns ist im Gegensatz zum entwickeln einfach.

Ausgabe

Die Ausgabe kann ausgetauscht werden, um je nach Wunsch ein LCD, TFT, OLED oder sonstiges Display zu verwenden, auch die Verwendung komplexerer Apps ist möglich. Desweiteren können auch Module für andere Ausgaben (z.B. Beleuchtung, Ton oder Bestenlisten) eingebaut werden. Alle Ausgaben sind optional.

Module Erstellen

Der Generelle Aufbau von Flippi besteht aus verschiedenen Schichten, auf welchen sich Module befinden können.

Spielfläche

Die Spielfläche ist die oberste Schicht und hat ein 50x50 mm Raster. Damit eine Kompatibilität gewährleistet wird, ist die Grundplatte aller Module des Spielfelds 3 mm dick. Größenangaben werden im Raster angegeben: 1x1 für 50x50 mm 2x1 für 100x50 mm. Am Rand jedes Rasters ist ein Viertelkreis mit 5mm Radius ausgeschnitten. ein 2x2 Modul hat entsprecht an jeder Ecke einen Viertelkreis, einen Halbkreis in der Mitte jeder Seite und einen vollen Kreis in der Mitte. Diese Säulen sollen das verrutschen auf dem Raster verhindern.

ToDo: Zeichnung einfügen.

Bauelemente können unterschiedliche Größen haben, sollten aber mindestens 30 mm zusätzliche Höhe haben. Eine Maximalhöhe ist nicht vorgegeben. Desweiteren sollte kein Element die Kugel dauerhaft festhalten können, sofern dies nicht Teil eines addOns ist.

Wichtige Angaben für Module sind in diesem Beispiel zu finden:

Eigenschaft Wert Anmerkung
Größe 1x1 entspricht 50x50 mm
Höhe 30mm Die Dicke der Bodenplatte wird nicht mit berücksichtigt.
Anschluss EPM Einfaches Punkte Modul / Easy Point Module
Benötigte addOns keins optionale Angabe, falls ein addOn benötigt wird
Beleuchtung Nein optionale Angabe, falls Beleuchtung verfügbar ist wird ein Modul angegeben.
Punktewert Variabel Entsteht durch Verdrahtung mit einem Bus, bei I2C Modulen wird deren Berechnung angegeben.
ToDo: Bumper Image

Die Steuerelektronik muss dabei nicht auf das Modul gebaut werden, sondern kann darunter befestigt werden. Unter einem Modul sind mindestens 30 mm Platz für Elektronik, Allerdings fallen dabei 7.5 mm von jedem Rand weg, was zu einem Platz von 35x35 mm unter dem Modul führt.

Bei Modulen die mehr als 30 mm Platz nach unten benötigen, muss diese Eigenschaft mit in die Beschreibung des Moduls.

Bus Bereich

Der Busbereich befindet sich unterhalb der eigentlichen Spielfläche und bietet Platz für die Verbindung zu den Modulen der Spielfläche.

Dieser muss mindestens 50 mm hoch sein, um Modulen mit Steuerelektronik und EPMs genug Platz zu bieten. Hierbei müssen genug Säulen und / oder Wände die Spielfläche stützen. Jedes Modul der Spielfläche muss Ausreichend gestützt werden. Optimal wäre ein volles Raster aus Halbkreisen. mindestens ein volles Raster zum einschieben der Module ist Pflicht.

Die Höhe des Bus Bereichs sowie die Anzahl der Möglichen Raster sollte angegeben werden. Zudem ist eine Angabe wichtig, ob es sich um ein Raster mit einem vorgegeben Winkel handelt oder ob es ein gerades Raster ist (Beispiel):

Eigenschaft Angabe Anmerkung
Größe 3x4 Angabe in 50x50 mm
Höhe 100 mm
Bauart Ebene Fläche mit Säulen Beschreibung des Modulrasters
Erweiterbar Nein Angabe ob weitere Raster hinzugefügt werden können
Platz für Controller Nein Angabe ob Controller im Busbereich eingebunden werden können
ToDo: Foto des Rasters einfügen

Ausblick

Folgende Features sind für die Zukunft angedacht:

Mehr Module

Platzierung der Controller Module

Automatisierter Neustart

Bestenliste

Elektronische Schläger

Elektronische Startrampe

App Steuerung der Eingabe

Beleuchtung

AddOns

Punkte Modifizierung

Multiplayer

Externe Speicherstände

Variable Schwierigkeiten

USB Anschluss

Zusatz Module

Schwierigkeiten bei der Umsetzung