Dit document is beschikbaar in: English Castellano Deutsch Francais Italiano Nederlands Russian Turkce Korean
Convert to GutenPalm
or to PalmDoc
door Guido Socher
<guido(at)linuxfocus.org>
Over de auteur:
Guido is al lang een Linux fan. Meestal ontwikkelt hij programma's of doet werk voor LinuxFocus, maar zo af en toe vind hij het leuk om aan hardware te knutselen.
Vertaald naar het Nederlands door:
Tom Uijldert <Tom.Uijldert(at)cmgplc.com>
Inhoud:
Inleiding
Het apparaat
De seriële poort
De schakeling
De software
Talkback voor dit artikel
Een uit-knop met LED op je seriële poort.
Kort:
In dit artikel ontwerpen we een drukknop die je op de seriële poort van je machine aan kunt sluiten. Met deze knop kun je de machine afsluiten.
Inleiding
Een echte server machine heeft geen toetsenbord, muis of monitor nodig. Het heeft alleen een goed operating systeem nodig, zoals Linux, en een netwerkkaart. Externe apparatuur zoals muis en toetsenbord zijn hierbij alleen maar hinderlijk. Met Linux op de machine is systeembeheer op afstand de makkelijkste oplossing.
Als ik een computer koop kijk ik altijd of de BIOS een instelling heeft waarmee je de controle op de aanwezigheid van een toetsenbord kunt uitzetten. Iedere behoorlijke moederbord- fabrikant heeft die optie tegenwoordig. Sommige fabrikanten denken nog steeds dat mensen alleen maar Windows op hun PC hebben en deze PC's hebben dus een toetsenbord nodig om op te starten. Het is af te raden om dergelijke hardware aan te schaffen.
Een machine zonder toetsenbord en monitor is de ideale computer om te gebruiken als firewall, web-server, NFS bestandsserver, mail-server, ADSL-adapter enz. Het hoeft geen dikke machine te wezen. Een oude Pentium op 100 MHz met voldoende intern geheugen kan makkelijk honderd of meer machines bedienen.
De afwezigheid van externe apparatuur hiervoor is makkelijk want de server is dan gereduceerd tot een kleine doos die je overal neer kunt zetten. In een hoek of op een plank in de kelder. Soms echter, heb je de behoefte aan een knop waarmee je de machine op een nette manier neer kan halen zonder dat je hoeft in te loggen en het shutdown commando moet draaien. Wellicht omdat je al in de serverruimte bent en het dichtstbijzijnde werkstation 100 meter verder is. Of er is iemand die wel bij de machine kan maar het wachtwoord van de machine niet heeft en toch de machine af moet sluiten voordat hij de voeding eruit haalt.
Simpelweg de stekker eruit trekken is geen goede oplossing omdat je daarmee data kunt verliezen en een disk-check (fsck) bij opstarten duurt eindeloos.
De oplossing hiervoor is het kleine en goedkope apparaatje dat we hier bespreken.
Het apparaat
We gaan een apparaatje maken met 2 LED's en een drukknop. Groen geeft aan dat de knop gebruikt kan worden, langzaam knipperend geel geeft aan dat de machine aan het afsluiten is. Om het afsluiten te activeren moet de drukknop 3 seconden in worden gedrukt.
Na deze drie seconden zal het groene licht uitgaan om aan te geven dat het afsluiten is begonnen. Het commando "/sbin/shutdown/ -t2 -h now" wordt nu uitgevoerd. Het geel zal knipperen tijdens het afsluiten. Nadat het knipperen is gestopt moet je nog 10 seconden wachten voordat de stekker eruit gaat. Het knipperen stopt nadat alle processen gestopt zijn en de schijven offline worden gehaald.
Als je computer is uitgerust met automatische power off dan hoef je je niet druk te maken over de 10 seconden. Wacht gewoon totdat hij zichzelf uitschakelt.
De seriële poort
Het leuke van de seriële poort is dat hij een aantal aansluitpennen heeft die je aan kunt sturen met ioctl() systeemfuncties. Dat betekent dat je de kernel niet hoeft te veranderen om een LED aan te sturen of om de status van een drukknop af te lezen. De poort heeft net genoeg spanning om 2 kleine LED's aan te kunnen sturen. We zullen de pennen RTS en DTR gebruiken voor het aansluiten van de LED's en de Carrier Detect voor het uitlezen van de stand van de drukknop.
9 PIN D-SUB MALE aan de computerkant.
9 PIN-connector
25 PIN-connector
Afko
Richting
Benaming
1 8 CD invoer Carrier Detect
2 3 RXD invoer Receive Data
3 2 TXD uitvoer Transmit Data
4 20 DTR uitvoer Data Terminal Ready
5 7 GND -- System Ground
6 6 DSR invoer Data Set Ready
7 4 RTS uitvoer Request to Send
8 5 CTS invoer Clear to Send
9 22 RI invoer Ring Indicator
De schakeling
Je hebt de volgende onderdelen nodig voor het bouwen van dit apparaatje:
1 groene LED, laag vermogen (een normale LED gaat ook maar zal niet zo fel branden).
1 gele LED, laag vermogen.
2 weerstanden van 1K5 Ohm
1 weerstand van 6K8 Ohm
1 kleine drukknop
1 RS232 connector (vrouwtje)
De onderdelen worden aangesloten zoals te zien in het diagram. De spanning op de seriële draden is +/- 10 Volt. De 1K5-weerstanden zijn precies voldoende voor laag-vermogen LED's maar gewone LED's kunnen ook. Het is niet aan te raden om te werken met andere weerstandswaarden of een voeding daar het geheel direct is aangesloten op de IC's van het moederbord. Als je die laat doorbranden kun je je hele moederbord vervangen.
Hierboven zie je de printplaat weergegeven. Ik heb geen precies schema voor je voor de inrichting van de plaat omdat ik kleine schakelingen het liefst uit de hand direct op de plaat teken met ets-ongevoelige inkt.
Het hele apparaatje is te zien op het plaatje aan het begin van dit artikel. Je kunt volstaan met voorzichtig 3 gaatjes in het voorpaneel van je server te boren. Twee gaten van 3 mm voor de LED's en eentje voor de drukknop. Het geheel is heel licht en de schroef van de drukknop is voldoende om het vast te zetten.
De software
Dit is een klein achtergrondproces wat via een script in /etc/rc.d/rc3.d kan worden gestart. De systeemfuncties ioctl(fd, TIOCMSET, ...) en ioctl(fd, TIOCMGET, ...) worden gebruikt voor het lezen en schrijven naar de poort. Je kunt sled-0.1.tar.gz van het net halen. Een makefile en gebruiksaanwijzing zijn er bij inbegrepen.
Veel plezier met solderen.
Talkback voor dit artikel
Elk artikel heeft zijn eigen talkback pagina. Daar kan je commentaar geven of commentaar van anderen lezen: