Teil 1 - Understanding
Alle neueren Geräte von Pioneer sind über einen gemeinsamen Bus verbunden. Der eigentliche Sinn davon ist es, daß man nur ein Gerät mit einer Fernbedienung benötigt, um seine gesamte Anlage zu steuern. So empfängt zum Beispiel der Receiver von der Fernbedienung den Befehl "CD Play". Diesen Befehl gibt er auf den Bus, alle Geräte ignorieren ihn, nur der CD-Player aktiviert halt das entsprechende Kommando.
Der Bus ist folgendermaßen realisiert: Alle Geräte werden über ein 3,5"-Klinkenstecker-Kabel untereinander verbunden, wobei alle Geräte parallel am Bus hängen. Der Bus wird standardmäßig vom Empfänger (im Beispiel der Receiver) auf einem 5V-Pegel gehalten. Zum Senden eines Kommandos wird er einfach getaktet auf 0V heruntergezogen.
Das schöne ist, daß die Pullup-Widerstände schön hoch sind, so daß man zum Versenden eigener Codes den Bus einfach nur getaktet auf Masse legen muß. Das kann zum Beispiel am Ausgang des letzten Gerätes am Bus geschehen, oder am Eingang des Verstärkers.
Das Protokoll ist schnell erklärt:
Eine Liste der wichtigsten Geräte-IDs:
A1 | Tapedeck |
A2 | CD-Player |
A4 | Tuner |
A5 | Verstärker |
A8 | LD-Spieler |
AB | Video-Recorder |
Eine Liste der wichtigsten Codes:
17 | Play |
18 | Pause |
16 | Stop |
10 | Vorwärts |
11 | Rückwärts |
1C | Power |
Teil 2 - Die Hardware
Wie schon oben geschrieben, benötigt man im Prinzip nur eine Schaltung, die den Bus kurzfristig auf 0V zieht. Um nun aber auch Geräte ansteuern zu können, die an keinem aktiven SR-Empfänger hängen, sollte man dafür Sorge tragen, daß der Bus auf 5V-Pegel gehalten wird. Ferner muß man noch den PC und die Anlage auf das gleiche Massen-Niveau bringen, falls dieses noch nicht durch Soundblaster oder Schutzleiter der Fall sein sollte. Eine doppelte Massenverbindung sollte man hingegen vermeiden, da man sich sonst sehr schönes Brummen auf den Audio-Leitungen einfängt, Stichwort Massenschleife.
Als Schnittstelle mit dem Computer empfiehlt sich der Parallel-Port, da dieser zum einen sehr leicht anzusprechen ist, und zum anderen bereits die benötigten Pegel zur Verfügung stellt.
Zum "Kurzschließen" des Busses nimmt man einen handelsüblichen NPN-Transistor, Emmiter an Erde, Kollektor an den Bus, Basis über Spannungsteiler an Erde bzw. D0 der Schnittstelle. Ich verwende zum Beispiel einen BC546, der gerade vorrätig war.
Damit ergibt sich folgende kleine Schaltung:
Abb.1: Die Schaltung
Dabei ist SR der innere Pol des Klinkensteckers zur Anlage. WICHTIG: Der äussere Pol ist keine Masse, sondern dient manchen Geräten für weitere Kommunikationsaufgaben. Man darf ihn also keinesfalls als Masse mißbrauchen. Diese muß man also am Gehäuse oder an einer freien Cinch-Buchse der Anlage abgreifen. Falls Ihr die Pinbelegung der parallelen Schnitstelle nicht auswendig wissen solltet (warum interessiert Ihr Euch dann überhaupt für solche Texte hier?!), hier die relevanten Pins:
Pin | Bedeutung |
2 | D0 |
3 | D1 |
18-25 | GND |
Wie man sehen kann, mißbrauche ich Datenbit 1 zur aktiven Busspeisung, so daß man diese bequem im Program abschalten kann, wenn sie stören sollte.
Wenn Du von obigem nichts verstanden haben solltest, und der Schaltplan für Dich Ähnlichkeit mit einem Strickmuster aus der Zeitschrift Deiner Oma hat, für Dich aber trotzdem die Welt untergehen sollte, wenn Du Deine Anlage nicht in Zukunft vom Rechner aus steuern kannst, dann wende Dich vertrauensvoll an mich, wenn ich noch etwas Zeit habe, bastel ich Dir das Interface für Material+Porto+Tüte Gummibärchen zusammen.
Teil 3 - Die Software
Nun kommt es zum eigentlichen kribbeligen Akt: Das Interface will angesteuert sein. Und zwar teilweise für 0,35 ms, wobei eine Toleranz von 5% eingehalten werden sollte. Die PC-Hardware stellt einem allerdings nur Zeitinformationen mit einer Auflösung von 54,9 ms zur Verfügung. Ich verwende daher für die Software eine Zeitschleife, die einfach n-mal eine Addition durchführt. Dadurch ergeben sich zwei Konsequenzen:
Die Linux-Software kennt diese Probleme nicht, da es unter Linux einen wunderbaren RTC-Support gibt. Aber auch hier gilt: Linux ist kein Realtime-OS, so da˜ man das Tool zum einen mit root-Rechten laufen lassen mu˜ und zum anderen bei vielbesch„ftigten Systemen einen sehr niedrigen nice-Value ben÷tigt.
Die Software liegt in mehreren Varianten vor:
Die Doku ist etwas dürftig, also müßt Ihr schon ein wenig im Code lesen...
So, viel Spaß mit dem ganzen, und WIEDER EINE STUFE WEITER auf der Leiter zum Hightech-Freak!