Serielle Fernsteuerung: Schnell geschaltet

Serielle Fernsteuerung: Schnell geschaltet

Ob Fileserver oder Druckerspooler: Rechner, die nur eine spezielle Funktion haben, benötigen eigentlich weder Monitor noch Tastatur – wenn nicht hin und wieder eine CD gewechselt oder das System am Wochenende heruntergefahren werden müsste …
Jeder, der irgend wo im Haus einen Server stationiert hat, kennt bestimmt das Problem: Um die CD zu wechseln muss man sich von einem Arbeitsplatz aus einloggen, unmounten, dann mit der CD zum Server und nach dem Wechsel wiederum am Arbeitsplatz mounten. Oder der als Druckerspooler weiterbenutzte 486er soll zum Wochenende abgeschaltet werden – dass er noch nicht heruntergefahren wurde, merkt man natürlich erst nach dem Shutdown der letzten Workstation. Nach kurzer Zeit gesellen sich dann doch wieder Monitor und Tastatur dazu, um nicht ständig zwischen Arbeitsplatz und Server hin und her laufen zu müssen.

Nüchtern betrachtet sind es nur wenige Aktionen wie Shutdown, (un)mounten der CD-Laufwerke oder Start/Fortsetzung des Backups, die man immer wieder direkt am Server anstoßen müsste. Auf der anderen Seite hat die serielle Schnittstelle verschiedene Statusleitungen, die man ohne großen Aufwand abfragen kann. Beides zusammen ergibt eine einfache und sehr kostengünstige Fernsteuerung.

Ein- und Ausgänge

Ein Blick auf Tabelle 1 zeigt, dass wir insgesamt fünf Eingänge und drei Ausgänge haben, wobei die Sende- und Empfangsleitung (RXD, TXD) zunächst ausgeklammert bleiben. Um einen der Eingänge zu schalten, benötigen wir eine Spannung. Wir könnten diese extern über ein Netzteil oder intern über einen Festplatten-Stromanschluss bekommen, doch das ist kritisch. Die serielle Schnittstelle reagiert empfindlich auf zu hohe Spannungen und insbesondere zu hohe Ströme. Da die Bausteine heutzutage auf dem Mainboard untergebracht sind, lässt sich eine beschädigte serielle Schnittstelle auch nicht mehr einfach austauschen. Deshalb benutzen wir einen der Ausgänge als Spannungsversorgung für die Eingänge. Übrig bleiben also vier Eingänge, ein frei schaltbarer Ausgang zum Beispiel für eine LED sowie ein zweiter, bedingt schaltbarer Ausgang.

Tabelle 1: Pinbelegung der seriellen Schnittstelle

9pol. 25pol. Typ Signal Bezeichnung
1 8 Eingang CD Carrier Detect
2 3 Eingang RXD Receive Data
3 2 Ausgang TXD Transmit Data
4 20 Ausgang DTR Data Terminal Ready
5 7 GND Ground
6 6 Eingang DSR Data Set Ready
7 4 Ausgang RTS Request To Send
8 5 Eingang CTS Clear To Send
9 22 Eingang RI Ring Indicator

Beschaltung der Ein-/Ausgänge

Den ersten Ausgang RTS verwenden wir für eine gelbe LED, sie wird mit einem Vorwiderstand zwischen Ausgang und Masse geschaltet. Diese können wir für Statusmeldungen oder als Quittung für eine Aktion verwenden (an/aus/blinken). Der Vorwiderstand sollte so bemessen sein, dass nicht mehr als 20 mA Strom fließen, üblicherweise 2,2 kOhm.

