Digital Foosball

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.

 

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 Prototypen bei SinnerSchrader gibt es eine 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, wodurch die Messung zwar präziser wird, aber zeitlich leicht verzögert ist.

Die Lichtschranken, die ich verwendet hab, sind Modell 5961 von Busch (http://www.amazon.de/Busch-5961-Zeitschalter-mit-IR-Lichtschranke/dp/B0002OH8SQ/ref=pd_sxp_f_pt). 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:

Rails

Normalerweise benötigen die Busch-Lichtschranken die Modelleisenbahn-Spannung von 16V Wechselspannung. Wenn man den eingebauten Gleichrichter entfernt, kann man 12V Gleichspannung direkt anschließen. Da der Arduino, zu dem wir später kommen, ebenfalls 12V schlucken kann, ist das ideal, da wir auf diese Weise mit einer gemeinsamen Stromversorgung auskommen (12V, 300mA). Um den Gleichrichter zu überbrücken, muss nur die Versorgungsspannung an die Plus- und Minus-Anschlüsse des Gleichrichters gelötet werden.

Rectifier

Create a custom Arduino shield for the goals

Arduino is an open-source microcontroller platform, including board layouts, an IDE, and libraries to get started. We chose the “Arduino Uno” (http://arduino.cc/en/Main/ArduinoBoardUno), as well as the third-party WiFi Shield “Sparkfun WiFly”, model no WRL-09954. If you do not like WiFi, you can also use an Ethernet shield, the software is compatible to both. Please note that the WiFi module does not support Enterprise Authentication (EA) WiFi. On the other hand, the Ethernet module does not support DHCP, so if you choose cable LAN, you must assign an IP address for the table.

Among others, you can purchase the Arduino, the WiFly, and the Ethernet shield from Sparkfun (http://www.sparkfun.com/products/9950, http://www.sparkfun.com/products/9954, andhttp://www.sparkfun.com/products/9026). When choosing WiFi, remember to order the headers kit if they aren’t included (http://www.sparkfun.com/products/10007). When choosing Ethernet, take care to buy the original version of the Arduino Ethernet shield (when the jack faces left, it must be located at the top). There is a cheap Ethernet shield available which is not compatible with the Foosball software.

Technically spoken, the Arduino is a single-threaded, blocking-I/O architecture. This means that while sending a goal event to the server, we might miss one goal in the middle. So what we did to compensate is to add 2 bits of memory (yes, 2 bits!) to the Arduino, one bit for each goal, as a goal buffer. The Arduino program reads the bits and clears them when read. The easiest way to implement 2 bits is the 4-NOR-gate IC 4001. However, depending on the high/low logic of your light barrier, you may require a NAND or yet another gate. The Busch 5961 is high for 2 seconds on goal events, and the Arduino program also requires a high signal for goal events, and sends a high signal as well to clear the bits. So the NOR is fine here. We build the following buffering circuit:

NOR circuit

Its best to put the custom circuit on a prototype shield, like this one:

Prototype shield

You can get it from Farnell (http://de.farnell.com/arduino/a000024/board-arduino-proto-shield/dp/1848695). Again, you may need a headers kit (http://www.sparkfun.com/products/10007).

Here is a layout diagram and some photos of the custom board and all parts mounted on each other (WiFi and Ethernet versions).

Goal buffer: Diagram

Goal buffer: Photo

Goal buffer: Photo

All shields: WiFi

All shields: Ethernet

Note that you sometimes need a little tape to isolate contacts from jacks of shields below. Best is to put tape on both shields.

Program the Arduino

After installing the Arduino IDE (note: version 0022 from the archive is required!) and the device driver and pluggin the board to a USB port, you can open Arduino programs and upload them to the board. The Digital Foosball Table consists of a program and a modified WiFly shield library. Do not use the original Sparkfun library, as it contains errors and a missing feature. Copy the WiFly folder of the download into your IDE installation’s “libraries” folder, and open the Digital_Foosball_Table.pde file.

When using WiFi, change the INTERNET_xxx define to „#define INTERNET_WIFLY“, enter your Wifi SSID and password, and uncomment the WiFly.h include. When using Ethernet, change the INTERNET_xxx define to „#define INTERNET_ETHERNET“, enter an IP and MAC address (you can use the MAC address in the code if you only have one Arduino in your network), and uncomment the Ethernet includes. The Ethernet shield does not support DHCP, so you require to reserve one IP.

Next, enter the goals server’s host name and IP. You need both, as we do not lookup names in DNS servers.

When everything’s configured, press upload and you are ready to go.

Mount and connect components

Now you need some way to tie everything together. We used a wooden board, mounted all components with cable straps, and screwed the whole board to the frame of the foosball table. This is an early prototype of the board, using batteries as power supply (which also works for 2 days of continuous operation), and no 2-bit buffer yet.

Wooden board

Finally, solder all components together, using these circuit and wiring diagrams for the entire foosball table: And voila, you are ready.

Diagram

Diagram

Material list

These are the materials of the above instructions (with example distributors Sparkfun, Amazon and Conrad Germany):

Common components:

When using WiFi:

When using Ethernet:

Please note that the list may be incomplete and/or contain errors.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.