Bearbeiten von „Flippi“

Wechseln zu: Navigation, Suche

Warnung: Du bist nicht angemeldet. Deine IP-Adresse wird öffentlich sichtbar, falls du Bearbeitungen durchführst. Sofern du dich anmeldest oder ein Benutzerkonto erstellst, werden deine Bearbeitungen zusammen mit anderen Beiträgen deinem Benutzernamen zugeordnet.

Die Bearbeitung kann rückgängig gemacht werden. Bitte prüfe den Vergleich unten, um sicherzustellen, dass du dies tun möchtest, und speichere dann unten deine Änderungen, um die Bearbeitung rückgängig zu machen.
Aktuelle Version Dein Text
Zeile 1: Zeile 1:
  
 
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.
 
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==
 
==Ideenentwicklung==
Zeile 6: Zeile 7:
  
 
Flippi setzt genau hier an. Die Idee ist es, günstige Hardware mit Teilen aus der [https://de.wikipedia.org/wiki/Industrie_4.0 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.
 
Flippi setzt genau hier an. Die Idee ist es, günstige Hardware mit Teilen aus der [https://de.wikipedia.org/wiki/Industrie_4.0 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==
 
==Konzeptionierung==
Zeile 17: Zeile 19:
  
 
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 [http://hrw-fablab.de/wiki/index.php?title=Flippi#Ausblick Ausblick].
 
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 [http://hrw-fablab.de/wiki/index.php?title=Flippi#Ausblick Ausblick].
 +
  
 
==Erste Schritte==
 
==Erste Schritte==
Zeile 127: Zeile 130:
  
 
===Module===
 
===Module===
Die STL Dateien der bereits fertig gestellten Modelle befinden sich auf [https://github.com/rootCowHD/Flippi/tree/master/Modelle Github].
 
 
 
====Eingabe====
 
====Eingabe====
 
Die meisten Module sind Eingabe Module.
 
Die meisten Module sind Eingabe Module.
Zeile 150: Zeile 151:
  
 
===Software===
 
===Software===
Der Quellcode des Projektes findet sich auf [https://github.com/rootCowHD/Flippi Github].
+
ToDo: Software
Der Teil welcher am 02.05.2018 Präsentiert wird findet sich gesondert im Abgabe Ordner und ist eine Schlankere Variante des vollständigen Codes.
 
Im WIP Bereich findet sich der Code welcher die nächste Version vorbereitet.
 
 
 
 
====Eingabe====
 
====Eingabe====
Die Eingabe wird durch einen Arduino geregelt, welcher einerseits über I2C andererseits aber auch über Pins Punkte berechnen kann.
 
Über I2C werden die Punkte dabei vom Arduino abgefragt, bei einfacher Eingabe wird  an den Pins 4 bis 13 (1-512) ein Binärer Wert angelegt und zudem ein Interrupt an Pin 2 ausgelöst. I2C wird ebenfalls nur abgefragt, wenn ein Interrupt (an Pin 3) ausgelöst wurde.
 
 
Nach dem berechnen der neuen Punkte werden diese in einem 20 Zeichen langen Kommando an die zentrale Steuereinheit gesendet.
 
 
{| class="wikitable"
 
!Funktion
 
!Verwendung
 
|-
 
|I2CInterrupt
 
|Setzt eine Flagge zum Abfragen der I2C Geräte
 
|-
 
|pointInterrupt
 
|Setzt eine Flagge zum ausgeben der Punkte, sofern diese nicht schon gesetzt wurde. Die Punkte werden beim Interrupt zusammengezählt
 
|-
 
|initI2C
 
|Initialisiert die I2C Kommunikation
 
|-
 
|initCustomI2C
 
|Initialisierung von nachträglich eingefügten I2C Befehlen
 
|-
 
|handlePoints
 
|Übergibt die Punkte als Kommando in String Format an die Zentrale Steuereinheit
 
|-
 
|handleI2C
 
|Behandelt die Punkte, welche über I2C eingelesen werden
 
|-
 
|handleCustomI2C
 
|Behandelt nachträglich eingefügte I2C Bauteile
 
|}
 
 
 
====Verarbeitung====
 
====Verarbeitung====
Bei der Verarbeitung handelt es sich um einen Arduino, welcher die Kommunikation zwischen allen Modulen regelt und die eigentlichen Werte vorhält.
 
Die Grundliegenden Funktionen sind folgende:
 
{| class="wikitable"
 
!Funktion
 
!Verwendung
 
|-
 
|customLoadTime
 
|Stellt ein was während des Startvorgangs passieren soll
 
|-
 
|initBus
 
|Stellt alle Seriellen und sonstigen Kommunikationswege ein
 
|-
 
|initCustomBus
 
|Einstellung von Kommunikationswegen, welche nicht von vorne herein vorgesehen waren
 
|-
 
|initMain
 
|Alle Einstellungen des Hauptprogramms, z.B. das laden der Bestenliste und zurücksetzen der Punkte
 
|-
 
|customInit
 
|Alles was nachträglich noch initialisiert werden muss
 
|-
 
|customLoadFinish
 
|Aufruf wenn das Laden abgeschlossen ist
 
|-
 
|pointCommand
 
|Bearbeitung von Kommandos für eingehende Punkte
 
|-
 
|debugCommand
 
|Bearbeitung von Kommandos über USB
 
|-
 
|hitterCommand
 
|Bearbeitung von Kommandos der Schläger und Startrampen Steuerung
 
|-
 
|addOnCommand
 
|Bearbeitung von Kommandos von addOns
 
|-
 
|RXTXCommand
 
|Bearbeitung von Kommandos über den Softwareserial Eingang
 
|-
 
|usbCommandsCustom
 
|Nachträglich eingefügte USB Kommandos
 
|-
 
|pointCommandsCustom
 
|Nachträglich eingefügte Kommandos für Punkte
 
|-
 
|addOnCommandsCustom
 
|Nachträglich eingefügte Kommandos für addOns
 
|-
 
|customRXTX
 
|Nachträglich eingefügte Kommandos für Softwareserial
 
|-
 
|serialEvent(0-3)
 
|Interrupts für angeschlossene Serial Geräte
 
|-
 
|RXTXCommand
 
|Interrupt für Softwareserial
 
|-
 
|updateOut
 
|Sendet den aktuellen Punktewert an die Ausgabe
 
|-
 
|addPoints
 
|Fügt Punkte hinzu
 
|-
 
|subPoints
 
|Zieht Punkte ab
 
|}
 
 
Hierbei ist zu beachten das erst bei der Komplementierung einer Eingabe dieser in ein Kommando umgewandelt wird. Aktuell ist ein Kommando 20 Zeichen lang, weswegen solange serielle Eingaben gesammelt werden, bis 20 Zeichen im '''InputString''' gespeichert sind. Anschließend wird dieser in ein Kommando umgewandelt und eine entsprechende Flagge im Programm gesetzt ('''StringComplete''').
 
 
Sofern eine Flagge gesetzt wurde, wird im loop der entsprechende ''Handle'' Befehl aufgerufen. In diesem wird das Kommando verarbeitet und eine entsprechende Ausgabe getätigt.
 
 
Hierbei hat auch die Ausgabe eine feste Länge des Kommandos (ebenfalls 20 Zeichen).
 
 
 
====Ausgabe====
 
====Ausgabe====
 
Die Ausgabe ist aufgeteilt in die Anzeige auf einem '''ST7735''' und die Ausgabe auf ein mobiles Endgerät via App.
 
Die Ausgabe ist aufgeteilt in die Anzeige auf einem '''ST7735''' und die Ausgabe auf ein mobiles Endgerät via App.
Zeile 314: Zeile 208:
  
 
====Ausgabe====
 
====Ausgabe====
Die App in ihrer einfachsten Form soll die durch eine NodeMCU empfangenen Daten aufbereitet darstellen. Hierzu stellt die NodeMCU einen Webserver bereit, auf welchem die Punkte angezeigt werden.
+
ToDo: Ausgabe App
ToDo:  
 
  
 
===Gewährleistung der Erweiterbarkeit===
 
===Gewährleistung der Erweiterbarkeit===
Zeile 342: Zeile 235:
 
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 und 1mm Höhe. 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.
 
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 und 1mm Höhe. 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.
  
[[Datei:FlippiRaster.png]]
+
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.
 
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.
Zeile 378: Zeile 271:
 
|Entsteht durch Verdrahtung mit einem Bus, bei I2C Modulen wird deren Berechnung angegeben.
 
|Entsteht durch Verdrahtung mit einem Bus, bei I2C Modulen wird deren Berechnung angegeben.
 
|}
 
|}
|[[Datei:FlippiBumper.PNG]]
+
|ToDo: Bumper Image
 
|}
 
|}
  
Zeile 410: Zeile 303:
 
|-
 
|-
 
|Bauart
 
|Bauart
|Schräge Fläche mit Säulen
+
|Ebene Fläche mit Säulen
 
|Beschreibung des Modulrasters
 
|Beschreibung des Modulrasters
 
|-  
 
|-  
 
|Erweiterbar
 
|Erweiterbar
|Ja
+
|Nein
 
|Angabe ob weitere Raster hinzugefügt werden können
 
|Angabe ob weitere Raster hinzugefügt werden können
 
|-
 
|-
Zeile 421: Zeile 314:
 
|Angabe ob Controller im Busbereich eingebunden werden können
 
|Angabe ob Controller im Busbereich eingebunden werden können
 
|}
 
|}
|[[Datei:FlippiRasterScreen.PNG]]
+
|ToDo: Foto des Rasters einfügen
 