Der zweite Ausgang muss aktiviert sein, um überhaupt die Eingänge schalten zu können – Er eignet sich also hervorragend als System-Zustandsanzeige. Dazu nutzen wir aus, dass der Low-Pegel der seriellen Schnittstelle nicht Masse (GND) ist, sondern eine negative Spannung. Schaltet man zwischen den Ausgang DTR und Masse einen Vorwiderstand und eine zweipolige Dual-LED (Umpolung der LED bewirkt Farbwechsel zwischen rot und grün), so sind bei rot die Tasten inaktiv (da negative Spannung). Die Ausgänge sind bei Einschalten des Geräts beide Low, so dass die LED zunächst rot ist. Nach Start des Kontrollprogramms (zum Beispiel über ein Init-Script) setzt man dann DTR auf High – die LED wird grün und die Eingänge können geschaltet werden. Die vier Eingänge CD, DSR, CTS und RI werden über fünf Taster und einen gemeinsamen Vorwiderstand von 10 kOhm mit dem Ausgang DTR verbunden. Um einen versehentlichen Shutdown durch Berühren einer Taste zu vermeiden, wurden beim Beispielaufbau in Abb. 1 zwei rote Taster in Reihe geschaltet und mit RI verbunden – es müssen also beide gedrückt sein. Die Taster dienen gleichzeitig als Fassung für die beiden LED und liegen zur Sicherheit so weit wie möglich auseinander.

Abb. 1: Musteraufbau mit fünf Tasten

Kontrollprogramm

Wie oben beschrieben wird duch Aktivierung des Ausgangs RTS die gelbe Leutdiode eingeschaltet. Das auf unserem FTP-Server veröffentlichte Kontrollprogramm verwendet die LED als Quittung, dass ein Tastendruck erkannt und die zugehörige Aktion ausgelöst wurde. Sie wird nach Ende der Aktion wieder gelöscht. Tritt während dessen ein Fehler auf, blinkt die gelbe LED. Die Dual-LED an DTR dient der Bereitschaftsanzeige. Bei Start des Kontrollprogramms wird sie auf grün geschaltet, am Programmende auf rot.

Die Eingänge werden in einer Schleife alle 75 ms abgefragt. Eine Taste gilt dann als gedrückt, wenn die Eingänge drei Durchläufe (also 225 ms) lang unverändert bleiben. Das 75 ms-Intervall ist wilkürlich gesetzt und ein Kompromiss zwischen CPU-Last und Reaktionsgeschwindigkeit. Das Programm kann zwischen einzelnen Tasten und Tastenkombinationen unterscheiden, aktuell sind zwei Aktionen implementiert: Sind beide rote Tasten gedrückt (Eingang RI high), wird die gelbe LED gesetzt und das System heruntergefahren (halt). Sind eine oder mehrere weiße Tasten gedrückt, so erfolgt ein umount von /dev/cdrom sowie der Auswurf oder Einziehen und mounten auf /cdrom. Insgesamt lassen sich inklusive Kombinationen sieben Aktionen mit den weißen Tasten auslösen. Die roten Tasten sollten dem Shutdown vorbehalten bleiben.

Das C-Listing des Kontrollprogramms ist mit einigen Kommentaren versehen, die Umsetzung eigene Wünsche sollte nicht weiter schwer fallen. An ein Verlängerungskabel angeschlossen und mit entsprechend geänderten Tastenbelegungen kann man sogar die Lautstärke der Soundkarte regeln und mpg123 steuern, wenn man zum Musikhören den Schreibtisch mal verlässt.

Nachbau

