Bei SinnerSchrader haben wir vor einiger Zeit die Frage gestellt: „Was aus unserem Agenturleben könnten wir mal digitalisieren und mit Twitter verbinden?“ Die Kaffeemaschine kam uns als Erstes in den Sinn, aber irgendwie wollte die gute Idee nicht so richtig anklingeln.
Aber der Kicker war’s dann, als typischer Agentur-Mittelpunkt, und er ist dafür großartig geeignet.
Ziel
Da wir viel Zeit am Kicker verbringen, bietet es sich an, eine digitale Liga zu entwickeln, in der die Mitarbeiter stets ihre eigene Position und den Verlauf aller Spieler sehen können. Außerdem ist es nett, wenn die Spielstände auf einer digitalen Tafel dargestellt werden, so dass man nicht mehr manuell mitzählen muss.
Vor jedem Spiel registrieren sich 2 oder 4 Spieler mit ihrem Twitter-Account, und los geht’s. Der Tisch registriert über Lichtschranken die Tore, die Software zählt mit, und am Ende aktualisiert sie die Spieler-Liga.
Wir waren ein großartiges Team mit verteilten Rollen. Meine Aufgabe war die Installation der Hardware am Tisch, angefangen von den handwerklichen Schritten wie Ballführung, über Elektronik, bis hin zum Arduino, der die Tore an den Server überträgt.
Auf dieser Seite könnt ihr die Schritte mitverfolgen, und wenn ihr Lust habt, den Tisch auch nachbauen.
Bitte beachte, dass die Anleitung unvollständig bzw. veraltet sein und Fehler enthalten kann.
Aufbau auf eigene Gefahr und Verantwortung.
Lichtschranken installieren
Als erstes braucht ihr einen Kicker-Tisch. Die Herausforderung ist, die Tore so zu modifizieren, dass registriert wird, wenn ein Ball die Torlinie passiert.
In dem Kickertisch bei SinnerSchrader gibt es ein Blech, in dem der Ball nach einem Tor zum Auswurf rollt. In dieses Blech habe ich eine Lichtschranke aus dem Modelleisenbahn-Bedarf installiert, da diese sich am Besten geeignet hat und sehr robust ist. Die Tore werden also nicht beim Überschreiten der Torlinie gezählt, sondern erst im Auslauf, wodurch die Messung zwar präziser wird, aber zeitlich leicht verzögert ist.
Die Lichtschranken, die ich verwendet hab, sind Modell 5961 von Busch. Sie enthalten eine Steuereinheit mit Zeitschalter, wodurch springende oder unruhig in dem Blech laufende Bälle kompensiert werden. Eine Einstellung von 2 Sekunden ist hier am besten.
So sieht das modifizierte Blech schließlich aus:
Normalerweise benötigen die Busch-Lichtschranken die bei Modelleisenbahnen übliche 16V-Wechselspannung. Wenn man den eingebauten Gleichrichter entfernt, kann man (unter Berücksichtigung der Bauteil-Toleranzen) mit 12V Gleichspannung auskommen. Da der Arduino, zu dem wir später kommen, ebenfalls 12V schlucken kann, ist das ideal, da wir auf diese Weise eine gemeinsamen Stromversorgung verwenden können (12V, 300mA).
Um den Gleichrichter zu überbrücken, muss nur die Versorgungsspannung an die Plus- und Minus-Anschlüsse des Gleichrichters gelötet werden.
Ein Arduino-Shield für die Tore
Arduino ist eine Open-Source-Microcontroller-Plattform, inklusive Board-Layouts, einer IDE, und Libraries, um sofort starten zu können. Wir haben uns für den „Arduino Uno“ entschieden (http://arduino.cc/en/Main/ArduinoBoardUno), sowie das Third-Party-Shield “Sparkfun WiFly”, Modell-Nr. WRL-09954. Wenn du kein WLAN möchtest, kann du auch das Ethernet-Shield nehmen, die Software ist mit beiden kompatibel.
Bitte beachte, dass das WLAN-Modul keine Enterprise Authentication (EA) unterstützt. Auf der anderen Seite unterstützt das Ethernet-Modul kein DHCP, d.h. wenn du dich für Kabel-LAN entscheidest, musst du eine feste IP-Adresse dem Tisch zuweisen.
Die kannst den Arduino, das WiFly-Shield, sowie das Ethernet-Shield bei Sparkfun kaufen. Wenn du dich für WLAN entscheidest, benötigst du außerdem ein Headers-Kit, da dies nicht enthalten ist. Wenn du das Ethernet-Modul nimmst, achte darauf, dass du das Original-Produkt kaufst (wenn die LAN-Buchse nach links zeigt, muss sie oben sein). Es sind günstige Ethernet-Shields auf dem Markt, die nicht mit der Kicker-Software kompatibel sind.
Hier die entsprechenden Produkte bei Sparkfun:
Technisch betrachtet ist der Arduino eine Single-Thread-Architektur mit blockierender I/O. Das bedeutet, dass wir, während ein Tor zum Server gesendet wird, das nächste verpassen könnten. Um dies zu kompensieren haben wir zwei (!) Bit Speicher an den Arduino angeschlossen, ein Bit pro Tor, als Tor-Puffer.
Das Arduino-Programm liest den Speicher und löscht ihn dabei. Kommt es nun zu einem weiteren Tor, wird der Speicher automatisch wieder gesetzt, und das Programm bemerkt dies, nachdem das erste Tor gesendet ist.
Zwei Bit kann man mit einem 4-NOR-Gatter nachstellen, dem IC 4001. Voraussetzung ist, dass die Lichtschranke ein High-Signal abgibt, wenn sie auslöst. Die Busch-Lichtschranke 5961 tut dies, und zwar für 2 Sekunden. Die NOR-Puffer-Schaltung sieht wie folgt aus:
Am besten lötet man die Custom-Schaltung auf ein Prototyp-Shield wie dieses:
Du kannst es von Farnell beziehen. Auch hier ist wieder ein Headers-Kit notwendig.
Hier ein Layout-Diagramm und ein paar Fotos des Custom-Boards, sowie aller aufeinander montierter Teile (sowohl für WLAN, als auch für LAN).
Bitte beachte, dass es ggf. notwendig ist, auf den Ethernet-Stecker Isolisationsband zu kleben, damit er nicht gegen die Kontakte des darunterliegenden Shields kommt. Am besten sollte das Band auf beide Seiten geklebt werden.
Den Arduino programmieren
Nachdem du die Arduino-IDE installiert und das Board an den PC gesteckt hast, kannst du das Arduino-Programm öffnen und auf den Arduino hochladen. Die Sourcen lädst du dir von meinem GitHub herunter:
Verwende für die WLAN-Variante dabei die Library, die diesem Projekt beiliegt, und nicht die Original-Variante, da diese fehlerhaft ist. Dazu kopierst du den WiFly-Ordner in den Ordner „libraries“ deiner IDE-Installation, und öffnest dann Digital_Foosball_Table.pde.
Wenn du WLAN verwendest, ändere in dem Programm den INTERNET_XXX
-Define in
#define INTERNET_WIFLY
, und setze die WLAN-SSID und das -Passwort, und reaktiviere den
WiFly.h
-Include.
Im Fall von Ethernet, definiere #define INTERNET_ETHERNET
und setze eine IP- und MAC-Adresse. Wie bereits erwähnt unterstützt das Shield kein DHCP, du musst also eine feste
IP-Adresse reservieren. Für die MAC-Adresse kannst du typischerweise die Adresse verwenden, die bereits im Code
eingetragen ist, wenn du nur diesen Arduino im Netz verwendest. Aktiviere außerdem den Ethernet-Include.
Als nächstes gibst du Host-Namen und IP-Adresse des Liga-Servers ein. Du benötigst beide, da der Arduino leider keine DNS-Lookups macht.
Wenn alles konfiguriert ist, drückst du auf Upload und bist fertig.
Komponenten montieren und verbinden
Jetzt brauchten wir eine Möglichkeit, alles zusammenzubinden. Wir haben ein Holzbrett verwendet, darauf alle Komponenten mit Kabelbinder montiert und das Brett an den Tisch-Kicker geschraubt.
Hier ein früher Prototyp mit Batterien als Stromquelle (sie halten ca. 2 Tage durchgängigen Betriebs). Auf dem Bild ist auch noch kein Zwei-Bit-Puffer montiert.
Als Letztes werden die Komponenten mit den Toren und Lichtschranken verdrahtet. Hierfür kannst du folgende Diagramme verwenden:
Und voilà, los geht das Spiel.
Material-Liste
Diese Materialien werden für die oben angegebene Anleitung benötigt (unter Verwendung der Distributoren Sparkfun, Amazon und Conrad):
Allgemeine Komponenten
- Arduino Uno
- 2x Busch-Lichtschranke 5961 oder ähnlich
- Prototyp-Shield
- Stackable Headers-Kit
- NOR-Gatter 4001
- Sockel für NOR-Gatter
- 2x 10k-Widerstand
- 2x 100k-Widerstand
- 3x 470-Widerstand
- Rote LED
- Gelbe LED
- Grüne LED
- 5V-Schaltregler
- 12V-DC-Schaltnetzteil, min. 300mA
- Stecker, 3 Pins
- Stecker, 5 Pins
- Buchsen, 3 und 5 Pins (teile z.B. diese Leiste in zwei)
- Diverse Montage- und Verdrahtungs-Materialien
Wenn WLAN verwendet wird
- Sparkfun WiFly-Shield WRL-09954
- Ein weiteres Headers-Kit für das WiFly-Shield