|}
 
|}
 
===Software Modifizierung===
 
===Software Modifizierung===
Zeile 459: Zeile 352:
 
Zudem können sind auch Kombinationen aus elektronischem und analogem Schläger denkbar.
 
Zudem können sind auch Kombinationen aus elektronischem und analogem Schläger denkbar.
  
Diese '''Kombi Schläger''' benötigen keine Elektronik zum ausführen von Schlägen, bieten aber dennoch die Möglichkeit den Status des Schlägers einzulesen. Hierzu kann Beispielsweise eine Lichtschranke verwendet werden.
+
ToDo: Beispiel eines Kombi Schlägers.
[[Datei:FLippi Kombi Image.png|right]]
 
  
 
===Elektronische Startrampe===
 
===Elektronische Startrampe===
Zeile 512: Zeile 404:
 
[https://github.com/esp8266/Arduino ESP8266 Arduino Paket] Zum programmieren der NodeMCU mit der Arduino IDE.
 
[https://github.com/esp8266/Arduino ESP8266 Arduino Paket] Zum programmieren der NodeMCU mit der Arduino IDE.
  
[https://www.prusa3d.de/slic3r-prusa-edition/ Slic3r Prusa Edition] Slicer für 3D Modelle.
 
  
 
[https://www.tinkercad.com/ TinkerCAD] Web basierte 3D Modellierung.
 
[https://www.tinkercad.com/ TinkerCAD] Web basierte 3D Modellierung.
  
[https://de.wikipedia.org/wiki/Adobe_Photoshop Adobe Photoshop CS6] Anlegen von Skizzen.
+
==Schwierigkeiten bei der Umsetzung==
 
 
[http://www.Hardcopy.de/ Hardcopy] Anwendung für Screenshots.
 
 
 
[https://github.com/ GitHub] Versionierung und Beeitstellung von Quellcode.
 
 
 
==Schwierigkeiten bei der Umsetzung, eine Tragödie in drei Schwerpunkten==
 
Dieser Abschnitt ist nicht nur zum Teil ernst zunehmen und entspricht eher einer persönlichen Therapie, als einer wissenschaftlichen Arbeit.
 
 
 
===Zum Glück gibt es Technik===
 
Eine erste Schwierigkeit, beim entwickeln von neuem, ist das fehlen von Beispielen.
 
 
 
Flipper sind keine neue Erfindung, dennoch sind sie ein selten vertretendes und hoch spezialisiertes Produkt. Daher finden sich zwar Schaltpläne für einfache Bauteile, aber kaum Anleitungen zur Digitalisierung der meist Analogen Bauteile. Ein fertiger Tisch welcher modernisiert ist, kostet auf dem deutschen Markt (sofern Funktionsfähig) rund 5000€ ([http://pinball-universe.de/ Pinball Universe]), was für ein Referenz Modell den Finanziellen Rahmen des Projektes überzieht.
 
 
 
Nachdem also einzelne Funktionen getestet wurden, fanden sich einige Schwierigkeiten, welche sich technisch nicht im Rahmen der legalen Anwendungen im Labor hätten umsetzen lassen:
 
 
 
Hubmagnete, welche eine entsprechende Leistung schnell genug Umsetzen, benötigen eine zu hohe Leistung und sind bei 12 Volt nicht schnell genug, um die Kugel zu Beschleunigen. Weswegen nach anderen Lösungen gesucht wurde. Hydraulikpumpen welche genug Kraft umsetzen könnten, würden das Budget des Projektes übersteigen. Jede einzelne der 3 benötigten. Entsprechend wurde hier zu guter letzt die Lösung der Kombischläger erdacht, bei welchen die Kraft Analog über einen Hebel kommt, durch eine Lichtschranke allerdings dennoch ein technisches einlesen Möglich ist. Hier wird weiter nach Möglichkeiten gesucht. Zumal es uns nicht gelungen ist, eine sauber rollende Kugel mit einem anständigen Gewicht herzustellen oder zur organisieren.
 
 
 
Einen Rahmen herzustellen ist technisch gesehen keine hohe Kunst, sofern die dafür benötigten Werkzeuge dann funktionieren wenn man sie braucht. Leider ist dies bei einem gewissen Laser gestütztem Schneidegerät häufig nicht der Fall.
 
 
 
Und dann ist auch immer gut einen Controller zum testen im Labor zu haben, wenn man erwartet dass im Labor Controller für Projekte verwendet werden.
 
Leider bringen Controller im Labor nur dann etwas, wenn diese Fehlerfrei funktionieren.
 
 
 
Bis zu diesem Punkt wären viele Probleme über das Budget regelbar gewesen, wenn das "Team" nicht ein Mitspracherecht hätte.
 
 
 
===Im Team ist alles besser===
 
Leider war die Kommunikation innerhalb des Teams, bestenfalls gering.
 
 
 
So wurde das Budget für Materialien verwendet, welche eindeutig zu teuer sind. Zu schwache Hubmagnete sind ebenso vorhanden wir Material für einen viel zu großen Rahmen. Leider fehlt das Budget für Nebensächlichkeiten wie Controller, elektrische Bauteile und Stromversorgung. Ja, Hubmagnete welche Strom brauchen, haben weder ein Steuereinheit, noch eine Stromquelle und vielen damit auch wieder aus.
 
 
 
===Das Ding mit der Arbeit===
 
Leider gibt es neben mangelnder Kommunikation auch einen Engpass an Gruppenmitgliedern. Da sich ein Teil der Gruppe nach dem Einkauf nicht mehr zum Projekt äußern wollte.
 
Aus diesem Grund blieb ein Großteil der Arbeit an einer Einzelperson hängen, welche den Quellcode für eine Präsentation zusammengestrichen hat, damit dieser zumindest funktioniert. Eine Einzelperson hat sich dann noch einen Wiki Eintrag aus den Fingern gezogen, die Hardware zusammengebaut und einen nicht Funktionsfähigen 3D Prototypen erstellt. Alles unter Einsatz eigener Hardware und Mittel.In der Zwischenzeit kämpft eine andere Einzelperson mit einer App. Der dritte im Bunde, welcher sich primär um das Modell kümmern wollte, hat sich in der Zwischenzeit beurlauben lassen.
 
 
 
Ein Großartiger Abschluss für ein Projekt.
 
 
 
==Fazit==
 
Bei '''Flippi''' ist sowohl Ausbaubedarf, als auch Ausbaupotential bevor ein vollständiger Flipper umgesetzt werden kann. Dieses Potential wird dann vermutlich allerdings unter einem anderen Titel und als Hobbyprojekt entfaltet. Gerade in der Teamarbeit und Kommunikation besteht Verbesserungspotential und es wäre Wünschenswert für spätere Semester einen stärkeren Fokus auf Controller zu legen.
 
 
 
Leider haben wir erst kurz vor Schluss erfahren, dass die gesamten Kommunikationsschwierigkeiten der Seriellen Verbindungen mit einem anderen Chip kein Problem gewesen wären. Die Vielzahl der Möglichkeiten neben den großen Chips kommt hier etwas zu kurz. Auch die Möglichkeit der Entwicklung ist durch das erzwingen einer mobilen App eingeschränkt.
 
 
 
==Beteiligte Studenten==
 
Stefan Werntges
 

Bitte beachte, dass alle Beiträge zu HRW FabLab MediaWiki von anderen Mitwirkenden bearbeitet, geändert oder gelöscht werden können. Reiche hier keine Texte ein, falls du nicht willst, dass diese ohne Einschränkung geändert werden können.

Du bestätigst hiermit auch, dass du diese Texte selbst geschrieben hast oder diese von einer gemeinfreien Quelle kopiert hast (weitere Einzelheiten unter HRW FabLab MediaWiki:Urheberrechte). ÜBERTRAGE OHNE GENEHMIGUNG KEINE URHEBERRECHTLICH GESCHÜTZTEN INHALTE!

Abbrechen Bearbeitungshilfe (wird in einem neuen Fenster geöffnet)