Es ist nicht unbedingt notwendig, das Platinenlayout aus Abb. 2 zu benutzen – prinzipiell kann man auch einfach Taster und seperate LED-Fassungen in eine Laufwerksabdeckung schrauben und frei verdrahten. Das Layout ist für die in der Bauteilliste angegebenen Taster mit und ohne LED-Fassung vorgesehen, die man unter anderem bei Reichelt Elektronik (http://www.reichelt.de) bekommt. Wichtig ist nur, auf die richtige Polarität der beiden Leuchtdioden zu achten – und vor allem auf Kurzschlüsse! Die seriellen Schnittstellen befinden sich üblicherweise zusammen mit ISA-Bridge und IDE-Interface in der Southbridge direkt auf dem Mainboard – tragisch, wenn diese den Geist aufgeben würde. Besser, man greift zu einer seperaten Multi-IO-Karte – zudem hat man dann auch kein Problem mit der Kabelführung, weil man innen an die Pfostenstecker heran kann. Der Anschluss erfolgt entweder mit Flachbandkabel von außen, oder über eine Pfostenbuchse direkt auf den Stecker des Mainboards oder der Schnittstellenkarte. Achtung, die Belegung der Pfostenstecker ist durchaus unterschiedlich und sollte nachgeschlagen werden.

Anschlußbelegung Platine

Pin Signal Bauteil
1+2 GND
3+4 CD weißer Taster, links
5+6 DSR weißer Taster, Mitte
7+8 CTS weißer Taster, rechts
9+10 RI rote Taster (Reihenschaltung)
11+12 RTS gelbe LED
13+14 DTR rot/grüne LED

Ausblick

Durch Verwendung eines einfachen Multiplexers kann man statt drei sieben weiße Tasten einbauen, dann jedoch ohne Mehrfachkombinationen. Zudem lässt sich über ein Interface noch ein Display für zusätzliche Informationen anschließen (dafür wurden RXD und TXD freigehalten), doch dies sei einem späteren Artikel vorbehalten. Mit der hier beschriebenen seriellen Fernsteuerung lassen sich viele alltägliche Probleme lösen, für die man sonst Monitor und Tastatur gebraucht hätte. (mdö)

Bauteileliste

Anzahl Typ Beschreibung
3 DIT 1 Taster weiß
2 DTL 2 Taster rot mit LED-Fassung 3mm
1 SLK 3mm LED 3mm gelb
1 3RG LED 3mm rot/grün, zweipolig
2 Widerstand 2,2 kOhm
1 Widerstand 10 kOhm

Abb. 2: Bestückungsplan

Platinen-Layout (PostScript-Datei)

Copyright © 2000 Linux New Media AG

[1] ftp://ftp.linux-magazin.de/pub/listings/magazin/2000/09/Serielle_Fernsteuerung
[2] http://www.reichelt.de

E-Mail Benachrichtigung
Benachrichtige mich zu:
28 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Carsten Müller
24 Jahre her

ich bau sie interessehalber mal nach obwohl ich keinen einsatzzweck dafür habe, da mein Server mit einem alten SW Monitor und einer Tastatur ausgestattet ist.

Anonymous User
24 Jahre her

Hmm, ich könnte sowas sogar gut gebrauchen, mal sehen, was sich machen läßt.

Anonymous User
24 Jahre her
Reply to  Anonymous User

Schreibt doch ueber die Erfahrungen ein Tagebuch.

Ralf Baerwaldt
24 Jahre her

So technische Bauanleitungen an man frueher in der c’t gefunden. Leider ist diese Zeitschrift diesbzgl. ziemlich verwaist.

Anonymous User
24 Jahre her
Reply to  Ralf Baerwaldt

c’t *bekreuzig* – naja, die Bauanleitungen etc. waren imo das einzige an der C’t, daß das Lesen dieser lohnend machte *g*

Anonymous User
24 Jahre her
Reply to  Anonymous User

War auch mal aehnlich bei der PC Go. Heute kann man da fast nicht mehr reinschauen. :-(

Anonymous User
24 Jahre her
Reply to  Anonymous User

Ja, waere echt gut, wenn das eine Tradition im Linux-Magazin werden wuerde.

Anonymous User
24 Jahre her
Reply to  Anonymous User

Die hoffentlich nicht mit Niveau-Senkung gebrochen wird (c’t, DOS, etc.).

Anonymous User
24 Jahre her
Reply to  Anonymous User

Ich weiss nicht wie es euch geht: Ich versuche mich mal drüber zu machen das ganze mit einem LCD zu koppeln. LCD als “Mini-Bildschirm” und die Taster zur Steuerung eines Menüs.
Ich denke mal das macht sich echt gut an meinem “Intranetserver”.

Mirko Dölle
24 Jahre her
Reply to  Anonymous User

Der Anschluß eines seriellen Displays (z.B. von Matrix-Orbital) ist nicht das Problem, sonder der Preis!
So kostet ein Display mit 40 Zeichen/2 Zeilen satte 185 Mark plus
Steuer, in meinen Augen inakzeptabel. Dafür bekommt man einen gebrauchten VGA-Monitor.

Sinn dieses Projekts war eine Low-Cost-Lösung, auch serielle Terminals gibt es zu Hauf am Markt, die meisten nutzen aber aktive Komponenten oder gar hochintegrierte Bausteine und liegen bei 100 Mark aufwärts.

Logischer Nachfolger wäre in meinen Augen ein handelsübliches Display für 40 bis 60 Mark das mit einer Zusatzschaltung für wenig Geld “seriell-tauglich” gemacht würde.

[1] http://lcdproc.omnipotent.net
[2] http://www.matrix-orbital.com
[3] http://www.elektronikladen.de/seriallcd.html

Thomas Bonk
24 Jahre her
Reply to  Anonymous User

Es stimmt schon, daß das Niveau der c’t mal besser war. Allerdings
ist es einige der wenigen Magazine, bei denen es sicht lohnt, sie
noch zu lesen(neben dem Linux-Magazin natürlich ;). Den Rest kann man
vergessen; alles zu sehr verBILDet.

Carsten Müller
24 Jahre her
Reply to  Thomas Bonk

ich habs eben fertig und geht wunderbar. :-)

Mirko Dölle
24 Jahre her

Nur aus Interesse: Hast Du das abgedruckte Platinen-Layout benutzt oder “freiluft”-verdrahtet?

Carsten Müller
23 Jahre her
Reply to  Mirko Dölle

freiluft

Anonymous User
24 Jahre her

Ist es möglich, nach erfolgreichem Shutdown (oder sehr kurz vorher) ein Signal über die Serielle Schnittstelle zu senden um dann den Rechner(ohne ATX) automatisch auszuschalten.

Mirko Dölle
24 Jahre her
Reply to  Anonymous User

Ja, das geht. Ich habe das aber nicht nachgebaut, von daher ohne Gewähr, das ist eine rein theoretische Betrachtung. Bei diesem Beispiel geht es mir auch darum, mit der Stromverschwendung herkömlicher Lösungen a la ATX aufzuhören, die nur für das Einschalten auf Knopfdruck 15 Watt verbraten. Zentrales Element ist ein 230V-Relais, das durch einen 230V-Taster, entsprechenden VDE-geprüften Kabeln (Leute, wir haben es hier zwar mit “Niederspannung” zu tun, aber nicht mit Kleinspannungen wie sonst im Computer!) und einer Einschaltverzögerung (z.B. von Conrad, Bestellnummer 195901-62) ergänzt wird. O——————–+——–. .—–. .———–. | | | | | .———–. 2 | | .–. |… Mehr »

Anonymous User
24 Jahre her

weiß jemand, wie ich die txd-leitung auf high setze, bzw. ein 0xFF an sie schicke ? mach ich das auch mit ioctl ?
danke scho ma! tobi

Anonymous User
24 Jahre her

1. Die Fernsteuerung ist nicht schlecht.
2. Das Steuerungsprogramm ist in C geschrieben (nicht meine Sprache :() Trotzdem möchte ich es auf meine Bedürfnisse anpassen. Perl kann ja (fast) alles, deshalb würde ich gerne ein Perl Script zur Steuerung schreiben. Hat jemand erfahrungen mit Perl und der Seriellen Schnittstelle? Mit welchen Modulen kann ich sie ansprechen?

Anonymous User
24 Jahre her
Reply to  Anonymous User

Ja, eine Steuerung mit Perl ist moeglich. Das Ur Steuerungsprogramm ist sogar in Perl geschrieben worden.
Ich werde Mirko bitten diesen Source auf dem Server des Linux-Magazins bereit zu stellen.
Irgendwo muesste auch noch ein einfacher Source in C rumliegen mit dem mann die Serielle als Volume-
Regler (laut, leise, ein/ausfaden) missbrauchen kann. Wenn ichs finde pack ichs dazu.

So long, Tom.

Mirko Dölle
24 Jahre her

Das von Tom angekündigte Perl-Programm sowie eine Laut/Leise-Regelung liegt auf dem FTP-Server der Redaktion zum Download bereit.

[1] ftp://ftp.linux-magazin.de/pub/listings/magazin/2000/09/Serielle_Fernsteuerung/Zusatz

Anonymous User
23 Jahre her

Es geht um den Artikel ‘Serielle Fernsteuerung: Schnell geschaltet’
aus der September-Ausgabe 2000 der Linux-Magazins.

Ich habe die Fernsteuerung nachgebaut und angeschlossen.
Das Programm wurde compiliert und gestartet. Es geht nicht.
Die LEDs reagieren.
Ich habe in einem Forum gelesen, das es Probleme bei alten PCs geben
kann. Die Lösung soll es auch geben. Es handelt sich um
die eingebauten Widerstände. Bei einigen PC reichen die Widerstände
nicht aus. Widerstände mit anderen Werten sollen wiegesagt
das Problem beheben.

Welche Werte(Intervall) müssen die 3 Widerstände haben?
Kann man ein Testprogramm starten(C oder Perl)

Anonymous User
23 Jahre her

Hallo,
klasse Sache, die Taster, aber bei der Durchsicht des Platinenlayouts ist bei mir folgende Frage aufgetaucht:
Nach der Beschreibung im Text soll der 10k Wiederstand an DTR angeschloßen werden.
Wenn ich das Platinenlayout ansehe, geht dieser aber erst an den Widerstand der Duo-LED und dieser dann erst auf auft DTR.
Oder sehe ich falsch ?

Helmut

Anonymous User
23 Jahre her
Reply to  Anonymous User

Ja, du hast recht, war bei mir auch so.
Ich habe es dann nach dem Text gelötet und es geht.

Anonymous User
23 Jahre her

Hi!

Ich habe in meinem Rechner 3 CD-ROM-Laufwerke (cdrom, cdrom1, cdrom2). Dies möchte ich mit der Tastatur steuern. Leider sind meine Kenntnisse in C ziemlich beschränkt. Kann mir da evtl. jemand helfen?

Anonymous User
22 Jahre her

Das ganze ist ganz schön und gut doch man tapt aber ziemlich im dunkeln ohne klarttextanzeige. Durch das verwenden eines Lcd ist dies möglich und der aufwand hält sich auch in grenzen. auf der Page:

http://members.tripod.de/MASE5/linux/lcd/

Ist eine anleitung zu sehen die noch 15 taster integriert und ohne aktiven bauelementen auskommt und dabei einfach unt billig bleibt

[1] http://members.tripod.de/MASE5/linux/lcd/

Roland Kaiser
19 Jahre her

Hi, ich bin totaler Linux Neuling. Ich habe einen Linux Server am laufen. Da es ein AT Rechner ohne Monitor und Tastatur ist, will ich mit dieser Variante runterfahren oder neustarten. Ich habe mir die Dateien runtergeladen und auf meinen Server kopiert (erstmal ins home verzeichniss). Dann habe ich versucht das Programm zu starten. Ich gehe davon aus, dass die seriellefernsteuerung.pcb die zu entsprechende Datei ist. Wie startet man sie nun? wenn ich sie einfach eintippe kommt folgende Meldung: -bash seriellefernsteuerung.pcb: command not found Wenn ich ./seriellefernsteuerung.pcb eingebe kommt folgendes: ./seriellefernsteuerung.pcb: line 6: sybtax error near unexpected token ‘””‘ ./seriellefernsteuerung.pcb:… Mehr »

Nach oben