Ein PC-Programm wertet über eine Internetverbindung regelmäßig den Spielstand eines ausgewählten Fussballspiels aus und sendet die Information dann Richtung Ping Pong Platine.
Mit dieser Spielstandsanzeige verpasst man somit während der Arbeit am PC kein Tor.
Das Projekt eignet sich aber nicht nur für die WM, sondern auch für andere Fussballspiele wie z.B. Bundesliga, DFB-Pokal oder auch ausländische Fussballligen.
Einzige Bedingung ist, dass der Spielstand über den RSS-Feed der Seite http://www.soccerstand.com/rss/soccer/en/today abrufbar ist.
Die Soundausgabe erledigt der Atmega8 der Ping Pong Platine, indem er eine kleine WAV-Datei über die integrierte PWM-Einheit abspielt. Diese WAV-Datei ist im on-chip Flash gespeichert, es wird kein zusätzlicher Speicher benötigt. Ziel war es, mit möglichst wenigen externen Bauelementen auszukommen. Hier werden für die Soundausgabe nur 3 zusätzliche Bauteile benötigt. Außerdem wird noch eine RS232-Umsetzung benötigt, hierfür kann auch ein geeignetes Handydatenkabel verwendet werden, sodass der Aufwand minimal ist.
Zusätzlich benötigte Hardware
a) Bauteile für Soundausgabe: 1 Kondensator, 1 Widerstand, Lautsprecher.
b) RS232-Anbindung an PC:
Pin RxD0 (Port D.0) des Atmega8 auf der Ping Pong Platine muss über einen geeigneten Pegelwandler mit einer RS232-Schnittstelle des PCs verbunden werden.
Es kann entweder eine Standardschaltung mit einem MAX232 verwendet werden oder am besten ein über USB angeschlossener virtueller COM-Port.
Man kann beispielsweise ein geeignetes Handydatenkabel verwenden, z.B. das Modell "KQ-U8A" für das Handy "Siemens C55".
Vorteil: meistens ist gleichzeitig noch die 5V Spannungsversorgung des USB-Ports mit herausgeführt, über die man dann die Ping Pong Platine direkt versorgen kann.
Da mit einer minimalen Anzahl von Bauelementen ausgekommen werden soll, wurde auf den eigentlich erforderlichen Tiefpass am PWM-Ausgang des ATmega8 verzichtet. Stattdessen wird über einen Elko plus Vorwiderstand direkt ein kleiner Lautsprecher angeschlossen. Zu beachten ist, dass hier kein Verstärker und keine Aktivboxen angeschlossen werden dürfen, da diese ohne Tiefpass zerstört werden könnten.
Da der verwendete PWM-Ausgang OC1A (PB1) auf der Ping Pong Platine normalerweise die unterste LED-Reihe ansteuert, sollte man am besten den Widerstand R10 auslöten, damit keine weitere Belastung an diesem Pin hängt, die sich störend auf die Soundausgabe auswirkt.
Anzeige
Der Spielstand wird durch 2 Ziffern, getrennt durch einen kleinen Bindestrich, auf der LED-Anzeige dargestellt.
In der zweituntersten Zeile wird der Zeitbalken horizontal bestehend aus 12 LEDs dargestellt, die Aufteilung erfolgt in 10-Minuten-Schritten und sieht wie folgt aus:
LED1: Spielminute 1-10
LED2: Spielminute 11-20
LED3: Spielminute 21-30
LED4: Spielminute 31-40
LED5: Spielminute 41-45
LED6: Halbzeit
LED7: Spielminute 46-55
LED8: Spielminute 56-65
LED9: Spielminute 66-75
LED10: Spielminute 76-85
LED11: Spielminute 86-90
LED12: Spielende
Direkt nach dem Einschalten der Spannungsversorgung wird der noch unbekannte Spielstand durch Striche "-" dargestellt, der Zeitbalken ist ausgeblendet. Sobald per RS232 Daten empfangen wurden, wird die Anzeige aktualisiert bzw. der Tor-Sound abgespielt.
Folgende Befehlscodes werden ausgewertet:
01h: Spielstand, Datenbytes: 3 ASCII-Zeichen, z.B. 1:0
02h: Spielminute, Datenbytes: 2 ASCII-Zeichen, z.B. 01 für die 1. Spielminute oder 12 für die 12. Spielminute. Sonderfälle: HT = Halftime (Halbzeit), FT = Fulltime (Spielende), Spiel noch nicht begonnen: 00
03h: Abspielen des Tor-Sounds (4x hintereinander), keine weiteren Datenbytes
WAV-Datei konvertieren
Falls eine eigene WAV-Datei benutzt werden soll, gibt es hier Hinweise zur erforderlichen Konvertierung.
Die WAV-Datei muss folgendes Format aufweisen: RIFF-WAVE Format/PCM, 8-bit, mono und 8 kHz Samplingrate.
Der Flashspeicher des ATmega8 ist 8 kBytes groß. Für die Firmware sind 1,5 kBytes (also 1536 Bytes) reserviert, sodass für die WAV-Datei maximal 6656 Bytes zur Verfügung stehen. Das enspricht einer Gesamtspieldauer von ca. 0,8 Sekunden.
Die Firmware liegt im Bereich von 0x0000-0x05FF, ab 0x0600 beginnt die WAV-Datei. Die Speicheraufteilung sieht wie folgt aus:
0x0000-0x05FF: Firmware
0x0600: Anzahl der gespeicherten WAV-Dateien (hier 1)
0x0601-0x0602: Größe von WAV-Datei 1 (16-Bit Wert Highbyte / Lowbyte)
0x0603-0x1FFF: WAV-Datei ohne Header, binär gespeichert
Falls die WAV-Datei noch nicht im oben genannten PCM-Format vorliegt, kann sie mit dem Freewaretool Audacity konvertiert werden.
Dazu öffnet man die Datei in Audacity und wählt unten links bei "Projektrate" den Punkt "Andere" aus und tippt dann 8000 ein für 8 KHz. Außerdem kann man bestimmte Bereiche der WAV-Datei markieren und ausschneiden, z.B. Pausen am Anfang oder Ende. Um bei Stereoformat auf Mono zu wechseln, klickt man im Kästchen mit dem Dateinamen auf den kleinen Pfeil und wählt "Stereotonspur aufteilen". Anschließend kann man z.B. den rechten Tonkanal durch Klick auf das X löschen und beim linken Tonkanal durch erneuten Klick auf den kleinen Pfeil "Mono" auswählen. Bei "Bearbeiten" => "Einstellungen" muss bei "Dateiformat" als unkomprimiertes Exportformat "WAV (Microsoft 8 bit PCM) eingestellt werden. Um die Datei zu speichern markiert man den gewünschten Bereich und wählt unter "Datei" den Punkt "Exportieren als WAV" aus. Nun müsste die Datei im korrekten Format vorliegen. Im Windows Explorer kann mit einem Rechtsklick auf die Datei unter "Eigenschaften" und dann "Dateiinfo" das Format nochmals überprüft werden.
Um die WAV-Datei in das Hexfile zur Programmierung des Atmega8 zu bekommen ist ein weiteres selbstgeschriebenes Tool "wav2pong" erforderlich, das im ZIP-File enthalten ist. Das Tool entfernt die 44 Bytes großen Header der WAV-Datei und fügt diese zu einer Binärdatei zusammen, wobei am Anfang die Anzahl der gespeicherten WAV-Dateien sowie die Größe der Datei abgespeichert werden. Anschließend wird die Binärdatei über ein hex2bin Tool in das Intelhex-Format konvertiert und in das Hexfile, das beim Kompilieren/Linken entstanden ist ab Adresse 0x0600 eingefügt, sodass am Ende eine Hexdatei bestehend aus Firmware und WAV-Datei entsteht, die in den Atmega8 programmiert wird. Der komplette Konvertiervorgang wird über eine Batchdatei convert.bat gestartet.
Folgende Schritte sind erforderlich:
a) In das Verzeichnis "wav2pong" (im ZIP-File enthalten) wechseln.
b) Falls die Firmware geändert wurde, muss die neu erstellte Firmware pp_tor.hex in das Verzeichnis wav2pong kopiert werden.
c) Die gewünschte WV-Datei in das Verzeichnis wav2pong kopieren.
d) Die Datei setup.ini mit einem Texteditor öffnen und bei "file1" den Dateinamen der WAV-Datei eintragen, "file2" bleibt leer.
e) Batchdatei convert.bat starten. Es werden die Dateien wav.bin (enthält den Bereich mit den WAV-Dateien, so wie bei der Speicheraufteilung ab 0x0600 beschrieben) und code.hex neu erzeugt.
f) code.hex ist die Komplettdatei bestehend aus Firmware und WAV-Datei, die dann in den ATmega8 programmiert werden kann.
Programmierung der Ping Pong Platine
Ein fertiges Hexfile mit Firmware plus der WAV-Datei "tor.wav" ist im ZIP-File unter dem Namen "code.hex" bereits enthalten. Dieses kann direkt in den Atmega8 programmiert werden.
Achtung: das im Unterverzeichnis "code" enthaltene Hexfile "pp_tor.hex" ist nur die reine Firmware, also ohne integrierte WAV-Datei. Es kann verwendet werden, falls eigene WAV-Dateien integriert werden sollen, die per Batchfile in diese Hexdatei angegeliedert werden wie unter 4) beschrieben.
Zusätzlich sollte beim Programmieren das Kalibrierbyte für den internen Oszillator an die EEPROM-Adresse 1 gespeichert werden. Die Firmware prüft, ob der Wert an EEPROM-Adresse 1 ungleich 0xFF ist und beschreibt dann das OSCCAL Register.
PC-Software zur Ansteuerung der Toranzeige
Das PC-Programm "pp_tor.exe" wurde mit dem Borland C++ Builder geschrieben und ist im Zip-File im Verzeichnis "pc_software" enthalten.
Ein Screenshot ist in der Datei "pp_tor_screenshot.jpg" zu sehen. Es wird eine Internetverbindung zur Seite http://www.soccerstand.com/rss/soccer/en/today aufgebaut, die Fussball-Spielstände als RSS-Feed liefert. Im Feld "HTTP Rohdaten" sind die erhaltenen Daten im Rohformat zu sehen.
Über das Eingabefeld "Filter für Spielanzeige" kann die Anzeige der verfügbaren Spiele eingegrenzt werden.
Ein geeigneter Filterbegriff muss evtl. aus dem HTTP-Feld ermittelt werden und zwar aus der Angabe in Klammern hinter dem Spielstand.
Durch Ankreuzen der Checkbox "WM" kann als Filter "World Cup" eingestellt werden, um nur WM-Spiele anzuzeigen. In der Liste "Spiele" kann das gewünschte Spiel per Mausklick ausgewählt werden. Die Aktualisierung der verfügbaren Spiele sowie der Spielstände erfolgt automatisch alle 30 Sekunden. Zusätzlich ist eine manuelle Aktualisierung möglich durch Klick auf den Button "Aktualisieren".
Wenn das Spiel noch nicht begonnen hat, wird die Startuhrzeit angezeigt. Während des Spiels wird die aktuelle Spielminute angezeigt. Außerdem werden die Ereignisse "Halbzeit" sowie "Spielende" angezeigt.
Im rechten Bereich können die Einstellungen für die RS232-Verbindung (COM-Port) vorgenommen werden. Durch einen Klick auf den Button "COM-Port öffnen" wird versucht, den ausgewählten COM-Port zu öffnen. Falls im Feld "Status COM-Port" eine Fehlermeldung erscheint, sollte man prüfen, ob der COM-Port nicht schon durch ein anderes Programm geöffnet wurde. Bei erfolgreichem Öffnen des COM-Ports wird der Spielstand an die Ping Pong Platine versendet. Wenn beim ausgewählten Spiel ein Tor fällt, dann wird der Torsound abgespielt. Durch Ankreuzen der Checkbox "Torjubel auch über PC-Soundkarte abspielen" wird zusätzlich auch über die PC-Soundkarte der Torjubel abgespielt.
Quellcode
Der Code für den ATmega8 auf der Ping Pong Platine wurde mit dem C-Compiler CodeVision AVR (Version 2.04.6 Evaluation) erstellt. Diese Evaluation-Version kann für den privaten nicht-kommerziellen Gebrauch kostenlos verwendet werden und ist auf eine Codegröße von 3 kB beschränkt, was für diese Anwendung ausreicht. Das komplette Projekt ist in der ZIP-Datei enthalten
(Projektdatei für CodeVison AVR ist pp_tor.prj).
Quellen/Links:
1.) code, pc-software, wav2pong und code.hex in einer .zip Datei
Video: http://www.youtube.com/watch?v=LquLQmpCQ9w
Tool zum Bearbeiten von WAV-Dateien: Audacity: http://audacity.sourceforge.net
C-Compiler CodeVision AVR: http://www.hpinfotech.ro/html/download.htm
RSS-Feed mit Fussball-Spielständen: http://www.soccerstand.com/rss/soccer/en/today
Die passende Ergänzung zu diesem Artikel:
 | Franzis Ping-Pong Produktart: Softwarebox ISBN 978-3-7723-4799-3 Versandkostenfrei* direkt beim Verlag bestellen
29,95 € 
|