Flippi: Unterschied zwischen den Versionen

Aus HRW FabLab MediaWiki
Wechseln zu: Navigation, Suche
Zeile 18: Zeile 18:
 
Um der Modulbeschreibung zu entsprechen, wird die Anzeige der Punkte auf einem Smartphone möglich sein.
 
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]].
+
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]].
  
  
Zeile 31: Zeile 31:
 
Feste Punktewerte werden über einen [https://de.wikipedia.org/wiki/Interrupt Interrupt] in Verbindung mit gesetzten Jumpern Binär errechnet. Hierbei können bis zu 1023 über die Pins 4 bis 13 eingelesen werden.
 
Feste Punktewerte werden über einen [https://de.wikipedia.org/wiki/Interrupt Interrupt] in Verbindung mit gesetzten Jumpern Binär errechnet. Hierbei können bis zu 1023 über die Pins 4 bis 13 eingelesen werden.
  
über [https://de.wikipedia.org/wiki/Serial_Peripheral_Interface SPI] können zudem weitere Controller angeschlossen werden, welche eigene Punktewerte errechnen. Hiebei ist der '''Arduino Uno''' als Master festgelegt und fragt die SPI Module ab, wenn ein '''Interrupt''' an Pin 3 ausgelöst wird.
+
über [https://de.wikipedia.org/wiki/I%C2%B2C 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 [https://www.arduino.cc/reference/en/language/functions/external-interrupts/attachinterrupt/ Rising Edge].
 
Alle Interrupts reagieren auf eine [https://www.arduino.cc/reference/en/language/functions/external-interrupts/attachinterrupt/ Rising Edge].
Zeile 38: Zeile 38:
 
Um Genug Leistung und Verbindungen für einen weiteren Ausbau zu Gewährleisten ist ein [https://store.arduino.cc/usa/arduino-mega-2560-rev3 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.
 
Um Genug Leistung und Verbindungen für einen weiteren Ausbau zu Gewährleisten ist ein [https://store.arduino.cc/usa/arduino-mega-2560-rev3 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.
  
{| class="wikitable"
+
{| class="wikitable" Anschlüsse der zentralen Steuereinheit
 
!Anschluss
 
!Anschluss
 
!Verwendung
 
!Verwendung
Zeile 92: Zeile 92:
 
==Entwicklung des Prototypen==
 
==Entwicklung des Prototypen==
 
===Elektronik===
 
===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.
 +
{| class="wikitable"
 +
!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 [https://de.wikipedia.org/wiki/Prellen entprellen] des Tasters.
 +
 +
ToDo: Bild
 +
 +
Desweiteren ist ein [http://www.microchip.com/wwwproducts/en/ATtiny85 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 [https://github.com/adafruit/Adafruit-ST7735-Library ST7735 TFT-Display] dargestellt. Dieses hat alle benötigten Bauteile auf einer fertigen Platine.
 +
 
===Module===
 
===Module===
 +
====Eingabe====
 +
====Verarbeitung====
 +
====Ausgabe====
 +
 
===Software===
 
===Software===
 +
====Eingabe====
 +
====Verarbeitung====
 +
====Ausgabe====
 +
 
===APP===
 
===APP===
 +
====Eingabe====
 +
====Verarbeitung====
 +
====Ausgabe====
 +
 +
===Gewährleistung der Erweiterbarkeit===
 +
====Eingabe====
 +
====Verarbeitung====
 +
====Ausgabe====
 +
 +
==Ausblick==
 +
 +
==Schwierigkeiten bei der Umsetzung==

Version vom 29. April 2018, 15:48 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

EinArduino 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

Verarbeitung

Ausgabe

Software

Eingabe

Verarbeitung

Ausgabe

APP

Eingabe

Verarbeitung

Ausgabe

Gewährleistung der Erweiterbarkeit

Eingabe

Verarbeitung

Ausgabe

Ausblick

Schwierigkeiten bei der Umsetzung